@memberjunction/ng-core-entity-forms 2.53.0 → 2.55.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -206
- package/dist/lib/custom/AIAgents/ai-agent-form.component.d.ts +28 -5
- package/dist/lib/custom/AIAgents/ai-agent-form.component.d.ts.map +1 -1
- package/dist/lib/custom/AIAgents/ai-agent-form.component.js +364 -234
- package/dist/lib/custom/AIAgents/ai-agent-form.component.js.map +1 -1
- package/dist/lib/custom/AIAgents/new-agent-dialog.component.d.ts +36 -0
- package/dist/lib/custom/AIAgents/new-agent-dialog.component.d.ts.map +1 -0
- package/dist/lib/custom/AIAgents/new-agent-dialog.component.js +325 -0
- package/dist/lib/custom/AIAgents/new-agent-dialog.component.js.map +1 -0
- package/dist/lib/custom/AIAgents/new-agent-dialog.service.d.ts +41 -0
- package/dist/lib/custom/AIAgents/new-agent-dialog.service.d.ts.map +1 -0
- package/dist/lib/custom/AIAgents/new-agent-dialog.service.js +87 -0
- package/dist/lib/custom/AIAgents/new-agent-dialog.service.js.map +1 -0
- package/dist/lib/custom/AIPromptRuns/ai-prompt-run-form.component.js +5 -7
- package/dist/lib/custom/AIPromptRuns/ai-prompt-run-form.component.js.map +1 -1
- package/dist/lib/custom/AIPrompts/ai-prompt-form.component.d.ts +5 -2
- package/dist/lib/custom/AIPrompts/ai-prompt-form.component.d.ts.map +1 -1
- package/dist/lib/custom/AIPrompts/ai-prompt-form.component.js +501 -485
- package/dist/lib/custom/AIPrompts/ai-prompt-form.component.js.map +1 -1
- package/dist/lib/custom/Actions/action-execution-log-form.component.d.ts +2 -0
- package/dist/lib/custom/Actions/action-execution-log-form.component.d.ts.map +1 -1
- package/dist/lib/custom/Actions/action-execution-log-form.component.js +216 -293
- package/dist/lib/custom/Actions/action-execution-log-form.component.js.map +1 -1
- package/dist/lib/custom/Actions/action-form.component.js +6 -8
- package/dist/lib/custom/Actions/action-form.component.js.map +1 -1
- package/dist/lib/custom/ai-agent-run/ai-agent-run-step-node.component.d.ts +25 -0
- package/dist/lib/custom/ai-agent-run/ai-agent-run-step-node.component.d.ts.map +1 -0
- package/dist/lib/custom/ai-agent-run/ai-agent-run-step-node.component.js +261 -0
- package/dist/lib/custom/ai-agent-run/ai-agent-run-step-node.component.js.map +1 -0
- package/dist/lib/custom/ai-agent-run/ai-agent-run-timeline.component.d.ts +73 -0
- package/dist/lib/custom/ai-agent-run/ai-agent-run-timeline.component.d.ts.map +1 -0
- package/dist/lib/custom/ai-agent-run/ai-agent-run-timeline.component.js +510 -0
- package/dist/lib/custom/ai-agent-run/ai-agent-run-timeline.component.js.map +1 -0
- package/dist/lib/custom/ai-agent-run/ai-agent-run.component.d.ts +41 -0
- package/dist/lib/custom/ai-agent-run/ai-agent-run.component.d.ts.map +1 -0
- package/dist/lib/custom/ai-agent-run/ai-agent-run.component.js +568 -0
- package/dist/lib/custom/ai-agent-run/ai-agent-run.component.js.map +1 -0
- package/dist/lib/custom/custom-forms.module.d.ts +31 -31
- package/dist/lib/custom/custom-forms.module.d.ts.map +1 -1
- package/dist/lib/custom/custom-forms.module.js +37 -34
- package/dist/lib/custom/custom-forms.module.js.map +1 -1
- package/dist/lib/generated/Entities/AIAgent/aiagent.form.component.js +16 -17
- package/dist/lib/generated/Entities/AIAgent/aiagent.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/AIAgentRun/aiagentrun.form.component.js +11 -14
- package/dist/lib/generated/Entities/AIAgentRun/aiagentrun.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/AIAgentRunStep/aiagentrunstep.form.component.js +3 -5
- package/dist/lib/generated/Entities/AIAgentRunStep/aiagentrunstep.form.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 +13 -4
- package/dist/lib/generated/Entities/AIAgentRunStep/sections/details.component.js.map +1 -1
- package/dist/lib/generated/Entities/AIAgentType/aiagenttype.form.component.js +5 -7
- package/dist/lib/generated/Entities/AIAgentType/aiagenttype.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/AIConfiguration/aiconfiguration.form.component.js +7 -8
- package/dist/lib/generated/Entities/AIConfiguration/aiconfiguration.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/AIModel/aimodel.form.component.js +12 -13
- package/dist/lib/generated/Entities/AIModel/aimodel.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/AIModelCost/aimodelcost.form.component.js +3 -5
- package/dist/lib/generated/Entities/AIModelCost/aimodelcost.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/AIModelPriceType/aimodelpricetype.form.component.js +5 -7
- package/dist/lib/generated/Entities/AIModelPriceType/aimodelpricetype.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/AIModelPriceUnitType/aimodelpriceunittype.form.component.js +5 -7
- package/dist/lib/generated/Entities/AIModelPriceUnitType/aimodelpriceunittype.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/AIModelType/aimodeltype.form.component.js +11 -12
- package/dist/lib/generated/Entities/AIModelType/aimodeltype.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/AIPrompt/aiprompt.form.component.js +19 -20
- package/dist/lib/generated/Entities/AIPrompt/aiprompt.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/AIPromptRun/aipromptrun.form.component.js +11 -12
- package/dist/lib/generated/Entities/AIPromptRun/aipromptrun.form.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 +13 -4
- package/dist/lib/generated/Entities/AIPromptRun/sections/details.component.js.map +1 -1
- package/dist/lib/generated/Entities/AIVendor/aivendor.form.component.js +15 -16
- package/dist/lib/generated/Entities/AIVendor/aivendor.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/Action/action.form.component.js +5 -5
- package/dist/lib/generated/Entities/Action/action.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/ActionAuthorization/actionauthorization.form.component.js +1 -1
- package/dist/lib/generated/Entities/ActionAuthorization/actionauthorization.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/ActionContext/actioncontext.form.component.js +1 -1
- package/dist/lib/generated/Entities/ActionContext/actioncontext.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/Conversation/conversation.form.component.js +5 -5
- package/dist/lib/generated/Entities/Conversation/conversation.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/TemplateContent/templatecontent.form.component.js +4 -4
- package/dist/lib/generated/Entities/TemplateContent/templatecontent.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/User/user.form.component.js +5 -5
- package/dist/lib/generated/Entities/User/user.form.component.js.map +1 -1
- package/dist/public-api.d.ts +2 -3
- package/dist/public-api.d.ts.map +1 -1
- package/dist/public-api.js +3 -16
- package/dist/public-api.js.map +1 -1
- package/package.json +13 -12
- package/dist/lib/custom/ai-test-harness/agent-execution-monitor.component.d.ts +0 -244
- package/dist/lib/custom/ai-test-harness/agent-execution-monitor.component.d.ts.map +0 -1
- package/dist/lib/custom/ai-test-harness/agent-execution-monitor.component.js +0 -1327
- package/dist/lib/custom/ai-test-harness/agent-execution-monitor.component.js.map +0 -1
- package/dist/lib/custom/ai-test-harness/agent-execution-node.component.d.ts +0 -19
- package/dist/lib/custom/ai-test-harness/agent-execution-node.component.d.ts.map +0 -1
- package/dist/lib/custom/ai-test-harness/agent-execution-node.component.js +0 -458
- package/dist/lib/custom/ai-test-harness/agent-execution-node.component.js.map +0 -1
- package/dist/lib/custom/ai-test-harness/ai-test-harness-dialog.component.d.ts +0 -78
- package/dist/lib/custom/ai-test-harness/ai-test-harness-dialog.component.d.ts.map +0 -1
- package/dist/lib/custom/ai-test-harness/ai-test-harness-dialog.component.js +0 -157
- package/dist/lib/custom/ai-test-harness/ai-test-harness-dialog.component.js.map +0 -1
- package/dist/lib/custom/ai-test-harness/ai-test-harness.component.d.ts +0 -598
- package/dist/lib/custom/ai-test-harness/ai-test-harness.component.d.ts.map +0 -1
- package/dist/lib/custom/ai-test-harness/ai-test-harness.component.js +0 -3204
- package/dist/lib/custom/ai-test-harness/ai-test-harness.component.js.map +0 -1
- package/dist/lib/custom/ai-test-harness/json-viewer-window.component.d.ts +0 -8
- package/dist/lib/custom/ai-test-harness/json-viewer-window.component.d.ts.map +0 -1
- package/dist/lib/custom/ai-test-harness/json-viewer-window.component.js +0 -57
- package/dist/lib/custom/ai-test-harness/json-viewer-window.component.js.map +0 -1
- package/dist/lib/custom/test-harness-dialog.service.d.ts +0 -111
- package/dist/lib/custom/test-harness-dialog.service.d.ts.map +0 -1
- package/dist/lib/custom/test-harness-dialog.service.js +0 -211
- package/dist/lib/custom/test-harness-dialog.service.js.map +0 -1
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import { NewAgentDialogComponent } from './new-agent-dialog.component';
|
|
3
|
+
import { Subject } from 'rxjs';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "@progress/kendo-angular-dialog";
|
|
6
|
+
export class NewAgentDialogService {
|
|
7
|
+
constructor(dialogService) {
|
|
8
|
+
this.dialogService = dialogService;
|
|
9
|
+
this.dialogRef = null;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Opens the New Agent dialog
|
|
13
|
+
* @param config Configuration for the dialog
|
|
14
|
+
* @param viewContainerRef Optional ViewContainerRef for proper positioning
|
|
15
|
+
* @returns Observable that emits the result when dialog closes
|
|
16
|
+
*/
|
|
17
|
+
open(config = {}, viewContainerRef) {
|
|
18
|
+
const resultSubject = new Subject();
|
|
19
|
+
const dialogSettings = {
|
|
20
|
+
title: config.parentAgentId ? 'Create Sub-Agent' : 'Create New AI Agent',
|
|
21
|
+
content: NewAgentDialogComponent,
|
|
22
|
+
width: 600,
|
|
23
|
+
height: 600,
|
|
24
|
+
minWidth: 500,
|
|
25
|
+
minHeight: 500,
|
|
26
|
+
preventAction: () => false
|
|
27
|
+
};
|
|
28
|
+
this.dialogRef = this.dialogService.open(dialogSettings);
|
|
29
|
+
// Configure the component
|
|
30
|
+
const component = this.dialogRef.content.instance;
|
|
31
|
+
component.config = config;
|
|
32
|
+
// Handle dialog result
|
|
33
|
+
this.dialogRef.result.subscribe((result) => {
|
|
34
|
+
if (result && result.agent) {
|
|
35
|
+
resultSubject.next({ agent: result.agent, action: 'created' });
|
|
36
|
+
}
|
|
37
|
+
else {
|
|
38
|
+
resultSubject.next({ action: 'cancelled' });
|
|
39
|
+
}
|
|
40
|
+
resultSubject.complete();
|
|
41
|
+
this.dialogRef = null;
|
|
42
|
+
});
|
|
43
|
+
return resultSubject.asObservable();
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Opens the dialog to create a top-level agent
|
|
47
|
+
*/
|
|
48
|
+
openForNewAgent(viewContainerRef) {
|
|
49
|
+
return this.open({
|
|
50
|
+
redirectToForm: true
|
|
51
|
+
}, viewContainerRef);
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Opens the dialog to create a sub-agent
|
|
55
|
+
*/
|
|
56
|
+
openForSubAgent(parentAgentId, parentAgentName, viewContainerRef) {
|
|
57
|
+
return this.open({
|
|
58
|
+
parentAgentId,
|
|
59
|
+
parentAgentName,
|
|
60
|
+
redirectToForm: false
|
|
61
|
+
}, viewContainerRef);
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Closes the currently open dialog
|
|
65
|
+
*/
|
|
66
|
+
close() {
|
|
67
|
+
if (this.dialogRef) {
|
|
68
|
+
this.dialogRef.close();
|
|
69
|
+
this.dialogRef = null;
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Checks if a dialog is currently open
|
|
74
|
+
*/
|
|
75
|
+
isOpen() {
|
|
76
|
+
return this.dialogRef !== null;
|
|
77
|
+
}
|
|
78
|
+
static { this.ɵfac = function NewAgentDialogService_Factory(t) { return new (t || NewAgentDialogService)(i0.ɵɵinject(i1.DialogService)); }; }
|
|
79
|
+
static { this.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: NewAgentDialogService, factory: NewAgentDialogService.ɵfac, providedIn: 'root' }); }
|
|
80
|
+
}
|
|
81
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(NewAgentDialogService, [{
|
|
82
|
+
type: Injectable,
|
|
83
|
+
args: [{
|
|
84
|
+
providedIn: 'root'
|
|
85
|
+
}]
|
|
86
|
+
}], () => [{ type: i1.DialogService }], null); })();
|
|
87
|
+
//# sourceMappingURL=new-agent-dialog.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"new-agent-dialog.service.js","sourceRoot":"","sources":["../../../../src/lib/custom/AIAgents/new-agent-dialog.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAoB,MAAM,eAAe,CAAC;AAE7D,OAAO,EAAE,uBAAuB,EAAkB,MAAM,8BAA8B,CAAC;AAEvF,OAAO,EAAc,OAAO,EAAE,MAAM,MAAM,CAAC;;;AAU3C,MAAM,OAAO,qBAAqB;IAGhC,YAAoB,aAA4B;QAA5B,kBAAa,GAAb,aAAa,CAAe;QAFxC,cAAS,GAAqB,IAAI,CAAC;IAEQ,CAAC;IAEpD;;;;;OAKG;IACH,IAAI,CAAC,SAAyB,EAAE,EAAE,gBAAmC;QACnE,MAAM,aAAa,GAAG,IAAI,OAAO,EAAwB,CAAC;QAE1D,MAAM,cAAc,GAAmB;YACrC,KAAK,EAAE,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,qBAAqB;YACxE,OAAO,EAAE,uBAAuB;YAChC,KAAK,EAAE,GAAG;YACV,MAAM,EAAE,GAAG;YACX,QAAQ,EAAE,GAAG;YACb,SAAS,EAAE,GAAG;YACd,aAAa,EAAE,GAAG,EAAE,CAAC,KAAK;SAC3B,CAAC;QAEF,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAEzD,0BAA0B;QAC1B,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,QAAmC,CAAC;QAC7E,SAAS,CAAC,MAAM,GAAG,MAAM,CAAC;QAE1B,uBAAuB;QACvB,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,MAAW,EAAE,EAAE;YAC9C,IAAI,MAAM,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;gBAC3B,aAAa,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;YACjE,CAAC;iBAAM,CAAC;gBACN,aAAa,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,CAAC;YAC9C,CAAC;YACD,aAAa,CAAC,QAAQ,EAAE,CAAC;YACzB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACxB,CAAC,CAAC,CAAC;QAEH,OAAO,aAAa,CAAC,YAAY,EAAE,CAAC;IACtC,CAAC;IAED;;OAEG;IACH,eAAe,CAAC,gBAAmC;QACjD,OAAO,IAAI,CAAC,IAAI,CAAC;YACf,cAAc,EAAE,IAAI;SACrB,EAAE,gBAAgB,CAAC,CAAC;IACvB,CAAC;IAED;;OAEG;IACH,eAAe,CAAC,aAAqB,EAAE,eAAuB,EAAE,gBAAmC;QACjG,OAAO,IAAI,CAAC,IAAI,CAAC;YACf,aAAa;YACb,eAAe;YACf,cAAc,EAAE,KAAK;SACtB,EAAE,gBAAgB,CAAC,CAAC;IACvB,CAAC;IAED;;OAEG;IACH,KAAK;QACH,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACnB,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;YACvB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACxB,CAAC;IACH,CAAC;IAED;;OAEG;IACH,MAAM;QACJ,OAAO,IAAI,CAAC,SAAS,KAAK,IAAI,CAAC;IACjC,CAAC;sFA/EU,qBAAqB;uEAArB,qBAAqB,WAArB,qBAAqB,mBAFpB,MAAM;;iFAEP,qBAAqB;cAHjC,UAAU;eAAC;gBACV,UAAU,EAAE,MAAM;aACnB"}
|
|
@@ -17,9 +17,8 @@ import * as i3 from "@angular/forms";
|
|
|
17
17
|
import * as i4 from "@progress/kendo-angular-layout";
|
|
18
18
|
import * as i5 from "@progress/kendo-angular-buttons";
|
|
19
19
|
import * as i6 from "@memberjunction/ng-form-toolbar";
|
|
20
|
-
import * as i7 from "@memberjunction/ng-
|
|
21
|
-
import * as i8 from "@
|
|
22
|
-
import * as i9 from "@angular/common";
|
|
20
|
+
import * as i7 from "@memberjunction/ng-code-editor";
|
|
21
|
+
import * as i8 from "@angular/common";
|
|
23
22
|
const _forTrack0 = ($index, $item) => $item.ID;
|
|
24
23
|
function AIPromptRunFormComponentExtended_Conditional_1_Conditional_11_Template(rf, ctx) { if (rf & 1) {
|
|
25
24
|
i0.ɵɵelementStart(0, "span", 10);
|
|
@@ -943,15 +942,14 @@ let AIPromptRunFormComponentExtended = class AIPromptRunFormComponentExtended ex
|
|
|
943
942
|
}
|
|
944
943
|
}
|
|
945
944
|
static { this.ɵfac = function AIPromptRunFormComponentExtended_Factory(t) { return new (t || AIPromptRunFormComponentExtended)(i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i1.SharedService), i0.ɵɵdirectiveInject(i2.Router), i0.ɵɵdirectiveInject(i2.ActivatedRoute), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef)); }; }
|
|
946
|
-
static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: AIPromptRunFormComponentExtended, selectors: [["mj-ai-prompt-run-form"]], features: [i0.ɵɵInheritDefinitionFeature], decls: 2, vars:
|
|
945
|
+
static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: AIPromptRunFormComponentExtended, selectors: [["mj-ai-prompt-run-form"]], features: [i0.ɵɵInheritDefinitionFeature], decls: 2, vars: 1, consts: [["form", "ngForm"], [1, "record-form-container"], [1, "record-form"], [3, "form"], [1, "prompt-run-header"], [1, "header-content"], [1, "run-overview"], [1, "run-icon-wrapper"], [1, "run-info"], [1, "run-title"], [1, "run-id"], [1, "run-meta"], [1, "status-badge"], [1, "run-type-badge", 3, "color"], ["title", "View Prompt", 1, "prompt-name"], ["title", "View Model", 1, "model-name"], [1, "run-actions"], ["fillMode", "outline", "size", "small", "title", "Refresh data", 3, "click"], [1, "fa-solid", "fa-refresh"], [1, "metrics-bar"], [1, "metric-item"], [1, "fa-solid", "fa-clock"], [1, "metric-content"], [1, "metric-label"], [1, "metric-value"], [1, "fa-solid", "fa-coins"], [1, "fa-solid", "fa-dollar-sign"], [1, "form-content"], [3, "expanded"], ["kendoPanelBarItemTitle", ""], ["kendoPanelBarContent", ""], [1, "run-type-badge"], ["title", "View Prompt", 1, "prompt-name", 3, "click"], [1, "fa-solid", "fa-comment-dots"], ["title", "View Model", 1, "model-name", 3, "click"], [1, "fa-solid", "fa-microchip"], [1, "fa-solid", "fa-calendar"], [1, "panel-title"], [1, "panel-badge"], [1, "panel-content"], [1, "json-editor-container"], [1, "empty-state"], [1, "json-toolbar"], ["fillMode", "flat", "size", "small", "title", "Copy JSON", 3, "click"], [1, "fa-solid", "fa-copy"], ["name", "formattedMessages", 2, "height", "400px", "width", "100%", 3, "ngModelChange", "ngModel", "readonly", "language", "lineWrapping"], [1, "fa-solid", "fa-comment-slash"], [1, "fa-solid", "fa-square-check"], [1, "panel-badge", "error"], [1, "error-message"], [1, "fa-solid", "fa-exclamation-triangle"], [1, "error-content"], ["name", "formattedResult", 2, "height", "400px", "width", "100%", 3, "ngModelChange", "ngModel", "readonly", "language", "lineWrapping"], [1, "fa-solid", "fa-inbox"], [1, "fa-solid", "fa-chart-line"], [1, "metrics-grid"], [1, "metric-card"], [1, "metric-header"], [1, "fa-solid", "fa-message"], [1, "metric-value", "large"], [1, "metric-rollup"], [1, "fa-solid", "fa-reply"], [1, "metric-currency"], [1, "additional-metrics"], [1, "metric-row"], [1, "metric-value", "link", 3, "click"], [1, "fa-solid", "fa-external-link"], [1, "fa-solid", "fa-sitemap"], [1, "panel-count"], [1, "parent-run-section"], [1, "child-runs-section"], [1, "fa-solid", "fa-level-up-alt"], [1, "run-item", "parent", 3, "click"], [1, "run-item-icon"], [1, "run-item-content"], [1, "run-item-title"], [1, "run-item-type"], [1, "run-item-meta"], [1, "fa-solid", "fa-level-down-alt"], [1, "runs-list"], [1, "run-item", "child"], [1, "run-item", "child", 3, "click"], [1, "execution-order"], [1, "status-indicator"], [1, "fa-solid", "fa-info-circle"], [1, "detail-fields-grid"], [1, "detail-field"], ["title", "View Vendor", 1, "detail-value", "clickable", 3, "click"], [1, "fa-solid", "fa-building"], ["title", "View Agent", 1, "detail-value", "clickable", 3, "click"], [1, "fa-solid", "fa-robot"], [1, "detail-value"], [1, "fa-solid", "fa-cog"], [1, "fa-solid", "fa-check-circle"]], template: function AIPromptRunFormComponentExtended_Template(rf, ctx) { if (rf & 1) {
|
|
947
946
|
i0.ɵɵelementStart(0, "div", 1);
|
|
948
947
|
i0.ɵɵtemplate(1, AIPromptRunFormComponentExtended_Conditional_1_Template, 60, 25, "form", 2);
|
|
949
948
|
i0.ɵɵelementEnd();
|
|
950
949
|
} if (rf & 2) {
|
|
951
|
-
i0.ɵɵproperty("bottomMargin", 20)("rightMargin", 5);
|
|
952
950
|
i0.ɵɵadvance();
|
|
953
951
|
i0.ɵɵconditional(ctx.record ? 1 : -1);
|
|
954
|
-
} }, dependencies: [i3.ɵNgNoValidate, i3.NgControlStatus, i3.NgControlStatusGroup, i3.NgModel, i3.NgForm, i4.PanelBarComponent, i4.PanelBarItemComponent, i4.PanelBarContentDirective, i4.PanelBarItemTitleDirective, i5.ButtonComponent, i6.FormToolbarComponent, i7.FillContainer, i8.CodeEditorComponent, i9.DatePipe], styles: ["\n\n.prompt-run-header[_ngcontent-%COMP%] {\n background: #f8f9fa;\n border-bottom: 2px solid #e9ecef;\n padding: 20px;\n margin-bottom: 0;\n}\n\n.header-content[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n gap: 20px;\n margin-bottom: 16px;\n}\n\n.run-overview[_ngcontent-%COMP%] {\n display: flex;\n align-items: flex-start;\n gap: 16px;\n flex: 1;\n}\n\n.run-icon-wrapper[_ngcontent-%COMP%] {\n width: 56px;\n height: 56px;\n border-radius: 12px;\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n}\n\n.run-icon-wrapper[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 24px;\n}\n\n.run-info[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 0;\n}\n\n.run-title[_ngcontent-%COMP%] {\n margin: 0 0 8px 0;\n font-size: 1.5em;\n font-weight: 600;\n color: #2c3e50;\n display: flex;\n align-items: center;\n gap: 12px;\n}\n\n.run-id[_ngcontent-%COMP%] {\n font-size: 0.8em;\n color: #6c757d;\n font-weight: 400;\n font-family: 'Courier New', monospace;\n}\n\n.run-meta[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n flex-wrap: wrap;\n}\n\n.status-badge[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 4px 12px;\n border-radius: 16px;\n color: white;\n font-size: 0.85em;\n font-weight: 500;\n}\n\n.status-badge[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 0.9em;\n}\n\n.run-type-badge[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 4px 12px;\n border-radius: 16px;\n background: #f1f3f5;\n font-size: 0.85em;\n font-weight: 500;\n}\n\n.prompt-name[_ngcontent-%COMP%], .model-name[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 4px 12px;\n border-radius: 16px;\n background: #e9ecef;\n color: #495057;\n font-size: 0.85em;\n cursor: pointer;\n transition: all 0.2s;\n}\n\n.prompt-name[_ngcontent-%COMP%]:hover, .model-name[_ngcontent-%COMP%]:hover {\n background: #dee2e6;\n color: #007bff;\n transform: translateY(-1px);\n box-shadow: 0 2px 4px rgba(0,0,0,0.1);\n}\n\n.run-actions[_ngcontent-%COMP%] {\n display: flex;\n gap: 8px;\n}\n\n\n\n.metrics-bar[_ngcontent-%COMP%] {\n display: flex;\n gap: 24px;\n padding-top: 16px;\n border-top: 1px solid #e9ecef;\n flex-wrap: wrap;\n}\n\n.metric-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n}\n\n.metric-item[_ngcontent-%COMP%] > i[_ngcontent-%COMP%] {\n font-size: 1.2em;\n color: #6c757d;\n width: 24px;\n text-align: center;\n}\n\n.metric-content[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n}\n\n.metric-label[_ngcontent-%COMP%] {\n font-size: 0.75em;\n color: #6c757d;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.metric-value[_ngcontent-%COMP%] {\n font-size: 1.1em;\n font-weight: 600;\n color: #2c3e50;\n}\n\n\n\n.form-content[_ngcontent-%COMP%] {\n padding: 16px;\n}\n\n.panel-title[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n font-weight: 600;\n}\n\n.panel-badge[_ngcontent-%COMP%] {\n margin-left: auto;\n padding: 2px 8px;\n border-radius: 12px;\n background: #e9ecef;\n color: #495057;\n font-size: 0.75em;\n font-weight: 500;\n}\n\n.panel-badge.error[_ngcontent-%COMP%] {\n background: #dc3545;\n color: white;\n}\n\n.panel-count[_ngcontent-%COMP%] {\n color: #6c757d;\n font-weight: 400;\n font-size: 0.9em;\n}\n\n.panel-content[_ngcontent-%COMP%] {\n padding: 20px;\n}\n\n\n\n.json-editor-container[_ngcontent-%COMP%] {\n border: 1px solid #e9ecef;\n border-radius: 6px;\n overflow: hidden;\n}\n\n.json-toolbar[_ngcontent-%COMP%] {\n background: #f8f9fa;\n padding: 8px 12px;\n border-bottom: 1px solid #e9ecef;\n display: flex;\n justify-content: flex-end;\n}\n\n\n\n.error-message[_ngcontent-%COMP%] {\n background: #dc354510;\n border: 1px solid #dc3545;\n border-radius: 6px;\n padding: 16px;\n display: flex;\n gap: 16px;\n margin-bottom: 16px;\n}\n\n.error-message[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 1.5em;\n color: #dc3545;\n flex-shrink: 0;\n}\n\n.error-content[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] {\n margin: 0 0 8px 0;\n color: #dc3545;\n font-size: 1em;\n}\n\n.error-content[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n margin: 0;\n color: #495057;\n}\n\n\n\n.empty-state[_ngcontent-%COMP%] {\n text-align: center;\n padding: 60px 40px;\n color: #6c757d;\n}\n\n.empty-state[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 3em;\n margin-bottom: 16px;\n opacity: 0.3;\n}\n\n.empty-state[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 1.1em;\n}\n\n\n\n.metrics-grid[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));\n gap: 20px;\n margin-bottom: 24px;\n}\n\n.metric-card[_ngcontent-%COMP%] {\n background: #f8f9fa;\n border: 1px solid #e9ecef;\n border-radius: 8px;\n padding: 20px;\n}\n\n.metric-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n margin-bottom: 12px;\n}\n\n.metric-header[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 1.2em;\n color: #6c757d;\n}\n\n.metric-header[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 0.9em;\n color: #6c757d;\n font-weight: 500;\n}\n\n.metric-value.large[_ngcontent-%COMP%] {\n font-size: 1.8em;\n font-weight: 700;\n color: #2c3e50;\n}\n\n.metric-rollup[_ngcontent-%COMP%] {\n margin-top: 8px;\n font-size: 0.85em;\n color: #6c757d;\n}\n\n.metric-currency[_ngcontent-%COMP%] {\n margin-top: 4px;\n font-size: 0.85em;\n color: #6c757d;\n text-transform: uppercase;\n}\n\n\n\n.additional-metrics[_ngcontent-%COMP%] {\n border-top: 1px solid #e9ecef;\n padding-top: 16px;\n}\n\n.metric-row[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 8px 0;\n border-bottom: 1px solid #f1f3f5;\n}\n\n.metric-row[_ngcontent-%COMP%]:last-child {\n border-bottom: none;\n}\n\n.metric-row[_ngcontent-%COMP%] .metric-label[_ngcontent-%COMP%] {\n font-weight: 500;\n color: #6c757d;\n}\n\n.metric-row[_ngcontent-%COMP%] .metric-value[_ngcontent-%COMP%] {\n font-weight: 400;\n color: #2c3e50;\n}\n\n.metric-row[_ngcontent-%COMP%] .metric-value.link[_ngcontent-%COMP%] {\n color: #007bff;\n cursor: pointer;\n display: flex;\n align-items: center;\n gap: 6px;\n transition: color 0.2s;\n}\n\n.metric-row[_ngcontent-%COMP%] .metric-value.link[_ngcontent-%COMP%]:hover {\n color: #0056b3;\n}\n\n\n\n.parent-run-section[_ngcontent-%COMP%], \n.child-runs-section[_ngcontent-%COMP%] {\n margin-bottom: 24px;\n}\n\n.parent-run-section[_ngcontent-%COMP%]:last-child, \n.child-runs-section[_ngcontent-%COMP%]:last-child {\n margin-bottom: 0;\n}\n\n.parent-run-section[_ngcontent-%COMP%] h4[_ngcontent-%COMP%], \n.child-runs-section[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] {\n margin: 0 0 12px 0;\n font-size: 0.95em;\n color: #495057;\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.runs-list[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.run-item[_ngcontent-%COMP%] {\n background: #f8f9fa;\n border: 1px solid #e9ecef;\n border-radius: 8px;\n padding: 12px 16px;\n display: flex;\n align-items: center;\n gap: 12px;\n cursor: pointer;\n transition: all 0.2s;\n}\n\n.run-item[_ngcontent-%COMP%]:hover {\n background: #e9ecef;\n border-color: #dee2e6;\n}\n\n.run-item.parent[_ngcontent-%COMP%] {\n background: #e3f2fd;\n border-color: #90caf9;\n}\n\n.run-item.parent[_ngcontent-%COMP%]:hover {\n background: #bbdefb;\n}\n\n.run-item-icon[_ngcontent-%COMP%] {\n width: 36px;\n height: 36px;\n border-radius: 8px;\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n}\n\n.run-item-content[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 0;\n}\n\n.run-item-title[_ngcontent-%COMP%] {\n font-weight: 500;\n color: #2c3e50;\n margin-bottom: 4px;\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.execution-order[_ngcontent-%COMP%] {\n background: #6c757d;\n color: white;\n padding: 2px 6px;\n border-radius: 10px;\n font-size: 0.75em;\n font-weight: 600;\n}\n\n.run-item-type[_ngcontent-%COMP%] {\n font-size: 0.85em;\n color: #6c757d;\n font-weight: 400;\n}\n\n.run-item-meta[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 16px;\n font-size: 0.85em;\n color: #6c757d;\n}\n\n.run-item-meta[_ngcontent-%COMP%] span[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 4px;\n}\n\n.status-indicator[_ngcontent-%COMP%] {\n font-weight: 500;\n}\n\n.run-item[_ngcontent-%COMP%] > i[_ngcontent-%COMP%]:last-child {\n color: #6c757d;\n font-size: 0.85em;\n}\n\n\n\n.detail-fields-grid[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));\n gap: 24px;\n}\n\n.detail-field[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.detail-field[_ngcontent-%COMP%] label[_ngcontent-%COMP%] {\n font-size: 0.85em;\n color: #6c757d;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.detail-value[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 10px;\n font-size: 1em;\n color: #2c3e50;\n padding: 10px 14px;\n background: #f8f9fa;\n border: 1px solid #e9ecef;\n border-radius: 8px;\n transition: all 0.2s;\n}\n\n.detail-value[_ngcontent-%COMP%] i[_ngcontent-%COMP%]:first-child {\n color: #6c757d;\n font-size: 1.1em;\n width: 20px;\n text-align: center;\n}\n\n.detail-value.clickable[_ngcontent-%COMP%] {\n cursor: pointer;\n}\n\n.detail-value.clickable[_ngcontent-%COMP%]:hover {\n background: #e9ecef;\n border-color: #dee2e6;\n color: #007bff;\n transform: translateY(-1px);\n box-shadow: 0 2px 4px rgba(0,0,0,0.1);\n}\n\n.detail-value.clickable[_ngcontent-%COMP%] i[_ngcontent-%COMP%]:last-child {\n margin-left: auto;\n font-size: 0.85em;\n opacity: 0.6;\n}\n\n.detail-value.clickable[_ngcontent-%COMP%]:hover i[_ngcontent-%COMP%]:last-child {\n opacity: 1;\n}\n\n\n\nkendo-panelbar[_ngcontent-%COMP%] {\n border: none !important;\n}\n\nkendo-panelbar-item[_ngcontent-%COMP%] {\n margin-bottom: 8px;\n border: 1px solid #e9ecef !important;\n border-radius: 8px !important;\n overflow: hidden;\n}\n\nkendo-panelbar-item[_ngcontent-%COMP%] .k-panelbar-header[_ngcontent-%COMP%] {\n background: #f8f9fa !important;\n border: none !important;\n padding: 12px 16px !important;\n}\n\nkendo-panelbar-item[_ngcontent-%COMP%] .k-panelbar-header[_ngcontent-%COMP%]:hover {\n background: #e9ecef !important;\n}\n\nkendo-panelbar-item[_ngcontent-%COMP%] .k-panelbar-content[_ngcontent-%COMP%] {\n border: none !important;\n padding: 0 !important;\n}"] }); }
|
|
952
|
+
} }, dependencies: [i3.ɵNgNoValidate, i3.NgControlStatus, i3.NgControlStatusGroup, i3.NgModel, i3.NgForm, i4.PanelBarComponent, i4.PanelBarItemComponent, i4.PanelBarContentDirective, i4.PanelBarItemTitleDirective, i5.ButtonComponent, i6.FormToolbarComponent, i7.CodeEditorComponent, i8.DatePipe], styles: ["\n\n.prompt-run-header[_ngcontent-%COMP%] {\n background: #f8f9fa;\n border-bottom: 2px solid #e9ecef;\n padding: 20px;\n margin-bottom: 0;\n}\n\n.header-content[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n gap: 20px;\n margin-bottom: 16px;\n}\n\n.run-overview[_ngcontent-%COMP%] {\n display: flex;\n align-items: flex-start;\n gap: 16px;\n flex: 1;\n}\n\n.run-icon-wrapper[_ngcontent-%COMP%] {\n width: 56px;\n height: 56px;\n border-radius: 12px;\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n}\n\n.run-icon-wrapper[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 24px;\n}\n\n.run-info[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 0;\n}\n\n.run-title[_ngcontent-%COMP%] {\n margin: 0 0 8px 0;\n font-size: 1.5em;\n font-weight: 600;\n color: #2c3e50;\n display: flex;\n align-items: center;\n gap: 12px;\n}\n\n.run-id[_ngcontent-%COMP%] {\n font-size: 0.8em;\n color: #6c757d;\n font-weight: 400;\n font-family: 'Courier New', monospace;\n}\n\n.run-meta[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n flex-wrap: wrap;\n}\n\n.status-badge[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 4px 12px;\n border-radius: 16px;\n color: white;\n font-size: 0.85em;\n font-weight: 500;\n}\n\n.status-badge[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 0.9em;\n}\n\n.run-type-badge[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 4px 12px;\n border-radius: 16px;\n background: #f1f3f5;\n font-size: 0.85em;\n font-weight: 500;\n}\n\n.prompt-name[_ngcontent-%COMP%], .model-name[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 4px 12px;\n border-radius: 16px;\n background: #e9ecef;\n color: #495057;\n font-size: 0.85em;\n cursor: pointer;\n transition: all 0.2s;\n}\n\n.prompt-name[_ngcontent-%COMP%]:hover, .model-name[_ngcontent-%COMP%]:hover {\n background: #dee2e6;\n color: #007bff;\n transform: translateY(-1px);\n box-shadow: 0 2px 4px rgba(0,0,0,0.1);\n}\n\n.run-actions[_ngcontent-%COMP%] {\n display: flex;\n gap: 8px;\n}\n\n\n\n.metrics-bar[_ngcontent-%COMP%] {\n display: flex;\n gap: 24px;\n padding-top: 16px;\n border-top: 1px solid #e9ecef;\n flex-wrap: wrap;\n}\n\n.metric-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n}\n\n.metric-item[_ngcontent-%COMP%] > i[_ngcontent-%COMP%] {\n font-size: 1.2em;\n color: #6c757d;\n width: 24px;\n text-align: center;\n}\n\n.metric-content[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n}\n\n.metric-label[_ngcontent-%COMP%] {\n font-size: 0.75em;\n color: #6c757d;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.metric-value[_ngcontent-%COMP%] {\n font-size: 1.1em;\n font-weight: 600;\n color: #2c3e50;\n}\n\n\n\n.form-content[_ngcontent-%COMP%] {\n padding: 16px;\n}\n\n.panel-title[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n font-weight: 600;\n}\n\n.panel-badge[_ngcontent-%COMP%] {\n margin-left: auto;\n padding: 2px 8px;\n border-radius: 12px;\n background: #e9ecef;\n color: #495057;\n font-size: 0.75em;\n font-weight: 500;\n}\n\n.panel-badge.error[_ngcontent-%COMP%] {\n background: #dc3545;\n color: white;\n}\n\n.panel-count[_ngcontent-%COMP%] {\n color: #6c757d;\n font-weight: 400;\n font-size: 0.9em;\n}\n\n.panel-content[_ngcontent-%COMP%] {\n padding: 20px;\n}\n\n\n\n.json-editor-container[_ngcontent-%COMP%] {\n border: 1px solid #e9ecef;\n border-radius: 6px;\n overflow: hidden;\n}\n\n.json-toolbar[_ngcontent-%COMP%] {\n background: #f8f9fa;\n padding: 8px 12px;\n border-bottom: 1px solid #e9ecef;\n display: flex;\n justify-content: flex-end;\n}\n\n\n\n.error-message[_ngcontent-%COMP%] {\n background: #dc354510;\n border: 1px solid #dc3545;\n border-radius: 6px;\n padding: 16px;\n display: flex;\n gap: 16px;\n margin-bottom: 16px;\n}\n\n.error-message[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 1.5em;\n color: #dc3545;\n flex-shrink: 0;\n}\n\n.error-content[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] {\n margin: 0 0 8px 0;\n color: #dc3545;\n font-size: 1em;\n}\n\n.error-content[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n margin: 0;\n color: #495057;\n}\n\n\n\n.empty-state[_ngcontent-%COMP%] {\n text-align: center;\n padding: 60px 40px;\n color: #6c757d;\n}\n\n.empty-state[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 3em;\n margin-bottom: 16px;\n opacity: 0.3;\n}\n\n.empty-state[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 1.1em;\n}\n\n\n\n.metrics-grid[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));\n gap: 20px;\n margin-bottom: 24px;\n}\n\n.metric-card[_ngcontent-%COMP%] {\n background: #f8f9fa;\n border: 1px solid #e9ecef;\n border-radius: 8px;\n padding: 20px;\n}\n\n.metric-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n margin-bottom: 12px;\n}\n\n.metric-header[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 1.2em;\n color: #6c757d;\n}\n\n.metric-header[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 0.9em;\n color: #6c757d;\n font-weight: 500;\n}\n\n.metric-value.large[_ngcontent-%COMP%] {\n font-size: 1.8em;\n font-weight: 700;\n color: #2c3e50;\n}\n\n.metric-rollup[_ngcontent-%COMP%] {\n margin-top: 8px;\n font-size: 0.85em;\n color: #6c757d;\n}\n\n.metric-currency[_ngcontent-%COMP%] {\n margin-top: 4px;\n font-size: 0.85em;\n color: #6c757d;\n text-transform: uppercase;\n}\n\n\n\n.additional-metrics[_ngcontent-%COMP%] {\n border-top: 1px solid #e9ecef;\n padding-top: 16px;\n}\n\n.metric-row[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 8px 0;\n border-bottom: 1px solid #f1f3f5;\n}\n\n.metric-row[_ngcontent-%COMP%]:last-child {\n border-bottom: none;\n}\n\n.metric-row[_ngcontent-%COMP%] .metric-label[_ngcontent-%COMP%] {\n font-weight: 500;\n color: #6c757d;\n}\n\n.metric-row[_ngcontent-%COMP%] .metric-value[_ngcontent-%COMP%] {\n font-weight: 400;\n color: #2c3e50;\n}\n\n.metric-row[_ngcontent-%COMP%] .metric-value.link[_ngcontent-%COMP%] {\n color: #007bff;\n cursor: pointer;\n display: flex;\n align-items: center;\n gap: 6px;\n transition: color 0.2s;\n}\n\n.metric-row[_ngcontent-%COMP%] .metric-value.link[_ngcontent-%COMP%]:hover {\n color: #0056b3;\n}\n\n\n\n.parent-run-section[_ngcontent-%COMP%], \n.child-runs-section[_ngcontent-%COMP%] {\n margin-bottom: 24px;\n}\n\n.parent-run-section[_ngcontent-%COMP%]:last-child, \n.child-runs-section[_ngcontent-%COMP%]:last-child {\n margin-bottom: 0;\n}\n\n.parent-run-section[_ngcontent-%COMP%] h4[_ngcontent-%COMP%], \n.child-runs-section[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] {\n margin: 0 0 12px 0;\n font-size: 0.95em;\n color: #495057;\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.runs-list[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.run-item[_ngcontent-%COMP%] {\n background: #f8f9fa;\n border: 1px solid #e9ecef;\n border-radius: 8px;\n padding: 12px 16px;\n display: flex;\n align-items: center;\n gap: 12px;\n cursor: pointer;\n transition: all 0.2s;\n}\n\n.run-item[_ngcontent-%COMP%]:hover {\n background: #e9ecef;\n border-color: #dee2e6;\n}\n\n.run-item.parent[_ngcontent-%COMP%] {\n background: #e3f2fd;\n border-color: #90caf9;\n}\n\n.run-item.parent[_ngcontent-%COMP%]:hover {\n background: #bbdefb;\n}\n\n.run-item-icon[_ngcontent-%COMP%] {\n width: 36px;\n height: 36px;\n border-radius: 8px;\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n}\n\n.run-item-content[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 0;\n}\n\n.run-item-title[_ngcontent-%COMP%] {\n font-weight: 500;\n color: #2c3e50;\n margin-bottom: 4px;\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.execution-order[_ngcontent-%COMP%] {\n background: #6c757d;\n color: white;\n padding: 2px 6px;\n border-radius: 10px;\n font-size: 0.75em;\n font-weight: 600;\n}\n\n.run-item-type[_ngcontent-%COMP%] {\n font-size: 0.85em;\n color: #6c757d;\n font-weight: 400;\n}\n\n.run-item-meta[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 16px;\n font-size: 0.85em;\n color: #6c757d;\n}\n\n.run-item-meta[_ngcontent-%COMP%] span[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 4px;\n}\n\n.status-indicator[_ngcontent-%COMP%] {\n font-weight: 500;\n}\n\n.run-item[_ngcontent-%COMP%] > i[_ngcontent-%COMP%]:last-child {\n color: #6c757d;\n font-size: 0.85em;\n}\n\n\n\n.detail-fields-grid[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));\n gap: 24px;\n}\n\n.detail-field[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.detail-field[_ngcontent-%COMP%] label[_ngcontent-%COMP%] {\n font-size: 0.85em;\n color: #6c757d;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.detail-value[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 10px;\n font-size: 1em;\n color: #2c3e50;\n padding: 10px 14px;\n background: #f8f9fa;\n border: 1px solid #e9ecef;\n border-radius: 8px;\n transition: all 0.2s;\n}\n\n.detail-value[_ngcontent-%COMP%] i[_ngcontent-%COMP%]:first-child {\n color: #6c757d;\n font-size: 1.1em;\n width: 20px;\n text-align: center;\n}\n\n.detail-value.clickable[_ngcontent-%COMP%] {\n cursor: pointer;\n}\n\n.detail-value.clickable[_ngcontent-%COMP%]:hover {\n background: #e9ecef;\n border-color: #dee2e6;\n color: #007bff;\n transform: translateY(-1px);\n box-shadow: 0 2px 4px rgba(0,0,0,0.1);\n}\n\n.detail-value.clickable[_ngcontent-%COMP%] i[_ngcontent-%COMP%]:last-child {\n margin-left: auto;\n font-size: 0.85em;\n opacity: 0.6;\n}\n\n.detail-value.clickable[_ngcontent-%COMP%]:hover i[_ngcontent-%COMP%]:last-child {\n opacity: 1;\n}\n\n\n\nkendo-panelbar[_ngcontent-%COMP%] {\n border: none !important;\n}\n\nkendo-panelbar-item[_ngcontent-%COMP%] {\n margin-bottom: 8px;\n border: 1px solid #e9ecef !important;\n border-radius: 8px !important;\n overflow: hidden;\n}\n\nkendo-panelbar-item[_ngcontent-%COMP%] .k-panelbar-header[_ngcontent-%COMP%] {\n background: #f8f9fa !important;\n border: none !important;\n padding: 12px 16px !important;\n}\n\nkendo-panelbar-item[_ngcontent-%COMP%] .k-panelbar-header[_ngcontent-%COMP%]:hover {\n background: #e9ecef !important;\n}\n\nkendo-panelbar-item[_ngcontent-%COMP%] .k-panelbar-content[_ngcontent-%COMP%] {\n border: none !important;\n padding: 0 !important;\n}"] }); }
|
|
955
953
|
};
|
|
956
954
|
AIPromptRunFormComponentExtended = __decorate([
|
|
957
955
|
RegisterClass(BaseFormComponent, 'MJ: AI Prompt Runs')
|
|
@@ -959,7 +957,7 @@ AIPromptRunFormComponentExtended = __decorate([
|
|
|
959
957
|
export { AIPromptRunFormComponentExtended };
|
|
960
958
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(AIPromptRunFormComponentExtended, [{
|
|
961
959
|
type: Component,
|
|
962
|
-
args: [{ selector: 'mj-ai-prompt-run-form', template: "<div class=\"record-form-container\" mjFillContainer [bottomMargin]=\"20\" [rightMargin]=\"5\">\n @if (record) {\n <form class=\"record-form\" #form=\"ngForm\" mjFillContainer>\n <mj-form-toolbar [form]=\"this\"></mj-form-toolbar>\n\n <!-- Header Section -->\n <div class=\"prompt-run-header\">\n <div class=\"header-content\">\n <div class=\"run-overview\">\n <div class=\"run-icon-wrapper\" [style.background-color]=\"getStatusColor() + '20'\">\n <i [class]=\"'fa-solid ' + getStatusIcon()\" [style.color]=\"getStatusColor()\"></i>\n </div>\n <div class=\"run-info\">\n <h1 class=\"run-title\">\n Prompt Run\n @if (record.ID) {\n <span class=\"run-id\">#{{ record.ID.substring(0, 8) }}</span>\n }\n </h1>\n <div class=\"run-meta\">\n <span class=\"status-badge\" [style.background-color]=\"getStatusColor()\">\n <i [class]=\"'fa-solid ' + getStatusIcon()\"></i>\n {{ getStatusText() }}\n </span>\n @if (record.RunType) {\n <span class=\"run-type-badge\" [style.color]=\"getRunTypeColor(record.RunType)\">\n <i [class]=\"'fa-solid ' + getRunTypeIcon(record.RunType)\"></i>\n {{ record.RunType }}\n </span>\n }\n @if (prompt) {\n <span class=\"prompt-name\" (click)=\"navigateToEntity('AI Prompts', prompt.ID)\" title=\"View Prompt\">\n <i class=\"fa-solid fa-comment-dots\"></i>\n {{ prompt.Name }}\n </span>\n }\n @if (model) {\n <span class=\"model-name\" (click)=\"navigateToEntity('AI Models', model.ID)\" title=\"View Model\">\n <i class=\"fa-solid fa-microchip\"></i>\n {{ model.Name }}\n </span>\n }\n </div>\n </div>\n </div>\n \n <!-- Action Buttons -->\n <div class=\"run-actions\">\n <kendo-button fillMode=\"outline\" size=\"small\" (click)=\"refreshData()\" title=\"Refresh data\">\n <i class=\"fa-solid fa-refresh\"></i>\n </kendo-button>\n </div>\n </div>\n \n <!-- Key Metrics Bar -->\n <div class=\"metrics-bar\">\n <div class=\"metric-item\">\n <i class=\"fa-solid fa-clock\"></i>\n <div class=\"metric-content\">\n <div class=\"metric-label\">Duration</div>\n <div class=\"metric-value\">{{ formatDuration(record.ExecutionTimeMS) }}</div>\n </div>\n </div>\n <div class=\"metric-item\">\n <i class=\"fa-solid fa-coins\"></i>\n <div class=\"metric-content\">\n <div class=\"metric-label\">Total Tokens</div>\n <div class=\"metric-value\">{{ formatTokens(record.TokensUsed) }}</div>\n </div>\n </div>\n <div class=\"metric-item\">\n <i class=\"fa-solid fa-dollar-sign\"></i>\n <div class=\"metric-content\">\n <div class=\"metric-label\">Cost</div>\n <div class=\"metric-value\">{{ formatCost(record.TotalCost || record.Cost) }}</div>\n </div>\n </div>\n @if (record.RunAt) {\n <div class=\"metric-item\">\n <i class=\"fa-solid fa-calendar\"></i>\n <div class=\"metric-content\">\n <div class=\"metric-label\">Started</div>\n <div class=\"metric-value\">{{ record.RunAt | date:'short' }}</div>\n </div>\n </div>\n }\n </div>\n </div>\n\n <!-- Main Content with Expansion Panels -->\n <div class=\"form-content\">\n <kendo-panelbar>\n \n <!-- Input Messages Panel -->\n <kendo-panelbar-item [expanded]=\"messagesExpanded\">\n <ng-template kendoPanelBarItemTitle>\n <span class=\"panel-title\">\n <i class=\"fa-solid fa-comment-dots\"></i>\n Input Messages\n @if (record.Messages && record.Messages.trim() !== '') {\n <span class=\"panel-badge\">JSON</span>\n }\n </span>\n </ng-template>\n <ng-template kendoPanelBarContent>\n <div class=\"panel-content\">\n @if (record.Messages && record.Messages.trim() !== '') {\n <div class=\"json-editor-container\">\n <div class=\"json-toolbar\">\n <kendo-button \n fillMode=\"flat\" \n size=\"small\"\n (click)=\"copyToClipboard(formattedMessages, 'Messages')\"\n title=\"Copy JSON\">\n <i class=\"fa-solid fa-copy\"></i> Copy\n </kendo-button>\n </div>\n <mj-code-editor \n [(ngModel)]=\"formattedMessages\"\n name=\"formattedMessages\"\n [readonly]=\"true\"\n [language]=\"'json'\"\n [lineWrapping]=\"true\"\n style=\"height: 400px; width: 100%;\">\n </mj-code-editor>\n </div>\n } @else {\n <div class=\"empty-state\">\n <i class=\"fa-solid fa-comment-slash\"></i>\n <p>No input messages recorded</p>\n </div>\n }\n </div>\n </ng-template>\n </kendo-panelbar-item>\n \n <!-- Result Panel -->\n <kendo-panelbar-item [expanded]=\"resultExpanded\">\n <ng-template kendoPanelBarItemTitle>\n <span class=\"panel-title\">\n <i class=\"fa-solid fa-square-check\"></i>\n Result\n @if (record.Result && record.Result.trim() !== '') {\n <span class=\"panel-badge\">JSON</span>\n }\n @if (record.ErrorMessage) {\n <span class=\"panel-badge error\">Error</span>\n }\n </span>\n </ng-template>\n <ng-template kendoPanelBarContent>\n <div class=\"panel-content\">\n @if (record.ErrorMessage) {\n <div class=\"error-message\">\n <i class=\"fa-solid fa-exclamation-triangle\"></i>\n <div class=\"error-content\">\n <h4>Error Message</h4>\n <p>{{ record.ErrorMessage }}</p>\n </div>\n </div>\n }\n \n @if (record.Result && record.Result.trim() !== '') {\n <div class=\"json-editor-container\">\n <div class=\"json-toolbar\">\n <kendo-button \n fillMode=\"flat\" \n size=\"small\"\n (click)=\"copyToClipboard(formattedResult, 'Result')\"\n title=\"Copy JSON\">\n <i class=\"fa-solid fa-copy\"></i> Copy\n </kendo-button>\n </div>\n <mj-code-editor \n [(ngModel)]=\"formattedResult\"\n name=\"formattedResult\"\n [readonly]=\"true\"\n [language]=\"'json'\"\n [lineWrapping]=\"true\"\n style=\"height: 400px; width: 100%;\">\n </mj-code-editor>\n </div>\n } @else if (!record.ErrorMessage) {\n <div class=\"empty-state\">\n <i class=\"fa-solid fa-inbox\"></i>\n <p>No result data recorded</p>\n </div>\n }\n </div>\n </ng-template>\n </kendo-panelbar-item>\n \n <!-- Token Usage & Metrics Panel -->\n <kendo-panelbar-item [expanded]=\"metricsExpanded\">\n <ng-template kendoPanelBarItemTitle>\n <span class=\"panel-title\">\n <i class=\"fa-solid fa-chart-line\"></i>\n Token Usage & Metrics\n </span>\n </ng-template>\n <ng-template kendoPanelBarContent>\n <div class=\"panel-content\">\n <div class=\"metrics-grid\">\n <div class=\"metric-card\">\n <div class=\"metric-header\">\n <i class=\"fa-solid fa-message\"></i>\n <h4>Prompt Tokens</h4>\n </div>\n <div class=\"metric-value large\">{{ formatTokens(record.TokensPrompt) }}</div>\n @if (record.TokensPromptRollup && record.TokensPromptRollup !== record.TokensPrompt) {\n <div class=\"metric-rollup\">\n <span>Rollup: {{ formatTokens(record.TokensPromptRollup) }}</span>\n </div>\n }\n </div>\n \n <div class=\"metric-card\">\n <div class=\"metric-header\">\n <i class=\"fa-solid fa-reply\"></i>\n <h4>Completion Tokens</h4>\n </div>\n <div class=\"metric-value large\">{{ formatTokens(record.TokensCompletion) }}</div>\n @if (record.TokensCompletionRollup && record.TokensCompletionRollup !== record.TokensCompletion) {\n <div class=\"metric-rollup\">\n <span>Rollup: {{ formatTokens(record.TokensCompletionRollup) }}</span>\n </div>\n }\n </div>\n \n <div class=\"metric-card\">\n <div class=\"metric-header\">\n <i class=\"fa-solid fa-coins\"></i>\n <h4>Total Tokens</h4>\n </div>\n <div class=\"metric-value large\">{{ formatTokens(record.TokensUsed) }}</div>\n @if (record.TokensUsedRollup && record.TokensUsedRollup !== record.TokensUsed) {\n <div class=\"metric-rollup\">\n <span>Rollup: {{ formatTokens(record.TokensUsedRollup) }}</span>\n </div>\n }\n </div>\n \n <div class=\"metric-card\">\n <div class=\"metric-header\">\n <i class=\"fa-solid fa-dollar-sign\"></i>\n <h4>Cost</h4>\n </div>\n <div class=\"metric-value large\">{{ formatCost(record.Cost) }}</div>\n @if (record.TotalCost && record.TotalCost !== record.Cost) {\n <div class=\"metric-rollup\">\n <span>Total: {{ formatCost(record.TotalCost) }}</span>\n </div>\n }\n @if (record.CostCurrency) {\n <div class=\"metric-currency\">{{ record.CostCurrency }}</div>\n }\n </div>\n </div>\n \n <!-- Additional Metrics -->\n <div class=\"additional-metrics\">\n @if (record.ExecutionOrder !== null) {\n <div class=\"metric-row\">\n <span class=\"metric-label\">Execution Order:</span>\n <span class=\"metric-value\">{{ record.ExecutionOrder }}</span>\n </div>\n }\n @if (record.ConfigurationID) {\n <div class=\"metric-row\">\n <span class=\"metric-label\">Configuration:</span>\n <span class=\"metric-value\">{{ record.Configuration }}</span>\n </div>\n }\n @if (record.AgentID) {\n <div class=\"metric-row\">\n <span class=\"metric-label\">Agent:</span>\n <span class=\"metric-value link\" (click)=\"navigateToEntity('AI Agents', record.AgentID)\">\n {{ record.Agent }}\n <i class=\"fa-solid fa-external-link\"></i>\n </span>\n </div>\n }\n </div>\n </div>\n </ng-template>\n </kendo-panelbar-item>\n \n <!-- Hierarchy Panel (for parent/child relationships) -->\n @if (record.ParentID || childRuns.length > 0) {\n <kendo-panelbar-item [expanded]=\"hierarchyExpanded\">\n <ng-template kendoPanelBarItemTitle>\n <span class=\"panel-title\">\n <i class=\"fa-solid fa-sitemap\"></i>\n Run Hierarchy\n @if (childRuns.length > 0) {\n <span class=\"panel-count\">({{ childRuns.length }} children)</span>\n }\n </span>\n </ng-template>\n <ng-template kendoPanelBarContent>\n <div class=\"panel-content\">\n @if (parentRun) {\n <div class=\"parent-run-section\">\n <h4><i class=\"fa-solid fa-level-up-alt\"></i> Parent Run</h4>\n <div class=\"run-item parent\" (click)=\"navigateToEntity('MJ: AI Prompt Runs', parentRun.ID)\">\n <div class=\"run-item-icon\" [style.background-color]=\"getStatusColor() + '20'\">\n <i [class]=\"'fa-solid ' + getRunTypeIcon(parentRun.RunType)\"></i>\n </div>\n <div class=\"run-item-content\">\n <div class=\"run-item-title\">\n Parent Run #{{ parentRun.ID.substring(0, 8) }}\n <span class=\"run-item-type\">{{ parentRun.RunType }}</span>\n </div>\n <div class=\"run-item-meta\">\n <span><i class=\"fa-solid fa-clock\"></i> {{ formatDuration(parentRun.ExecutionTimeMS) }}</span>\n <span><i class=\"fa-solid fa-coins\"></i> {{ formatTokens(parentRun.TokensUsed) }}</span>\n <span><i class=\"fa-solid fa-calendar\"></i> {{ parentRun.RunAt | date:'short' }}</span>\n </div>\n </div>\n <i class=\"fa-solid fa-external-link\"></i>\n </div>\n </div>\n }\n \n @if (childRuns.length > 0) {\n <div class=\"child-runs-section\">\n <h4><i class=\"fa-solid fa-level-down-alt\"></i> Child Runs</h4>\n <div class=\"runs-list\">\n @for (childRun of childRuns; track childRun.ID) {\n <div class=\"run-item child\" (click)=\"navigateToEntity('MJ: AI Prompt Runs', childRun.ID)\">\n <div class=\"run-item-icon\" [style.background-color]=\"getStatusColor() + '20'\">\n <i [class]=\"'fa-solid ' + getRunTypeIcon(childRun.RunType)\"></i>\n </div>\n <div class=\"run-item-content\">\n <div class=\"run-item-title\">\n Child Run #{{ childRun.ID.substring(0, 8) }}\n @if (childRun.ExecutionOrder !== null) {\n <span class=\"execution-order\">#{{ childRun.ExecutionOrder }}</span>\n }\n <span class=\"run-item-type\">{{ childRun.RunType }}</span>\n </div>\n <div class=\"run-item-meta\">\n <span class=\"status-indicator\" [style.color]=\"getStatusColor()\">\n <i [class]=\"'fa-solid ' + getStatusIcon()\"></i>\n {{ childRun.Success ? 'Success' : childRun.ErrorMessage ? 'Failed' : 'Running' }}\n </span>\n <span><i class=\"fa-solid fa-clock\"></i> {{ formatDuration(childRun.ExecutionTimeMS) }}</span>\n <span><i class=\"fa-solid fa-coins\"></i> {{ formatTokens(childRun.TokensUsed) }}</span>\n </div>\n </div>\n <i class=\"fa-solid fa-external-link\"></i>\n </div>\n }\n </div>\n </div>\n }\n </div>\n </ng-template>\n </kendo-panelbar-item>\n }\n \n <!-- Additional Details Panel -->\n <kendo-panelbar-item [expanded]=\"false\">\n <ng-template kendoPanelBarItemTitle>\n <span class=\"panel-title\">\n <i class=\"fa-solid fa-info-circle\"></i>\n Additional Details\n </span>\n </ng-template>\n <ng-template kendoPanelBarContent>\n <div class=\"panel-content\">\n <div class=\"detail-fields-grid\">\n @if (record.VendorID) {\n <div class=\"detail-field\">\n <label>Vendor</label>\n <div class=\"detail-value clickable\" (click)=\"navigateToEntity('MJ: AI Vendors', record.VendorID)\" title=\"View Vendor\">\n <i class=\"fa-solid fa-building\"></i>\n {{ record.Vendor || 'Unknown' }}\n <i class=\"fa-solid fa-external-link\"></i>\n </div>\n </div>\n }\n \n @if (record.AgentID) {\n <div class=\"detail-field\">\n <label>Agent</label>\n <div class=\"detail-value clickable\" (click)=\"navigateToEntity('AI Agents', record.AgentID)\" title=\"View Agent\">\n <i class=\"fa-solid fa-robot\"></i>\n {{ record.Agent || 'Unknown' }}\n <i class=\"fa-solid fa-external-link\"></i>\n </div>\n </div>\n }\n \n @if (record.ConfigurationID) {\n <div class=\"detail-field\">\n <label>Configuration</label>\n <div class=\"detail-value\">\n <i class=\"fa-solid fa-cog\"></i>\n {{ record.Configuration || 'Unknown' }}\n </div>\n </div>\n }\n \n @if (record.RunAt) {\n <div class=\"detail-field\">\n <label>Started At</label>\n <div class=\"detail-value\">\n <i class=\"fa-solid fa-clock\"></i>\n {{ record.RunAt | date:'medium' }}\n </div>\n </div>\n }\n \n @if (record.CompletedAt) {\n <div class=\"detail-field\">\n <label>Completed At</label>\n <div class=\"detail-value\">\n <i class=\"fa-solid fa-check-circle\"></i>\n {{ record.CompletedAt | date:'medium' }}\n </div>\n </div>\n }\n </div>\n </div>\n </ng-template>\n </kendo-panelbar-item>\n \n </kendo-panelbar>\n </div>\n </form>\n }\n</div>", styles: ["/* Header Section */\n.prompt-run-header {\n background: #f8f9fa;\n border-bottom: 2px solid #e9ecef;\n padding: 20px;\n margin-bottom: 0;\n}\n\n.header-content {\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n gap: 20px;\n margin-bottom: 16px;\n}\n\n.run-overview {\n display: flex;\n align-items: flex-start;\n gap: 16px;\n flex: 1;\n}\n\n.run-icon-wrapper {\n width: 56px;\n height: 56px;\n border-radius: 12px;\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n}\n\n.run-icon-wrapper i {\n font-size: 24px;\n}\n\n.run-info {\n flex: 1;\n min-width: 0;\n}\n\n.run-title {\n margin: 0 0 8px 0;\n font-size: 1.5em;\n font-weight: 600;\n color: #2c3e50;\n display: flex;\n align-items: center;\n gap: 12px;\n}\n\n.run-id {\n font-size: 0.8em;\n color: #6c757d;\n font-weight: 400;\n font-family: 'Courier New', monospace;\n}\n\n.run-meta {\n display: flex;\n align-items: center;\n gap: 12px;\n flex-wrap: wrap;\n}\n\n.status-badge {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 4px 12px;\n border-radius: 16px;\n color: white;\n font-size: 0.85em;\n font-weight: 500;\n}\n\n.status-badge i {\n font-size: 0.9em;\n}\n\n.run-type-badge {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 4px 12px;\n border-radius: 16px;\n background: #f1f3f5;\n font-size: 0.85em;\n font-weight: 500;\n}\n\n.prompt-name, .model-name {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 4px 12px;\n border-radius: 16px;\n background: #e9ecef;\n color: #495057;\n font-size: 0.85em;\n cursor: pointer;\n transition: all 0.2s;\n}\n\n.prompt-name:hover, .model-name:hover {\n background: #dee2e6;\n color: #007bff;\n transform: translateY(-1px);\n box-shadow: 0 2px 4px rgba(0,0,0,0.1);\n}\n\n.run-actions {\n display: flex;\n gap: 8px;\n}\n\n/* Metrics Bar */\n.metrics-bar {\n display: flex;\n gap: 24px;\n padding-top: 16px;\n border-top: 1px solid #e9ecef;\n flex-wrap: wrap;\n}\n\n.metric-item {\n display: flex;\n align-items: center;\n gap: 12px;\n}\n\n.metric-item > i {\n font-size: 1.2em;\n color: #6c757d;\n width: 24px;\n text-align: center;\n}\n\n.metric-content {\n display: flex;\n flex-direction: column;\n}\n\n.metric-label {\n font-size: 0.75em;\n color: #6c757d;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.metric-value {\n font-size: 1.1em;\n font-weight: 600;\n color: #2c3e50;\n}\n\n/* Panels */\n.form-content {\n padding: 16px;\n}\n\n.panel-title {\n display: flex;\n align-items: center;\n gap: 8px;\n font-weight: 600;\n}\n\n.panel-badge {\n margin-left: auto;\n padding: 2px 8px;\n border-radius: 12px;\n background: #e9ecef;\n color: #495057;\n font-size: 0.75em;\n font-weight: 500;\n}\n\n.panel-badge.error {\n background: #dc3545;\n color: white;\n}\n\n.panel-count {\n color: #6c757d;\n font-weight: 400;\n font-size: 0.9em;\n}\n\n.panel-content {\n padding: 20px;\n}\n\n/* JSON Editor Container */\n.json-editor-container {\n border: 1px solid #e9ecef;\n border-radius: 6px;\n overflow: hidden;\n}\n\n.json-toolbar {\n background: #f8f9fa;\n padding: 8px 12px;\n border-bottom: 1px solid #e9ecef;\n display: flex;\n justify-content: flex-end;\n}\n\n/* Error Message */\n.error-message {\n background: #dc354510;\n border: 1px solid #dc3545;\n border-radius: 6px;\n padding: 16px;\n display: flex;\n gap: 16px;\n margin-bottom: 16px;\n}\n\n.error-message i {\n font-size: 1.5em;\n color: #dc3545;\n flex-shrink: 0;\n}\n\n.error-content h4 {\n margin: 0 0 8px 0;\n color: #dc3545;\n font-size: 1em;\n}\n\n.error-content p {\n margin: 0;\n color: #495057;\n}\n\n/* Empty State */\n.empty-state {\n text-align: center;\n padding: 60px 40px;\n color: #6c757d;\n}\n\n.empty-state i {\n font-size: 3em;\n margin-bottom: 16px;\n opacity: 0.3;\n}\n\n.empty-state p {\n margin: 0;\n font-size: 1.1em;\n}\n\n/* Metrics Grid */\n.metrics-grid {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));\n gap: 20px;\n margin-bottom: 24px;\n}\n\n.metric-card {\n background: #f8f9fa;\n border: 1px solid #e9ecef;\n border-radius: 8px;\n padding: 20px;\n}\n\n.metric-header {\n display: flex;\n align-items: center;\n gap: 12px;\n margin-bottom: 12px;\n}\n\n.metric-header i {\n font-size: 1.2em;\n color: #6c757d;\n}\n\n.metric-header h4 {\n margin: 0;\n font-size: 0.9em;\n color: #6c757d;\n font-weight: 500;\n}\n\n.metric-value.large {\n font-size: 1.8em;\n font-weight: 700;\n color: #2c3e50;\n}\n\n.metric-rollup {\n margin-top: 8px;\n font-size: 0.85em;\n color: #6c757d;\n}\n\n.metric-currency {\n margin-top: 4px;\n font-size: 0.85em;\n color: #6c757d;\n text-transform: uppercase;\n}\n\n/* Additional Metrics */\n.additional-metrics {\n border-top: 1px solid #e9ecef;\n padding-top: 16px;\n}\n\n.metric-row {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 8px 0;\n border-bottom: 1px solid #f1f3f5;\n}\n\n.metric-row:last-child {\n border-bottom: none;\n}\n\n.metric-row .metric-label {\n font-weight: 500;\n color: #6c757d;\n}\n\n.metric-row .metric-value {\n font-weight: 400;\n color: #2c3e50;\n}\n\n.metric-row .metric-value.link {\n color: #007bff;\n cursor: pointer;\n display: flex;\n align-items: center;\n gap: 6px;\n transition: color 0.2s;\n}\n\n.metric-row .metric-value.link:hover {\n color: #0056b3;\n}\n\n/* Hierarchy Section */\n.parent-run-section,\n.child-runs-section {\n margin-bottom: 24px;\n}\n\n.parent-run-section:last-child,\n.child-runs-section:last-child {\n margin-bottom: 0;\n}\n\n.parent-run-section h4,\n.child-runs-section h4 {\n margin: 0 0 12px 0;\n font-size: 0.95em;\n color: #495057;\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.runs-list {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.run-item {\n background: #f8f9fa;\n border: 1px solid #e9ecef;\n border-radius: 8px;\n padding: 12px 16px;\n display: flex;\n align-items: center;\n gap: 12px;\n cursor: pointer;\n transition: all 0.2s;\n}\n\n.run-item:hover {\n background: #e9ecef;\n border-color: #dee2e6;\n}\n\n.run-item.parent {\n background: #e3f2fd;\n border-color: #90caf9;\n}\n\n.run-item.parent:hover {\n background: #bbdefb;\n}\n\n.run-item-icon {\n width: 36px;\n height: 36px;\n border-radius: 8px;\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n}\n\n.run-item-content {\n flex: 1;\n min-width: 0;\n}\n\n.run-item-title {\n font-weight: 500;\n color: #2c3e50;\n margin-bottom: 4px;\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.execution-order {\n background: #6c757d;\n color: white;\n padding: 2px 6px;\n border-radius: 10px;\n font-size: 0.75em;\n font-weight: 600;\n}\n\n.run-item-type {\n font-size: 0.85em;\n color: #6c757d;\n font-weight: 400;\n}\n\n.run-item-meta {\n display: flex;\n align-items: center;\n gap: 16px;\n font-size: 0.85em;\n color: #6c757d;\n}\n\n.run-item-meta span {\n display: flex;\n align-items: center;\n gap: 4px;\n}\n\n.status-indicator {\n font-weight: 500;\n}\n\n.run-item > i:last-child {\n color: #6c757d;\n font-size: 0.85em;\n}\n\n/* Detail Fields Grid */\n.detail-fields-grid {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));\n gap: 24px;\n}\n\n.detail-field {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.detail-field label {\n font-size: 0.85em;\n color: #6c757d;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.detail-value {\n display: flex;\n align-items: center;\n gap: 10px;\n font-size: 1em;\n color: #2c3e50;\n padding: 10px 14px;\n background: #f8f9fa;\n border: 1px solid #e9ecef;\n border-radius: 8px;\n transition: all 0.2s;\n}\n\n.detail-value i:first-child {\n color: #6c757d;\n font-size: 1.1em;\n width: 20px;\n text-align: center;\n}\n\n.detail-value.clickable {\n cursor: pointer;\n}\n\n.detail-value.clickable:hover {\n background: #e9ecef;\n border-color: #dee2e6;\n color: #007bff;\n transform: translateY(-1px);\n box-shadow: 0 2px 4px rgba(0,0,0,0.1);\n}\n\n.detail-value.clickable i:last-child {\n margin-left: auto;\n font-size: 0.85em;\n opacity: 0.6;\n}\n\n.detail-value.clickable:hover i:last-child {\n opacity: 1;\n}\n\n/* Kendo Overrides */\nkendo-panelbar {\n border: none !important;\n}\n\nkendo-panelbar-item {\n margin-bottom: 8px;\n border: 1px solid #e9ecef !important;\n border-radius: 8px !important;\n overflow: hidden;\n}\n\nkendo-panelbar-item .k-panelbar-header {\n background: #f8f9fa !important;\n border: none !important;\n padding: 12px 16px !important;\n}\n\nkendo-panelbar-item .k-panelbar-header:hover {\n background: #e9ecef !important;\n}\n\nkendo-panelbar-item .k-panelbar-content {\n border: none !important;\n padding: 0 !important;\n}"] }]
|
|
960
|
+
args: [{ selector: 'mj-ai-prompt-run-form', template: "<div class=\"record-form-container\">\n @if (record) {\n <form class=\"record-form\" #form=\"ngForm\">\n <mj-form-toolbar [form]=\"this\"></mj-form-toolbar>\n\n <!-- Header Section -->\n <div class=\"prompt-run-header\">\n <div class=\"header-content\">\n <div class=\"run-overview\">\n <div class=\"run-icon-wrapper\" [style.background-color]=\"getStatusColor() + '20'\">\n <i [class]=\"'fa-solid ' + getStatusIcon()\" [style.color]=\"getStatusColor()\"></i>\n </div>\n <div class=\"run-info\">\n <h1 class=\"run-title\">\n Prompt Run\n @if (record.ID) {\n <span class=\"run-id\">#{{ record.ID.substring(0, 8) }}</span>\n }\n </h1>\n <div class=\"run-meta\">\n <span class=\"status-badge\" [style.background-color]=\"getStatusColor()\">\n <i [class]=\"'fa-solid ' + getStatusIcon()\"></i>\n {{ getStatusText() }}\n </span>\n @if (record.RunType) {\n <span class=\"run-type-badge\" [style.color]=\"getRunTypeColor(record.RunType)\">\n <i [class]=\"'fa-solid ' + getRunTypeIcon(record.RunType)\"></i>\n {{ record.RunType }}\n </span>\n }\n @if (prompt) {\n <span class=\"prompt-name\" (click)=\"navigateToEntity('AI Prompts', prompt.ID)\" title=\"View Prompt\">\n <i class=\"fa-solid fa-comment-dots\"></i>\n {{ prompt.Name }}\n </span>\n }\n @if (model) {\n <span class=\"model-name\" (click)=\"navigateToEntity('AI Models', model.ID)\" title=\"View Model\">\n <i class=\"fa-solid fa-microchip\"></i>\n {{ model.Name }}\n </span>\n }\n </div>\n </div>\n </div>\n \n <!-- Action Buttons -->\n <div class=\"run-actions\">\n <kendo-button fillMode=\"outline\" size=\"small\" (click)=\"refreshData()\" title=\"Refresh data\">\n <i class=\"fa-solid fa-refresh\"></i>\n </kendo-button>\n </div>\n </div>\n \n <!-- Key Metrics Bar -->\n <div class=\"metrics-bar\">\n <div class=\"metric-item\">\n <i class=\"fa-solid fa-clock\"></i>\n <div class=\"metric-content\">\n <div class=\"metric-label\">Duration</div>\n <div class=\"metric-value\">{{ formatDuration(record.ExecutionTimeMS) }}</div>\n </div>\n </div>\n <div class=\"metric-item\">\n <i class=\"fa-solid fa-coins\"></i>\n <div class=\"metric-content\">\n <div class=\"metric-label\">Total Tokens</div>\n <div class=\"metric-value\">{{ formatTokens(record.TokensUsed) }}</div>\n </div>\n </div>\n <div class=\"metric-item\">\n <i class=\"fa-solid fa-dollar-sign\"></i>\n <div class=\"metric-content\">\n <div class=\"metric-label\">Cost</div>\n <div class=\"metric-value\">{{ formatCost(record.TotalCost || record.Cost) }}</div>\n </div>\n </div>\n @if (record.RunAt) {\n <div class=\"metric-item\">\n <i class=\"fa-solid fa-calendar\"></i>\n <div class=\"metric-content\">\n <div class=\"metric-label\">Started</div>\n <div class=\"metric-value\">{{ record.RunAt | date:'short' }}</div>\n </div>\n </div>\n }\n </div>\n </div>\n\n <!-- Main Content with Expansion Panels -->\n <div class=\"form-content\">\n <kendo-panelbar>\n \n <!-- Input Messages Panel -->\n <kendo-panelbar-item [expanded]=\"messagesExpanded\">\n <ng-template kendoPanelBarItemTitle>\n <span class=\"panel-title\">\n <i class=\"fa-solid fa-comment-dots\"></i>\n Input Messages\n @if (record.Messages && record.Messages.trim() !== '') {\n <span class=\"panel-badge\">JSON</span>\n }\n </span>\n </ng-template>\n <ng-template kendoPanelBarContent>\n <div class=\"panel-content\">\n @if (record.Messages && record.Messages.trim() !== '') {\n <div class=\"json-editor-container\">\n <div class=\"json-toolbar\">\n <kendo-button \n fillMode=\"flat\" \n size=\"small\"\n (click)=\"copyToClipboard(formattedMessages, 'Messages')\"\n title=\"Copy JSON\">\n <i class=\"fa-solid fa-copy\"></i> Copy\n </kendo-button>\n </div>\n <mj-code-editor \n [(ngModel)]=\"formattedMessages\"\n name=\"formattedMessages\"\n [readonly]=\"true\"\n [language]=\"'json'\"\n [lineWrapping]=\"true\"\n style=\"height: 400px; width: 100%;\">\n </mj-code-editor>\n </div>\n } @else {\n <div class=\"empty-state\">\n <i class=\"fa-solid fa-comment-slash\"></i>\n <p>No input messages recorded</p>\n </div>\n }\n </div>\n </ng-template>\n </kendo-panelbar-item>\n \n <!-- Result Panel -->\n <kendo-panelbar-item [expanded]=\"resultExpanded\">\n <ng-template kendoPanelBarItemTitle>\n <span class=\"panel-title\">\n <i class=\"fa-solid fa-square-check\"></i>\n Result\n @if (record.Result && record.Result.trim() !== '') {\n <span class=\"panel-badge\">JSON</span>\n }\n @if (record.ErrorMessage) {\n <span class=\"panel-badge error\">Error</span>\n }\n </span>\n </ng-template>\n <ng-template kendoPanelBarContent>\n <div class=\"panel-content\">\n @if (record.ErrorMessage) {\n <div class=\"error-message\">\n <i class=\"fa-solid fa-exclamation-triangle\"></i>\n <div class=\"error-content\">\n <h4>Error Message</h4>\n <p>{{ record.ErrorMessage }}</p>\n </div>\n </div>\n }\n \n @if (record.Result && record.Result.trim() !== '') {\n <div class=\"json-editor-container\">\n <div class=\"json-toolbar\">\n <kendo-button \n fillMode=\"flat\" \n size=\"small\"\n (click)=\"copyToClipboard(formattedResult, 'Result')\"\n title=\"Copy JSON\">\n <i class=\"fa-solid fa-copy\"></i> Copy\n </kendo-button>\n </div>\n <mj-code-editor \n [(ngModel)]=\"formattedResult\"\n name=\"formattedResult\"\n [readonly]=\"true\"\n [language]=\"'json'\"\n [lineWrapping]=\"true\"\n style=\"height: 400px; width: 100%;\">\n </mj-code-editor>\n </div>\n } @else if (!record.ErrorMessage) {\n <div class=\"empty-state\">\n <i class=\"fa-solid fa-inbox\"></i>\n <p>No result data recorded</p>\n </div>\n }\n </div>\n </ng-template>\n </kendo-panelbar-item>\n \n <!-- Token Usage & Metrics Panel -->\n <kendo-panelbar-item [expanded]=\"metricsExpanded\">\n <ng-template kendoPanelBarItemTitle>\n <span class=\"panel-title\">\n <i class=\"fa-solid fa-chart-line\"></i>\n Token Usage & Metrics\n </span>\n </ng-template>\n <ng-template kendoPanelBarContent>\n <div class=\"panel-content\">\n <div class=\"metrics-grid\">\n <div class=\"metric-card\">\n <div class=\"metric-header\">\n <i class=\"fa-solid fa-message\"></i>\n <h4>Prompt Tokens</h4>\n </div>\n <div class=\"metric-value large\">{{ formatTokens(record.TokensPrompt) }}</div>\n @if (record.TokensPromptRollup && record.TokensPromptRollup !== record.TokensPrompt) {\n <div class=\"metric-rollup\">\n <span>Rollup: {{ formatTokens(record.TokensPromptRollup) }}</span>\n </div>\n }\n </div>\n \n <div class=\"metric-card\">\n <div class=\"metric-header\">\n <i class=\"fa-solid fa-reply\"></i>\n <h4>Completion Tokens</h4>\n </div>\n <div class=\"metric-value large\">{{ formatTokens(record.TokensCompletion) }}</div>\n @if (record.TokensCompletionRollup && record.TokensCompletionRollup !== record.TokensCompletion) {\n <div class=\"metric-rollup\">\n <span>Rollup: {{ formatTokens(record.TokensCompletionRollup) }}</span>\n </div>\n }\n </div>\n \n <div class=\"metric-card\">\n <div class=\"metric-header\">\n <i class=\"fa-solid fa-coins\"></i>\n <h4>Total Tokens</h4>\n </div>\n <div class=\"metric-value large\">{{ formatTokens(record.TokensUsed) }}</div>\n @if (record.TokensUsedRollup && record.TokensUsedRollup !== record.TokensUsed) {\n <div class=\"metric-rollup\">\n <span>Rollup: {{ formatTokens(record.TokensUsedRollup) }}</span>\n </div>\n }\n </div>\n \n <div class=\"metric-card\">\n <div class=\"metric-header\">\n <i class=\"fa-solid fa-dollar-sign\"></i>\n <h4>Cost</h4>\n </div>\n <div class=\"metric-value large\">{{ formatCost(record.Cost) }}</div>\n @if (record.TotalCost && record.TotalCost !== record.Cost) {\n <div class=\"metric-rollup\">\n <span>Total: {{ formatCost(record.TotalCost) }}</span>\n </div>\n }\n @if (record.CostCurrency) {\n <div class=\"metric-currency\">{{ record.CostCurrency }}</div>\n }\n </div>\n </div>\n \n <!-- Additional Metrics -->\n <div class=\"additional-metrics\">\n @if (record.ExecutionOrder !== null) {\n <div class=\"metric-row\">\n <span class=\"metric-label\">Execution Order:</span>\n <span class=\"metric-value\">{{ record.ExecutionOrder }}</span>\n </div>\n }\n @if (record.ConfigurationID) {\n <div class=\"metric-row\">\n <span class=\"metric-label\">Configuration:</span>\n <span class=\"metric-value\">{{ record.Configuration }}</span>\n </div>\n }\n @if (record.AgentID) {\n <div class=\"metric-row\">\n <span class=\"metric-label\">Agent:</span>\n <span class=\"metric-value link\" (click)=\"navigateToEntity('AI Agents', record.AgentID)\">\n {{ record.Agent }}\n <i class=\"fa-solid fa-external-link\"></i>\n </span>\n </div>\n }\n </div>\n </div>\n </ng-template>\n </kendo-panelbar-item>\n \n <!-- Hierarchy Panel (for parent/child relationships) -->\n @if (record.ParentID || childRuns.length > 0) {\n <kendo-panelbar-item [expanded]=\"hierarchyExpanded\">\n <ng-template kendoPanelBarItemTitle>\n <span class=\"panel-title\">\n <i class=\"fa-solid fa-sitemap\"></i>\n Run Hierarchy\n @if (childRuns.length > 0) {\n <span class=\"panel-count\">({{ childRuns.length }} children)</span>\n }\n </span>\n </ng-template>\n <ng-template kendoPanelBarContent>\n <div class=\"panel-content\">\n @if (parentRun) {\n <div class=\"parent-run-section\">\n <h4><i class=\"fa-solid fa-level-up-alt\"></i> Parent Run</h4>\n <div class=\"run-item parent\" (click)=\"navigateToEntity('MJ: AI Prompt Runs', parentRun.ID)\">\n <div class=\"run-item-icon\" [style.background-color]=\"getStatusColor() + '20'\">\n <i [class]=\"'fa-solid ' + getRunTypeIcon(parentRun.RunType)\"></i>\n </div>\n <div class=\"run-item-content\">\n <div class=\"run-item-title\">\n Parent Run #{{ parentRun.ID.substring(0, 8) }}\n <span class=\"run-item-type\">{{ parentRun.RunType }}</span>\n </div>\n <div class=\"run-item-meta\">\n <span><i class=\"fa-solid fa-clock\"></i> {{ formatDuration(parentRun.ExecutionTimeMS) }}</span>\n <span><i class=\"fa-solid fa-coins\"></i> {{ formatTokens(parentRun.TokensUsed) }}</span>\n <span><i class=\"fa-solid fa-calendar\"></i> {{ parentRun.RunAt | date:'short' }}</span>\n </div>\n </div>\n <i class=\"fa-solid fa-external-link\"></i>\n </div>\n </div>\n }\n \n @if (childRuns.length > 0) {\n <div class=\"child-runs-section\">\n <h4><i class=\"fa-solid fa-level-down-alt\"></i> Child Runs</h4>\n <div class=\"runs-list\">\n @for (childRun of childRuns; track childRun.ID) {\n <div class=\"run-item child\" (click)=\"navigateToEntity('MJ: AI Prompt Runs', childRun.ID)\">\n <div class=\"run-item-icon\" [style.background-color]=\"getStatusColor() + '20'\">\n <i [class]=\"'fa-solid ' + getRunTypeIcon(childRun.RunType)\"></i>\n </div>\n <div class=\"run-item-content\">\n <div class=\"run-item-title\">\n Child Run #{{ childRun.ID.substring(0, 8) }}\n @if (childRun.ExecutionOrder !== null) {\n <span class=\"execution-order\">#{{ childRun.ExecutionOrder }}</span>\n }\n <span class=\"run-item-type\">{{ childRun.RunType }}</span>\n </div>\n <div class=\"run-item-meta\">\n <span class=\"status-indicator\" [style.color]=\"getStatusColor()\">\n <i [class]=\"'fa-solid ' + getStatusIcon()\"></i>\n {{ childRun.Success ? 'Success' : childRun.ErrorMessage ? 'Failed' : 'Running' }}\n </span>\n <span><i class=\"fa-solid fa-clock\"></i> {{ formatDuration(childRun.ExecutionTimeMS) }}</span>\n <span><i class=\"fa-solid fa-coins\"></i> {{ formatTokens(childRun.TokensUsed) }}</span>\n </div>\n </div>\n <i class=\"fa-solid fa-external-link\"></i>\n </div>\n }\n </div>\n </div>\n }\n </div>\n </ng-template>\n </kendo-panelbar-item>\n }\n \n <!-- Additional Details Panel -->\n <kendo-panelbar-item [expanded]=\"false\">\n <ng-template kendoPanelBarItemTitle>\n <span class=\"panel-title\">\n <i class=\"fa-solid fa-info-circle\"></i>\n Additional Details\n </span>\n </ng-template>\n <ng-template kendoPanelBarContent>\n <div class=\"panel-content\">\n <div class=\"detail-fields-grid\">\n @if (record.VendorID) {\n <div class=\"detail-field\">\n <label>Vendor</label>\n <div class=\"detail-value clickable\" (click)=\"navigateToEntity('MJ: AI Vendors', record.VendorID)\" title=\"View Vendor\">\n <i class=\"fa-solid fa-building\"></i>\n {{ record.Vendor || 'Unknown' }}\n <i class=\"fa-solid fa-external-link\"></i>\n </div>\n </div>\n }\n \n @if (record.AgentID) {\n <div class=\"detail-field\">\n <label>Agent</label>\n <div class=\"detail-value clickable\" (click)=\"navigateToEntity('AI Agents', record.AgentID)\" title=\"View Agent\">\n <i class=\"fa-solid fa-robot\"></i>\n {{ record.Agent || 'Unknown' }}\n <i class=\"fa-solid fa-external-link\"></i>\n </div>\n </div>\n }\n \n @if (record.ConfigurationID) {\n <div class=\"detail-field\">\n <label>Configuration</label>\n <div class=\"detail-value\">\n <i class=\"fa-solid fa-cog\"></i>\n {{ record.Configuration || 'Unknown' }}\n </div>\n </div>\n }\n \n @if (record.RunAt) {\n <div class=\"detail-field\">\n <label>Started At</label>\n <div class=\"detail-value\">\n <i class=\"fa-solid fa-clock\"></i>\n {{ record.RunAt | date:'medium' }}\n </div>\n </div>\n }\n \n @if (record.CompletedAt) {\n <div class=\"detail-field\">\n <label>Completed At</label>\n <div class=\"detail-value\">\n <i class=\"fa-solid fa-check-circle\"></i>\n {{ record.CompletedAt | date:'medium' }}\n </div>\n </div>\n }\n </div>\n </div>\n </ng-template>\n </kendo-panelbar-item>\n \n </kendo-panelbar>\n </div>\n </form>\n }\n</div>", styles: ["/* Header Section */\n.prompt-run-header {\n background: #f8f9fa;\n border-bottom: 2px solid #e9ecef;\n padding: 20px;\n margin-bottom: 0;\n}\n\n.header-content {\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n gap: 20px;\n margin-bottom: 16px;\n}\n\n.run-overview {\n display: flex;\n align-items: flex-start;\n gap: 16px;\n flex: 1;\n}\n\n.run-icon-wrapper {\n width: 56px;\n height: 56px;\n border-radius: 12px;\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n}\n\n.run-icon-wrapper i {\n font-size: 24px;\n}\n\n.run-info {\n flex: 1;\n min-width: 0;\n}\n\n.run-title {\n margin: 0 0 8px 0;\n font-size: 1.5em;\n font-weight: 600;\n color: #2c3e50;\n display: flex;\n align-items: center;\n gap: 12px;\n}\n\n.run-id {\n font-size: 0.8em;\n color: #6c757d;\n font-weight: 400;\n font-family: 'Courier New', monospace;\n}\n\n.run-meta {\n display: flex;\n align-items: center;\n gap: 12px;\n flex-wrap: wrap;\n}\n\n.status-badge {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 4px 12px;\n border-radius: 16px;\n color: white;\n font-size: 0.85em;\n font-weight: 500;\n}\n\n.status-badge i {\n font-size: 0.9em;\n}\n\n.run-type-badge {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 4px 12px;\n border-radius: 16px;\n background: #f1f3f5;\n font-size: 0.85em;\n font-weight: 500;\n}\n\n.prompt-name, .model-name {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 4px 12px;\n border-radius: 16px;\n background: #e9ecef;\n color: #495057;\n font-size: 0.85em;\n cursor: pointer;\n transition: all 0.2s;\n}\n\n.prompt-name:hover, .model-name:hover {\n background: #dee2e6;\n color: #007bff;\n transform: translateY(-1px);\n box-shadow: 0 2px 4px rgba(0,0,0,0.1);\n}\n\n.run-actions {\n display: flex;\n gap: 8px;\n}\n\n/* Metrics Bar */\n.metrics-bar {\n display: flex;\n gap: 24px;\n padding-top: 16px;\n border-top: 1px solid #e9ecef;\n flex-wrap: wrap;\n}\n\n.metric-item {\n display: flex;\n align-items: center;\n gap: 12px;\n}\n\n.metric-item > i {\n font-size: 1.2em;\n color: #6c757d;\n width: 24px;\n text-align: center;\n}\n\n.metric-content {\n display: flex;\n flex-direction: column;\n}\n\n.metric-label {\n font-size: 0.75em;\n color: #6c757d;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.metric-value {\n font-size: 1.1em;\n font-weight: 600;\n color: #2c3e50;\n}\n\n/* Panels */\n.form-content {\n padding: 16px;\n}\n\n.panel-title {\n display: flex;\n align-items: center;\n gap: 8px;\n font-weight: 600;\n}\n\n.panel-badge {\n margin-left: auto;\n padding: 2px 8px;\n border-radius: 12px;\n background: #e9ecef;\n color: #495057;\n font-size: 0.75em;\n font-weight: 500;\n}\n\n.panel-badge.error {\n background: #dc3545;\n color: white;\n}\n\n.panel-count {\n color: #6c757d;\n font-weight: 400;\n font-size: 0.9em;\n}\n\n.panel-content {\n padding: 20px;\n}\n\n/* JSON Editor Container */\n.json-editor-container {\n border: 1px solid #e9ecef;\n border-radius: 6px;\n overflow: hidden;\n}\n\n.json-toolbar {\n background: #f8f9fa;\n padding: 8px 12px;\n border-bottom: 1px solid #e9ecef;\n display: flex;\n justify-content: flex-end;\n}\n\n/* Error Message */\n.error-message {\n background: #dc354510;\n border: 1px solid #dc3545;\n border-radius: 6px;\n padding: 16px;\n display: flex;\n gap: 16px;\n margin-bottom: 16px;\n}\n\n.error-message i {\n font-size: 1.5em;\n color: #dc3545;\n flex-shrink: 0;\n}\n\n.error-content h4 {\n margin: 0 0 8px 0;\n color: #dc3545;\n font-size: 1em;\n}\n\n.error-content p {\n margin: 0;\n color: #495057;\n}\n\n/* Empty State */\n.empty-state {\n text-align: center;\n padding: 60px 40px;\n color: #6c757d;\n}\n\n.empty-state i {\n font-size: 3em;\n margin-bottom: 16px;\n opacity: 0.3;\n}\n\n.empty-state p {\n margin: 0;\n font-size: 1.1em;\n}\n\n/* Metrics Grid */\n.metrics-grid {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));\n gap: 20px;\n margin-bottom: 24px;\n}\n\n.metric-card {\n background: #f8f9fa;\n border: 1px solid #e9ecef;\n border-radius: 8px;\n padding: 20px;\n}\n\n.metric-header {\n display: flex;\n align-items: center;\n gap: 12px;\n margin-bottom: 12px;\n}\n\n.metric-header i {\n font-size: 1.2em;\n color: #6c757d;\n}\n\n.metric-header h4 {\n margin: 0;\n font-size: 0.9em;\n color: #6c757d;\n font-weight: 500;\n}\n\n.metric-value.large {\n font-size: 1.8em;\n font-weight: 700;\n color: #2c3e50;\n}\n\n.metric-rollup {\n margin-top: 8px;\n font-size: 0.85em;\n color: #6c757d;\n}\n\n.metric-currency {\n margin-top: 4px;\n font-size: 0.85em;\n color: #6c757d;\n text-transform: uppercase;\n}\n\n/* Additional Metrics */\n.additional-metrics {\n border-top: 1px solid #e9ecef;\n padding-top: 16px;\n}\n\n.metric-row {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 8px 0;\n border-bottom: 1px solid #f1f3f5;\n}\n\n.metric-row:last-child {\n border-bottom: none;\n}\n\n.metric-row .metric-label {\n font-weight: 500;\n color: #6c757d;\n}\n\n.metric-row .metric-value {\n font-weight: 400;\n color: #2c3e50;\n}\n\n.metric-row .metric-value.link {\n color: #007bff;\n cursor: pointer;\n display: flex;\n align-items: center;\n gap: 6px;\n transition: color 0.2s;\n}\n\n.metric-row .metric-value.link:hover {\n color: #0056b3;\n}\n\n/* Hierarchy Section */\n.parent-run-section,\n.child-runs-section {\n margin-bottom: 24px;\n}\n\n.parent-run-section:last-child,\n.child-runs-section:last-child {\n margin-bottom: 0;\n}\n\n.parent-run-section h4,\n.child-runs-section h4 {\n margin: 0 0 12px 0;\n font-size: 0.95em;\n color: #495057;\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.runs-list {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.run-item {\n background: #f8f9fa;\n border: 1px solid #e9ecef;\n border-radius: 8px;\n padding: 12px 16px;\n display: flex;\n align-items: center;\n gap: 12px;\n cursor: pointer;\n transition: all 0.2s;\n}\n\n.run-item:hover {\n background: #e9ecef;\n border-color: #dee2e6;\n}\n\n.run-item.parent {\n background: #e3f2fd;\n border-color: #90caf9;\n}\n\n.run-item.parent:hover {\n background: #bbdefb;\n}\n\n.run-item-icon {\n width: 36px;\n height: 36px;\n border-radius: 8px;\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n}\n\n.run-item-content {\n flex: 1;\n min-width: 0;\n}\n\n.run-item-title {\n font-weight: 500;\n color: #2c3e50;\n margin-bottom: 4px;\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.execution-order {\n background: #6c757d;\n color: white;\n padding: 2px 6px;\n border-radius: 10px;\n font-size: 0.75em;\n font-weight: 600;\n}\n\n.run-item-type {\n font-size: 0.85em;\n color: #6c757d;\n font-weight: 400;\n}\n\n.run-item-meta {\n display: flex;\n align-items: center;\n gap: 16px;\n font-size: 0.85em;\n color: #6c757d;\n}\n\n.run-item-meta span {\n display: flex;\n align-items: center;\n gap: 4px;\n}\n\n.status-indicator {\n font-weight: 500;\n}\n\n.run-item > i:last-child {\n color: #6c757d;\n font-size: 0.85em;\n}\n\n/* Detail Fields Grid */\n.detail-fields-grid {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));\n gap: 24px;\n}\n\n.detail-field {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.detail-field label {\n font-size: 0.85em;\n color: #6c757d;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.detail-value {\n display: flex;\n align-items: center;\n gap: 10px;\n font-size: 1em;\n color: #2c3e50;\n padding: 10px 14px;\n background: #f8f9fa;\n border: 1px solid #e9ecef;\n border-radius: 8px;\n transition: all 0.2s;\n}\n\n.detail-value i:first-child {\n color: #6c757d;\n font-size: 1.1em;\n width: 20px;\n text-align: center;\n}\n\n.detail-value.clickable {\n cursor: pointer;\n}\n\n.detail-value.clickable:hover {\n background: #e9ecef;\n border-color: #dee2e6;\n color: #007bff;\n transform: translateY(-1px);\n box-shadow: 0 2px 4px rgba(0,0,0,0.1);\n}\n\n.detail-value.clickable i:last-child {\n margin-left: auto;\n font-size: 0.85em;\n opacity: 0.6;\n}\n\n.detail-value.clickable:hover i:last-child {\n opacity: 1;\n}\n\n/* Kendo Overrides */\nkendo-panelbar {\n border: none !important;\n}\n\nkendo-panelbar-item {\n margin-bottom: 8px;\n border: 1px solid #e9ecef !important;\n border-radius: 8px !important;\n overflow: hidden;\n}\n\nkendo-panelbar-item .k-panelbar-header {\n background: #f8f9fa !important;\n border: none !important;\n padding: 12px 16px !important;\n}\n\nkendo-panelbar-item .k-panelbar-header:hover {\n background: #e9ecef !important;\n}\n\nkendo-panelbar-item .k-panelbar-content {\n border: none !important;\n padding: 0 !important;\n}"] }]
|
|
963
961
|
}], () => [{ type: i0.ElementRef }, { type: i1.SharedService }, { type: i2.Router }, { type: i2.ActivatedRoute }, { type: i0.ChangeDetectorRef }], null); })();
|
|
964
962
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(AIPromptRunFormComponentExtended, { className: "AIPromptRunFormComponentExtended", filePath: "src/lib/custom/AIPromptRuns/ai-prompt-run-form.component.ts", lineNumber: 16 }); })();
|
|
965
963
|
//# sourceMappingURL=ai-prompt-run-form.component.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ai-prompt-run-form.component.js","sourceRoot":"","sources":["../../../../src/lib/custom/AIPromptRuns/ai-prompt-run-form.component.ts","../../../../src/lib/custom/AIPromptRuns/ai-prompt-run-form.component.html"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ai-prompt-run-form.component.js","sourceRoot":"","sources":["../../../../src/lib/custom/AIPromptRuns/ai-prompt-run-form.component.ts","../../../../src/lib/custom/AIPromptRuns/ai-prompt-run-form.component.html"],"names":[],"mappings":"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"}
|
|
@@ -1,12 +1,15 @@
|
|
|
1
|
-
import { OnInit, ChangeDetectorRef, ElementRef } from '@angular/core';
|
|
1
|
+
import { OnInit, ChangeDetectorRef, ElementRef, ViewContainerRef } from '@angular/core';
|
|
2
2
|
import { Router, ActivatedRoute } from '@angular/router';
|
|
3
3
|
import { AIPromptEntity, TemplateEntity, TemplateContentEntity, TemplateParamEntity, AIPromptModelEntity, AIModelEntity, AIVendorEntity, AIModelVendorEntity, AIPromptTypeEntity, AIPromptRunEntity } from '@memberjunction/core-entities';
|
|
4
4
|
import { SharedService } from '@memberjunction/ng-shared';
|
|
5
5
|
import { TemplateEditorConfig, TemplateEditorComponent } from '../../shared/components/template-editor.component';
|
|
6
6
|
import { AIPromptFormComponent } from '../../generated/Entities/AIPrompt/aiprompt.form.component';
|
|
7
|
+
import { AITestHarnessDialogService } from '@memberjunction/ng-ai-test-harness';
|
|
7
8
|
import * as i0 from "@angular/core";
|
|
8
9
|
export declare class AIPromptFormComponentExtended extends AIPromptFormComponent implements OnInit {
|
|
9
10
|
cdr: ChangeDetectorRef;
|
|
11
|
+
private testHarnessService;
|
|
12
|
+
private viewContainerRef;
|
|
10
13
|
record: AIPromptEntity;
|
|
11
14
|
template: TemplateEntity | null;
|
|
12
15
|
templateContent: TemplateContentEntity | null;
|
|
@@ -36,7 +39,7 @@ export declare class AIPromptFormComponentExtended extends AIPromptFormComponent
|
|
|
36
39
|
private _metadata;
|
|
37
40
|
private __InferenceProvider_VendorTypeDefinitionID;
|
|
38
41
|
templateEditor: TemplateEditorComponent | undefined;
|
|
39
|
-
constructor(elementRef: ElementRef, sharedService: SharedService, router: Router, route: ActivatedRoute, cdr: ChangeDetectorRef);
|
|
42
|
+
constructor(elementRef: ElementRef, sharedService: SharedService, router: Router, route: ActivatedRoute, cdr: ChangeDetectorRef, testHarnessService: AITestHarnessDialogService, viewContainerRef: ViewContainerRef);
|
|
40
43
|
ngOnInit(): Promise<void>;
|
|
41
44
|
/**
|
|
42
45
|
* Loads the template associated with this AI prompt
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ai-prompt-form.component.d.ts","sourceRoot":"","sources":["../../../../src/lib/custom/AIPrompts/ai-prompt-form.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,MAAM,EAAa,iBAAiB,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"ai-prompt-form.component.d.ts","sourceRoot":"","sources":["../../../../src/lib/custom/AIPrompts/ai-prompt-form.component.ts"],"names":[],"mappings":"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"}
|