@memberjunction/ng-core-entity-forms 2.103.0 → 2.105.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/lib/custom/AIAgents/agent-permissions-dialog.component.d.ts +60 -0
- package/dist/lib/custom/AIAgents/agent-permissions-dialog.component.d.ts.map +1 -0
- package/dist/lib/custom/AIAgents/agent-permissions-dialog.component.js +790 -0
- package/dist/lib/custom/AIAgents/agent-permissions-dialog.component.js.map +1 -0
- package/dist/lib/custom/AIAgents/ai-agent-form.component.d.ts +5 -0
- package/dist/lib/custom/AIAgents/ai-agent-form.component.d.ts.map +1 -1
- package/dist/lib/custom/AIAgents/ai-agent-form.component.js +457 -433
- package/dist/lib/custom/AIAgents/ai-agent-form.component.js.map +1 -1
- package/dist/lib/custom/ai-agent-run/ai-agent-run.component.js +218 -190
- package/dist/lib/custom/ai-agent-run/ai-agent-run.component.js.map +1 -1
- package/dist/lib/custom/custom-forms.module.d.ts +45 -44
- package/dist/lib/custom/custom-forms.module.d.ts.map +1 -1
- package/dist/lib/custom/custom-forms.module.js +3 -0
- package/dist/lib/custom/custom-forms.module.js.map +1 -1
- package/dist/lib/generated/Entities/AIAgent/aiagent.form.component.js +46 -16
- package/dist/lib/generated/Entities/AIAgent/aiagent.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/AIAgent/sections/details.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/AIAgent/sections/details.component.js +53 -4
- package/dist/lib/generated/Entities/AIAgent/sections/details.component.js.map +1 -1
- package/dist/lib/generated/Entities/AIAgentArtifactType/aiagentartifacttype.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/AIAgentArtifactType/aiagentartifacttype.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/AIAgentArtifactType/aiagentartifacttype.form.component.js +59 -0
- package/dist/lib/generated/Entities/AIAgentArtifactType/aiagentartifacttype.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/AIAgentArtifactType/sections/details.component.d.ts +11 -0
- package/dist/lib/generated/Entities/AIAgentArtifactType/sections/details.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/AIAgentArtifactType/sections/details.component.js +120 -0
- package/dist/lib/generated/Entities/AIAgentArtifactType/sections/details.component.js.map +1 -0
- package/dist/lib/generated/Entities/AIAgentPermission/aiagentpermission.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/AIAgentPermission/aiagentpermission.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/AIAgentPermission/aiagentpermission.form.component.js +59 -0
- package/dist/lib/generated/Entities/AIAgentPermission/aiagentpermission.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/AIAgentPermission/sections/details.component.d.ts +11 -0
- package/dist/lib/generated/Entities/AIAgentPermission/sections/details.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/AIAgentPermission/sections/details.component.js +176 -0
- package/dist/lib/generated/Entities/AIAgentPermission/sections/details.component.js.map +1 -0
- package/dist/lib/generated/Entities/AIAgentRun/aiagentrun.form.component.js +6 -6
- package/dist/lib/generated/Entities/AIAgentRun/aiagentrun.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/AIAgentRun/sections/details.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/AIAgentRun/sections/details.component.js +22 -4
- package/dist/lib/generated/Entities/AIAgentRun/sections/details.component.js.map +1 -1
- package/dist/lib/generated/Entities/AIAgentRunStep/sections/details.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/AIAgentRunStep/sections/details.component.js +14 -5
- package/dist/lib/generated/Entities/AIAgentRunStep/sections/details.component.js.map +1 -1
- package/dist/lib/generated/Entities/AIConfiguration/aiconfiguration.form.component.js +6 -6
- package/dist/lib/generated/Entities/AIConfiguration/aiconfiguration.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/AIPrompt/aiprompt.form.component.js +6 -6
- package/dist/lib/generated/Entities/AIPrompt/sections/details.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/AIPrompt/sections/details.component.js +16 -7
- package/dist/lib/generated/Entities/AIPrompt/sections/details.component.js.map +1 -1
- package/dist/lib/generated/Entities/AIPromptCategory/sections/details.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/AIPromptCategory/sections/details.component.js +13 -4
- package/dist/lib/generated/Entities/AIPromptCategory/sections/details.component.js.map +1 -1
- package/dist/lib/generated/Entities/AIPromptRun/sections/details.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/AIPromptRun/sections/details.component.js +22 -4
- package/dist/lib/generated/Entities/AIPromptRun/sections/details.component.js.map +1 -1
- package/dist/lib/generated/Entities/AIVendor/aivendor.form.component.js +6 -6
- package/dist/lib/generated/Entities/AIVendor/aivendor.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/Action/sections/details.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/Action/sections/details.component.js +13 -4
- package/dist/lib/generated/Entities/Action/sections/details.component.js.map +1 -1
- package/dist/lib/generated/Entities/ActionCategory/sections/details.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/ActionCategory/sections/details.component.js +13 -4
- package/dist/lib/generated/Entities/ActionCategory/sections/details.component.js.map +1 -1
- package/dist/lib/generated/Entities/ArtifactType/artifacttype.form.component.js +34 -4
- package/dist/lib/generated/Entities/ArtifactType/artifacttype.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/ArtifactType/sections/details.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/ArtifactType/sections/details.component.js +51 -4
- package/dist/lib/generated/Entities/ArtifactType/sections/details.component.js.map +1 -1
- package/dist/lib/generated/Entities/ArtifactVersion/artifactversion.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/ArtifactVersion/artifactversion.form.component.js +29 -8
- package/dist/lib/generated/Entities/ArtifactVersion/artifactversion.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/ArtifactVersion/sections/details.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/ArtifactVersion/sections/details.component.js +31 -4
- package/dist/lib/generated/Entities/ArtifactVersion/sections/details.component.js.map +1 -1
- package/dist/lib/generated/Entities/ArtifactVersionAttribute/artifactversionattribute.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/ArtifactVersionAttribute/artifactversionattribute.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/ArtifactVersionAttribute/artifactversionattribute.form.component.js +59 -0
- package/dist/lib/generated/Entities/ArtifactVersionAttribute/artifactversionattribute.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/ArtifactVersionAttribute/sections/details.component.d.ts +11 -0
- package/dist/lib/generated/Entities/ArtifactVersionAttribute/sections/details.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/ArtifactVersionAttribute/sections/details.component.js +127 -0
- package/dist/lib/generated/Entities/ArtifactVersionAttribute/sections/details.component.js.map +1 -0
- package/dist/lib/generated/Entities/AuditLogType/sections/details.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/AuditLogType/sections/details.component.js +13 -4
- package/dist/lib/generated/Entities/AuditLogType/sections/details.component.js.map +1 -1
- package/dist/lib/generated/Entities/Authorization/sections/details.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/Authorization/sections/details.component.js +13 -4
- package/dist/lib/generated/Entities/Authorization/sections/details.component.js.map +1 -1
- package/dist/lib/generated/Entities/Collection/sections/details.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/Collection/sections/details.component.js +13 -4
- package/dist/lib/generated/Entities/Collection/sections/details.component.js.map +1 -1
- package/dist/lib/generated/Entities/ConversationDetail/conversationdetail.form.component.js +25 -5
- package/dist/lib/generated/Entities/ConversationDetail/conversationdetail.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/ConversationDetail/sections/details.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/ConversationDetail/sections/details.component.js +53 -4
- package/dist/lib/generated/Entities/ConversationDetail/sections/details.component.js.map +1 -1
- package/dist/lib/generated/Entities/ConversationDetailArtifact/conversationdetailartifact.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/ConversationDetailArtifact/conversationdetailartifact.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/ConversationDetailArtifact/conversationdetailartifact.form.component.js +59 -0
- package/dist/lib/generated/Entities/ConversationDetailArtifact/conversationdetailartifact.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/ConversationDetailArtifact/sections/details.component.d.ts +11 -0
- package/dist/lib/generated/Entities/ConversationDetailArtifact/sections/details.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/ConversationDetailArtifact/sections/details.component.js +111 -0
- package/dist/lib/generated/Entities/ConversationDetailArtifact/sections/details.component.js.map +1 -0
- package/dist/lib/generated/Entities/DashboardCategory/sections/details.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/DashboardCategory/sections/details.component.js +13 -4
- package/dist/lib/generated/Entities/DashboardCategory/sections/details.component.js.map +1 -1
- package/dist/lib/generated/Entities/Entity/entity.form.component.js +7 -7
- package/dist/lib/generated/Entities/Entity/entity.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/FileCategory/sections/details.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/FileCategory/sections/details.component.js +13 -4
- package/dist/lib/generated/Entities/FileCategory/sections/details.component.js.map +1 -1
- package/dist/lib/generated/Entities/GeneratedCodeCategory/sections/details.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/GeneratedCodeCategory/sections/details.component.js +13 -4
- package/dist/lib/generated/Entities/GeneratedCodeCategory/sections/details.component.js.map +1 -1
- package/dist/lib/generated/Entities/ListCategory/sections/details.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/ListCategory/sections/details.component.js +13 -4
- package/dist/lib/generated/Entities/ListCategory/sections/details.component.js.map +1 -1
- package/dist/lib/generated/Entities/Project/sections/details.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/Project/sections/details.component.js +13 -4
- package/dist/lib/generated/Entities/Project/sections/details.component.js.map +1 -1
- package/dist/lib/generated/Entities/QueryCategory/sections/details.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/QueryCategory/sections/details.component.js +13 -4
- package/dist/lib/generated/Entities/QueryCategory/sections/details.component.js.map +1 -1
- package/dist/lib/generated/Entities/ReportCategory/sections/details.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/ReportCategory/sections/details.component.js +13 -4
- package/dist/lib/generated/Entities/ReportCategory/sections/details.component.js.map +1 -1
- package/dist/lib/generated/Entities/Role/role.form.component.js +13 -3
- package/dist/lib/generated/Entities/Role/role.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/Skill/sections/details.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/Skill/sections/details.component.js +13 -4
- package/dist/lib/generated/Entities/Skill/sections/details.component.js.map +1 -1
- package/dist/lib/generated/Entities/Tag/sections/details.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/Tag/sections/details.component.js +13 -4
- package/dist/lib/generated/Entities/Tag/sections/details.component.js.map +1 -1
- package/dist/lib/generated/Entities/Task/sections/details.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/Task/sections/details.component.js +13 -4
- package/dist/lib/generated/Entities/Task/sections/details.component.js.map +1 -1
- package/dist/lib/generated/Entities/TemplateCategory/sections/details.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/TemplateCategory/sections/details.component.js +13 -4
- package/dist/lib/generated/Entities/TemplateCategory/sections/details.component.js.map +1 -1
- package/dist/lib/generated/Entities/User/user.form.component.js +32 -12
- package/dist/lib/generated/Entities/User/user.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/UserViewCategory/sections/details.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/UserViewCategory/sections/details.component.js +13 -4
- package/dist/lib/generated/Entities/UserViewCategory/sections/details.component.js.map +1 -1
- package/dist/lib/generated/generated-forms.module.d.ts +342 -329
- package/dist/lib/generated/generated-forms.module.d.ts.map +1 -1
- package/dist/lib/generated/generated-forms.module.js +287 -198
- package/dist/lib/generated/generated-forms.module.js.map +1 -1
- package/package.json +15 -15
|
@@ -30,20 +30,22 @@ import * as i10 from "./ai-agent-run-analytics.component";
|
|
|
30
30
|
import * as i11 from "./ai-agent-run-visualization.component";
|
|
31
31
|
import * as i12 from "./ai-agent-run-step-detail.component";
|
|
32
32
|
function AIAgentRunFormComponentExtended_span_11_Template(rf, ctx) { if (rf & 1) {
|
|
33
|
-
i0.ɵɵ
|
|
34
|
-
i0.ɵɵ
|
|
35
|
-
i0.ɵɵ
|
|
33
|
+
const _r1 = i0.ɵɵgetCurrentView();
|
|
34
|
+
i0.ɵɵelementStart(0, "span", 35)(1, "a", 36);
|
|
35
|
+
i0.ɵɵlistener("click", function AIAgentRunFormComponentExtended_span_11_Template_a_click_1_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.openEntityRecord("AI Agents", ctx_r1.record.AgentID)); });
|
|
36
|
+
i0.ɵɵtext(2);
|
|
37
|
+
i0.ɵɵelementEnd()();
|
|
36
38
|
} if (rf & 2) {
|
|
37
|
-
const
|
|
38
|
-
i0.ɵɵadvance();
|
|
39
|
-
i0.ɵɵ
|
|
39
|
+
const ctx_r1 = i0.ɵɵnextContext();
|
|
40
|
+
i0.ɵɵadvance(2);
|
|
41
|
+
i0.ɵɵtextInterpolate1(" ", ctx_r1.agent.Name, " ");
|
|
40
42
|
} }
|
|
41
43
|
function AIAgentRunFormComponentExtended_span_14_Template(rf, ctx) { if (rf & 1) {
|
|
42
|
-
const
|
|
43
|
-
i0.ɵɵelementStart(0, "span",
|
|
44
|
-
i0.ɵɵelement(1, "i",
|
|
45
|
-
i0.ɵɵelementStart(2, "a",
|
|
46
|
-
i0.ɵɵlistener("click", function AIAgentRunFormComponentExtended_span_14_Template_a_click_2_listener() { i0.ɵɵrestoreView(
|
|
44
|
+
const _r3 = i0.ɵɵgetCurrentView();
|
|
45
|
+
i0.ɵɵelementStart(0, "span", 37);
|
|
46
|
+
i0.ɵɵelement(1, "i", 38);
|
|
47
|
+
i0.ɵɵelementStart(2, "a", 39);
|
|
48
|
+
i0.ɵɵlistener("click", function AIAgentRunFormComponentExtended_span_14_Template_a_click_2_listener() { i0.ɵɵrestoreView(_r3); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.navigateToParentRun()); });
|
|
47
49
|
i0.ɵɵtext(3, "Parent Run");
|
|
48
50
|
i0.ɵɵelementEnd()();
|
|
49
51
|
} }
|
|
@@ -56,9 +58,9 @@ function AIAgentRunFormComponentExtended_div_29_Template(rf, ctx) { if (rf & 1)
|
|
|
56
58
|
i0.ɵɵpipe(5, "date");
|
|
57
59
|
i0.ɵɵelementEnd()();
|
|
58
60
|
} if (rf & 2) {
|
|
59
|
-
const
|
|
61
|
+
const ctx_r1 = i0.ɵɵnextContext();
|
|
60
62
|
i0.ɵɵadvance(4);
|
|
61
|
-
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind2(5, 1,
|
|
63
|
+
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind2(5, 1, ctx_r1.record.CompletedAt, "medium"));
|
|
62
64
|
} }
|
|
63
65
|
function AIAgentRunFormComponentExtended_div_30_Template(rf, ctx) { if (rf & 1) {
|
|
64
66
|
i0.ɵɵelementStart(0, "div", 21)(1, "span", 22);
|
|
@@ -68,9 +70,9 @@ function AIAgentRunFormComponentExtended_div_30_Template(rf, ctx) { if (rf & 1)
|
|
|
68
70
|
i0.ɵɵtext(4);
|
|
69
71
|
i0.ɵɵelementEnd()();
|
|
70
72
|
} if (rf & 2) {
|
|
71
|
-
const
|
|
73
|
+
const ctx_r1 = i0.ɵɵnextContext();
|
|
72
74
|
i0.ɵɵadvance(4);
|
|
73
|
-
i0.ɵɵtextInterpolate(
|
|
75
|
+
i0.ɵɵtextInterpolate(ctx_r1.calculateDuration(ctx_r1.record.StartedAt, ctx_r1.record.CompletedAt));
|
|
74
76
|
} }
|
|
75
77
|
function AIAgentRunFormComponentExtended_div_31_Template(rf, ctx) { if (rf & 1) {
|
|
76
78
|
i0.ɵɵelementStart(0, "div", 21)(1, "span", 22);
|
|
@@ -80,11 +82,11 @@ function AIAgentRunFormComponentExtended_div_31_Template(rf, ctx) { if (rf & 1)
|
|
|
80
82
|
i0.ɵɵtext(4);
|
|
81
83
|
i0.ɵɵelementEnd()();
|
|
82
84
|
} if (rf & 2) {
|
|
83
|
-
const
|
|
85
|
+
const ctx_r1 = i0.ɵɵnextContext();
|
|
84
86
|
i0.ɵɵadvance(3);
|
|
85
|
-
i0.ɵɵclassProp("success",
|
|
87
|
+
i0.ɵɵclassProp("success", ctx_r1.record.Success)("error", !ctx_r1.record.Success);
|
|
86
88
|
i0.ɵɵadvance();
|
|
87
|
-
i0.ɵɵtextInterpolate1(" ",
|
|
89
|
+
i0.ɵɵtextInterpolate1(" ", ctx_r1.record.Success ? "Success" : "Failed", " ");
|
|
88
90
|
} }
|
|
89
91
|
function AIAgentRunFormComponentExtended_div_32_span_3_Template(rf, ctx) { if (rf & 1) {
|
|
90
92
|
i0.ɵɵelementStart(0, "span", 23);
|
|
@@ -92,27 +94,27 @@ function AIAgentRunFormComponentExtended_div_32_span_3_Template(rf, ctx) { if (r
|
|
|
92
94
|
i0.ɵɵpipe(2, "number");
|
|
93
95
|
i0.ɵɵelementEnd();
|
|
94
96
|
} if (rf & 2) {
|
|
95
|
-
const
|
|
97
|
+
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
96
98
|
i0.ɵɵadvance();
|
|
97
|
-
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind2(2, 1,
|
|
99
|
+
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind2(2, 1, ctx_r1.costMetrics.totalTokensInput + ctx_r1.costMetrics.totalTokensOutput, "1.0-0"));
|
|
98
100
|
} }
|
|
99
101
|
function AIAgentRunFormComponentExtended_div_32_span_4_Template(rf, ctx) { if (rf & 1) {
|
|
100
|
-
i0.ɵɵelementStart(0, "span",
|
|
101
|
-
i0.ɵɵelement(1, "i",
|
|
102
|
+
i0.ɵɵelementStart(0, "span", 42);
|
|
103
|
+
i0.ɵɵelement(1, "i", 43);
|
|
102
104
|
i0.ɵɵelementEnd();
|
|
103
105
|
} }
|
|
104
106
|
function AIAgentRunFormComponentExtended_div_32_Template(rf, ctx) { if (rf & 1) {
|
|
105
107
|
i0.ɵɵelementStart(0, "div", 21)(1, "span", 22);
|
|
106
108
|
i0.ɵɵtext(2, "Tokens");
|
|
107
109
|
i0.ɵɵelementEnd();
|
|
108
|
-
i0.ɵɵtemplate(3, AIAgentRunFormComponentExtended_div_32_span_3_Template, 3, 4, "span",
|
|
110
|
+
i0.ɵɵtemplate(3, AIAgentRunFormComponentExtended_div_32_span_3_Template, 3, 4, "span", 40)(4, AIAgentRunFormComponentExtended_div_32_span_4_Template, 2, 0, "span", 41);
|
|
109
111
|
i0.ɵɵelementEnd();
|
|
110
112
|
} if (rf & 2) {
|
|
111
|
-
const
|
|
113
|
+
const ctx_r1 = i0.ɵɵnextContext();
|
|
112
114
|
i0.ɵɵadvance(3);
|
|
113
|
-
i0.ɵɵproperty("ngIf", !
|
|
115
|
+
i0.ɵɵproperty("ngIf", !ctx_r1.costMetrics.isLoading);
|
|
114
116
|
i0.ɵɵadvance();
|
|
115
|
-
i0.ɵɵproperty("ngIf",
|
|
117
|
+
i0.ɵɵproperty("ngIf", ctx_r1.costMetrics.isLoading);
|
|
116
118
|
} }
|
|
117
119
|
function AIAgentRunFormComponentExtended_div_33_span_3_Template(rf, ctx) { if (rf & 1) {
|
|
118
120
|
i0.ɵɵelementStart(0, "span", 23);
|
|
@@ -120,27 +122,27 @@ function AIAgentRunFormComponentExtended_div_33_span_3_Template(rf, ctx) { if (r
|
|
|
120
122
|
i0.ɵɵpipe(2, "number");
|
|
121
123
|
i0.ɵɵelementEnd();
|
|
122
124
|
} if (rf & 2) {
|
|
123
|
-
const
|
|
125
|
+
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
124
126
|
i0.ɵɵadvance();
|
|
125
|
-
i0.ɵɵtextInterpolate1("$", i0.ɵɵpipeBind2(2, 1,
|
|
127
|
+
i0.ɵɵtextInterpolate1("$", i0.ɵɵpipeBind2(2, 1, ctx_r1.costMetrics.totalCost, "1.2-4"), "");
|
|
126
128
|
} }
|
|
127
129
|
function AIAgentRunFormComponentExtended_div_33_span_4_Template(rf, ctx) { if (rf & 1) {
|
|
128
|
-
i0.ɵɵelementStart(0, "span",
|
|
129
|
-
i0.ɵɵelement(1, "i",
|
|
130
|
+
i0.ɵɵelementStart(0, "span", 42);
|
|
131
|
+
i0.ɵɵelement(1, "i", 43);
|
|
130
132
|
i0.ɵɵelementEnd();
|
|
131
133
|
} }
|
|
132
134
|
function AIAgentRunFormComponentExtended_div_33_Template(rf, ctx) { if (rf & 1) {
|
|
133
135
|
i0.ɵɵelementStart(0, "div", 21)(1, "span", 22);
|
|
134
136
|
i0.ɵɵtext(2, "Cost");
|
|
135
137
|
i0.ɵɵelementEnd();
|
|
136
|
-
i0.ɵɵtemplate(3, AIAgentRunFormComponentExtended_div_33_span_3_Template, 3, 4, "span",
|
|
138
|
+
i0.ɵɵtemplate(3, AIAgentRunFormComponentExtended_div_33_span_3_Template, 3, 4, "span", 40)(4, AIAgentRunFormComponentExtended_div_33_span_4_Template, 2, 0, "span", 41);
|
|
137
139
|
i0.ɵɵelementEnd();
|
|
138
140
|
} if (rf & 2) {
|
|
139
|
-
const
|
|
141
|
+
const ctx_r1 = i0.ɵɵnextContext();
|
|
140
142
|
i0.ɵɵadvance(3);
|
|
141
|
-
i0.ɵɵproperty("ngIf", !
|
|
143
|
+
i0.ɵɵproperty("ngIf", !ctx_r1.costMetrics.isLoading);
|
|
142
144
|
i0.ɵɵadvance();
|
|
143
|
-
i0.ɵɵproperty("ngIf",
|
|
145
|
+
i0.ɵɵproperty("ngIf", ctx_r1.costMetrics.isLoading);
|
|
144
146
|
} }
|
|
145
147
|
function AIAgentRunFormComponentExtended_div_34_Template(rf, ctx) { if (rf & 1) {
|
|
146
148
|
i0.ɵɵelementStart(0, "div", 21)(1, "span", 22);
|
|
@@ -150,85 +152,85 @@ function AIAgentRunFormComponentExtended_div_34_Template(rf, ctx) { if (rf & 1)
|
|
|
150
152
|
i0.ɵɵtext(4);
|
|
151
153
|
i0.ɵɵelementEnd()();
|
|
152
154
|
} if (rf & 2) {
|
|
153
|
-
const
|
|
155
|
+
const ctx_r1 = i0.ɵɵnextContext();
|
|
154
156
|
i0.ɵɵadvance(4);
|
|
155
|
-
i0.ɵɵtextInterpolate(
|
|
157
|
+
i0.ɵɵtextInterpolate(ctx_r1.record.EffortLevel);
|
|
156
158
|
} }
|
|
157
159
|
function AIAgentRunFormComponentExtended_div_35_Template(rf, ctx) { if (rf & 1) {
|
|
158
|
-
const
|
|
159
|
-
i0.ɵɵelementStart(0, "div",
|
|
160
|
-
i0.ɵɵelement(2, "i",
|
|
161
|
-
i0.ɵɵelementStart(3, "div",
|
|
160
|
+
const _r4 = i0.ɵɵgetCurrentView();
|
|
161
|
+
i0.ɵɵelementStart(0, "div", 44)(1, "div", 45);
|
|
162
|
+
i0.ɵɵelement(2, "i", 46);
|
|
163
|
+
i0.ɵɵelementStart(3, "div", 47)(4, "div", 48);
|
|
162
164
|
i0.ɵɵtext(5, "Configuration");
|
|
163
165
|
i0.ɵɵelementEnd();
|
|
164
|
-
i0.ɵɵelementStart(6, "div",
|
|
165
|
-
i0.ɵɵlistener("click", function AIAgentRunFormComponentExtended_div_35_Template_a_click_7_listener() { i0.ɵɵrestoreView(
|
|
166
|
+
i0.ɵɵelementStart(6, "div", 49)(7, "a", 36);
|
|
167
|
+
i0.ɵɵlistener("click", function AIAgentRunFormComponentExtended_div_35_Template_a_click_7_listener() { i0.ɵɵrestoreView(_r4); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.openEntityRecord("MJ: AI Configurations", ctx_r1.record.ConfigurationID)); });
|
|
166
168
|
i0.ɵɵtext(8);
|
|
167
169
|
i0.ɵɵelementEnd()()()()();
|
|
168
170
|
} if (rf & 2) {
|
|
169
|
-
const
|
|
171
|
+
const ctx_r1 = i0.ɵɵnextContext();
|
|
170
172
|
i0.ɵɵadvance(8);
|
|
171
|
-
i0.ɵɵtextInterpolate1(" ",
|
|
173
|
+
i0.ɵɵtextInterpolate1(" ", ctx_r1.record.Configuration || "Unknown", " ");
|
|
172
174
|
} }
|
|
173
175
|
function AIAgentRunFormComponentExtended_div_50_Template(rf, ctx) { if (rf & 1) {
|
|
174
|
-
const
|
|
176
|
+
const _r5 = i0.ɵɵgetCurrentView();
|
|
175
177
|
i0.ɵɵelementStart(0, "div", 50)(1, "kendo-splitter", 51)(2, "kendo-splitter-pane", 52)(3, "mj-ai-agent-run-timeline", 53);
|
|
176
|
-
i0.ɵɵlistener("itemSelected", function AIAgentRunFormComponentExtended_div_50_Template_mj_ai_agent_run_timeline_itemSelected_3_listener($event) { i0.ɵɵrestoreView(
|
|
178
|
+
i0.ɵɵlistener("itemSelected", function AIAgentRunFormComponentExtended_div_50_Template_mj_ai_agent_run_timeline_itemSelected_3_listener($event) { i0.ɵɵrestoreView(_r5); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.selectTimelineItem($event)); })("navigateToEntity", function AIAgentRunFormComponentExtended_div_50_Template_mj_ai_agent_run_timeline_navigateToEntity_3_listener($event) { i0.ɵɵrestoreView(_r5); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.navigateToEntityRecord($event)); })("agentRunCompleted", function AIAgentRunFormComponentExtended_div_50_Template_mj_ai_agent_run_timeline_agentRunCompleted_3_listener($event) { i0.ɵɵrestoreView(_r5); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onAgentRunCompleted($event)); });
|
|
177
179
|
i0.ɵɵelementEnd()();
|
|
178
180
|
i0.ɵɵelementStart(4, "kendo-splitter-pane", 54)(5, "mj-ai-agent-run-step-detail", 55);
|
|
179
|
-
i0.ɵɵlistener("closePanel", function AIAgentRunFormComponentExtended_div_50_Template_mj_ai_agent_run_step_detail_closePanel_5_listener() { i0.ɵɵrestoreView(
|
|
181
|
+
i0.ɵɵlistener("closePanel", function AIAgentRunFormComponentExtended_div_50_Template_mj_ai_agent_run_step_detail_closePanel_5_listener() { i0.ɵɵrestoreView(_r5); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.closeJsonPanel()); })("navigateToActionLog", function AIAgentRunFormComponentExtended_div_50_Template_mj_ai_agent_run_step_detail_navigateToActionLog_5_listener($event) { i0.ɵɵrestoreView(_r5); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.navigateToActionLog($event)); })("copyToClipboard", function AIAgentRunFormComponentExtended_div_50_Template_mj_ai_agent_run_step_detail_copyToClipboard_5_listener($event) { i0.ɵɵrestoreView(_r5); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.copyToClipboard($event)); });
|
|
180
182
|
i0.ɵɵelementEnd()()()();
|
|
181
183
|
} if (rf & 2) {
|
|
182
|
-
const
|
|
184
|
+
const ctx_r1 = i0.ɵɵnextContext();
|
|
183
185
|
i0.ɵɵadvance(2);
|
|
184
186
|
i0.ɵɵproperty("min", "400px");
|
|
185
187
|
i0.ɵɵadvance();
|
|
186
|
-
i0.ɵɵproperty("aiAgentRunId",
|
|
188
|
+
i0.ɵɵproperty("aiAgentRunId", ctx_r1.record.ID)("dataHelper", ctx_r1.dataHelper)("autoRefresh", ctx_r1.record.Status === "Running")("refreshInterval", 30000);
|
|
187
189
|
i0.ɵɵadvance();
|
|
188
|
-
i0.ɵɵproperty("size", "45%")("min", "300px")("collapsed", !
|
|
190
|
+
i0.ɵɵproperty("size", "45%")("min", "300px")("collapsed", !ctx_r1.selectedTimelineItem);
|
|
189
191
|
i0.ɵɵadvance();
|
|
190
|
-
i0.ɵɵproperty("selectedTimelineItem",
|
|
192
|
+
i0.ɵɵproperty("selectedTimelineItem", ctx_r1.selectedTimelineItem);
|
|
191
193
|
} }
|
|
192
194
|
function AIAgentRunFormComponentExtended_div_51_mj_ai_agent_run_visualization_1_Template(rf, ctx) { if (rf & 1) {
|
|
193
195
|
i0.ɵɵelement(0, "mj-ai-agent-run-visualization", 57, 0);
|
|
194
196
|
} if (rf & 2) {
|
|
195
|
-
const
|
|
196
|
-
i0.ɵɵproperty("aiAgentRunId",
|
|
197
|
+
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
198
|
+
i0.ɵɵproperty("aiAgentRunId", ctx_r1.record.ID)("dataHelper", ctx_r1.dataHelper);
|
|
197
199
|
} }
|
|
198
200
|
function AIAgentRunFormComponentExtended_div_51_Template(rf, ctx) { if (rf & 1) {
|
|
199
201
|
i0.ɵɵelementStart(0, "div", 50);
|
|
200
202
|
i0.ɵɵtemplate(1, AIAgentRunFormComponentExtended_div_51_mj_ai_agent_run_visualization_1_Template, 2, 2, "mj-ai-agent-run-visualization", 56);
|
|
201
203
|
i0.ɵɵelementEnd();
|
|
202
204
|
} if (rf & 2) {
|
|
203
|
-
const
|
|
205
|
+
const ctx_r1 = i0.ɵɵnextContext();
|
|
204
206
|
i0.ɵɵadvance();
|
|
205
|
-
i0.ɵɵproperty("ngIf",
|
|
207
|
+
i0.ɵɵproperty("ngIf", ctx_r1.visualizationLoaded);
|
|
206
208
|
} }
|
|
207
209
|
function AIAgentRunFormComponentExtended_div_52_mj_ai_agent_run_analytics_1_Template(rf, ctx) { if (rf & 1) {
|
|
208
210
|
i0.ɵɵelement(0, "mj-ai-agent-run-analytics", 59, 1);
|
|
209
211
|
} if (rf & 2) {
|
|
210
|
-
const
|
|
211
|
-
i0.ɵɵproperty("agentRunId",
|
|
212
|
+
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
213
|
+
i0.ɵɵproperty("agentRunId", ctx_r1.record.ID);
|
|
212
214
|
} }
|
|
213
215
|
function AIAgentRunFormComponentExtended_div_52_Template(rf, ctx) { if (rf & 1) {
|
|
214
216
|
i0.ɵɵelementStart(0, "div", 50);
|
|
215
217
|
i0.ɵɵtemplate(1, AIAgentRunFormComponentExtended_div_52_mj_ai_agent_run_analytics_1_Template, 2, 1, "mj-ai-agent-run-analytics", 58);
|
|
216
218
|
i0.ɵɵelementEnd();
|
|
217
219
|
} if (rf & 2) {
|
|
218
|
-
const
|
|
220
|
+
const ctx_r1 = i0.ɵɵnextContext();
|
|
219
221
|
i0.ɵɵadvance();
|
|
220
|
-
i0.ɵɵproperty("ngIf",
|
|
222
|
+
i0.ɵɵproperty("ngIf", ctx_r1.analyticsLoaded);
|
|
221
223
|
} }
|
|
222
224
|
function AIAgentRunFormComponentExtended_div_53_ng_template_3_a_11_Template(rf, ctx) { if (rf & 1) {
|
|
223
|
-
const
|
|
224
|
-
i0.ɵɵelementStart(0, "a",
|
|
225
|
-
i0.ɵɵlistener("click", function AIAgentRunFormComponentExtended_div_53_ng_template_3_a_11_Template_a_click_0_listener() { i0.ɵɵrestoreView(
|
|
225
|
+
const _r7 = i0.ɵɵgetCurrentView();
|
|
226
|
+
i0.ɵɵelementStart(0, "a", 36);
|
|
227
|
+
i0.ɵɵlistener("click", function AIAgentRunFormComponentExtended_div_53_ng_template_3_a_11_Template_a_click_0_listener() { i0.ɵɵrestoreView(_r7); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.openEntityRecord("MJ: AI Agent Runs", ctx_r1.record.ParentRunID)); });
|
|
226
228
|
i0.ɵɵtext(1);
|
|
227
229
|
i0.ɵɵelementEnd();
|
|
228
230
|
} if (rf & 2) {
|
|
229
|
-
const
|
|
231
|
+
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
230
232
|
i0.ɵɵadvance();
|
|
231
|
-
i0.ɵɵtextInterpolate1(" ",
|
|
233
|
+
i0.ɵɵtextInterpolate1(" ", ctx_r1.record.ParentRunID, " ");
|
|
232
234
|
} }
|
|
233
235
|
function AIAgentRunFormComponentExtended_div_53_ng_template_3_span_12_Template(rf, ctx) { if (rf & 1) {
|
|
234
236
|
i0.ɵɵelementStart(0, "span");
|
|
@@ -236,15 +238,15 @@ function AIAgentRunFormComponentExtended_div_53_ng_template_3_span_12_Template(r
|
|
|
236
238
|
i0.ɵɵelementEnd();
|
|
237
239
|
} }
|
|
238
240
|
function AIAgentRunFormComponentExtended_div_53_ng_template_3_a_17_Template(rf, ctx) { if (rf & 1) {
|
|
239
|
-
const
|
|
240
|
-
i0.ɵɵelementStart(0, "a",
|
|
241
|
-
i0.ɵɵlistener("click", function AIAgentRunFormComponentExtended_div_53_ng_template_3_a_17_Template_a_click_0_listener() { i0.ɵɵrestoreView(
|
|
241
|
+
const _r8 = i0.ɵɵgetCurrentView();
|
|
242
|
+
i0.ɵɵelementStart(0, "a", 36);
|
|
243
|
+
i0.ɵɵlistener("click", function AIAgentRunFormComponentExtended_div_53_ng_template_3_a_17_Template_a_click_0_listener() { i0.ɵɵrestoreView(_r8); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.openEntityRecord("MJ: AI Agent Runs", ctx_r1.record.LastRunID)); });
|
|
242
244
|
i0.ɵɵtext(1);
|
|
243
245
|
i0.ɵɵelementEnd();
|
|
244
246
|
} if (rf & 2) {
|
|
245
|
-
const
|
|
247
|
+
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
246
248
|
i0.ɵɵadvance();
|
|
247
|
-
i0.ɵɵtextInterpolate1(" ",
|
|
249
|
+
i0.ɵɵtextInterpolate1(" ", ctx_r1.record.LastRunID, " ");
|
|
248
250
|
} }
|
|
249
251
|
function AIAgentRunFormComponentExtended_div_53_ng_template_3_span_18_Template(rf, ctx) { if (rf & 1) {
|
|
250
252
|
i0.ɵɵelementStart(0, "span");
|
|
@@ -252,15 +254,15 @@ function AIAgentRunFormComponentExtended_div_53_ng_template_3_span_18_Template(r
|
|
|
252
254
|
i0.ɵɵelementEnd();
|
|
253
255
|
} }
|
|
254
256
|
function AIAgentRunFormComponentExtended_div_53_ng_template_3_a_23_Template(rf, ctx) { if (rf & 1) {
|
|
255
|
-
const
|
|
256
|
-
i0.ɵɵelementStart(0, "a",
|
|
257
|
-
i0.ɵɵlistener("click", function AIAgentRunFormComponentExtended_div_53_ng_template_3_a_23_Template_a_click_0_listener() { i0.ɵɵrestoreView(
|
|
257
|
+
const _r9 = i0.ɵɵgetCurrentView();
|
|
258
|
+
i0.ɵɵelementStart(0, "a", 36);
|
|
259
|
+
i0.ɵɵlistener("click", function AIAgentRunFormComponentExtended_div_53_ng_template_3_a_23_Template_a_click_0_listener() { i0.ɵɵrestoreView(_r9); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.openEntityRecord("Conversations", ctx_r1.record.ConversationID)); });
|
|
258
260
|
i0.ɵɵtext(1);
|
|
259
261
|
i0.ɵɵelementEnd();
|
|
260
262
|
} if (rf & 2) {
|
|
261
|
-
const
|
|
263
|
+
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
262
264
|
i0.ɵɵadvance();
|
|
263
|
-
i0.ɵɵtextInterpolate1(" ",
|
|
265
|
+
i0.ɵɵtextInterpolate1(" ", ctx_r1.record.ConversationID, " ");
|
|
264
266
|
} }
|
|
265
267
|
function AIAgentRunFormComponentExtended_div_53_ng_template_3_span_24_Template(rf, ctx) { if (rf & 1) {
|
|
266
268
|
i0.ɵɵelementStart(0, "span");
|
|
@@ -268,15 +270,15 @@ function AIAgentRunFormComponentExtended_div_53_ng_template_3_span_24_Template(r
|
|
|
268
270
|
i0.ɵɵelementEnd();
|
|
269
271
|
} }
|
|
270
272
|
function AIAgentRunFormComponentExtended_div_53_ng_template_3_a_29_Template(rf, ctx) { if (rf & 1) {
|
|
271
|
-
const
|
|
272
|
-
i0.ɵɵelementStart(0, "a",
|
|
273
|
-
i0.ɵɵlistener("click", function AIAgentRunFormComponentExtended_div_53_ng_template_3_a_29_Template_a_click_0_listener() { i0.ɵɵrestoreView(
|
|
273
|
+
const _r10 = i0.ɵɵgetCurrentView();
|
|
274
|
+
i0.ɵɵelementStart(0, "a", 36);
|
|
275
|
+
i0.ɵɵlistener("click", function AIAgentRunFormComponentExtended_div_53_ng_template_3_a_29_Template_a_click_0_listener() { i0.ɵɵrestoreView(_r10); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.openEntityRecord("Users", ctx_r1.record.UserID)); });
|
|
274
276
|
i0.ɵɵtext(1);
|
|
275
277
|
i0.ɵɵelementEnd();
|
|
276
278
|
} if (rf & 2) {
|
|
277
|
-
const
|
|
279
|
+
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
278
280
|
i0.ɵɵadvance();
|
|
279
|
-
i0.ɵɵtextInterpolate1(" ",
|
|
281
|
+
i0.ɵɵtextInterpolate1(" ", ctx_r1.record.User || "N/A", " ");
|
|
280
282
|
} }
|
|
281
283
|
function AIAgentRunFormComponentExtended_div_53_ng_template_3_span_30_Template(rf, ctx) { if (rf & 1) {
|
|
282
284
|
i0.ɵɵelementStart(0, "span");
|
|
@@ -284,12 +286,12 @@ function AIAgentRunFormComponentExtended_div_53_ng_template_3_span_30_Template(r
|
|
|
284
286
|
i0.ɵɵelementEnd();
|
|
285
287
|
} }
|
|
286
288
|
function AIAgentRunFormComponentExtended_div_53_ng_template_3_Template(rf, ctx) { if (rf & 1) {
|
|
287
|
-
const
|
|
289
|
+
const _r6 = i0.ɵɵgetCurrentView();
|
|
288
290
|
i0.ɵɵelementStart(0, "div", 72)(1, "div", 73)(2, "label");
|
|
289
291
|
i0.ɵɵtext(3, "Agent");
|
|
290
292
|
i0.ɵɵelementEnd();
|
|
291
|
-
i0.ɵɵelementStart(4, "span")(5, "a",
|
|
292
|
-
i0.ɵɵlistener("click", function AIAgentRunFormComponentExtended_div_53_ng_template_3_Template_a_click_5_listener() { i0.ɵɵrestoreView(
|
|
293
|
+
i0.ɵɵelementStart(4, "span")(5, "a", 36);
|
|
294
|
+
i0.ɵɵlistener("click", function AIAgentRunFormComponentExtended_div_53_ng_template_3_Template_a_click_5_listener() { i0.ɵɵrestoreView(_r6); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.openEntityRecord("AI Agents", ctx_r1.record.AgentID)); });
|
|
293
295
|
i0.ɵɵtext(6);
|
|
294
296
|
i0.ɵɵelementEnd()()();
|
|
295
297
|
i0.ɵɵelementStart(7, "div", 73)(8, "label");
|
|
@@ -317,36 +319,36 @@ function AIAgentRunFormComponentExtended_div_53_ng_template_3_Template(rf, ctx)
|
|
|
317
319
|
i0.ɵɵtemplate(29, AIAgentRunFormComponentExtended_div_53_ng_template_3_a_29_Template, 2, 1, "a", 74)(30, AIAgentRunFormComponentExtended_div_53_ng_template_3_span_30_Template, 2, 0, "span", 75);
|
|
318
320
|
i0.ɵɵelementEnd()()();
|
|
319
321
|
} if (rf & 2) {
|
|
320
|
-
const
|
|
322
|
+
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
321
323
|
i0.ɵɵadvance(6);
|
|
322
|
-
i0.ɵɵtextInterpolate1(" ", (
|
|
324
|
+
i0.ɵɵtextInterpolate1(" ", (ctx_r1.agent == null ? null : ctx_r1.agent.Name) || "N/A", " ");
|
|
323
325
|
i0.ɵɵadvance(5);
|
|
324
|
-
i0.ɵɵproperty("ngIf",
|
|
326
|
+
i0.ɵɵproperty("ngIf", ctx_r1.record.ParentRunID);
|
|
325
327
|
i0.ɵɵadvance();
|
|
326
|
-
i0.ɵɵproperty("ngIf", !
|
|
328
|
+
i0.ɵɵproperty("ngIf", !ctx_r1.record.ParentRunID);
|
|
327
329
|
i0.ɵɵadvance(5);
|
|
328
|
-
i0.ɵɵproperty("ngIf",
|
|
330
|
+
i0.ɵɵproperty("ngIf", ctx_r1.record.LastRunID);
|
|
329
331
|
i0.ɵɵadvance();
|
|
330
|
-
i0.ɵɵproperty("ngIf", !
|
|
332
|
+
i0.ɵɵproperty("ngIf", !ctx_r1.record.LastRunID);
|
|
331
333
|
i0.ɵɵadvance(5);
|
|
332
|
-
i0.ɵɵproperty("ngIf",
|
|
334
|
+
i0.ɵɵproperty("ngIf", ctx_r1.record.ConversationID);
|
|
333
335
|
i0.ɵɵadvance();
|
|
334
|
-
i0.ɵɵproperty("ngIf", !
|
|
336
|
+
i0.ɵɵproperty("ngIf", !ctx_r1.record.ConversationID);
|
|
335
337
|
i0.ɵɵadvance(5);
|
|
336
|
-
i0.ɵɵproperty("ngIf",
|
|
338
|
+
i0.ɵɵproperty("ngIf", ctx_r1.record.UserID);
|
|
337
339
|
i0.ɵɵadvance();
|
|
338
|
-
i0.ɵɵproperty("ngIf", !
|
|
340
|
+
i0.ɵɵproperty("ngIf", !ctx_r1.record.UserID);
|
|
339
341
|
} }
|
|
340
342
|
function AIAgentRunFormComponentExtended_div_53_ng_template_5_a_5_Template(rf, ctx) { if (rf & 1) {
|
|
341
|
-
const
|
|
342
|
-
i0.ɵɵelementStart(0, "a",
|
|
343
|
-
i0.ɵɵlistener("click", function AIAgentRunFormComponentExtended_div_53_ng_template_5_a_5_Template_a_click_0_listener() { i0.ɵɵrestoreView(
|
|
343
|
+
const _r11 = i0.ɵɵgetCurrentView();
|
|
344
|
+
i0.ɵɵelementStart(0, "a", 36);
|
|
345
|
+
i0.ɵɵlistener("click", function AIAgentRunFormComponentExtended_div_53_ng_template_5_a_5_Template_a_click_0_listener() { i0.ɵɵrestoreView(_r11); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.openEntityRecord("AI Models", ctx_r1.record.OverrideModelID)); });
|
|
344
346
|
i0.ɵɵtext(1);
|
|
345
347
|
i0.ɵɵelementEnd();
|
|
346
348
|
} if (rf & 2) {
|
|
347
|
-
const
|
|
349
|
+
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
348
350
|
i0.ɵɵadvance();
|
|
349
|
-
i0.ɵɵtextInterpolate1(" ",
|
|
351
|
+
i0.ɵɵtextInterpolate1(" ", ctx_r1.record.OverrideModel || "N/A", " ");
|
|
350
352
|
} }
|
|
351
353
|
function AIAgentRunFormComponentExtended_div_53_ng_template_5_span_6_Template(rf, ctx) { if (rf & 1) {
|
|
352
354
|
i0.ɵɵelementStart(0, "span");
|
|
@@ -354,15 +356,15 @@ function AIAgentRunFormComponentExtended_div_53_ng_template_5_span_6_Template(rf
|
|
|
354
356
|
i0.ɵɵelementEnd();
|
|
355
357
|
} }
|
|
356
358
|
function AIAgentRunFormComponentExtended_div_53_ng_template_5_a_11_Template(rf, ctx) { if (rf & 1) {
|
|
357
|
-
const
|
|
358
|
-
i0.ɵɵelementStart(0, "a",
|
|
359
|
-
i0.ɵɵlistener("click", function AIAgentRunFormComponentExtended_div_53_ng_template_5_a_11_Template_a_click_0_listener() { i0.ɵɵrestoreView(
|
|
359
|
+
const _r12 = i0.ɵɵgetCurrentView();
|
|
360
|
+
i0.ɵɵelementStart(0, "a", 36);
|
|
361
|
+
i0.ɵɵlistener("click", function AIAgentRunFormComponentExtended_div_53_ng_template_5_a_11_Template_a_click_0_listener() { i0.ɵɵrestoreView(_r12); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.openEntityRecord("AI Vendors", ctx_r1.record.OverrideVendorID)); });
|
|
360
362
|
i0.ɵɵtext(1);
|
|
361
363
|
i0.ɵɵelementEnd();
|
|
362
364
|
} if (rf & 2) {
|
|
363
|
-
const
|
|
365
|
+
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
364
366
|
i0.ɵɵadvance();
|
|
365
|
-
i0.ɵɵtextInterpolate1(" ",
|
|
367
|
+
i0.ɵɵtextInterpolate1(" ", ctx_r1.record.OverrideVendor || "N/A", " ");
|
|
366
368
|
} }
|
|
367
369
|
function AIAgentRunFormComponentExtended_div_53_ng_template_5_span_12_Template(rf, ctx) { if (rf & 1) {
|
|
368
370
|
i0.ɵɵelementStart(0, "span");
|
|
@@ -389,29 +391,56 @@ function AIAgentRunFormComponentExtended_div_53_ng_template_5_Template(rf, ctx)
|
|
|
389
391
|
i0.ɵɵtext(17);
|
|
390
392
|
i0.ɵɵelementEnd()()();
|
|
391
393
|
} if (rf & 2) {
|
|
392
|
-
const
|
|
394
|
+
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
393
395
|
i0.ɵɵadvance(5);
|
|
394
|
-
i0.ɵɵproperty("ngIf",
|
|
396
|
+
i0.ɵɵproperty("ngIf", ctx_r1.record.OverrideModelID);
|
|
395
397
|
i0.ɵɵadvance();
|
|
396
|
-
i0.ɵɵproperty("ngIf", !
|
|
398
|
+
i0.ɵɵproperty("ngIf", !ctx_r1.record.OverrideModelID);
|
|
397
399
|
i0.ɵɵadvance(5);
|
|
398
|
-
i0.ɵɵproperty("ngIf",
|
|
400
|
+
i0.ɵɵproperty("ngIf", ctx_r1.record.OverrideVendorID);
|
|
399
401
|
i0.ɵɵadvance();
|
|
400
|
-
i0.ɵɵproperty("ngIf", !
|
|
402
|
+
i0.ɵɵproperty("ngIf", !ctx_r1.record.OverrideVendorID);
|
|
401
403
|
i0.ɵɵadvance(5);
|
|
402
|
-
i0.ɵɵtextInterpolate(
|
|
404
|
+
i0.ɵɵtextInterpolate(ctx_r1.record.Verbose ? "Yes" : "No");
|
|
405
|
+
} }
|
|
406
|
+
function AIAgentRunFormComponentExtended_div_53_ng_template_7_Conditional_9_Template(rf, ctx) { if (rf & 1) {
|
|
407
|
+
i0.ɵɵelementStart(0, "span");
|
|
408
|
+
i0.ɵɵtext(1, "In Progress");
|
|
409
|
+
i0.ɵɵelementEnd();
|
|
403
410
|
} }
|
|
404
|
-
function
|
|
405
|
-
i0.ɵɵelementStart(0, "
|
|
411
|
+
function AIAgentRunFormComponentExtended_div_53_ng_template_7_Conditional_10_Template(rf, ctx) { if (rf & 1) {
|
|
412
|
+
i0.ɵɵelementStart(0, "span", 76);
|
|
413
|
+
i0.ɵɵtext(1, "Yes");
|
|
414
|
+
i0.ɵɵelementEnd();
|
|
415
|
+
} }
|
|
416
|
+
function AIAgentRunFormComponentExtended_div_53_ng_template_7_Conditional_11_Template(rf, ctx) { if (rf & 1) {
|
|
417
|
+
i0.ɵɵelementStart(0, "span", 77);
|
|
418
|
+
i0.ɵɵtext(1, "No");
|
|
419
|
+
i0.ɵɵelementEnd();
|
|
420
|
+
} }
|
|
421
|
+
function AIAgentRunFormComponentExtended_div_53_ng_template_7_div_12_Template(rf, ctx) { if (rf & 1) {
|
|
422
|
+
i0.ɵɵelementStart(0, "div", 79)(1, "label");
|
|
423
|
+
i0.ɵɵtext(2, "Message");
|
|
424
|
+
i0.ɵɵelementEnd();
|
|
425
|
+
i0.ɵɵelementStart(3, "div", 80);
|
|
426
|
+
i0.ɵɵtext(4);
|
|
427
|
+
i0.ɵɵelementEnd()();
|
|
428
|
+
} if (rf & 2) {
|
|
429
|
+
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
430
|
+
i0.ɵɵadvance(4);
|
|
431
|
+
i0.ɵɵtextInterpolate(ctx_r1.record.Message);
|
|
432
|
+
} }
|
|
433
|
+
function AIAgentRunFormComponentExtended_div_53_ng_template_7_div_13_Template(rf, ctx) { if (rf & 1) {
|
|
434
|
+
i0.ɵɵelementStart(0, "div", 79)(1, "label");
|
|
406
435
|
i0.ɵɵtext(2, "Error Message");
|
|
407
436
|
i0.ɵɵelementEnd();
|
|
408
|
-
i0.ɵɵelementStart(3, "div",
|
|
437
|
+
i0.ɵɵelementStart(3, "div", 77);
|
|
409
438
|
i0.ɵɵtext(4);
|
|
410
439
|
i0.ɵɵelementEnd()();
|
|
411
440
|
} if (rf & 2) {
|
|
412
|
-
const
|
|
441
|
+
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
413
442
|
i0.ɵɵadvance(4);
|
|
414
|
-
i0.ɵɵtextInterpolate(
|
|
443
|
+
i0.ɵɵtextInterpolate(ctx_r1.record.ErrorMessage);
|
|
415
444
|
} }
|
|
416
445
|
function AIAgentRunFormComponentExtended_div_53_ng_template_7_Template(rf, ctx) { if (rf & 1) {
|
|
417
446
|
i0.ɵɵelementStart(0, "div", 72)(1, "div", 73)(2, "label");
|
|
@@ -423,23 +452,22 @@ function AIAgentRunFormComponentExtended_div_53_ng_template_7_Template(rf, ctx)
|
|
|
423
452
|
i0.ɵɵelementStart(6, "div", 73)(7, "label");
|
|
424
453
|
i0.ɵɵtext(8, "Success");
|
|
425
454
|
i0.ɵɵelementEnd();
|
|
426
|
-
i0.ɵɵ
|
|
427
|
-
i0.ɵɵ
|
|
428
|
-
i0.ɵɵ
|
|
429
|
-
i0.ɵɵtemplate(11, AIAgentRunFormComponentExtended_div_53_ng_template_7_div_11_Template, 5, 1, "div", 76);
|
|
455
|
+
i0.ɵɵtemplate(9, AIAgentRunFormComponentExtended_div_53_ng_template_7_Conditional_9_Template, 2, 0, "span")(10, AIAgentRunFormComponentExtended_div_53_ng_template_7_Conditional_10_Template, 2, 0, "span", 76)(11, AIAgentRunFormComponentExtended_div_53_ng_template_7_Conditional_11_Template, 2, 0, "span", 77);
|
|
456
|
+
i0.ɵɵelementEnd();
|
|
457
|
+
i0.ɵɵtemplate(12, AIAgentRunFormComponentExtended_div_53_ng_template_7_div_12_Template, 5, 1, "div", 78)(13, AIAgentRunFormComponentExtended_div_53_ng_template_7_div_13_Template, 5, 1, "div", 78);
|
|
430
458
|
i0.ɵɵelementEnd();
|
|
431
459
|
} if (rf & 2) {
|
|
432
|
-
const
|
|
460
|
+
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
433
461
|
i0.ɵɵadvance(4);
|
|
434
|
-
i0.ɵɵattribute("data-status",
|
|
462
|
+
i0.ɵɵattribute("data-status", ctx_r1.record.Status);
|
|
435
463
|
i0.ɵɵadvance();
|
|
436
|
-
i0.ɵɵtextInterpolate1(" ",
|
|
464
|
+
i0.ɵɵtextInterpolate1(" ", ctx_r1.record.Status, " ");
|
|
437
465
|
i0.ɵɵadvance(4);
|
|
438
|
-
i0.ɵɵ
|
|
439
|
-
i0.ɵɵadvance();
|
|
440
|
-
i0.ɵɵ
|
|
466
|
+
i0.ɵɵconditional(ctx_r1.record.Success === null ? 9 : ctx_r1.record.Success ? 10 : 11);
|
|
467
|
+
i0.ɵɵadvance(3);
|
|
468
|
+
i0.ɵɵproperty("ngIf", ctx_r1.record.Message);
|
|
441
469
|
i0.ɵɵadvance();
|
|
442
|
-
i0.ɵɵproperty("ngIf",
|
|
470
|
+
i0.ɵɵproperty("ngIf", ctx_r1.record.ErrorMessage);
|
|
443
471
|
} }
|
|
444
472
|
function AIAgentRunFormComponentExtended_div_53_ng_template_9_Template(rf, ctx) { if (rf & 1) {
|
|
445
473
|
i0.ɵɵelementStart(0, "div", 72)(1, "div", 73)(2, "label");
|
|
@@ -478,145 +506,145 @@ function AIAgentRunFormComponentExtended_div_53_ng_template_9_Template(rf, ctx)
|
|
|
478
506
|
i0.ɵɵpipe(30, "number");
|
|
479
507
|
i0.ɵɵelementEnd()()();
|
|
480
508
|
} if (rf & 2) {
|
|
481
|
-
const
|
|
509
|
+
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
482
510
|
i0.ɵɵadvance(5);
|
|
483
|
-
i0.ɵɵtextInterpolate(
|
|
511
|
+
i0.ɵɵtextInterpolate(ctx_r1.record.TotalTokensUsed ? i0.ɵɵpipeBind2(6, 5, ctx_r1.record.TotalTokensUsed, "1.0-0") : "N/A");
|
|
484
512
|
i0.ɵɵadvance(6);
|
|
485
|
-
i0.ɵɵtextInterpolate(
|
|
513
|
+
i0.ɵɵtextInterpolate(ctx_r1.record.TotalPromptTokensUsed ? i0.ɵɵpipeBind2(12, 8, ctx_r1.record.TotalPromptTokensUsed, "1.0-0") : "N/A");
|
|
486
514
|
i0.ɵɵadvance(6);
|
|
487
|
-
i0.ɵɵtextInterpolate(
|
|
515
|
+
i0.ɵɵtextInterpolate(ctx_r1.record.TotalCompletionTokensUsed ? i0.ɵɵpipeBind2(18, 11, ctx_r1.record.TotalCompletionTokensUsed, "1.0-0") : "N/A");
|
|
488
516
|
i0.ɵɵadvance(6);
|
|
489
|
-
i0.ɵɵtextInterpolate(
|
|
517
|
+
i0.ɵɵtextInterpolate(ctx_r1.record.TotalCost != null ? "$" + i0.ɵɵpipeBind2(24, 14, ctx_r1.record.TotalCost, "1.2-4") : "N/A");
|
|
490
518
|
i0.ɵɵadvance(6);
|
|
491
|
-
i0.ɵɵtextInterpolate(
|
|
519
|
+
i0.ɵɵtextInterpolate(ctx_r1.record.TotalPromptIterations != null ? i0.ɵɵpipeBind2(30, 17, ctx_r1.record.TotalPromptIterations, "1.0-0") : "N/A");
|
|
492
520
|
} }
|
|
493
521
|
function AIAgentRunFormComponentExtended_div_53_kendo_panelbar_item_10_ng_template_1_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
494
|
-
i0.ɵɵelement(0, "mj-code-editor",
|
|
522
|
+
i0.ɵɵelement(0, "mj-code-editor", 83);
|
|
495
523
|
} if (rf & 2) {
|
|
496
|
-
const
|
|
497
|
-
i0.ɵɵproperty("ngModel",
|
|
524
|
+
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
525
|
+
i0.ɵɵproperty("ngModel", ctx_r1.parsedResult)("language", "json")("readonly", true);
|
|
498
526
|
} }
|
|
499
527
|
function AIAgentRunFormComponentExtended_div_53_kendo_panelbar_item_10_ng_template_1_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
500
|
-
i0.ɵɵelementStart(0, "div",
|
|
501
|
-
i0.ɵɵelement(1, "i",
|
|
528
|
+
i0.ɵɵelementStart(0, "div", 84);
|
|
529
|
+
i0.ɵɵelement(1, "i", 43);
|
|
502
530
|
i0.ɵɵtext(2, " Loading result data... ");
|
|
503
531
|
i0.ɵɵelementEnd();
|
|
504
532
|
} }
|
|
505
533
|
function AIAgentRunFormComponentExtended_div_53_kendo_panelbar_item_10_ng_template_1_Template(rf, ctx) { if (rf & 1) {
|
|
506
|
-
i0.ɵɵelementStart(0, "div",
|
|
507
|
-
i0.ɵɵtemplate(1, AIAgentRunFormComponentExtended_div_53_kendo_panelbar_item_10_ng_template_1_Conditional_1_Template, 1, 3, "mj-code-editor",
|
|
534
|
+
i0.ɵɵelementStart(0, "div", 82);
|
|
535
|
+
i0.ɵɵtemplate(1, AIAgentRunFormComponentExtended_div_53_kendo_panelbar_item_10_ng_template_1_Conditional_1_Template, 1, 3, "mj-code-editor", 83)(2, AIAgentRunFormComponentExtended_div_53_kendo_panelbar_item_10_ng_template_1_Conditional_2_Template, 3, 0, "div", 84);
|
|
508
536
|
i0.ɵɵelementEnd();
|
|
509
537
|
} if (rf & 2) {
|
|
510
|
-
const
|
|
538
|
+
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
511
539
|
i0.ɵɵadvance();
|
|
512
|
-
i0.ɵɵconditional(
|
|
540
|
+
i0.ɵɵconditional(ctx_r1.isParsingComplete ? 1 : 2);
|
|
513
541
|
} }
|
|
514
542
|
function AIAgentRunFormComponentExtended_div_53_kendo_panelbar_item_10_Template(rf, ctx) { if (rf & 1) {
|
|
515
|
-
i0.ɵɵelementStart(0, "kendo-panelbar-item",
|
|
543
|
+
i0.ɵɵelementStart(0, "kendo-panelbar-item", 81);
|
|
516
544
|
i0.ɵɵtemplate(1, AIAgentRunFormComponentExtended_div_53_kendo_panelbar_item_10_ng_template_1_Template, 3, 1, "ng-template", 63);
|
|
517
545
|
i0.ɵɵelementEnd();
|
|
518
546
|
} }
|
|
519
547
|
function AIAgentRunFormComponentExtended_div_53_kendo_panelbar_item_11_ng_template_1_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
520
|
-
i0.ɵɵelement(0, "mj-code-editor",
|
|
548
|
+
i0.ɵɵelement(0, "mj-code-editor", 83);
|
|
521
549
|
} if (rf & 2) {
|
|
522
|
-
const
|
|
523
|
-
i0.ɵɵproperty("ngModel",
|
|
550
|
+
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
551
|
+
i0.ɵɵproperty("ngModel", ctx_r1.parsedStartingPayload)("language", "json")("readonly", true);
|
|
524
552
|
} }
|
|
525
553
|
function AIAgentRunFormComponentExtended_div_53_kendo_panelbar_item_11_ng_template_1_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
526
|
-
i0.ɵɵelementStart(0, "div",
|
|
527
|
-
i0.ɵɵelement(1, "i",
|
|
554
|
+
i0.ɵɵelementStart(0, "div", 84);
|
|
555
|
+
i0.ɵɵelement(1, "i", 43);
|
|
528
556
|
i0.ɵɵtext(2, " Loading payload data... ");
|
|
529
557
|
i0.ɵɵelementEnd();
|
|
530
558
|
} }
|
|
531
559
|
function AIAgentRunFormComponentExtended_div_53_kendo_panelbar_item_11_ng_template_1_Template(rf, ctx) { if (rf & 1) {
|
|
532
|
-
i0.ɵɵelementStart(0, "div",
|
|
533
|
-
i0.ɵɵtemplate(1, AIAgentRunFormComponentExtended_div_53_kendo_panelbar_item_11_ng_template_1_Conditional_1_Template, 1, 3, "mj-code-editor",
|
|
560
|
+
i0.ɵɵelementStart(0, "div", 82);
|
|
561
|
+
i0.ɵɵtemplate(1, AIAgentRunFormComponentExtended_div_53_kendo_panelbar_item_11_ng_template_1_Conditional_1_Template, 1, 3, "mj-code-editor", 83)(2, AIAgentRunFormComponentExtended_div_53_kendo_panelbar_item_11_ng_template_1_Conditional_2_Template, 3, 0, "div", 84);
|
|
534
562
|
i0.ɵɵelementEnd();
|
|
535
563
|
} if (rf & 2) {
|
|
536
|
-
const
|
|
564
|
+
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
537
565
|
i0.ɵɵadvance();
|
|
538
|
-
i0.ɵɵconditional(
|
|
566
|
+
i0.ɵɵconditional(ctx_r1.isParsingComplete ? 1 : 2);
|
|
539
567
|
} }
|
|
540
568
|
function AIAgentRunFormComponentExtended_div_53_kendo_panelbar_item_11_Template(rf, ctx) { if (rf & 1) {
|
|
541
|
-
i0.ɵɵelementStart(0, "kendo-panelbar-item",
|
|
569
|
+
i0.ɵɵelementStart(0, "kendo-panelbar-item", 85);
|
|
542
570
|
i0.ɵɵtemplate(1, AIAgentRunFormComponentExtended_div_53_kendo_panelbar_item_11_ng_template_1_Template, 3, 1, "ng-template", 63);
|
|
543
571
|
i0.ɵɵelementEnd();
|
|
544
572
|
} }
|
|
545
573
|
function AIAgentRunFormComponentExtended_div_53_kendo_panelbar_item_12_ng_template_1_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
546
|
-
i0.ɵɵelement(0, "mj-code-editor",
|
|
574
|
+
i0.ɵɵelement(0, "mj-code-editor", 83);
|
|
547
575
|
} if (rf & 2) {
|
|
548
|
-
const
|
|
549
|
-
i0.ɵɵproperty("ngModel",
|
|
576
|
+
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
577
|
+
i0.ɵɵproperty("ngModel", ctx_r1.parsedData)("language", "json")("readonly", true);
|
|
550
578
|
} }
|
|
551
579
|
function AIAgentRunFormComponentExtended_div_53_kendo_panelbar_item_12_ng_template_1_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
552
|
-
i0.ɵɵelementStart(0, "div",
|
|
553
|
-
i0.ɵɵelement(1, "i",
|
|
580
|
+
i0.ɵɵelementStart(0, "div", 84);
|
|
581
|
+
i0.ɵɵelement(1, "i", 43);
|
|
554
582
|
i0.ɵɵtext(2, " Loading execution data... ");
|
|
555
583
|
i0.ɵɵelementEnd();
|
|
556
584
|
} }
|
|
557
585
|
function AIAgentRunFormComponentExtended_div_53_kendo_panelbar_item_12_ng_template_1_Template(rf, ctx) { if (rf & 1) {
|
|
558
|
-
i0.ɵɵelementStart(0, "div",
|
|
559
|
-
i0.ɵɵtemplate(1, AIAgentRunFormComponentExtended_div_53_kendo_panelbar_item_12_ng_template_1_Conditional_1_Template, 1, 3, "mj-code-editor",
|
|
586
|
+
i0.ɵɵelementStart(0, "div", 82);
|
|
587
|
+
i0.ɵɵtemplate(1, AIAgentRunFormComponentExtended_div_53_kendo_panelbar_item_12_ng_template_1_Conditional_1_Template, 1, 3, "mj-code-editor", 83)(2, AIAgentRunFormComponentExtended_div_53_kendo_panelbar_item_12_ng_template_1_Conditional_2_Template, 3, 0, "div", 84);
|
|
560
588
|
i0.ɵɵelementEnd();
|
|
561
589
|
} if (rf & 2) {
|
|
562
|
-
const
|
|
590
|
+
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
563
591
|
i0.ɵɵadvance();
|
|
564
|
-
i0.ɵɵconditional(
|
|
592
|
+
i0.ɵɵconditional(ctx_r1.isParsingComplete ? 1 : 2);
|
|
565
593
|
} }
|
|
566
594
|
function AIAgentRunFormComponentExtended_div_53_kendo_panelbar_item_12_Template(rf, ctx) { if (rf & 1) {
|
|
567
|
-
i0.ɵɵelementStart(0, "kendo-panelbar-item",
|
|
595
|
+
i0.ɵɵelementStart(0, "kendo-panelbar-item", 86);
|
|
568
596
|
i0.ɵɵtemplate(1, AIAgentRunFormComponentExtended_div_53_kendo_panelbar_item_12_ng_template_1_Template, 3, 1, "ng-template", 63);
|
|
569
597
|
i0.ɵɵelementEnd();
|
|
570
598
|
} }
|
|
571
599
|
function AIAgentRunFormComponentExtended_div_53_kendo_panelbar_item_13_ng_template_1_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
572
|
-
i0.ɵɵelement(0, "mj-code-editor",
|
|
600
|
+
i0.ɵɵelement(0, "mj-code-editor", 83);
|
|
573
601
|
} if (rf & 2) {
|
|
574
|
-
const
|
|
575
|
-
i0.ɵɵproperty("ngModel",
|
|
602
|
+
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
603
|
+
i0.ɵɵproperty("ngModel", ctx_r1.parsedFinalPayload)("language", "json")("readonly", true);
|
|
576
604
|
} }
|
|
577
605
|
function AIAgentRunFormComponentExtended_div_53_kendo_panelbar_item_13_ng_template_1_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
578
|
-
i0.ɵɵelementStart(0, "div",
|
|
579
|
-
i0.ɵɵelement(1, "i",
|
|
606
|
+
i0.ɵɵelementStart(0, "div", 84);
|
|
607
|
+
i0.ɵɵelement(1, "i", 43);
|
|
580
608
|
i0.ɵɵtext(2, " Loading final payload data... ");
|
|
581
609
|
i0.ɵɵelementEnd();
|
|
582
610
|
} }
|
|
583
611
|
function AIAgentRunFormComponentExtended_div_53_kendo_panelbar_item_13_ng_template_1_Template(rf, ctx) { if (rf & 1) {
|
|
584
|
-
i0.ɵɵelementStart(0, "div",
|
|
585
|
-
i0.ɵɵtemplate(1, AIAgentRunFormComponentExtended_div_53_kendo_panelbar_item_13_ng_template_1_Conditional_1_Template, 1, 3, "mj-code-editor",
|
|
612
|
+
i0.ɵɵelementStart(0, "div", 82);
|
|
613
|
+
i0.ɵɵtemplate(1, AIAgentRunFormComponentExtended_div_53_kendo_panelbar_item_13_ng_template_1_Conditional_1_Template, 1, 3, "mj-code-editor", 83)(2, AIAgentRunFormComponentExtended_div_53_kendo_panelbar_item_13_ng_template_1_Conditional_2_Template, 3, 0, "div", 84);
|
|
586
614
|
i0.ɵɵelementEnd();
|
|
587
615
|
} if (rf & 2) {
|
|
588
|
-
const
|
|
616
|
+
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
589
617
|
i0.ɵɵadvance();
|
|
590
|
-
i0.ɵɵconditional(
|
|
618
|
+
i0.ɵɵconditional(ctx_r1.isParsingComplete ? 1 : 2);
|
|
591
619
|
} }
|
|
592
620
|
function AIAgentRunFormComponentExtended_div_53_kendo_panelbar_item_13_Template(rf, ctx) { if (rf & 1) {
|
|
593
|
-
i0.ɵɵelementStart(0, "kendo-panelbar-item",
|
|
621
|
+
i0.ɵɵelementStart(0, "kendo-panelbar-item", 87);
|
|
594
622
|
i0.ɵɵtemplate(1, AIAgentRunFormComponentExtended_div_53_kendo_panelbar_item_13_ng_template_1_Template, 3, 1, "ng-template", 63);
|
|
595
623
|
i0.ɵɵelementEnd();
|
|
596
624
|
} }
|
|
597
625
|
function AIAgentRunFormComponentExtended_div_53_kendo_panelbar_item_14_ng_template_1_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
598
|
-
i0.ɵɵelement(0, "mj-deep-diff",
|
|
626
|
+
i0.ɵɵelement(0, "mj-deep-diff", 90);
|
|
599
627
|
} if (rf & 2) {
|
|
600
|
-
const
|
|
601
|
-
i0.ɵɵproperty("oldValue",
|
|
628
|
+
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
629
|
+
i0.ɵɵproperty("oldValue", ctx_r1.startingPayloadObject)("newValue", ctx_r1.finalPayloadObject)("title", "")("showSummary", true)("showUnchanged", false)("expandAll", false)("maxDepth", 10)("maxStringLength", 200)("treatNullAsUndefined", true);
|
|
602
630
|
} }
|
|
603
631
|
function AIAgentRunFormComponentExtended_div_53_kendo_panelbar_item_14_ng_template_1_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
604
|
-
i0.ɵɵelementStart(0, "div",
|
|
605
|
-
i0.ɵɵelement(1, "i",
|
|
632
|
+
i0.ɵɵelementStart(0, "div", 84);
|
|
633
|
+
i0.ɵɵelement(1, "i", 43);
|
|
606
634
|
i0.ɵɵtext(2, " Loading payload diff... ");
|
|
607
635
|
i0.ɵɵelementEnd();
|
|
608
636
|
} }
|
|
609
637
|
function AIAgentRunFormComponentExtended_div_53_kendo_panelbar_item_14_ng_template_1_Template(rf, ctx) { if (rf & 1) {
|
|
610
|
-
i0.ɵɵelementStart(0, "div",
|
|
611
|
-
i0.ɵɵtemplate(1, AIAgentRunFormComponentExtended_div_53_kendo_panelbar_item_14_ng_template_1_Conditional_1_Template, 1, 9, "mj-deep-diff",
|
|
638
|
+
i0.ɵɵelementStart(0, "div", 89);
|
|
639
|
+
i0.ɵɵtemplate(1, AIAgentRunFormComponentExtended_div_53_kendo_panelbar_item_14_ng_template_1_Conditional_1_Template, 1, 9, "mj-deep-diff", 90)(2, AIAgentRunFormComponentExtended_div_53_kendo_panelbar_item_14_ng_template_1_Conditional_2_Template, 3, 0, "div", 84);
|
|
612
640
|
i0.ɵɵelementEnd();
|
|
613
641
|
} if (rf & 2) {
|
|
614
|
-
const
|
|
642
|
+
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
615
643
|
i0.ɵɵadvance();
|
|
616
|
-
i0.ɵɵconditional(
|
|
644
|
+
i0.ɵɵconditional(ctx_r1.isParsingComplete ? 1 : 2);
|
|
617
645
|
} }
|
|
618
646
|
function AIAgentRunFormComponentExtended_div_53_kendo_panelbar_item_14_Template(rf, ctx) { if (rf & 1) {
|
|
619
|
-
i0.ɵɵelementStart(0, "kendo-panelbar-item",
|
|
647
|
+
i0.ɵɵelementStart(0, "kendo-panelbar-item", 88);
|
|
620
648
|
i0.ɵɵtemplate(1, AIAgentRunFormComponentExtended_div_53_kendo_panelbar_item_14_ng_template_1_Template, 3, 1, "ng-template", 63);
|
|
621
649
|
i0.ɵɵelementEnd();
|
|
622
650
|
} }
|
|
@@ -628,7 +656,7 @@ function AIAgentRunFormComponentExtended_div_53_Template(rf, ctx) { if (rf & 1)
|
|
|
628
656
|
i0.ɵɵtemplate(5, AIAgentRunFormComponentExtended_div_53_ng_template_5_Template, 18, 5, "ng-template", 63);
|
|
629
657
|
i0.ɵɵelementEnd();
|
|
630
658
|
i0.ɵɵelementStart(6, "kendo-panelbar-item", 65);
|
|
631
|
-
i0.ɵɵtemplate(7, AIAgentRunFormComponentExtended_div_53_ng_template_7_Template,
|
|
659
|
+
i0.ɵɵtemplate(7, AIAgentRunFormComponentExtended_div_53_ng_template_7_Template, 14, 5, "ng-template", 63);
|
|
632
660
|
i0.ɵɵelementEnd();
|
|
633
661
|
i0.ɵɵelementStart(8, "kendo-panelbar-item", 66);
|
|
634
662
|
i0.ɵɵtemplate(9, AIAgentRunFormComponentExtended_div_53_ng_template_9_Template, 31, 20, "ng-template", 63);
|
|
@@ -636,21 +664,21 @@ function AIAgentRunFormComponentExtended_div_53_Template(rf, ctx) { if (rf & 1)
|
|
|
636
664
|
i0.ɵɵtemplate(10, AIAgentRunFormComponentExtended_div_53_kendo_panelbar_item_10_Template, 2, 0, "kendo-panelbar-item", 67)(11, AIAgentRunFormComponentExtended_div_53_kendo_panelbar_item_11_Template, 2, 0, "kendo-panelbar-item", 68)(12, AIAgentRunFormComponentExtended_div_53_kendo_panelbar_item_12_Template, 2, 0, "kendo-panelbar-item", 69)(13, AIAgentRunFormComponentExtended_div_53_kendo_panelbar_item_13_Template, 2, 0, "kendo-panelbar-item", 70)(14, AIAgentRunFormComponentExtended_div_53_kendo_panelbar_item_14_Template, 2, 0, "kendo-panelbar-item", 71);
|
|
637
665
|
i0.ɵɵelementEnd()();
|
|
638
666
|
} if (rf & 2) {
|
|
639
|
-
const
|
|
667
|
+
const ctx_r1 = i0.ɵɵnextContext();
|
|
640
668
|
i0.ɵɵadvance();
|
|
641
669
|
i0.ɵɵproperty("keepItemContent", true);
|
|
642
670
|
i0.ɵɵadvance();
|
|
643
671
|
i0.ɵɵproperty("expanded", true);
|
|
644
672
|
i0.ɵɵadvance(8);
|
|
645
|
-
i0.ɵɵproperty("ngIf",
|
|
673
|
+
i0.ɵɵproperty("ngIf", ctx_r1.record.Result);
|
|
646
674
|
i0.ɵɵadvance();
|
|
647
|
-
i0.ɵɵproperty("ngIf",
|
|
675
|
+
i0.ɵɵproperty("ngIf", ctx_r1.record.StartingPayload);
|
|
648
676
|
i0.ɵɵadvance();
|
|
649
|
-
i0.ɵɵproperty("ngIf",
|
|
677
|
+
i0.ɵɵproperty("ngIf", ctx_r1.record.Data);
|
|
650
678
|
i0.ɵɵadvance();
|
|
651
|
-
i0.ɵɵproperty("ngIf",
|
|
679
|
+
i0.ɵɵproperty("ngIf", ctx_r1.record.FinalPayload);
|
|
652
680
|
i0.ɵɵadvance();
|
|
653
|
-
i0.ɵɵproperty("ngIf",
|
|
681
|
+
i0.ɵɵproperty("ngIf", ctx_r1.showPayloadDiff);
|
|
654
682
|
} }
|
|
655
683
|
let AIAgentRunFormComponentExtended = class AIAgentRunFormComponentExtended extends AIAgentRunFormComponent {
|
|
656
684
|
constructor(elementRef, sharedService, router, route, cdr, costService) {
|
|
@@ -1182,7 +1210,7 @@ let AIAgentRunFormComponentExtended = class AIAgentRunFormComponentExtended exte
|
|
|
1182
1210
|
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.timelineComponent = _t.first);
|
|
1183
1211
|
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.analyticsComponent = _t.first);
|
|
1184
1212
|
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.visualizationComponent = _t.first);
|
|
1185
|
-
} }, features: [i0.ɵɵInheritDefinitionFeature], decls: 54, vars: 29, consts: [["visualizationComponent", ""], ["analyticsComponent", ""], [1, "record-form-container", "ai-agent-run-form"], [1, "record-form"], [1, "header"], [1, "header-content"], [1, "header-left"], [1, "icon-wrapper"], [1, "fas", "fa-robot"], [1, "header-info"], [1, "meta-info"], ["class", "agent-name", 4, "ngIf"], [1, "run-id"], ["class", "parent-run", 4, "ngIf"], [1, "header-right"], [1, "status-badge"], [1, "fas", 3, "ngClass"], [1, "header-actions"], ["title", "Refresh", 1, "btn-icon", 3, "click"], [1, "fas", "fa-sync-alt"], [1, "header-stats"], [1, "stat"], [1, "label"], [1, "value"], ["class", "stat", 4, "ngIf"], ["class", "configuration-bar", 4, "ngIf"], [1, "tabs"], [1, "tab", 3, "click"], [1, "fas", "fa-stream"], [1, "fas", "fa-diagram-project"], [1, "fas", "fa-chart-line"], [1, "fas", "fa-info-circle"], [1, "content-area"], ["class", "tab-content", "style", "height: 100%;", 4, "ngIf"], ["class", "tab-content", 4, "ngIf"], [1, "agent-name"], [1, "parent-run"], [1, "fas", "fa-level-up-alt"], [1, "parent-link", 3, "click"], ["class", "value", 4, "ngIf"], ["class", "value loading", 4, "ngIf"], [1, "value", "loading"], [1, "fas", "fa-spinner", "fa-spin"], [1, "configuration-bar"], [1, "config-item"], [1, "fas", "fa-cog"], [1, "config-content"], [1, "config-label"], [1, "config-value"], [
|
|
1213
|
+
} }, features: [i0.ɵɵInheritDefinitionFeature], decls: 54, vars: 29, consts: [["visualizationComponent", ""], ["analyticsComponent", ""], [1, "record-form-container", "ai-agent-run-form"], [1, "record-form"], [1, "header"], [1, "header-content"], [1, "header-left"], [1, "icon-wrapper"], [1, "fas", "fa-robot"], [1, "header-info"], [1, "meta-info"], ["class", "agent-name", 4, "ngIf"], [1, "run-id"], ["class", "parent-run", 4, "ngIf"], [1, "header-right"], [1, "status-badge"], [1, "fas", 3, "ngClass"], [1, "header-actions"], ["title", "Refresh", 1, "btn-icon", 3, "click"], [1, "fas", "fa-sync-alt"], [1, "header-stats"], [1, "stat"], [1, "label"], [1, "value"], ["class", "stat", 4, "ngIf"], ["class", "configuration-bar", 4, "ngIf"], [1, "tabs"], [1, "tab", 3, "click"], [1, "fas", "fa-stream"], [1, "fas", "fa-diagram-project"], [1, "fas", "fa-chart-line"], [1, "fas", "fa-info-circle"], [1, "content-area"], ["class", "tab-content", "style", "height: 100%;", 4, "ngIf"], ["class", "tab-content", 4, "ngIf"], [1, "agent-name"], ["href", "javascript:void(0)", 1, "entity-link", 3, "click"], [1, "parent-run"], [1, "fas", "fa-level-up-alt"], [1, "parent-link", 3, "click"], ["class", "value", 4, "ngIf"], ["class", "value loading", 4, "ngIf"], [1, "value", "loading"], [1, "fas", "fa-spinner", "fa-spin"], [1, "configuration-bar"], [1, "config-item"], [1, "fas", "fa-cog"], [1, "config-content"], [1, "config-label"], [1, "config-value"], [1, "tab-content", 2, "height", "100%"], ["orientation", "horizontal", 2, "height", "100%"], [3, "min"], [3, "itemSelected", "navigateToEntity", "agentRunCompleted", "aiAgentRunId", "dataHelper", "autoRefresh", "refreshInterval"], [3, "size", "min", "collapsed"], [3, "closePanel", "navigateToActionLog", "copyToClipboard", "selectedTimelineItem"], [3, "aiAgentRunId", "dataHelper", 4, "ngIf"], [3, "aiAgentRunId", "dataHelper"], [3, "agentRunId", 4, "ngIf"], [3, "agentRunId"], [1, "tab-content"], [3, "keepItemContent"], ["title", "General Information", 3, "expanded"], ["kendoPanelBarContent", ""], ["title", "Execution Settings"], ["title", "Execution Status"], ["title", "Usage & Cost"], ["title", "Result", 4, "ngIf"], ["title", "Starting Payload", 4, "ngIf"], ["title", "Execution Data", 4, "ngIf"], ["title", "Final Payload", 4, "ngIf"], ["title", "Payload Diff", 4, "ngIf"], [1, "details-grid"], [1, "detail-item"], ["href", "javascript:void(0)", "class", "entity-link", 3, "click", 4, "ngIf"], [4, "ngIf"], [1, "success"], [1, "error-message"], ["class", "detail-item full-width", 4, "ngIf"], [1, "detail-item", "full-width"], [1, "message"], ["title", "Result"], [1, "result-viewer"], [2, "height", "300px", "width", "100%", 3, "ngModel", "language", "readonly"], [2, "padding", "20px", "text-align", "center", "color", "#666"], ["title", "Starting Payload"], ["title", "Execution Data"], ["title", "Final Payload"], ["title", "Payload Diff"], [2, "padding", "20px", "background", "#f8f9fa"], [3, "oldValue", "newValue", "title", "showSummary", "showUnchanged", "expandAll", "maxDepth", "maxStringLength", "treatNullAsUndefined"]], template: function AIAgentRunFormComponentExtended_Template(rf, ctx) { if (rf & 1) {
|
|
1186
1214
|
i0.ɵɵelementStart(0, "div", 2)(1, "div", 3)(2, "div", 4)(3, "div", 5)(4, "div", 6)(5, "div", 7);
|
|
1187
1215
|
i0.ɵɵelement(6, "i", 8);
|
|
1188
1216
|
i0.ɵɵelementEnd();
|
|
@@ -1190,7 +1218,7 @@ let AIAgentRunFormComponentExtended = class AIAgentRunFormComponentExtended exte
|
|
|
1190
1218
|
i0.ɵɵtext(9, "AI Agent Run");
|
|
1191
1219
|
i0.ɵɵelementEnd();
|
|
1192
1220
|
i0.ɵɵelementStart(10, "div", 10);
|
|
1193
|
-
i0.ɵɵtemplate(11, AIAgentRunFormComponentExtended_span_11_Template,
|
|
1221
|
+
i0.ɵɵtemplate(11, AIAgentRunFormComponentExtended_span_11_Template, 3, 1, "span", 11);
|
|
1194
1222
|
i0.ɵɵelementStart(12, "span", 12);
|
|
1195
1223
|
i0.ɵɵtext(13);
|
|
1196
1224
|
i0.ɵɵelementEnd();
|
|
@@ -1291,7 +1319,7 @@ AIAgentRunFormComponentExtended = __decorate([
|
|
|
1291
1319
|
export { AIAgentRunFormComponentExtended };
|
|
1292
1320
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(AIAgentRunFormComponentExtended, [{
|
|
1293
1321
|
type: Component,
|
|
1294
|
-
args: [{ selector: 'mj-ai-agent-run-form', template: "<div class=\"record-form-container ai-agent-run-form\">\n <div class=\"record-form\">\n <!-- Header -->\n <div class=\"header\">\n <div class=\"header-content\">\n <div class=\"header-left\">\n <div class=\"icon-wrapper\">\n <i class=\"fas fa-robot\"></i>\n </div>\n <div class=\"header-info\">\n <h2>AI Agent Run</h2>\n <div class=\"meta-info\">\n <span class=\"agent-name\" *ngIf=\"agent\">{{ agent.Name }}</span>\n <span class=\"run-id\">{{ record.ID }}</span>\n <span class=\"parent-run\" *ngIf=\"record.ParentRunID\">\n <i class=\"fas fa-level-up-alt\"></i>\n <a (click)=\"navigateToParentRun()\" class=\"parent-link\">Parent Run</a>\n </span>\n </div>\n </div>\n </div>\n <div class=\"header-right\">\n <div class=\"status-badge\" [attr.data-status]=\"record.Status\">\n <i class=\"fas\" [ngClass]=\"getStatusIcon(record.Status || '')\"></i>\n {{ record.Status }}\n </div>\n <div class=\"header-actions\">\n <button class=\"btn-icon\" (click)=\"refreshData()\" title=\"Refresh\">\n <i class=\"fas fa-sync-alt\"></i>\n </button>\n </div>\n </div>\n </div>\n <div class=\"header-stats\">\n <div class=\"stat\">\n <span class=\"label\">Started</span>\n <span class=\"value\">{{ record.StartedAt | date:'medium' }}</span>\n </div>\n <div class=\"stat\" *ngIf=\"record.CompletedAt\">\n <span class=\"label\">Completed</span>\n <span class=\"value\">{{ record.CompletedAt | date:'medium' }}</span>\n </div>\n <div class=\"stat\" *ngIf=\"record.CompletedAt\">\n <span class=\"label\">Duration</span>\n <span class=\"value\">{{ calculateDuration(record.StartedAt, record.CompletedAt) }}</span>\n </div>\n <div class=\"stat\" *ngIf=\"record.Success !== null && record.CompletedAt !== null\">\n <span class=\"label\">Result</span>\n <span class=\"value\" [class.success]=\"record.Success\" [class.error]=\"!record.Success\">\n {{ record.Success ? 'Success' : 'Failed' }}\n </span>\n </div>\n <div class=\"stat\" *ngIf=\"costMetrics && (costMetrics.totalTokensInput + costMetrics.totalTokensOutput) > 0\">\n <span class=\"label\">Tokens</span>\n <span class=\"value\" *ngIf=\"!costMetrics.isLoading\">{{ (costMetrics.totalTokensInput + costMetrics.totalTokensOutput) | number:'1.0-0' }}</span>\n <span class=\"value loading\" *ngIf=\"costMetrics.isLoading\"><i class=\"fas fa-spinner fa-spin\"></i></span>\n </div>\n <div class=\"stat\" *ngIf=\"costMetrics && costMetrics.totalCost > 0\">\n <span class=\"label\">Cost</span>\n <span class=\"value\" *ngIf=\"!costMetrics.isLoading\">${{ costMetrics.totalCost | number:'1.2-4' }}</span>\n <span class=\"value loading\" *ngIf=\"costMetrics.isLoading\"><i class=\"fas fa-spinner fa-spin\"></i></span>\n </div>\n <div class=\"stat\" *ngIf=\"record.EffortLevel\">\n <span class=\"label\">Effort Level</span>\n <span class=\"value\">{{ record.EffortLevel }}</span>\n </div>\n </div>\n \n <!-- Configuration Bar (shown below header stats when ConfigurationID exists) -->\n <div class=\"configuration-bar\" *ngIf=\"record.ConfigurationID\">\n <div class=\"config-item\">\n <i class=\"fas fa-cog\"></i>\n <div class=\"config-content\">\n <div class=\"config-label\">Configuration</div>\n <div class=\"config-value\">\n <a href=\"javascript:void(0)\" class=\"entity-link\" (click)=\"openEntityRecord('MJ: AI Configurations', record.ConfigurationID)\">\n {{ record.Configuration || 'Unknown' }}\n </a>\n </div>\n </div>\n </div>\n </div>\n </div>\n\n <!-- Tabs -->\n <div class=\"tabs\">\n <button class=\"tab\" [class.active]=\"activeTab === 'timeline'\" (click)=\"changeTab('timeline')\">\n <i class=\"fas fa-stream\"></i> Timeline\n </button>\n <button class=\"tab\" [class.active]=\"activeTab === 'visualization'\" (click)=\"changeTab('visualization')\">\n <i class=\"fas fa-diagram-project\"></i> Visualization\n </button>\n <button class=\"tab\" [class.active]=\"activeTab === 'analytics'\" (click)=\"changeTab('analytics')\">\n <i class=\"fas fa-chart-line\"></i> Analytics\n </button>\n <button class=\"tab\" [class.active]=\"activeTab === 'details'\" (click)=\"changeTab('details')\">\n <i class=\"fas fa-info-circle\"></i> Details\n </button>\n </div>\n\n <!-- Content -->\n <div class=\"content-area\">\n <!-- Timeline Tab -->\n <div class=\"tab-content\" *ngIf=\"activeTab === 'timeline'\" style=\"height: 100%;\">\n <kendo-splitter style=\"height: 100%;\" orientation=\"horizontal\">\n <!-- Timeline Pane -->\n <kendo-splitter-pane [min]=\"'400px'\">\n <mj-ai-agent-run-timeline\n [aiAgentRunId]=\"record.ID\"\n [dataHelper]=\"dataHelper\"\n [autoRefresh]=\"record.Status === 'Running'\"\n [refreshInterval]=\"30000\"\n (itemSelected)=\"selectTimelineItem($event)\"\n (navigateToEntity)=\"navigateToEntityRecord($event)\"\n (agentRunCompleted)=\"onAgentRunCompleted($event)\">\n </mj-ai-agent-run-timeline>\n </kendo-splitter-pane>\n \n <!-- JSON Detail Pane -->\n <kendo-splitter-pane [size]=\"'45%'\" [min]=\"'300px'\" [collapsed]=\"!selectedTimelineItem\">\n <mj-ai-agent-run-step-detail\n [selectedTimelineItem]=\"selectedTimelineItem\"\n (closePanel)=\"closeJsonPanel()\"\n (navigateToActionLog)=\"navigateToActionLog($event)\"\n (copyToClipboard)=\"copyToClipboard($event)\">\n </mj-ai-agent-run-step-detail>\n </kendo-splitter-pane>\n </kendo-splitter>\n </div>\n\n <!-- Visualization Tab -->\n <div class=\"tab-content\" *ngIf=\"activeTab === 'visualization'\" style=\"height: 100%;\">\n <mj-ai-agent-run-visualization\n #visualizationComponent\n [aiAgentRunId]=\"record.ID\"\n [dataHelper]=\"dataHelper\"\n *ngIf=\"visualizationLoaded\">\n </mj-ai-agent-run-visualization>\n </div>\n\n <!-- Analytics Tab -->\n <div class=\"tab-content\" *ngIf=\"activeTab === 'analytics'\" style=\"height: 100%;\">\n <mj-ai-agent-run-analytics \n #analyticsComponent\n [agentRunId]=\"record.ID\"\n *ngIf=\"analyticsLoaded\">\n </mj-ai-agent-run-analytics>\n </div>\n\n <!-- Details Tab -->\n <div class=\"tab-content\" *ngIf=\"activeTab === 'details'\">\n <kendo-panelbar [keepItemContent]=\"true\">\n <kendo-panelbar-item title=\"General Information\" [expanded]=\"true\">\n <ng-template kendoPanelBarContent>\n <div class=\"details-grid\">\n <div class=\"detail-item\">\n <label>Agent</label>\n <span>\n <a href=\"javascript:void(0)\" class=\"entity-link\" (click)=\"openEntityRecord('AI Agents', record.AgentID)\">\n {{ agent?.Name || 'N/A' }}\n </a>\n </span>\n </div>\n <div class=\"detail-item\">\n <label>Parent Run ID</label>\n <span>\n <a *ngIf=\"record.ParentRunID\" href=\"javascript:void(0)\" class=\"entity-link\" (click)=\"openEntityRecord('MJ: AI Agent Runs', record.ParentRunID)\">\n {{ record.ParentRunID }}\n </a>\n <span *ngIf=\"!record.ParentRunID\">None (Root)</span>\n </span>\n </div>\n <div class=\"detail-item\">\n <label>Last Run ID</label>\n <span>\n <a *ngIf=\"record.LastRunID\" href=\"javascript:void(0)\" class=\"entity-link\" (click)=\"openEntityRecord('MJ: AI Agent Runs', record.LastRunID)\">\n {{ record.LastRunID }}\n </a>\n <span *ngIf=\"!record.LastRunID\">None</span>\n </span>\n </div>\n <div class=\"detail-item\">\n <label>Conversation ID</label>\n <span>\n <a *ngIf=\"record.ConversationID\" href=\"javascript:void(0)\" class=\"entity-link\" (click)=\"openEntityRecord('Conversations', record.ConversationID)\">\n {{ record.ConversationID }}\n </a>\n <span *ngIf=\"!record.ConversationID\">N/A</span>\n </span>\n </div>\n <div class=\"detail-item\">\n <label>User</label>\n <span>\n <a *ngIf=\"record.UserID\" href=\"javascript:void(0)\" class=\"entity-link\" (click)=\"openEntityRecord('Users', record.UserID)\">\n {{ record.User || 'N/A' }}\n </a>\n <span *ngIf=\"!record.UserID\">N/A</span>\n </span>\n </div>\n </div>\n </ng-template>\n </kendo-panelbar-item>\n \n <kendo-panelbar-item title=\"Execution Settings\">\n <ng-template kendoPanelBarContent>\n <div class=\"details-grid\">\n <div class=\"detail-item\">\n <label>Override Model</label>\n <span>\n <a *ngIf=\"record.OverrideModelID\" href=\"javascript:void(0)\" class=\"entity-link\" (click)=\"openEntityRecord('AI Models', record.OverrideModelID)\">\n {{ record.OverrideModel || 'N/A' }}\n </a>\n <span *ngIf=\"!record.OverrideModelID\">N/A</span>\n </span>\n </div>\n <div class=\"detail-item\">\n <label>Override Vendor</label>\n <span>\n <a *ngIf=\"record.OverrideVendorID\" href=\"javascript:void(0)\" class=\"entity-link\" (click)=\"openEntityRecord('AI Vendors', record.OverrideVendorID)\">\n {{ record.OverrideVendor || 'N/A' }}\n </a>\n <span *ngIf=\"!record.OverrideVendorID\">N/A</span>\n </span>\n </div>\n <div class=\"detail-item\">\n <label>Verbose Logging</label>\n <span>{{ record.Verbose ? 'Yes' : 'No' }}</span>\n </div>\n </div>\n </ng-template>\n </kendo-panelbar-item>\n \n <kendo-panelbar-item title=\"Execution Status\">\n <ng-template kendoPanelBarContent>\n <div class=\"details-grid\">\n <div class=\"detail-item\">\n <label>Status</label>\n <span class=\"status-badge\" [attr.data-status]=\"record.Status\">\n {{ record.Status }}\n </span>\n </div>\n <div class=\"detail-item\">\n <label>Success</label>\n <span [class.success]=\"record.Success\" [class.error]=\"record.Success === false\">\n {{ record.Success === null ? 'In Progress' : (record.Success ? 'Yes' : 'No') }}\n </span>\n </div>\n <div class=\"detail-item full-width\" *ngIf=\"record.ErrorMessage\">\n <label>Error Message</label>\n <div class=\"error-message\">{{ record.ErrorMessage }}</div>\n </div>\n </div>\n </ng-template>\n </kendo-panelbar-item>\n \n <kendo-panelbar-item title=\"Usage & Cost\">\n <ng-template kendoPanelBarContent>\n <div class=\"details-grid\">\n <div class=\"detail-item\">\n <label>Total Tokens Used</label>\n <span>{{ record.TotalTokensUsed ? (record.TotalTokensUsed | number:'1.0-0') : 'N/A' }}</span>\n </div>\n <div class=\"detail-item\">\n <label>Prompt Tokens</label>\n <span>{{ record.TotalPromptTokensUsed ? (record.TotalPromptTokensUsed | number:'1.0-0') : 'N/A' }}</span>\n </div>\n <div class=\"detail-item\">\n <label>Completion Tokens</label>\n <span>{{ record.TotalCompletionTokensUsed ? (record.TotalCompletionTokensUsed | number:'1.0-0') : 'N/A' }}</span>\n </div>\n <div class=\"detail-item\">\n <label>Total Cost</label>\n <span>{{ record.TotalCost != null ? ('$' + (record.TotalCost | number:'1.2-4')) : 'N/A' }}</span>\n </div>\n <div class=\"detail-item\">\n <label>Total Prompt Iterations</label>\n <span>{{ record.TotalPromptIterations != null ? (record.TotalPromptIterations | number:'1.0-0') : 'N/A' }}</span>\n </div>\n </div>\n </ng-template>\n </kendo-panelbar-item>\n \n <kendo-panelbar-item title=\"Result\" *ngIf=\"record.Result\">\n <ng-template kendoPanelBarContent>\n <div class=\"result-viewer\">\n @if (isParsingComplete) {\n <mj-code-editor\n [ngModel]=\"parsedResult\"\n [language]=\"'json'\"\n [readonly]=\"true\"\n style=\"height: 300px; width: 100%;\">\n </mj-code-editor>\n } @else {\n <div style=\"padding: 20px; text-align: center; color: #666;\">\n <i class=\"fas fa-spinner fa-spin\"></i> Loading result data...\n </div>\n }\n </div>\n </ng-template>\n </kendo-panelbar-item>\n \n <kendo-panelbar-item title=\"Starting Payload\" *ngIf=\"record.StartingPayload\">\n <ng-template kendoPanelBarContent>\n <div class=\"result-viewer\">\n @if (isParsingComplete) {\n <mj-code-editor\n [ngModel]=\"parsedStartingPayload\"\n [language]=\"'json'\"\n [readonly]=\"true\"\n style=\"height: 300px; width: 100%;\">\n </mj-code-editor>\n } @else {\n <div style=\"padding: 20px; text-align: center; color: #666;\">\n <i class=\"fas fa-spinner fa-spin\"></i> Loading payload data...\n </div>\n }\n </div>\n </ng-template>\n </kendo-panelbar-item>\n \n <kendo-panelbar-item title=\"Execution Data\" *ngIf=\"record.Data\">\n <ng-template kendoPanelBarContent>\n <div class=\"result-viewer\">\n @if (isParsingComplete) {\n <mj-code-editor\n [ngModel]=\"parsedData\"\n [language]=\"'json'\"\n [readonly]=\"true\"\n style=\"height: 300px; width: 100%;\">\n </mj-code-editor>\n } @else {\n <div style=\"padding: 20px; text-align: center; color: #666;\">\n <i class=\"fas fa-spinner fa-spin\"></i> Loading execution data...\n </div>\n }\n </div>\n </ng-template>\n </kendo-panelbar-item>\n \n <kendo-panelbar-item title=\"Final Payload\" *ngIf=\"record.FinalPayload\">\n <ng-template kendoPanelBarContent>\n <div class=\"result-viewer\">\n @if (isParsingComplete) {\n <mj-code-editor\n [ngModel]=\"parsedFinalPayload\"\n [language]=\"'json'\"\n [readonly]=\"true\"\n style=\"height: 300px; width: 100%;\">\n </mj-code-editor>\n } @else {\n <div style=\"padding: 20px; text-align: center; color: #666;\">\n <i class=\"fas fa-spinner fa-spin\"></i> Loading final payload data...\n </div>\n }\n </div>\n </ng-template>\n </kendo-panelbar-item>\n \n <kendo-panelbar-item title=\"Payload Diff\" *ngIf=\"showPayloadDiff\">\n <ng-template kendoPanelBarContent>\n <div style=\"padding: 20px; background: #f8f9fa;\">\n @if (isParsingComplete) {\n <mj-deep-diff\n [oldValue]=\"startingPayloadObject\"\n [newValue]=\"finalPayloadObject\"\n [title]=\"''\"\n [showSummary]=\"true\"\n [showUnchanged]=\"false\"\n [expandAll]=\"false\"\n [maxDepth]=\"10\"\n [maxStringLength]=\"200\"\n [treatNullAsUndefined]=\"true\">\n </mj-deep-diff>\n } @else {\n <div style=\"padding: 20px; text-align: center; color: #666;\">\n <i class=\"fas fa-spinner fa-spin\"></i> Loading payload diff...\n </div>\n }\n </div>\n </ng-template>\n </kendo-panelbar-item>\n </kendo-panelbar>\n </div>\n </div>\n </div>\n</div>", styles: [".ai-agent-run-form {\n height: 100%;\n overflow: auto;\n}\n\n/* Header Styles */\n.header {\n background: linear-gradient(135deg, #ffffff 0%, #f8f9fa 100%);\n border-bottom: 1px solid #e0e6ed;\n padding: 20px;\n box-shadow: 0 2px 4px rgba(0,0,0,0.04);\n}\n\n.header-content {\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n margin-bottom: 16px;\n}\n\n.header-left {\n display: flex;\n align-items: center;\n gap: 16px;\n}\n\n.icon-wrapper {\n width: 48px;\n height: 48px;\n background: linear-gradient(135deg, #2196f3, #1976d2);\n border-radius: 12px;\n display: flex;\n align-items: center;\n justify-content: center;\n color: white;\n font-size: 20px;\n}\n\n.header-info h2 {\n margin: 0;\n font-size: 24px;\n font-weight: 600;\n color: #2c3e50;\n}\n\n.meta-info {\n display: flex;\n gap: 12px;\n margin-top: 4px;\n font-size: 14px;\n color: #6c757d;\n}\n\n.parent-run {\n display: flex;\n align-items: center;\n gap: 6px;\n}\n\n.parent-link {\n color: #ff6358;\n text-decoration: none;\n cursor: pointer;\n transition: color 0.2s;\n}\n\n.parent-link:hover {\n color: #ff4444;\n text-decoration: underline;\n}\n\n.agent-name {\n font-weight: 500;\n color: #495057;\n}\n\n.run-id {\n font-family: monospace;\n font-size: 12px;\n opacity: 0.7;\n}\n\n.header-right {\n display: flex;\n align-items: center;\n gap: 16px;\n}\n\n.status-badge {\n padding: 6px 16px;\n border-radius: 20px;\n font-size: 13px;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n display: inline-flex;\n align-items: center;\n gap: 6px;\n}\n\n.status-badge[data-status=\"Running\"] {\n background: #e3f2fd;\n color: #1976d2;\n}\n\n.status-badge[data-status=\"Completed\"] {\n background: #d4edda;\n color: #155724;\n}\n\n.status-badge[data-status=\"Failed\"] {\n background: #f8d7da;\n color: #721c24;\n}\n\n.status-badge[data-status=\"Cancelled\"] {\n background: #fff3cd;\n color: #856404;\n}\n\n.status-badge[data-status=\"Paused\"] {\n background: #e2e3e5;\n color: #383d41;\n}\n\n.status-badge.small {\n padding: 4px 12px;\n font-size: 11px;\n}\n\n.header-actions {\n display: flex;\n gap: 8px;\n}\n\n.btn-icon {\n width: 36px;\n height: 36px;\n border: 1px solid #dee2e6;\n background: white;\n border-radius: 8px;\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n transition: all 0.2s ease;\n color: #6c757d;\n}\n\n.btn-icon:hover {\n background: #f8f9fa;\n border-color: #adb5bd;\n color: #495057;\n}\n\n.header-stats {\n display: flex;\n gap: 24px;\n padding-top: 12px;\n border-top: 1px solid #e9ecef;\n}\n\n/* Configuration Bar */\n.configuration-bar {\n display: flex;\n gap: 24px;\n padding-top: 16px;\n border-top: 1px solid #e9ecef;\n margin-top: 16px;\n}\n\n.config-item {\n display: flex;\n align-items: center;\n gap: 12px;\n}\n\n.config-item > i {\n font-size: 1.2em;\n color: #6c757d;\n width: 24px;\n text-align: center;\n}\n\n.config-content {\n display: flex;\n flex-direction: column;\n}\n\n.config-label {\n font-size: 12px;\n color: #6c757d;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.config-value {\n font-size: 14px;\n font-weight: 600;\n color: #2c3e50;\n}\n\n.config-value .entity-link {\n color: #007bff;\n text-decoration: none;\n cursor: pointer;\n transition: color 0.2s;\n}\n\n.config-value .entity-link:hover {\n color: #0056b3;\n text-decoration: underline;\n}\n\n.stat {\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n.stat .label {\n font-size: 12px;\n color: #6c757d;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.stat .value {\n font-size: 14px;\n font-weight: 500;\n color: #495057;\n}\n\n.stat .value.success {\n color: #28a745;\n}\n\n.stat .value.error {\n color: #dc3545;\n}\n\n/* Tabs */\n.tabs {\n display: flex;\n border-bottom: 1px solid #dee2e6;\n background: #f8f9fa;\n}\n\n.tab {\n padding: 12px 24px;\n border: none;\n background: transparent;\n cursor: pointer;\n font-size: 14px;\n font-weight: 500;\n color: #6c757d;\n display: flex;\n align-items: center;\n gap: 8px;\n transition: all 0.2s ease;\n border-bottom: 3px solid transparent;\n}\n\n.tab:hover {\n color: #495057;\n background: rgba(0,0,0,0.02);\n}\n\n.tab.active {\n color: #2196f3;\n border-bottom-color: #2196f3;\n background: white;\n}\n\n/* Content Area */\n.content-area {\n position: relative;\n height: calc(100vh - 390px);\n overflow: auto;\n background: white;\n}\n\n.tab-content {\n height: 100%;\n overflow: auto;\n}\n\n/* Details tab specific */\n.tab-content[ng-reflect-ng-if=\"true\"] > kendo-panelbar {\n height: 100%;\n overflow-y: auto;\n}\n\n/* JSON Detail Pane */\n.json-detail-pane {\n height: 100%;\n display: flex;\n flex-direction: column;\n background: #f8f9fa;\n border-left: 1px solid #e0e6ed;\n}\n\n.json-pane-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 16px 20px;\n background: white;\n border-bottom: 1px solid #e0e6ed;\n box-shadow: 0 2px 4px rgba(0,0,0,0.04);\n}\n\n.json-pane-header h3 {\n margin: 0;\n font-size: 16px;\n font-weight: 600;\n color: #2c3e50;\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.json-pane-header h3 i {\n color: #6b7280;\n font-size: 14px;\n}\n\n.json-pane-content {\n flex: 1;\n display: flex;\n flex-direction: column;\n overflow: auto;\n padding: 16px;\n}\n\n.json-meta {\n display: flex;\n gap: 20px;\n margin-bottom: 16px;\n flex-wrap: wrap;\n}\n\n.json-meta .meta-item {\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n.json-meta .meta-item label {\n font-size: 11px;\n text-transform: uppercase;\n color: #6b7280;\n font-weight: 600;\n letter-spacing: 0.5px;\n}\n\n.json-meta .meta-item span {\n font-size: 14px;\n color: #2c3e50;\n font-weight: 500;\n}\n\n.action-link {\n margin-bottom: 12px;\n}\n\n.action-link .btn-link {\n background: none;\n border: none;\n color: #2196f3;\n font-size: 14px;\n cursor: pointer;\n padding: 6px 12px;\n border-radius: 4px;\n transition: all 0.2s;\n display: inline-flex;\n align-items: center;\n gap: 6px;\n}\n\n.action-link .btn-link:hover {\n background: rgba(33, 150, 243, 0.08);\n color: #1976d2;\n}\n\n.json-viewer {\n flex: 1;\n display: flex;\n flex-direction: column;\n background: white;\n border-radius: 8px;\n border: 1px solid #e0e6ed;\n overflow: auto;\n padding: 20px;\n gap: 10px;\n min-height: 0;\n margin-bottom: 45px;\n}\n\n\n.json-toolbar {\n display: flex;\n justify-content: flex-end;\n padding: 8px 12px;\n background: #f8f9fa;\n border-bottom: 1px solid #e0e6ed;\n}\n\n/* Timeline Styles */\n.timeline-container {\n height: 100%;\n overflow-y: auto;\n padding: 20px;\n}\n\n.timeline-container > .timeline {\n max-width: 900px;\n margin: 0 auto;\n}\n\n.timeline {\n position: relative;\n padding-left: 40px;\n}\n\n.timeline::before {\n content: '';\n position: absolute;\n left: 20px;\n top: 0;\n bottom: 0;\n width: 2px;\n background: #e9ecef;\n}\n\n.timeline-item {\n position: relative;\n margin-bottom: 24px;\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.timeline-item:hover {\n transform: translateX(4px);\n}\n\n.timeline-item.selected {\n transform: translateX(8px);\n}\n\n.timeline-item.selected .timeline-content {\n background: #f0f7ff;\n border-color: #2196f3;\n}\n\n.timeline-marker {\n position: absolute;\n left: -30px;\n top: 0;\n width: 40px;\n height: 40px;\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n background: white;\n border: 3px solid #e9ecef;\n z-index: 1;\n transition: all 0.2s ease;\n}\n\n.timeline-marker[data-color=\"success\"] {\n border-color: #28a745;\n color: #28a745;\n}\n\n.timeline-marker[data-color=\"error\"] {\n border-color: #dc3545;\n color: #dc3545;\n}\n\n.timeline-marker[data-color=\"info\"] {\n border-color: #17a2b8;\n color: #17a2b8;\n}\n\n.timeline-marker[data-color=\"warning\"] {\n border-color: #ffc107;\n color: #ffc107;\n}\n\n.timeline-marker[data-color=\"secondary\"] {\n border-color: #6c757d;\n color: #6c757d;\n}\n\n.timeline-marker.small {\n width: 28px;\n height: 28px;\n font-size: 12px;\n}\n\n.timeline-content {\n background: white;\n border: 1px solid #e9ecef;\n border-radius: 12px;\n padding: 16px 20px;\n margin-left: 20px;\n box-shadow: 0 2px 4px rgba(0,0,0,0.04);\n transition: all 0.2s ease;\n}\n\n.timeline-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 8px;\n}\n\n.timeline-header h4 {\n margin: 0;\n font-size: 16px;\n font-weight: 600;\n color: #2c3e50;\n}\n\n.timeline-header h5 {\n margin: 0;\n font-size: 14px;\n font-weight: 600;\n color: #495057;\n}\n\n.timeline-time {\n font-size: 12px;\n color: #6c757d;\n font-family: monospace;\n}\n\n.timeline-subtitle {\n font-size: 13px;\n color: #6c757d;\n margin-bottom: 8px;\n}\n\n.timeline-meta {\n display: flex;\n gap: 16px;\n font-size: 12px;\n color: #6c757d;\n}\n\n.timeline-meta .status {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 2px 8px;\n border-radius: 12px;\n font-size: 11px;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.timeline-meta .status[data-status=\"Completed\"] {\n background: #d4edda;\n color: #155724;\n}\n\n.timeline-meta .status[data-status=\"Failed\"] {\n background: #f8d7da;\n color: #721c24;\n}\n\n.timeline-meta .status[data-status=\"Running\"] {\n background: #cce5ff;\n color: #004085;\n}\n\n.timeline-meta .status[data-status=\"Paused\"] {\n background: #e2e3e5;\n color: #383d41;\n}\n\n.duration {\n display: flex;\n align-items: center;\n gap: 4px;\n}\n\n.timeline-actions {\n position: absolute;\n right: 20px;\n top: 50%;\n transform: translateY(-50%);\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.btn-link {\n background: none;\n border: none;\n color: #2196f3;\n cursor: pointer;\n font-size: 12px;\n display: flex;\n align-items: center;\n gap: 4px;\n padding: 4px 8px;\n border-radius: 4px;\n transition: all 0.2s ease;\n}\n\n.btn-link:hover {\n background: rgba(33, 150, 243, 0.1);\n}\n\n.btn-expand {\n width: 24px;\n height: 24px;\n border: 1px solid #dee2e6;\n background: white;\n border-radius: 4px;\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n transition: all 0.2s ease;\n color: #6c757d;\n font-size: 12px;\n}\n\n.btn-expand:hover {\n background: #f8f9fa;\n border-color: #adb5bd;\n color: #495057;\n}\n\n/* Timeline Children */\n.timeline-children {\n position: relative;\n margin-top: 12px;\n margin-bottom: 12px;\n}\n\n.timeline-children::before {\n content: '';\n position: absolute;\n left: -10px;\n top: -12px;\n bottom: 0;\n width: 2px;\n background: #e9ecef;\n}\n\n.child-item {\n margin-bottom: 12px;\n}\n\n.child-item .timeline-content {\n background: #f8f9fa;\n border-color: #e0e6ed;\n}\n\n/* Sub-run timeline styles */\n.sub-run-timeline {\n background: rgba(33, 150, 243, 0.02);\n border-left: 2px solid rgba(33, 150, 243, 0.2);\n margin-left: 20px;\n padding-left: 20px;\n margin-top: 8px;\n margin-bottom: 8px;\n}\n\n.sub-run-item .timeline-marker {\n border-width: 2px;\n}\n\n.sub-run-item .timeline-content {\n transition: all 0.2s ease;\n}\n\n/* JSON Detail Pane (in splitter) */\n.json-detail-pane {\n height: 100%;\n display: flex;\n flex-direction: column;\n background: white;\n border-left: 1px solid #e0e6ed;\n}\n\n.json-pane-header {\n padding: 16px 20px;\n background: #f8f9fa;\n border-bottom: 1px solid #e0e6ed;\n display: flex;\n justify-content: space-between;\n align-items: center;\n flex-shrink: 0;\n}\n\n.json-pane-header h3 {\n margin: 0;\n font-size: 16px;\n color: #2c3e50;\n display: flex;\n align-items: center;\n gap: 10px;\n font-weight: 600;\n}\n\n.json-pane-content {\n flex: 1;\n overflow-y: auto;\n display: flex;\n flex-direction: column;\n}\n\n.json-meta {\n padding: 16px 20px;\n border-bottom: 1px solid #e0e6ed;\n display: flex;\n gap: 20px;\n flex-wrap: wrap;\n flex-shrink: 0;\n}\n\n.json-meta .meta-item {\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n.json-meta label {\n font-size: 11px;\n color: #7c8798;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.json-meta span {\n font-size: 14px;\n color: #2c3e50;\n font-weight: 500;\n}\n\n.action-link {\n padding: 12px 20px;\n border-bottom: 1px solid #e0e6ed;\n flex-shrink: 0;\n}\n\n.action-link .btn-link {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n color: #2196f3;\n text-decoration: none;\n font-size: 14px;\n padding: 8px 12px;\n background: #f0f7ff;\n border: 1px solid #d0e5ff;\n border-radius: 4px;\n transition: all 0.2s;\n cursor: pointer;\n}\n\n.action-link .btn-link:hover {\n background: #e1f0ff;\n border-color: #b0d5ff;\n text-decoration: none;\n}\n\n\n.json-toolbar {\n display: flex;\n justify-content: flex-end;\n gap: 8px;\n margin-bottom: 8px;\n}\n\n/* Details Tab */\n.details-grid {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));\n gap: 20px;\n padding: 20px;\n}\n\n.detail-item {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.detail-item.full-width {\n grid-column: 1 / -1;\n}\n\n.detail-item label {\n font-size: 12px;\n color: #6c757d;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.detail-item span {\n font-size: 14px;\n color: #495057;\n}\n\n.error-message {\n background: #f8d7da;\n color: #721c24;\n padding: 12px;\n border-radius: 8px;\n font-size: 13px;\n}\n\n.result-viewer,\n.state-viewer {\n padding: 20px;\n max-height: 450px;\n overflow: auto;\n display: flex;\n flex-direction: column;\n}\n\n.result-viewer mj-code-editor,\n.state-viewer mj-code-editor {\n flex: 1;\n min-height: 0;\n}\n\n/* Empty States */\n.empty-state,\n.loading-state,\n.error-state {\n text-align: center;\n padding: 60px 20px;\n color: #6c757d;\n}\n\n.empty-state i,\n.loading-state i,\n.error-state i {\n opacity: 0.3;\n margin-bottom: 16px;\n}\n\n/* Responsive */\n@media (max-width: 768px) {\n .header-content {\n flex-direction: column;\n gap: 16px;\n }\n \n .header-stats {\n flex-wrap: wrap;\n }\n \n .json-detail-pane {\n width: 100%;\n }\n \n .timeline {\n padding-left: 30px;\n }\n \n .timeline-marker {\n left: -25px;\n width: 32px;\n height: 32px;\n }\n \n .timeline-content {\n margin-left: 10px;\n }\n}\n\n/* Entity Link Styles */\n.entity-link {\n color: #2196f3;\n text-decoration: none;\n transition: all 0.2s ease;\n border-bottom: 1px solid transparent;\n display: inline-block;\n}\n\n.entity-link:hover {\n color: #1976d2;\n border-bottom-color: #1976d2;\n}\n\n.entity-link:active {\n color: #0d47a1;\n}\n\n/* Detail Pane Tabs */\n.detail-pane-tabs {\n display: flex;\n gap: 8px;\n margin: 8px 0 0 0;\n border-bottom: 1px solid #e0e6ed;\n padding: 0 16px;\n}\n\n.detail-tab {\n padding: 10px 16px;\n background: none;\n border: none;\n border-bottom: 3px solid transparent;\n color: #6c757d;\n font-size: 14px;\n font-weight: 500;\n cursor: pointer;\n transition: all 0.2s ease;\n display: flex;\n align-items: center;\n gap: 6px;\n}\n\n.detail-tab:hover {\n color: #495057;\n background: rgba(0, 0, 0, 0.02);\n}\n\n.detail-tab.active {\n color: #2196f3;\n border-bottom-color: #2196f3;\n}\n\n.detail-tab i {\n font-size: 14px;\n}\n\n/* Detail Pane Content */\n.detail-pane-content {\n flex: 1;\n overflow-y: auto;\n min-height: 0;\n margin-bottom: 35px;\n}\n\n.detail-pane-content.with-tabs {\n /* When tabs are shown, content starts right after tabs */\n margin-top: 0;\n}\n\n/* Step Payload Diff */\n.step-payload-diff {\n height: 100%;\n overflow-y: auto;\n padding: 16px;\n}\n\n.step-payload-diff mj-deep-diff {\n display: block;\n height: 100%;\n}\n\n/* JSON Viewer adjustments when no tabs */\n.detail-pane-content:not(.with-tabs) .json-viewer {\n margin-top: 16px;\n}"] }]
|
|
1322
|
+
args: [{ selector: 'mj-ai-agent-run-form', template: "<div class=\"record-form-container ai-agent-run-form\">\n <div class=\"record-form\">\n <!-- Header -->\n <div class=\"header\">\n <div class=\"header-content\">\n <div class=\"header-left\">\n <div class=\"icon-wrapper\">\n <i class=\"fas fa-robot\"></i>\n </div>\n <div class=\"header-info\">\n <h2>AI Agent Run</h2>\n <div class=\"meta-info\">\n <span class=\"agent-name\" *ngIf=\"agent\">\n <a href=\"javascript:void(0)\" class=\"entity-link\" (click)=\"openEntityRecord('AI Agents', record.AgentID)\">\n {{ agent.Name }}\n </a>\n </span>\n <span class=\"run-id\">{{ record.ID }}</span>\n <span class=\"parent-run\" *ngIf=\"record.ParentRunID\">\n <i class=\"fas fa-level-up-alt\"></i>\n <a (click)=\"navigateToParentRun()\" class=\"parent-link\">Parent Run</a>\n </span>\n </div>\n </div>\n </div>\n <div class=\"header-right\">\n <div class=\"status-badge\" [attr.data-status]=\"record.Status\">\n <i class=\"fas\" [ngClass]=\"getStatusIcon(record.Status || '')\"></i>\n {{ record.Status }}\n </div>\n <div class=\"header-actions\">\n <button class=\"btn-icon\" (click)=\"refreshData()\" title=\"Refresh\">\n <i class=\"fas fa-sync-alt\"></i>\n </button>\n </div>\n </div>\n </div>\n <div class=\"header-stats\">\n <div class=\"stat\">\n <span class=\"label\">Started</span>\n <span class=\"value\">{{ record.StartedAt | date:'medium' }}</span>\n </div>\n <div class=\"stat\" *ngIf=\"record.CompletedAt\">\n <span class=\"label\">Completed</span>\n <span class=\"value\">{{ record.CompletedAt | date:'medium' }}</span>\n </div>\n <div class=\"stat\" *ngIf=\"record.CompletedAt\">\n <span class=\"label\">Duration</span>\n <span class=\"value\">{{ calculateDuration(record.StartedAt, record.CompletedAt) }}</span>\n </div>\n <div class=\"stat\" *ngIf=\"record.Success !== null && record.CompletedAt !== null\">\n <span class=\"label\">Result</span>\n <span class=\"value\" [class.success]=\"record.Success\" [class.error]=\"!record.Success\">\n {{ record.Success ? 'Success' : 'Failed' }}\n </span>\n </div>\n <div class=\"stat\" *ngIf=\"costMetrics && (costMetrics.totalTokensInput + costMetrics.totalTokensOutput) > 0\">\n <span class=\"label\">Tokens</span>\n <span class=\"value\" *ngIf=\"!costMetrics.isLoading\">{{ (costMetrics.totalTokensInput + costMetrics.totalTokensOutput) | number:'1.0-0' }}</span>\n <span class=\"value loading\" *ngIf=\"costMetrics.isLoading\"><i class=\"fas fa-spinner fa-spin\"></i></span>\n </div>\n <div class=\"stat\" *ngIf=\"costMetrics && costMetrics.totalCost > 0\">\n <span class=\"label\">Cost</span>\n <span class=\"value\" *ngIf=\"!costMetrics.isLoading\">${{ costMetrics.totalCost | number:'1.2-4' }}</span>\n <span class=\"value loading\" *ngIf=\"costMetrics.isLoading\"><i class=\"fas fa-spinner fa-spin\"></i></span>\n </div>\n <div class=\"stat\" *ngIf=\"record.EffortLevel\">\n <span class=\"label\">Effort Level</span>\n <span class=\"value\">{{ record.EffortLevel }}</span>\n </div>\n </div>\n \n <!-- Configuration Bar (shown below header stats when ConfigurationID exists) -->\n <div class=\"configuration-bar\" *ngIf=\"record.ConfigurationID\">\n <div class=\"config-item\">\n <i class=\"fas fa-cog\"></i>\n <div class=\"config-content\">\n <div class=\"config-label\">Configuration</div>\n <div class=\"config-value\">\n <a href=\"javascript:void(0)\" class=\"entity-link\" (click)=\"openEntityRecord('MJ: AI Configurations', record.ConfigurationID)\">\n {{ record.Configuration || 'Unknown' }}\n </a>\n </div>\n </div>\n </div>\n </div>\n </div>\n\n <!-- Tabs -->\n <div class=\"tabs\">\n <button class=\"tab\" [class.active]=\"activeTab === 'timeline'\" (click)=\"changeTab('timeline')\">\n <i class=\"fas fa-stream\"></i> Timeline\n </button>\n <button class=\"tab\" [class.active]=\"activeTab === 'visualization'\" (click)=\"changeTab('visualization')\">\n <i class=\"fas fa-diagram-project\"></i> Visualization\n </button>\n <button class=\"tab\" [class.active]=\"activeTab === 'analytics'\" (click)=\"changeTab('analytics')\">\n <i class=\"fas fa-chart-line\"></i> Analytics\n </button>\n <button class=\"tab\" [class.active]=\"activeTab === 'details'\" (click)=\"changeTab('details')\">\n <i class=\"fas fa-info-circle\"></i> Details\n </button>\n </div>\n\n <!-- Content -->\n <div class=\"content-area\">\n <!-- Timeline Tab -->\n <div class=\"tab-content\" *ngIf=\"activeTab === 'timeline'\" style=\"height: 100%;\">\n <kendo-splitter style=\"height: 100%;\" orientation=\"horizontal\">\n <!-- Timeline Pane -->\n <kendo-splitter-pane [min]=\"'400px'\">\n <mj-ai-agent-run-timeline\n [aiAgentRunId]=\"record.ID\"\n [dataHelper]=\"dataHelper\"\n [autoRefresh]=\"record.Status === 'Running'\"\n [refreshInterval]=\"30000\"\n (itemSelected)=\"selectTimelineItem($event)\"\n (navigateToEntity)=\"navigateToEntityRecord($event)\"\n (agentRunCompleted)=\"onAgentRunCompleted($event)\">\n </mj-ai-agent-run-timeline>\n </kendo-splitter-pane>\n \n <!-- JSON Detail Pane -->\n <kendo-splitter-pane [size]=\"'45%'\" [min]=\"'300px'\" [collapsed]=\"!selectedTimelineItem\">\n <mj-ai-agent-run-step-detail\n [selectedTimelineItem]=\"selectedTimelineItem\"\n (closePanel)=\"closeJsonPanel()\"\n (navigateToActionLog)=\"navigateToActionLog($event)\"\n (copyToClipboard)=\"copyToClipboard($event)\">\n </mj-ai-agent-run-step-detail>\n </kendo-splitter-pane>\n </kendo-splitter>\n </div>\n\n <!-- Visualization Tab -->\n <div class=\"tab-content\" *ngIf=\"activeTab === 'visualization'\" style=\"height: 100%;\">\n <mj-ai-agent-run-visualization\n #visualizationComponent\n [aiAgentRunId]=\"record.ID\"\n [dataHelper]=\"dataHelper\"\n *ngIf=\"visualizationLoaded\">\n </mj-ai-agent-run-visualization>\n </div>\n\n <!-- Analytics Tab -->\n <div class=\"tab-content\" *ngIf=\"activeTab === 'analytics'\" style=\"height: 100%;\">\n <mj-ai-agent-run-analytics \n #analyticsComponent\n [agentRunId]=\"record.ID\"\n *ngIf=\"analyticsLoaded\">\n </mj-ai-agent-run-analytics>\n </div>\n\n <!-- Details Tab -->\n <div class=\"tab-content\" *ngIf=\"activeTab === 'details'\">\n <kendo-panelbar [keepItemContent]=\"true\">\n <kendo-panelbar-item title=\"General Information\" [expanded]=\"true\">\n <ng-template kendoPanelBarContent>\n <div class=\"details-grid\">\n <div class=\"detail-item\">\n <label>Agent</label>\n <span>\n <a href=\"javascript:void(0)\" class=\"entity-link\" (click)=\"openEntityRecord('AI Agents', record.AgentID)\">\n {{ agent?.Name || 'N/A' }}\n </a>\n </span>\n </div>\n <div class=\"detail-item\">\n <label>Parent Run ID</label>\n <span>\n <a *ngIf=\"record.ParentRunID\" href=\"javascript:void(0)\" class=\"entity-link\" (click)=\"openEntityRecord('MJ: AI Agent Runs', record.ParentRunID)\">\n {{ record.ParentRunID }}\n </a>\n <span *ngIf=\"!record.ParentRunID\">None (Root)</span>\n </span>\n </div>\n <div class=\"detail-item\">\n <label>Last Run ID</label>\n <span>\n <a *ngIf=\"record.LastRunID\" href=\"javascript:void(0)\" class=\"entity-link\" (click)=\"openEntityRecord('MJ: AI Agent Runs', record.LastRunID)\">\n {{ record.LastRunID }}\n </a>\n <span *ngIf=\"!record.LastRunID\">None</span>\n </span>\n </div>\n <div class=\"detail-item\">\n <label>Conversation ID</label>\n <span>\n <a *ngIf=\"record.ConversationID\" href=\"javascript:void(0)\" class=\"entity-link\" (click)=\"openEntityRecord('Conversations', record.ConversationID)\">\n {{ record.ConversationID }}\n </a>\n <span *ngIf=\"!record.ConversationID\">N/A</span>\n </span>\n </div>\n <div class=\"detail-item\">\n <label>User</label>\n <span>\n <a *ngIf=\"record.UserID\" href=\"javascript:void(0)\" class=\"entity-link\" (click)=\"openEntityRecord('Users', record.UserID)\">\n {{ record.User || 'N/A' }}\n </a>\n <span *ngIf=\"!record.UserID\">N/A</span>\n </span>\n </div>\n </div>\n </ng-template>\n </kendo-panelbar-item>\n \n <kendo-panelbar-item title=\"Execution Settings\">\n <ng-template kendoPanelBarContent>\n <div class=\"details-grid\">\n <div class=\"detail-item\">\n <label>Override Model</label>\n <span>\n <a *ngIf=\"record.OverrideModelID\" href=\"javascript:void(0)\" class=\"entity-link\" (click)=\"openEntityRecord('AI Models', record.OverrideModelID)\">\n {{ record.OverrideModel || 'N/A' }}\n </a>\n <span *ngIf=\"!record.OverrideModelID\">N/A</span>\n </span>\n </div>\n <div class=\"detail-item\">\n <label>Override Vendor</label>\n <span>\n <a *ngIf=\"record.OverrideVendorID\" href=\"javascript:void(0)\" class=\"entity-link\" (click)=\"openEntityRecord('AI Vendors', record.OverrideVendorID)\">\n {{ record.OverrideVendor || 'N/A' }}\n </a>\n <span *ngIf=\"!record.OverrideVendorID\">N/A</span>\n </span>\n </div>\n <div class=\"detail-item\">\n <label>Verbose Logging</label>\n <span>{{ record.Verbose ? 'Yes' : 'No' }}</span>\n </div>\n </div>\n </ng-template>\n </kendo-panelbar-item>\n \n <kendo-panelbar-item title=\"Execution Status\">\n <ng-template kendoPanelBarContent>\n <div class=\"details-grid\">\n <div class=\"detail-item\">\n <label>Status</label>\n <span class=\"status-badge\" [attr.data-status]=\"record.Status\">\n {{ record.Status }}\n </span>\n </div>\n <div class=\"detail-item\">\n <label>Success</label>\n @if (record.Success === null) {\n <span>In Progress</span>\n }\n @else if (record.Success) {\n <span class=\"success\">Yes</span>\n }\n @else {\n <span class=\"error-message\">No</span>\n }\n </div>\n <div class=\"detail-item full-width\" *ngIf=\"record.Message\">\n <label>Message</label>\n <div class=\"message\">{{ record.Message }}</div>\n </div>\n <div class=\"detail-item full-width\" *ngIf=\"record.ErrorMessage\">\n <label>Error Message</label>\n <div class=\"error-message\">{{ record.ErrorMessage }}</div>\n </div>\n </div>\n </ng-template>\n </kendo-panelbar-item>\n \n <kendo-panelbar-item title=\"Usage & Cost\">\n <ng-template kendoPanelBarContent>\n <div class=\"details-grid\">\n <div class=\"detail-item\">\n <label>Total Tokens Used</label>\n <span>{{ record.TotalTokensUsed ? (record.TotalTokensUsed | number:'1.0-0') : 'N/A' }}</span>\n </div>\n <div class=\"detail-item\">\n <label>Prompt Tokens</label>\n <span>{{ record.TotalPromptTokensUsed ? (record.TotalPromptTokensUsed | number:'1.0-0') : 'N/A' }}</span>\n </div>\n <div class=\"detail-item\">\n <label>Completion Tokens</label>\n <span>{{ record.TotalCompletionTokensUsed ? (record.TotalCompletionTokensUsed | number:'1.0-0') : 'N/A' }}</span>\n </div>\n <div class=\"detail-item\">\n <label>Total Cost</label>\n <span>{{ record.TotalCost != null ? ('$' + (record.TotalCost | number:'1.2-4')) : 'N/A' }}</span>\n </div>\n <div class=\"detail-item\">\n <label>Total Prompt Iterations</label>\n <span>{{ record.TotalPromptIterations != null ? (record.TotalPromptIterations | number:'1.0-0') : 'N/A' }}</span>\n </div>\n </div>\n </ng-template>\n </kendo-panelbar-item>\n \n <kendo-panelbar-item title=\"Result\" *ngIf=\"record.Result\">\n <ng-template kendoPanelBarContent>\n <div class=\"result-viewer\">\n @if (isParsingComplete) {\n <mj-code-editor\n [ngModel]=\"parsedResult\"\n [language]=\"'json'\"\n [readonly]=\"true\"\n style=\"height: 300px; width: 100%;\">\n </mj-code-editor>\n } @else {\n <div style=\"padding: 20px; text-align: center; color: #666;\">\n <i class=\"fas fa-spinner fa-spin\"></i> Loading result data...\n </div>\n }\n </div>\n </ng-template>\n </kendo-panelbar-item>\n \n <kendo-panelbar-item title=\"Starting Payload\" *ngIf=\"record.StartingPayload\">\n <ng-template kendoPanelBarContent>\n <div class=\"result-viewer\">\n @if (isParsingComplete) {\n <mj-code-editor\n [ngModel]=\"parsedStartingPayload\"\n [language]=\"'json'\"\n [readonly]=\"true\"\n style=\"height: 300px; width: 100%;\">\n </mj-code-editor>\n } @else {\n <div style=\"padding: 20px; text-align: center; color: #666;\">\n <i class=\"fas fa-spinner fa-spin\"></i> Loading payload data...\n </div>\n }\n </div>\n </ng-template>\n </kendo-panelbar-item>\n \n <kendo-panelbar-item title=\"Execution Data\" *ngIf=\"record.Data\">\n <ng-template kendoPanelBarContent>\n <div class=\"result-viewer\">\n @if (isParsingComplete) {\n <mj-code-editor\n [ngModel]=\"parsedData\"\n [language]=\"'json'\"\n [readonly]=\"true\"\n style=\"height: 300px; width: 100%;\">\n </mj-code-editor>\n } @else {\n <div style=\"padding: 20px; text-align: center; color: #666;\">\n <i class=\"fas fa-spinner fa-spin\"></i> Loading execution data...\n </div>\n }\n </div>\n </ng-template>\n </kendo-panelbar-item>\n \n <kendo-panelbar-item title=\"Final Payload\" *ngIf=\"record.FinalPayload\">\n <ng-template kendoPanelBarContent>\n <div class=\"result-viewer\">\n @if (isParsingComplete) {\n <mj-code-editor\n [ngModel]=\"parsedFinalPayload\"\n [language]=\"'json'\"\n [readonly]=\"true\"\n style=\"height: 300px; width: 100%;\">\n </mj-code-editor>\n } @else {\n <div style=\"padding: 20px; text-align: center; color: #666;\">\n <i class=\"fas fa-spinner fa-spin\"></i> Loading final payload data...\n </div>\n }\n </div>\n </ng-template>\n </kendo-panelbar-item>\n \n <kendo-panelbar-item title=\"Payload Diff\" *ngIf=\"showPayloadDiff\">\n <ng-template kendoPanelBarContent>\n <div style=\"padding: 20px; background: #f8f9fa;\">\n @if (isParsingComplete) {\n <mj-deep-diff\n [oldValue]=\"startingPayloadObject\"\n [newValue]=\"finalPayloadObject\"\n [title]=\"''\"\n [showSummary]=\"true\"\n [showUnchanged]=\"false\"\n [expandAll]=\"false\"\n [maxDepth]=\"10\"\n [maxStringLength]=\"200\"\n [treatNullAsUndefined]=\"true\">\n </mj-deep-diff>\n } @else {\n <div style=\"padding: 20px; text-align: center; color: #666;\">\n <i class=\"fas fa-spinner fa-spin\"></i> Loading payload diff...\n </div>\n }\n </div>\n </ng-template>\n </kendo-panelbar-item>\n </kendo-panelbar>\n </div>\n </div>\n </div>\n</div>", styles: [".ai-agent-run-form {\n height: 100%;\n overflow: auto;\n}\n\n/* Header Styles */\n.header {\n background: linear-gradient(135deg, #ffffff 0%, #f8f9fa 100%);\n border-bottom: 1px solid #e0e6ed;\n padding: 20px;\n box-shadow: 0 2px 4px rgba(0,0,0,0.04);\n}\n\n.header-content {\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n margin-bottom: 16px;\n}\n\n.header-left {\n display: flex;\n align-items: center;\n gap: 16px;\n}\n\n.icon-wrapper {\n width: 48px;\n height: 48px;\n background: linear-gradient(135deg, #2196f3, #1976d2);\n border-radius: 12px;\n display: flex;\n align-items: center;\n justify-content: center;\n color: white;\n font-size: 20px;\n}\n\n.header-info h2 {\n margin: 0;\n font-size: 24px;\n font-weight: 600;\n color: #2c3e50;\n}\n\n.meta-info {\n display: flex;\n gap: 12px;\n margin-top: 4px;\n font-size: 14px;\n color: #6c757d;\n}\n\n.parent-run {\n display: flex;\n align-items: center;\n gap: 6px;\n}\n\n.parent-link {\n color: #ff6358;\n text-decoration: none;\n cursor: pointer;\n transition: color 0.2s;\n}\n\n.parent-link:hover {\n color: #ff4444;\n text-decoration: underline;\n}\n\n.agent-name {\n font-weight: 500;\n color: #495057;\n}\n\n.run-id {\n font-family: monospace;\n font-size: 12px;\n opacity: 0.7;\n}\n\n.header-right {\n display: flex;\n align-items: center;\n gap: 16px;\n}\n\n.status-badge {\n padding: 6px 16px;\n border-radius: 20px;\n font-size: 13px;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n display: inline-flex;\n align-items: center;\n gap: 6px;\n}\n\n.status-badge[data-status=\"Running\"] {\n background: #e3f2fd;\n color: #1976d2;\n}\n\n.status-badge[data-status=\"Completed\"] {\n background: #d4edda;\n color: #155724;\n}\n\n.status-badge[data-status=\"Failed\"] {\n background: #f8d7da;\n color: #721c24;\n}\n\n.status-badge[data-status=\"Cancelled\"] {\n background: #fff3cd;\n color: #856404;\n}\n\n.status-badge[data-status=\"Paused\"] {\n background: #e2e3e5;\n color: #383d41;\n}\n\n.status-badge.small {\n padding: 4px 12px;\n font-size: 11px;\n}\n\n.header-actions {\n display: flex;\n gap: 8px;\n}\n\n.btn-icon {\n width: 36px;\n height: 36px;\n border: 1px solid #dee2e6;\n background: white;\n border-radius: 8px;\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n transition: all 0.2s ease;\n color: #6c757d;\n}\n\n.btn-icon:hover {\n background: #f8f9fa;\n border-color: #adb5bd;\n color: #495057;\n}\n\n.header-stats {\n display: flex;\n gap: 24px;\n padding-top: 12px;\n border-top: 1px solid #e9ecef;\n}\n\n/* Configuration Bar */\n.configuration-bar {\n display: flex;\n gap: 24px;\n padding-top: 16px;\n border-top: 1px solid #e9ecef;\n margin-top: 16px;\n}\n\n.config-item {\n display: flex;\n align-items: center;\n gap: 12px;\n}\n\n.config-item > i {\n font-size: 1.2em;\n color: #6c757d;\n width: 24px;\n text-align: center;\n}\n\n.config-content {\n display: flex;\n flex-direction: column;\n}\n\n.config-label {\n font-size: 12px;\n color: #6c757d;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.config-value {\n font-size: 14px;\n font-weight: 600;\n color: #2c3e50;\n}\n\n.config-value .entity-link {\n color: #007bff;\n text-decoration: none;\n cursor: pointer;\n transition: color 0.2s;\n}\n\n.config-value .entity-link:hover {\n color: #0056b3;\n text-decoration: underline;\n}\n\n.stat {\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n.stat .label {\n font-size: 12px;\n color: #6c757d;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.stat .value {\n font-size: 14px;\n font-weight: 500;\n color: #495057;\n}\n\n.stat .value.success {\n color: #28a745;\n}\n\n.stat .value.error {\n color: #dc3545;\n}\n\n/* Tabs */\n.tabs {\n display: flex;\n border-bottom: 1px solid #dee2e6;\n background: #f8f9fa;\n}\n\n.tab {\n padding: 12px 24px;\n border: none;\n background: transparent;\n cursor: pointer;\n font-size: 14px;\n font-weight: 500;\n color: #6c757d;\n display: flex;\n align-items: center;\n gap: 8px;\n transition: all 0.2s ease;\n border-bottom: 3px solid transparent;\n}\n\n.tab:hover {\n color: #495057;\n background: rgba(0,0,0,0.02);\n}\n\n.tab.active {\n color: #2196f3;\n border-bottom-color: #2196f3;\n background: white;\n}\n\n/* Content Area */\n.content-area {\n position: relative;\n height: calc(100vh - 390px);\n overflow: auto;\n background: white;\n}\n\n.tab-content {\n height: 100%;\n overflow: auto;\n}\n\n/* Details tab specific */\n.tab-content[ng-reflect-ng-if=\"true\"] > kendo-panelbar {\n height: 100%;\n overflow-y: auto;\n}\n\n/* JSON Detail Pane */\n.json-detail-pane {\n height: 100%;\n display: flex;\n flex-direction: column;\n background: #f8f9fa;\n border-left: 1px solid #e0e6ed;\n}\n\n.json-pane-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 16px 20px;\n background: white;\n border-bottom: 1px solid #e0e6ed;\n box-shadow: 0 2px 4px rgba(0,0,0,0.04);\n}\n\n.json-pane-header h3 {\n margin: 0;\n font-size: 16px;\n font-weight: 600;\n color: #2c3e50;\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.json-pane-header h3 i {\n color: #6b7280;\n font-size: 14px;\n}\n\n.json-pane-content {\n flex: 1;\n display: flex;\n flex-direction: column;\n overflow: auto;\n padding: 16px;\n}\n\n.json-meta {\n display: flex;\n gap: 20px;\n margin-bottom: 16px;\n flex-wrap: wrap;\n}\n\n.json-meta .meta-item {\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n.json-meta .meta-item label {\n font-size: 11px;\n text-transform: uppercase;\n color: #6b7280;\n font-weight: 600;\n letter-spacing: 0.5px;\n}\n\n.json-meta .meta-item span {\n font-size: 14px;\n color: #2c3e50;\n font-weight: 500;\n}\n\n.action-link {\n margin-bottom: 12px;\n}\n\n.action-link .btn-link {\n background: none;\n border: none;\n color: #2196f3;\n font-size: 14px;\n cursor: pointer;\n padding: 6px 12px;\n border-radius: 4px;\n transition: all 0.2s;\n display: inline-flex;\n align-items: center;\n gap: 6px;\n}\n\n.action-link .btn-link:hover {\n background: rgba(33, 150, 243, 0.08);\n color: #1976d2;\n}\n\n.json-viewer {\n flex: 1;\n display: flex;\n flex-direction: column;\n background: white;\n border-radius: 8px;\n border: 1px solid #e0e6ed;\n overflow: auto;\n padding: 20px;\n gap: 10px;\n min-height: 0;\n margin-bottom: 45px;\n}\n\n\n.json-toolbar {\n display: flex;\n justify-content: flex-end;\n padding: 8px 12px;\n background: #f8f9fa;\n border-bottom: 1px solid #e0e6ed;\n}\n\n/* Timeline Styles */\n.timeline-container {\n height: 100%;\n overflow-y: auto;\n padding: 20px;\n}\n\n.timeline-container > .timeline {\n max-width: 900px;\n margin: 0 auto;\n}\n\n.timeline {\n position: relative;\n padding-left: 40px;\n}\n\n.timeline::before {\n content: '';\n position: absolute;\n left: 20px;\n top: 0;\n bottom: 0;\n width: 2px;\n background: #e9ecef;\n}\n\n.timeline-item {\n position: relative;\n margin-bottom: 24px;\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.timeline-item:hover {\n transform: translateX(4px);\n}\n\n.timeline-item.selected {\n transform: translateX(8px);\n}\n\n.timeline-item.selected .timeline-content {\n background: #f0f7ff;\n border-color: #2196f3;\n}\n\n.timeline-marker {\n position: absolute;\n left: -30px;\n top: 0;\n width: 40px;\n height: 40px;\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n background: white;\n border: 3px solid #e9ecef;\n z-index: 1;\n transition: all 0.2s ease;\n}\n\n.timeline-marker[data-color=\"success\"] {\n border-color: #28a745;\n color: #28a745;\n}\n\n.timeline-marker[data-color=\"error\"] {\n border-color: #dc3545;\n color: #dc3545;\n}\n\n.timeline-marker[data-color=\"info\"] {\n border-color: #17a2b8;\n color: #17a2b8;\n}\n\n.timeline-marker[data-color=\"warning\"] {\n border-color: #ffc107;\n color: #ffc107;\n}\n\n.timeline-marker[data-color=\"secondary\"] {\n border-color: #6c757d;\n color: #6c757d;\n}\n\n.timeline-marker.small {\n width: 28px;\n height: 28px;\n font-size: 12px;\n}\n\n.timeline-content {\n background: white;\n border: 1px solid #e9ecef;\n border-radius: 12px;\n padding: 16px 20px;\n margin-left: 20px;\n box-shadow: 0 2px 4px rgba(0,0,0,0.04);\n transition: all 0.2s ease;\n}\n\n.timeline-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 8px;\n}\n\n.timeline-header h4 {\n margin: 0;\n font-size: 16px;\n font-weight: 600;\n color: #2c3e50;\n}\n\n.timeline-header h5 {\n margin: 0;\n font-size: 14px;\n font-weight: 600;\n color: #495057;\n}\n\n.timeline-time {\n font-size: 12px;\n color: #6c757d;\n font-family: monospace;\n}\n\n.timeline-subtitle {\n font-size: 13px;\n color: #6c757d;\n margin-bottom: 8px;\n}\n\n.timeline-meta {\n display: flex;\n gap: 16px;\n font-size: 12px;\n color: #6c757d;\n}\n\n.timeline-meta .status {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 2px 8px;\n border-radius: 12px;\n font-size: 11px;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.timeline-meta .status[data-status=\"Completed\"] {\n background: #d4edda;\n color: #155724;\n}\n\n.timeline-meta .status[data-status=\"Failed\"] {\n background: #f8d7da;\n color: #721c24;\n}\n\n.timeline-meta .status[data-status=\"Running\"] {\n background: #cce5ff;\n color: #004085;\n}\n\n.timeline-meta .status[data-status=\"Paused\"] {\n background: #e2e3e5;\n color: #383d41;\n}\n\n.duration {\n display: flex;\n align-items: center;\n gap: 4px;\n}\n\n.timeline-actions {\n position: absolute;\n right: 20px;\n top: 50%;\n transform: translateY(-50%);\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.btn-link {\n background: none;\n border: none;\n color: #2196f3;\n cursor: pointer;\n font-size: 12px;\n display: flex;\n align-items: center;\n gap: 4px;\n padding: 4px 8px;\n border-radius: 4px;\n transition: all 0.2s ease;\n}\n\n.btn-link:hover {\n background: rgba(33, 150, 243, 0.1);\n}\n\n.btn-expand {\n width: 24px;\n height: 24px;\n border: 1px solid #dee2e6;\n background: white;\n border-radius: 4px;\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n transition: all 0.2s ease;\n color: #6c757d;\n font-size: 12px;\n}\n\n.btn-expand:hover {\n background: #f8f9fa;\n border-color: #adb5bd;\n color: #495057;\n}\n\n/* Timeline Children */\n.timeline-children {\n position: relative;\n margin-top: 12px;\n margin-bottom: 12px;\n}\n\n.timeline-children::before {\n content: '';\n position: absolute;\n left: -10px;\n top: -12px;\n bottom: 0;\n width: 2px;\n background: #e9ecef;\n}\n\n.child-item {\n margin-bottom: 12px;\n}\n\n.child-item .timeline-content {\n background: #f8f9fa;\n border-color: #e0e6ed;\n}\n\n/* Sub-run timeline styles */\n.sub-run-timeline {\n background: rgba(33, 150, 243, 0.02);\n border-left: 2px solid rgba(33, 150, 243, 0.2);\n margin-left: 20px;\n padding-left: 20px;\n margin-top: 8px;\n margin-bottom: 8px;\n}\n\n.sub-run-item .timeline-marker {\n border-width: 2px;\n}\n\n.sub-run-item .timeline-content {\n transition: all 0.2s ease;\n}\n\n/* JSON Detail Pane (in splitter) */\n.json-detail-pane {\n height: 100%;\n display: flex;\n flex-direction: column;\n background: white;\n border-left: 1px solid #e0e6ed;\n}\n\n.json-pane-header {\n padding: 16px 20px;\n background: #f8f9fa;\n border-bottom: 1px solid #e0e6ed;\n display: flex;\n justify-content: space-between;\n align-items: center;\n flex-shrink: 0;\n}\n\n.json-pane-header h3 {\n margin: 0;\n font-size: 16px;\n color: #2c3e50;\n display: flex;\n align-items: center;\n gap: 10px;\n font-weight: 600;\n}\n\n.json-pane-content {\n flex: 1;\n overflow-y: auto;\n display: flex;\n flex-direction: column;\n}\n\n.json-meta {\n padding: 16px 20px;\n border-bottom: 1px solid #e0e6ed;\n display: flex;\n gap: 20px;\n flex-wrap: wrap;\n flex-shrink: 0;\n}\n\n.json-meta .meta-item {\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n.json-meta label {\n font-size: 11px;\n color: #7c8798;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.json-meta span {\n font-size: 14px;\n color: #2c3e50;\n font-weight: 500;\n}\n\n.action-link {\n padding: 12px 20px;\n border-bottom: 1px solid #e0e6ed;\n flex-shrink: 0;\n}\n\n.action-link .btn-link {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n color: #2196f3;\n text-decoration: none;\n font-size: 14px;\n padding: 8px 12px;\n background: #f0f7ff;\n border: 1px solid #d0e5ff;\n border-radius: 4px;\n transition: all 0.2s;\n cursor: pointer;\n}\n\n.action-link .btn-link:hover {\n background: #e1f0ff;\n border-color: #b0d5ff;\n text-decoration: none;\n}\n\n\n.json-toolbar {\n display: flex;\n justify-content: flex-end;\n gap: 8px;\n margin-bottom: 8px;\n}\n\n/* Details Tab */\n.details-grid {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));\n gap: 20px;\n padding: 20px;\n}\n\n.detail-item {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.detail-item.full-width {\n grid-column: 1 / -1;\n}\n\n.detail-item label {\n font-size: 12px;\n color: #6c757d;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.detail-item span {\n font-size: 14px;\n color: #495057;\n}\n\n.error-message {\n background: #f8d7da;\n color: #721c24;\n padding: 12px;\n border-radius: 8px;\n font-size: 13px;\n}\n\n.result-viewer,\n.state-viewer {\n padding: 20px;\n max-height: 450px;\n overflow: auto;\n display: flex;\n flex-direction: column;\n}\n\n.result-viewer mj-code-editor,\n.state-viewer mj-code-editor {\n flex: 1;\n min-height: 0;\n}\n\n/* Empty States */\n.empty-state,\n.loading-state,\n.error-state {\n text-align: center;\n padding: 60px 20px;\n color: #6c757d;\n}\n\n.empty-state i,\n.loading-state i,\n.error-state i {\n opacity: 0.3;\n margin-bottom: 16px;\n}\n\n/* Responsive */\n@media (max-width: 768px) {\n .header-content {\n flex-direction: column;\n gap: 16px;\n }\n \n .header-stats {\n flex-wrap: wrap;\n }\n \n .json-detail-pane {\n width: 100%;\n }\n \n .timeline {\n padding-left: 30px;\n }\n \n .timeline-marker {\n left: -25px;\n width: 32px;\n height: 32px;\n }\n \n .timeline-content {\n margin-left: 10px;\n }\n}\n\n/* Entity Link Styles */\n.entity-link {\n color: #2196f3;\n text-decoration: none;\n transition: all 0.2s ease;\n border-bottom: 1px solid transparent;\n display: inline-block;\n}\n\n.entity-link:hover {\n color: #1976d2;\n border-bottom-color: #1976d2;\n}\n\n.entity-link:active {\n color: #0d47a1;\n}\n\n/* Detail Pane Tabs */\n.detail-pane-tabs {\n display: flex;\n gap: 8px;\n margin: 8px 0 0 0;\n border-bottom: 1px solid #e0e6ed;\n padding: 0 16px;\n}\n\n.detail-tab {\n padding: 10px 16px;\n background: none;\n border: none;\n border-bottom: 3px solid transparent;\n color: #6c757d;\n font-size: 14px;\n font-weight: 500;\n cursor: pointer;\n transition: all 0.2s ease;\n display: flex;\n align-items: center;\n gap: 6px;\n}\n\n.detail-tab:hover {\n color: #495057;\n background: rgba(0, 0, 0, 0.02);\n}\n\n.detail-tab.active {\n color: #2196f3;\n border-bottom-color: #2196f3;\n}\n\n.detail-tab i {\n font-size: 14px;\n}\n\n/* Detail Pane Content */\n.detail-pane-content {\n flex: 1;\n overflow-y: auto;\n min-height: 0;\n margin-bottom: 35px;\n}\n\n.detail-pane-content.with-tabs {\n /* When tabs are shown, content starts right after tabs */\n margin-top: 0;\n}\n\n/* Step Payload Diff */\n.step-payload-diff {\n height: 100%;\n overflow-y: auto;\n padding: 16px;\n}\n\n.step-payload-diff mj-deep-diff {\n display: block;\n height: 100%;\n}\n\n/* JSON Viewer adjustments when no tabs */\n.detail-pane-content:not(.with-tabs) .json-viewer {\n margin-top: 16px;\n}"] }]
|
|
1295
1323
|
}], () => [{ type: i0.ElementRef }, { type: i1.SharedService }, { type: i2.Router }, { type: i2.ActivatedRoute }, { type: i0.ChangeDetectorRef }, { type: i3.AIAgentRunCostService }], { timelineComponent: [{
|
|
1296
1324
|
type: ViewChild,
|
|
1297
1325
|
args: [AIAgentRunTimelineComponent]
|