@memberjunction/ng-core-entity-forms 2.75.0 → 2.77.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 +124 -0
- package/dist/lib/custom/AIAgents/FlowAgentType/flow-agent-diagram.component.d.ts +109 -0
- package/dist/lib/custom/AIAgents/FlowAgentType/flow-agent-diagram.component.d.ts.map +1 -0
- package/dist/lib/custom/AIAgents/FlowAgentType/flow-agent-diagram.component.js +2020 -0
- package/dist/lib/custom/AIAgents/FlowAgentType/flow-agent-diagram.component.js.map +1 -0
- package/dist/lib/custom/AIAgents/FlowAgentType/flow-agent-form-section.component.d.ts +32 -0
- package/dist/lib/custom/AIAgents/FlowAgentType/flow-agent-form-section.component.d.ts.map +1 -0
- package/dist/lib/custom/AIAgents/FlowAgentType/flow-agent-form-section.component.js +413 -0
- package/dist/lib/custom/AIAgents/FlowAgentType/flow-agent-form-section.component.js.map +1 -0
- package/dist/lib/custom/AIAgents/FlowAgentType/step-info-control.component.d.ts +9 -0
- package/dist/lib/custom/AIAgents/FlowAgentType/step-info-control.component.d.ts.map +1 -0
- package/dist/lib/custom/AIAgents/FlowAgentType/step-info-control.component.js +84 -0
- package/dist/lib/custom/AIAgents/FlowAgentType/step-info-control.component.js.map +1 -0
- package/dist/lib/custom/AIAgents/ai-agent-form.component.d.ts +34 -6
- package/dist/lib/custom/AIAgents/ai-agent-form.component.d.ts.map +1 -1
- package/dist/lib/custom/AIAgents/ai-agent-form.component.js +656 -520
- package/dist/lib/custom/AIAgents/ai-agent-form.component.js.map +1 -1
- package/dist/lib/custom/AIPromptRuns/ai-prompt-run-form.component.js +223 -221
- package/dist/lib/custom/AIPromptRuns/ai-prompt-run-form.component.js.map +1 -1
- package/dist/lib/custom/Actions/action-execution-log-form.component.js +51 -49
- package/dist/lib/custom/Actions/action-execution-log-form.component.js.map +1 -1
- package/dist/lib/custom/Actions/action-test-harness.component.d.ts.map +1 -1
- package/dist/lib/custom/Actions/action-test-harness.component.js +5 -3
- package/dist/lib/custom/Actions/action-test-harness.component.js.map +1 -1
- package/dist/lib/custom/ai-agent-run/ai-agent-run-analytics.component.js +160 -158
- package/dist/lib/custom/ai-agent-run/ai-agent-run-analytics.component.js.map +1 -1
- package/dist/lib/custom/ai-agent-run/ai-agent-run-cost.service.d.ts.map +1 -1
- package/dist/lib/custom/ai-agent-run/ai-agent-run-cost.service.js +3 -6
- package/dist/lib/custom/ai-agent-run/ai-agent-run-cost.service.js.map +1 -1
- package/dist/lib/custom/ai-agent-run/ai-agent-run-data.service.d.ts +49 -0
- package/dist/lib/custom/ai-agent-run/ai-agent-run-data.service.d.ts.map +1 -0
- package/dist/lib/custom/ai-agent-run/ai-agent-run-data.service.js +211 -0
- package/dist/lib/custom/ai-agent-run/ai-agent-run-data.service.js.map +1 -0
- package/dist/lib/custom/ai-agent-run/ai-agent-run-step-detail.component.d.ts +33 -0
- package/dist/lib/custom/ai-agent-run/ai-agent-run-step-detail.component.d.ts.map +1 -0
- package/dist/lib/custom/ai-agent-run/ai-agent-run-step-detail.component.js +265 -0
- package/dist/lib/custom/ai-agent-run/ai-agent-run-step-detail.component.js.map +1 -0
- package/dist/lib/custom/ai-agent-run/ai-agent-run-timeline.component.d.ts +4 -8
- package/dist/lib/custom/ai-agent-run/ai-agent-run-timeline.component.d.ts.map +1 -1
- package/dist/lib/custom/ai-agent-run/ai-agent-run-timeline.component.js +47 -163
- package/dist/lib/custom/ai-agent-run/ai-agent-run-timeline.component.js.map +1 -1
- package/dist/lib/custom/ai-agent-run/ai-agent-run-visualization.component.d.ts +71 -0
- package/dist/lib/custom/ai-agent-run/ai-agent-run-visualization.component.d.ts.map +1 -0
- package/dist/lib/custom/ai-agent-run/ai-agent-run-visualization.component.js +931 -0
- package/dist/lib/custom/ai-agent-run/ai-agent-run-visualization.component.js.map +1 -0
- package/dist/lib/custom/ai-agent-run/ai-agent-run.component.d.ts +6 -4
- package/dist/lib/custom/ai-agent-run/ai-agent-run.component.d.ts.map +1 -1
- package/dist/lib/custom/ai-agent-run/ai-agent-run.component.js +202 -297
- package/dist/lib/custom/ai-agent-run/ai-agent-run.component.js.map +1 -1
- package/dist/lib/custom/custom-forms.module.d.ts +30 -25
- package/dist/lib/custom/custom-forms.module.d.ts.map +1 -1
- package/dist/lib/custom/custom-forms.module.js +31 -4
- package/dist/lib/custom/custom-forms.module.js.map +1 -1
- package/dist/lib/generated/Entities/AIAgent/aiagent.form.component.js +34 -14
- package/dist/lib/generated/Entities/AIAgent/aiagent.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/AIAgentStep/aiagentstep.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/AIAgentStep/aiagentstep.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/AIAgentStep/aiagentstep.form.component.js +80 -0
- package/dist/lib/generated/Entities/AIAgentStep/aiagentstep.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/AIAgentStep/sections/details.component.d.ts +11 -0
- package/dist/lib/generated/Entities/AIAgentStep/sections/details.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/AIAgentStep/sections/details.component.js +277 -0
- package/dist/lib/generated/Entities/AIAgentStep/sections/details.component.js.map +1 -0
- package/dist/lib/generated/Entities/AIAgentStepPath/aiagentsteppath.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/AIAgentStepPath/aiagentsteppath.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/AIAgentStepPath/aiagentsteppath.form.component.js +59 -0
- package/dist/lib/generated/Entities/AIAgentStepPath/aiagentsteppath.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/AIAgentStepPath/sections/details.component.d.ts +11 -0
- package/dist/lib/generated/Entities/AIAgentStepPath/sections/details.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/AIAgentStepPath/sections/details.component.js +147 -0
- package/dist/lib/generated/Entities/AIAgentStepPath/sections/details.component.js.map +1 -0
- package/dist/lib/generated/Entities/AIAgentType/sections/details.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/AIAgentType/sections/details.component.js +31 -4
- package/dist/lib/generated/Entities/AIAgentType/sections/details.component.js.map +1 -1
- package/dist/lib/generated/Entities/AIPrompt/aiprompt.form.component.js +16 -6
- package/dist/lib/generated/Entities/AIPrompt/aiprompt.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/Action/action.form.component.js +19 -9
- package/dist/lib/generated/Entities/Action/action.form.component.js.map +1 -1
- package/dist/lib/generated/generated-forms.module.d.ts +294 -285
- package/dist/lib/generated/generated-forms.module.d.ts.map +1 -1
- package/dist/lib/generated/generated-forms.module.js +183 -110
- package/dist/lib/generated/generated-forms.module.js.map +1 -1
- package/dist/public-api.d.ts +2 -0
- package/dist/public-api.d.ts.map +1 -1
- package/dist/public-api.js +3 -0
- package/dist/public-api.js.map +1 -1
- package/package.json +21 -17
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { EventEmitter, ChangeDetectorRef } from '@angular/core';
|
|
2
|
+
import { TimelineItem } from './ai-agent-run-timeline.component';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
export declare class AIAgentRunStepDetailComponent {
|
|
5
|
+
private cdr;
|
|
6
|
+
selectedTimelineItem: TimelineItem | null;
|
|
7
|
+
closePanel: EventEmitter<void>;
|
|
8
|
+
navigateToActionLog: EventEmitter<string>;
|
|
9
|
+
copyToClipboard: EventEmitter<string>;
|
|
10
|
+
selectedItemJsonString: string;
|
|
11
|
+
detailPaneTab: 'json' | 'diff';
|
|
12
|
+
constructor(cdr: ChangeDetectorRef);
|
|
13
|
+
ngOnChanges(): void;
|
|
14
|
+
getSelectedItemJson(): string;
|
|
15
|
+
/**
|
|
16
|
+
* Check if selected timeline item is a step with payload changes
|
|
17
|
+
*/
|
|
18
|
+
get showStepPayloadDiff(): boolean;
|
|
19
|
+
/**
|
|
20
|
+
* Get parsed PayloadAtStart for the selected step
|
|
21
|
+
*/
|
|
22
|
+
get stepPayloadAtStartObject(): any;
|
|
23
|
+
/**
|
|
24
|
+
* Get parsed PayloadAtEnd for the selected step
|
|
25
|
+
*/
|
|
26
|
+
get stepPayloadAtEndObject(): any;
|
|
27
|
+
onClosePanel(): void;
|
|
28
|
+
onNavigateToActionLog(logId: string): void;
|
|
29
|
+
onCopyToClipboard(): void;
|
|
30
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<AIAgentRunStepDetailComponent, never>;
|
|
31
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<AIAgentRunStepDetailComponent, "mj-ai-agent-run-step-detail", never, { "selectedTimelineItem": { "alias": "selectedTimelineItem"; "required": false; }; }, { "closePanel": "closePanel"; "navigateToActionLog": "navigateToActionLog"; "copyToClipboard": "copyToClipboard"; }, never, never, false, never>;
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=ai-agent-run-step-detail.component.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ai-agent-run-step-detail.component.d.ts","sourceRoot":"","sources":["../../../../src/lib/custom/ai-agent-run/ai-agent-run-step-detail.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAA4B,YAAY,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAC1F,OAAO,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;;AAIjE,qBAKa,6BAA6B;IAS5B,OAAO,CAAC,GAAG;IARd,oBAAoB,EAAE,YAAY,GAAG,IAAI,CAAQ;IAChD,UAAU,qBAA4B;IACtC,mBAAmB,uBAA8B;IACjD,eAAe,uBAA8B;IAEvD,sBAAsB,SAAQ;IAC9B,aAAa,EAAE,MAAM,GAAG,MAAM,CAAU;gBAEpB,GAAG,EAAE,iBAAiB;IAE1C,WAAW;IASX,mBAAmB,IAAI,MAAM;IAuB7B;;OAEG;IACH,IAAI,mBAAmB,IAAI,OAAO,CAYjC;IAED;;OAEG;IACH,IAAI,wBAAwB,IAAI,GAAG,CA4BlC;IAED;;OAEG;IACH,IAAI,sBAAsB,IAAI,GAAG,CA4BhC;IAED,YAAY;IAIZ,qBAAqB,CAAC,KAAK,EAAE,MAAM;IAInC,iBAAiB;yCAtIN,6BAA6B;2CAA7B,6BAA6B;CAyIzC"}
|
|
@@ -0,0 +1,265 @@
|
|
|
1
|
+
import { Component, Input, Output, EventEmitter } from '@angular/core';
|
|
2
|
+
import { AIAgentRunStepEntity } from '@memberjunction/core-entities';
|
|
3
|
+
import { ParseJSONRecursive } from '@memberjunction/global';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "@angular/common";
|
|
6
|
+
import * as i2 from "@angular/forms";
|
|
7
|
+
import * as i3 from "@memberjunction/ng-code-editor";
|
|
8
|
+
import * as i4 from "@memberjunction/ng-deep-diff";
|
|
9
|
+
function AIAgentRunStepDetailComponent_div_0_div_24_Template(rf, ctx) { if (rf & 1) {
|
|
10
|
+
const _r3 = i0.ɵɵgetCurrentView();
|
|
11
|
+
i0.ɵɵelementStart(0, "div", 15)(1, "button", 16);
|
|
12
|
+
i0.ɵɵlistener("click", function AIAgentRunStepDetailComponent_div_0_div_24_Template_button_click_1_listener() { i0.ɵɵrestoreView(_r3); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.onNavigateToActionLog(ctx_r1.selectedTimelineItem.data.ID)); });
|
|
13
|
+
i0.ɵɵelement(2, "i", 17);
|
|
14
|
+
i0.ɵɵtext(3, " View Action Execution Log ");
|
|
15
|
+
i0.ɵɵelementEnd()();
|
|
16
|
+
} }
|
|
17
|
+
function AIAgentRunStepDetailComponent_div_0_Conditional_25_Template(rf, ctx) { if (rf & 1) {
|
|
18
|
+
const _r4 = i0.ɵɵgetCurrentView();
|
|
19
|
+
i0.ɵɵelementStart(0, "div", 11)(1, "button", 18);
|
|
20
|
+
i0.ɵɵlistener("click", function AIAgentRunStepDetailComponent_div_0_Conditional_25_Template_button_click_1_listener() { i0.ɵɵrestoreView(_r4); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.detailPaneTab = "diff"); });
|
|
21
|
+
i0.ɵɵelement(2, "i", 19);
|
|
22
|
+
i0.ɵɵtext(3, " Payload Changes ");
|
|
23
|
+
i0.ɵɵelementEnd();
|
|
24
|
+
i0.ɵɵelementStart(4, "button", 18);
|
|
25
|
+
i0.ɵɵlistener("click", function AIAgentRunStepDetailComponent_div_0_Conditional_25_Template_button_click_4_listener() { i0.ɵɵrestoreView(_r4); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.detailPaneTab = "json"); });
|
|
26
|
+
i0.ɵɵelement(5, "i", 20);
|
|
27
|
+
i0.ɵɵtext(6, " Full JSON ");
|
|
28
|
+
i0.ɵɵelementEnd()();
|
|
29
|
+
} if (rf & 2) {
|
|
30
|
+
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
31
|
+
i0.ɵɵadvance();
|
|
32
|
+
i0.ɵɵclassProp("active", ctx_r1.detailPaneTab === "diff");
|
|
33
|
+
i0.ɵɵadvance(3);
|
|
34
|
+
i0.ɵɵclassProp("active", ctx_r1.detailPaneTab === "json");
|
|
35
|
+
} }
|
|
36
|
+
function AIAgentRunStepDetailComponent_div_0_Conditional_27_Template(rf, ctx) { if (rf & 1) {
|
|
37
|
+
i0.ɵɵelementStart(0, "div", 13);
|
|
38
|
+
i0.ɵɵelement(1, "mj-deep-diff", 21);
|
|
39
|
+
i0.ɵɵelementEnd();
|
|
40
|
+
} if (rf & 2) {
|
|
41
|
+
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
42
|
+
i0.ɵɵadvance();
|
|
43
|
+
i0.ɵɵproperty("oldValue", ctx_r1.stepPayloadAtStartObject)("newValue", ctx_r1.stepPayloadAtEndObject)("title", "")("showSummary", true)("showUnchanged", false)("expandAll", false)("maxDepth", 8)("maxStringLength", 150)("treatNullAsUndefined", true);
|
|
44
|
+
} }
|
|
45
|
+
function AIAgentRunStepDetailComponent_div_0_Conditional_28_Template(rf, ctx) { if (rf & 1) {
|
|
46
|
+
const _r5 = i0.ɵɵgetCurrentView();
|
|
47
|
+
i0.ɵɵelementStart(0, "div", 14)(1, "div", 22)(2, "button", 23);
|
|
48
|
+
i0.ɵɵlistener("click", function AIAgentRunStepDetailComponent_div_0_Conditional_28_Template_button_click_2_listener() { i0.ɵɵrestoreView(_r5); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.onCopyToClipboard()); });
|
|
49
|
+
i0.ɵɵelement(3, "i", 24);
|
|
50
|
+
i0.ɵɵelementEnd()();
|
|
51
|
+
i0.ɵɵelementStart(4, "mj-code-editor", 25);
|
|
52
|
+
i0.ɵɵtwoWayListener("ngModelChange", function AIAgentRunStepDetailComponent_div_0_Conditional_28_Template_mj_code_editor_ngModelChange_4_listener($event) { i0.ɵɵrestoreView(_r5); const ctx_r1 = i0.ɵɵnextContext(2); i0.ɵɵtwoWayBindingSet(ctx_r1.selectedItemJsonString, $event) || (ctx_r1.selectedItemJsonString = $event); return i0.ɵɵresetView($event); });
|
|
53
|
+
i0.ɵɵelementEnd()();
|
|
54
|
+
} if (rf & 2) {
|
|
55
|
+
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
56
|
+
i0.ɵɵadvance(4);
|
|
57
|
+
i0.ɵɵtwoWayProperty("ngModel", ctx_r1.selectedItemJsonString);
|
|
58
|
+
i0.ɵɵproperty("language", "json")("readonly", true);
|
|
59
|
+
} }
|
|
60
|
+
function AIAgentRunStepDetailComponent_div_0_Template(rf, ctx) { if (rf & 1) {
|
|
61
|
+
const _r1 = i0.ɵɵgetCurrentView();
|
|
62
|
+
i0.ɵɵelementStart(0, "div", 1)(1, "div", 2)(2, "h3");
|
|
63
|
+
i0.ɵɵelement(3, "i", 3);
|
|
64
|
+
i0.ɵɵtext(4);
|
|
65
|
+
i0.ɵɵelementEnd();
|
|
66
|
+
i0.ɵɵelementStart(5, "button", 4);
|
|
67
|
+
i0.ɵɵlistener("click", function AIAgentRunStepDetailComponent_div_0_Template_button_click_5_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onClosePanel()); });
|
|
68
|
+
i0.ɵɵelement(6, "i", 5);
|
|
69
|
+
i0.ɵɵelementEnd()();
|
|
70
|
+
i0.ɵɵelementStart(7, "div", 6)(8, "div", 7)(9, "div", 8)(10, "label");
|
|
71
|
+
i0.ɵɵtext(11, "Type");
|
|
72
|
+
i0.ɵɵelementEnd();
|
|
73
|
+
i0.ɵɵelementStart(12, "span");
|
|
74
|
+
i0.ɵɵtext(13);
|
|
75
|
+
i0.ɵɵelementEnd()();
|
|
76
|
+
i0.ɵɵelementStart(14, "div", 8)(15, "label");
|
|
77
|
+
i0.ɵɵtext(16, "Status");
|
|
78
|
+
i0.ɵɵelementEnd();
|
|
79
|
+
i0.ɵɵelementStart(17, "span", 9);
|
|
80
|
+
i0.ɵɵtext(18);
|
|
81
|
+
i0.ɵɵelementEnd()();
|
|
82
|
+
i0.ɵɵelementStart(19, "div", 8)(20, "label");
|
|
83
|
+
i0.ɵɵtext(21, "Duration");
|
|
84
|
+
i0.ɵɵelementEnd();
|
|
85
|
+
i0.ɵɵelementStart(22, "span");
|
|
86
|
+
i0.ɵɵtext(23);
|
|
87
|
+
i0.ɵɵelementEnd()()();
|
|
88
|
+
i0.ɵɵtemplate(24, AIAgentRunStepDetailComponent_div_0_div_24_Template, 4, 0, "div", 10)(25, AIAgentRunStepDetailComponent_div_0_Conditional_25_Template, 7, 4, "div", 11);
|
|
89
|
+
i0.ɵɵelementStart(26, "div", 12);
|
|
90
|
+
i0.ɵɵtemplate(27, AIAgentRunStepDetailComponent_div_0_Conditional_27_Template, 2, 9, "div", 13)(28, AIAgentRunStepDetailComponent_div_0_Conditional_28_Template, 5, 3, "div", 14);
|
|
91
|
+
i0.ɵɵelementEnd()()();
|
|
92
|
+
} if (rf & 2) {
|
|
93
|
+
const ctx_r1 = i0.ɵɵnextContext();
|
|
94
|
+
i0.ɵɵadvance(3);
|
|
95
|
+
i0.ɵɵproperty("ngClass", ctx_r1.selectedTimelineItem.icon);
|
|
96
|
+
i0.ɵɵadvance();
|
|
97
|
+
i0.ɵɵtextInterpolate1(" ", ctx_r1.selectedTimelineItem.title, " ");
|
|
98
|
+
i0.ɵɵadvance(9);
|
|
99
|
+
i0.ɵɵtextInterpolate(ctx_r1.selectedTimelineItem.type);
|
|
100
|
+
i0.ɵɵadvance(4);
|
|
101
|
+
i0.ɵɵattribute("data-status", ctx_r1.selectedTimelineItem.status);
|
|
102
|
+
i0.ɵɵadvance();
|
|
103
|
+
i0.ɵɵtextInterpolate1(" ", ctx_r1.selectedTimelineItem.status, " ");
|
|
104
|
+
i0.ɵɵadvance(5);
|
|
105
|
+
i0.ɵɵtextInterpolate(ctx_r1.selectedTimelineItem.duration || "N/A");
|
|
106
|
+
i0.ɵɵadvance();
|
|
107
|
+
i0.ɵɵproperty("ngIf", ctx_r1.selectedTimelineItem.type === "action" && (ctx_r1.selectedTimelineItem.data == null ? null : ctx_r1.selectedTimelineItem.data.ID));
|
|
108
|
+
i0.ɵɵadvance();
|
|
109
|
+
i0.ɵɵconditional(ctx_r1.showStepPayloadDiff ? 25 : -1);
|
|
110
|
+
i0.ɵɵadvance();
|
|
111
|
+
i0.ɵɵclassProp("with-tabs", ctx_r1.showStepPayloadDiff);
|
|
112
|
+
i0.ɵɵadvance();
|
|
113
|
+
i0.ɵɵconditional(ctx_r1.detailPaneTab === "diff" && ctx_r1.showStepPayloadDiff ? 27 : -1);
|
|
114
|
+
i0.ɵɵadvance();
|
|
115
|
+
i0.ɵɵconditional(ctx_r1.detailPaneTab === "json" || !ctx_r1.showStepPayloadDiff ? 28 : -1);
|
|
116
|
+
} }
|
|
117
|
+
export class AIAgentRunStepDetailComponent {
|
|
118
|
+
constructor(cdr) {
|
|
119
|
+
this.cdr = cdr;
|
|
120
|
+
this.selectedTimelineItem = null;
|
|
121
|
+
this.closePanel = new EventEmitter();
|
|
122
|
+
this.navigateToActionLog = new EventEmitter();
|
|
123
|
+
this.copyToClipboard = new EventEmitter();
|
|
124
|
+
this.selectedItemJsonString = '{}';
|
|
125
|
+
this.detailPaneTab = 'diff';
|
|
126
|
+
}
|
|
127
|
+
ngOnChanges() {
|
|
128
|
+
if (this.selectedTimelineItem) {
|
|
129
|
+
this.selectedItemJsonString = this.getSelectedItemJson();
|
|
130
|
+
// Default to diff tab if step has payload diff, otherwise json tab
|
|
131
|
+
this.detailPaneTab = this.showStepPayloadDiff ? 'diff' : 'json';
|
|
132
|
+
this.cdr.detectChanges();
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
getSelectedItemJson() {
|
|
136
|
+
if (!this.selectedTimelineItem)
|
|
137
|
+
return '{}';
|
|
138
|
+
// Get all the data from the entity
|
|
139
|
+
let data;
|
|
140
|
+
if (this.selectedTimelineItem.data instanceof AIAgentRunStepEntity) {
|
|
141
|
+
// If it's a step entity, we need to get the full run data
|
|
142
|
+
data = this.selectedTimelineItem.data.GetAll();
|
|
143
|
+
}
|
|
144
|
+
else {
|
|
145
|
+
data = this.selectedTimelineItem.data;
|
|
146
|
+
}
|
|
147
|
+
// Apply recursive JSON parsing to the entire data object
|
|
148
|
+
const parseOptions = {
|
|
149
|
+
extractInlineJson: true,
|
|
150
|
+
maxDepth: 100,
|
|
151
|
+
debug: false
|
|
152
|
+
};
|
|
153
|
+
const parsedData = ParseJSONRecursive(data, parseOptions);
|
|
154
|
+
return JSON.stringify(parsedData, null, 2);
|
|
155
|
+
}
|
|
156
|
+
/**
|
|
157
|
+
* Check if selected timeline item is a step with payload changes
|
|
158
|
+
*/
|
|
159
|
+
get showStepPayloadDiff() {
|
|
160
|
+
if (!this.selectedTimelineItem || this.selectedTimelineItem.type !== 'step') {
|
|
161
|
+
return false;
|
|
162
|
+
}
|
|
163
|
+
const stepData = this.selectedTimelineItem.data;
|
|
164
|
+
if (stepData && (stepData.PayloadAtStart?.trim().length > 0
|
|
165
|
+
|| stepData.PayloadAtEnd?.trim().length > 0)) {
|
|
166
|
+
return stepData.PayloadAtStart !== stepData.PayloadAtEnd;
|
|
167
|
+
}
|
|
168
|
+
else {
|
|
169
|
+
return false;
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
/**
|
|
173
|
+
* Get parsed PayloadAtStart for the selected step
|
|
174
|
+
*/
|
|
175
|
+
get stepPayloadAtStartObject() {
|
|
176
|
+
if (!this.selectedTimelineItem || this.selectedTimelineItem.type !== 'step') {
|
|
177
|
+
return null;
|
|
178
|
+
}
|
|
179
|
+
const stepData = this.selectedTimelineItem.data;
|
|
180
|
+
if (!stepData?.PayloadAtStart)
|
|
181
|
+
return null;
|
|
182
|
+
try {
|
|
183
|
+
// First, check if PayloadAtStart is a JSON string that needs to be parsed
|
|
184
|
+
let payloadData = stepData.PayloadAtStart;
|
|
185
|
+
try {
|
|
186
|
+
// If PayloadAtStart is a JSON string, parse it first
|
|
187
|
+
payloadData = JSON.parse(stepData.PayloadAtStart);
|
|
188
|
+
}
|
|
189
|
+
catch {
|
|
190
|
+
// If it's not valid JSON, use it as-is
|
|
191
|
+
payloadData = stepData.PayloadAtStart;
|
|
192
|
+
}
|
|
193
|
+
const parseOptions = {
|
|
194
|
+
extractInlineJson: true,
|
|
195
|
+
maxDepth: 100,
|
|
196
|
+
debug: false
|
|
197
|
+
};
|
|
198
|
+
return ParseJSONRecursive(payloadData, parseOptions);
|
|
199
|
+
}
|
|
200
|
+
catch (e) {
|
|
201
|
+
return null;
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
/**
|
|
205
|
+
* Get parsed PayloadAtEnd for the selected step
|
|
206
|
+
*/
|
|
207
|
+
get stepPayloadAtEndObject() {
|
|
208
|
+
if (!this.selectedTimelineItem || this.selectedTimelineItem.type !== 'step') {
|
|
209
|
+
return null;
|
|
210
|
+
}
|
|
211
|
+
const stepData = this.selectedTimelineItem.data;
|
|
212
|
+
if (!stepData?.PayloadAtEnd)
|
|
213
|
+
return null;
|
|
214
|
+
try {
|
|
215
|
+
// First, check if PayloadAtEnd is a JSON string that needs to be parsed
|
|
216
|
+
let payloadData = stepData.PayloadAtEnd;
|
|
217
|
+
try {
|
|
218
|
+
// If PayloadAtEnd is a JSON string, parse it first
|
|
219
|
+
payloadData = JSON.parse(stepData.PayloadAtEnd);
|
|
220
|
+
}
|
|
221
|
+
catch {
|
|
222
|
+
// If it's not valid JSON, use it as-is
|
|
223
|
+
payloadData = stepData.PayloadAtEnd;
|
|
224
|
+
}
|
|
225
|
+
const parseOptions = {
|
|
226
|
+
extractInlineJson: true,
|
|
227
|
+
maxDepth: 100,
|
|
228
|
+
debug: false
|
|
229
|
+
};
|
|
230
|
+
return ParseJSONRecursive(payloadData, parseOptions);
|
|
231
|
+
}
|
|
232
|
+
catch (e) {
|
|
233
|
+
return null;
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
onClosePanel() {
|
|
237
|
+
this.closePanel.emit();
|
|
238
|
+
}
|
|
239
|
+
onNavigateToActionLog(logId) {
|
|
240
|
+
this.navigateToActionLog.emit(logId);
|
|
241
|
+
}
|
|
242
|
+
onCopyToClipboard() {
|
|
243
|
+
this.copyToClipboard.emit(this.getSelectedItemJson());
|
|
244
|
+
}
|
|
245
|
+
static { this.ɵfac = function AIAgentRunStepDetailComponent_Factory(t) { return new (t || AIAgentRunStepDetailComponent)(i0.ɵɵdirectiveInject(i0.ChangeDetectorRef)); }; }
|
|
246
|
+
static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: AIAgentRunStepDetailComponent, selectors: [["mj-ai-agent-run-step-detail"]], inputs: { selectedTimelineItem: "selectedTimelineItem" }, outputs: { closePanel: "closePanel", navigateToActionLog: "navigateToActionLog", copyToClipboard: "copyToClipboard" }, features: [i0.ɵɵNgOnChangesFeature], decls: 1, vars: 1, consts: [["class", "json-detail-pane", 4, "ngIf"], [1, "json-detail-pane"], [1, "json-pane-header"], [1, "fas", 3, "ngClass"], ["title", "Close", 1, "btn-icon", 3, "click"], [1, "fas", "fa-times"], [1, "json-pane-content"], [1, "json-meta"], [1, "meta-item"], [1, "status-badge", "small"], ["class", "action-link", 4, "ngIf"], [1, "detail-pane-tabs"], [1, "detail-pane-content"], [1, "step-payload-diff"], [1, "json-viewer"], [1, "action-link"], [1, "btn-link", 3, "click"], [1, "fas", "fa-external-link-alt"], [1, "detail-tab", 3, "click"], [1, "fa-solid", "fa-code-branch"], [1, "fa-solid", "fa-code"], [3, "oldValue", "newValue", "title", "showSummary", "showUnchanged", "expandAll", "maxDepth", "maxStringLength", "treatNullAsUndefined"], [1, "json-toolbar"], ["title", "Copy JSON", 1, "btn-icon", 3, "click"], [1, "fas", "fa-copy"], [2, "height", "calc(100% - 40px)", "width", "100%", 3, "ngModelChange", "ngModel", "language", "readonly"]], template: function AIAgentRunStepDetailComponent_Template(rf, ctx) { if (rf & 1) {
|
|
247
|
+
i0.ɵɵtemplate(0, AIAgentRunStepDetailComponent_div_0_Template, 29, 12, "div", 0);
|
|
248
|
+
} if (rf & 2) {
|
|
249
|
+
i0.ɵɵproperty("ngIf", ctx.selectedTimelineItem);
|
|
250
|
+
} }, dependencies: [i1.NgClass, i1.NgIf, i2.NgControlStatus, i2.NgModel, i3.CodeEditorComponent, i4.DeepDiffComponent], styles: [".json-detail-pane[_ngcontent-%COMP%] {\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[_ngcontent-%COMP%] {\n padding: 16px;\n border-bottom: 1px solid #e0e6ed;\n display: flex;\n justify-content: space-between;\n align-items: center;\n background: #f8f9fa;\n}\n\n.json-pane-header[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\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.btn-icon[_ngcontent-%COMP%] {\n background: none;\n border: none;\n padding: 4px 8px;\n cursor: pointer;\n color: #6c757d;\n border-radius: 4px;\n transition: all 0.2s;\n}\n\n.btn-icon[_ngcontent-%COMP%]:hover {\n background: rgba(0, 0, 0, 0.05);\n color: #495057;\n}\n\n.json-pane-content[_ngcontent-%COMP%] {\n flex: 1;\n overflow-y: auto;\n display: flex;\n flex-direction: column;\n}\n\n.json-meta[_ngcontent-%COMP%] {\n padding: 16px;\n display: flex;\n gap: 24px;\n border-bottom: 1px solid #e0e6ed;\n}\n\n.meta-item[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n.meta-item[_ngcontent-%COMP%] label[_ngcontent-%COMP%] {\n font-size: 11px;\n text-transform: uppercase;\n color: #6c757d;\n font-weight: 600;\n}\n\n.meta-item[_ngcontent-%COMP%] span[_ngcontent-%COMP%] {\n font-size: 13px;\n color: #2c3e50;\n}\n\n.status-badge[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n padding: 4px 8px;\n border-radius: 4px;\n font-size: 11px;\n font-weight: 600;\n text-transform: uppercase;\n}\n\n.status-badge.small[_ngcontent-%COMP%] {\n padding: 2px 6px;\n font-size: 10px;\n}\n\n.status-badge[data-status=\"Running\"][_ngcontent-%COMP%] {\n background: #e3f2fd;\n color: #1976d2;\n}\n\n.status-badge[data-status=\"Completed\"][_ngcontent-%COMP%] {\n background: #e8f5e9;\n color: #388e3c;\n}\n\n.status-badge[data-status=\"Failed\"][_ngcontent-%COMP%] {\n background: #ffebee;\n color: #d32f2f;\n}\n\n.status-badge[data-status=\"Cancelled\"][_ngcontent-%COMP%] {\n background: #fff3e0;\n color: #f57c00;\n}\n\n.action-link[_ngcontent-%COMP%] {\n padding: 12px 16px;\n border-bottom: 1px solid #e0e6ed;\n}\n\n.btn-link[_ngcontent-%COMP%] {\n background: none;\n border: none;\n color: #2196f3;\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 font-size: 13px;\n}\n\n.btn-link[_ngcontent-%COMP%]:hover {\n background: rgba(33, 150, 243, 0.1);\n color: #1976d2;\n}\n\n.detail-pane-tabs[_ngcontent-%COMP%] {\n display: flex;\n gap: 0;\n background: #f8f9fa;\n border-bottom: 1px solid #e0e6ed;\n padding: 0 16px;\n}\n\n.detail-tab[_ngcontent-%COMP%] {\n padding: 12px 16px;\n background: none;\n border: none;\n border-bottom: 2px solid transparent;\n cursor: pointer;\n font-size: 13px;\n color: #6c757d;\n transition: all 0.2s;\n display: flex;\n align-items: center;\n gap: 6px;\n}\n\n.detail-tab[_ngcontent-%COMP%]:hover {\n color: #495057;\n background: rgba(0, 0, 0, 0.02);\n}\n\n.detail-tab.active[_ngcontent-%COMP%] {\n color: #2196f3;\n border-bottom-color: #2196f3;\n font-weight: 600;\n}\n\n.detail-pane-content[_ngcontent-%COMP%] {\n flex: 1;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n height: calc(100% - 200px);\n}\n\n.detail-pane-content.with-tabs[_ngcontent-%COMP%] {\n height: calc(100% - 250px);\n}\n\n.json-viewer[_ngcontent-%COMP%] {\n flex: 1;\n display: flex;\n flex-direction: column;\n position: relative;\n overflow: hidden;\n}\n\n.json-toolbar[_ngcontent-%COMP%] {\n position: absolute;\n top: 8px;\n right: 8px;\n z-index: 10;\n display: flex;\n gap: 4px;\n}\n\n.step-payload-diff[_ngcontent-%COMP%] {\n flex: 1;\n overflow-y: auto;\n padding: 16px;\n}"] }); }
|
|
251
|
+
}
|
|
252
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(AIAgentRunStepDetailComponent, [{
|
|
253
|
+
type: Component,
|
|
254
|
+
args: [{ selector: 'mj-ai-agent-run-step-detail', template: "<div class=\"json-detail-pane\" *ngIf=\"selectedTimelineItem\">\n <div class=\"json-pane-header\">\n <h3>\n <i class=\"fas\" [ngClass]=\"selectedTimelineItem.icon\"></i>\n {{ selectedTimelineItem.title }}\n </h3>\n <button class=\"btn-icon\" (click)=\"onClosePanel()\" title=\"Close\">\n <i class=\"fas fa-times\"></i>\n </button>\n </div>\n <div class=\"json-pane-content\">\n <div class=\"json-meta\">\n <div class=\"meta-item\">\n <label>Type</label>\n <span>{{ selectedTimelineItem.type }}</span>\n </div>\n <div class=\"meta-item\">\n <label>Status</label>\n <span class=\"status-badge small\" [attr.data-status]=\"selectedTimelineItem.status\">\n {{ selectedTimelineItem.status }}\n </span>\n </div>\n <div class=\"meta-item\">\n <label>Duration</label>\n <span>{{ selectedTimelineItem.duration || 'N/A' }}</span>\n </div>\n </div>\n \n <!-- Action-specific link -->\n <div class=\"action-link\" *ngIf=\"selectedTimelineItem.type === 'action' && selectedTimelineItem.data?.ID\">\n <button class=\"btn-link\" (click)=\"onNavigateToActionLog(selectedTimelineItem.data.ID)\">\n <i class=\"fas fa-external-link-alt\"></i> View Action Execution Log\n </button>\n </div>\n \n <!-- Tab Navigation - Only show when we have both options -->\n @if (showStepPayloadDiff) {\n <div class=\"detail-pane-tabs\">\n <button \n class=\"detail-tab\" \n [class.active]=\"detailPaneTab === 'diff'\"\n (click)=\"detailPaneTab = 'diff'\">\n <i class=\"fa-solid fa-code-branch\"></i>\n Payload Changes\n </button>\n <button \n class=\"detail-tab\" \n [class.active]=\"detailPaneTab === 'json'\"\n (click)=\"detailPaneTab = 'json'\">\n <i class=\"fa-solid fa-code\"></i>\n Full JSON\n </button>\n </div>\n }\n \n <!-- Tab Content -->\n <div class=\"detail-pane-content\" [class.with-tabs]=\"showStepPayloadDiff\">\n <!-- Payload Diff Tab -->\n @if (detailPaneTab === 'diff' && showStepPayloadDiff) {\n <div class=\"step-payload-diff\">\n <mj-deep-diff\n [oldValue]=\"stepPayloadAtStartObject\"\n [newValue]=\"stepPayloadAtEndObject\"\n [title]=\"''\"\n [showSummary]=\"true\"\n [showUnchanged]=\"false\"\n [expandAll]=\"false\"\n [maxDepth]=\"8\"\n [maxStringLength]=\"150\"\n [treatNullAsUndefined]=\"true\">\n </mj-deep-diff>\n </div>\n }\n \n <!-- Full JSON Tab -->\n @if (detailPaneTab === 'json' || !showStepPayloadDiff) {\n <div class=\"json-viewer\">\n <div class=\"json-toolbar\">\n <button class=\"btn-icon\" title=\"Copy JSON\" (click)=\"onCopyToClipboard()\">\n <i class=\"fas fa-copy\"></i>\n </button>\n </div>\n <mj-code-editor\n [(ngModel)]=\"selectedItemJsonString\"\n [language]=\"'json'\"\n [readonly]=\"true\"\n style=\"height: calc(100% - 40px); width: 100%;\">\n </mj-code-editor>\n </div>\n }\n </div>\n </div>\n</div>", styles: [".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;\n border-bottom: 1px solid #e0e6ed;\n display: flex;\n justify-content: space-between;\n align-items: center;\n background: #f8f9fa;\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.btn-icon {\n background: none;\n border: none;\n padding: 4px 8px;\n cursor: pointer;\n color: #6c757d;\n border-radius: 4px;\n transition: all 0.2s;\n}\n\n.btn-icon:hover {\n background: rgba(0, 0, 0, 0.05);\n color: #495057;\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;\n display: flex;\n gap: 24px;\n border-bottom: 1px solid #e0e6ed;\n}\n\n.meta-item {\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n.meta-item label {\n font-size: 11px;\n text-transform: uppercase;\n color: #6c757d;\n font-weight: 600;\n}\n\n.meta-item span {\n font-size: 13px;\n color: #2c3e50;\n}\n\n.status-badge {\n display: inline-flex;\n align-items: center;\n padding: 4px 8px;\n border-radius: 4px;\n font-size: 11px;\n font-weight: 600;\n text-transform: uppercase;\n}\n\n.status-badge.small {\n padding: 2px 6px;\n font-size: 10px;\n}\n\n.status-badge[data-status=\"Running\"] {\n background: #e3f2fd;\n color: #1976d2;\n}\n\n.status-badge[data-status=\"Completed\"] {\n background: #e8f5e9;\n color: #388e3c;\n}\n\n.status-badge[data-status=\"Failed\"] {\n background: #ffebee;\n color: #d32f2f;\n}\n\n.status-badge[data-status=\"Cancelled\"] {\n background: #fff3e0;\n color: #f57c00;\n}\n\n.action-link {\n padding: 12px 16px;\n border-bottom: 1px solid #e0e6ed;\n}\n\n.btn-link {\n background: none;\n border: none;\n color: #2196f3;\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 font-size: 13px;\n}\n\n.btn-link:hover {\n background: rgba(33, 150, 243, 0.1);\n color: #1976d2;\n}\n\n.detail-pane-tabs {\n display: flex;\n gap: 0;\n background: #f8f9fa;\n border-bottom: 1px solid #e0e6ed;\n padding: 0 16px;\n}\n\n.detail-tab {\n padding: 12px 16px;\n background: none;\n border: none;\n border-bottom: 2px solid transparent;\n cursor: pointer;\n font-size: 13px;\n color: #6c757d;\n transition: all 0.2s;\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 font-weight: 600;\n}\n\n.detail-pane-content {\n flex: 1;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n height: calc(100% - 200px);\n}\n\n.detail-pane-content.with-tabs {\n height: calc(100% - 250px);\n}\n\n.json-viewer {\n flex: 1;\n display: flex;\n flex-direction: column;\n position: relative;\n overflow: hidden;\n}\n\n.json-toolbar {\n position: absolute;\n top: 8px;\n right: 8px;\n z-index: 10;\n display: flex;\n gap: 4px;\n}\n\n.step-payload-diff {\n flex: 1;\n overflow-y: auto;\n padding: 16px;\n}"] }]
|
|
255
|
+
}], () => [{ type: i0.ChangeDetectorRef }], { selectedTimelineItem: [{
|
|
256
|
+
type: Input
|
|
257
|
+
}], closePanel: [{
|
|
258
|
+
type: Output
|
|
259
|
+
}], navigateToActionLog: [{
|
|
260
|
+
type: Output
|
|
261
|
+
}], copyToClipboard: [{
|
|
262
|
+
type: Output
|
|
263
|
+
}] }); })();
|
|
264
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(AIAgentRunStepDetailComponent, { className: "AIAgentRunStepDetailComponent", filePath: "src/lib/custom/ai-agent-run/ai-agent-run-step-detail.component.ts", lineNumber: 11 }); })();
|
|
265
|
+
//# sourceMappingURL=ai-agent-run-step-detail.component.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ai-agent-run-step-detail.component.js","sourceRoot":"","sources":["../../../../src/lib/custom/ai-agent-run/ai-agent-run-step-detail.component.ts","../../../../src/lib/custom/ai-agent-run/ai-agent-run-step-detail.component.html"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { EventEmitter, OnInit, OnDestroy } from '@angular/core';
|
|
2
2
|
import { Observable } from 'rxjs';
|
|
3
3
|
import { AIAgentRunEntity, AIAgentRunStepEntity, ActionExecutionLogEntity, AIPromptRunEntity } from '@memberjunction/core-entities';
|
|
4
|
+
import { AIAgentRunDataService } from './ai-agent-run-data.service';
|
|
4
5
|
import * as i0 from "@angular/core";
|
|
5
6
|
export interface TimelineItem {
|
|
6
7
|
id: string;
|
|
@@ -22,6 +23,7 @@ export interface TimelineItem {
|
|
|
22
23
|
hasNoChildren?: boolean;
|
|
23
24
|
}
|
|
24
25
|
export declare class AIAgentRunTimelineComponent implements OnInit, OnDestroy {
|
|
26
|
+
private dataService;
|
|
25
27
|
aiAgentRunId: string;
|
|
26
28
|
autoRefresh: boolean;
|
|
27
29
|
refreshInterval: number;
|
|
@@ -31,12 +33,6 @@ export declare class AIAgentRunTimelineComponent implements OnInit, OnDestroy {
|
|
|
31
33
|
recordId: string;
|
|
32
34
|
}>;
|
|
33
35
|
private destroy$;
|
|
34
|
-
private stepsSubject$;
|
|
35
|
-
private subRunsSubject$;
|
|
36
|
-
private actionLogsSubject$;
|
|
37
|
-
private promptRunsSubject$;
|
|
38
|
-
private _agentRun;
|
|
39
|
-
private subAgentDataCache;
|
|
40
36
|
steps$: Observable<AIAgentRunStepEntity[]>;
|
|
41
37
|
subRuns$: Observable<AIAgentRunEntity[]>;
|
|
42
38
|
actionLogs$: Observable<ActionExecutionLogEntity[]>;
|
|
@@ -45,12 +41,12 @@ export declare class AIAgentRunTimelineComponent implements OnInit, OnDestroy {
|
|
|
45
41
|
loading: boolean;
|
|
46
42
|
error: string | null;
|
|
47
43
|
selectedItem: TimelineItem | null;
|
|
48
|
-
|
|
44
|
+
private refreshTimer;
|
|
45
|
+
constructor(dataService: AIAgentRunDataService);
|
|
49
46
|
ngOnInit(): void;
|
|
50
47
|
ngOnDestroy(): void;
|
|
51
48
|
private startAutoRefresh;
|
|
52
49
|
loadData(): Promise<void>;
|
|
53
|
-
private loadStepsAndSubRuns;
|
|
54
50
|
private buildTimelineItems;
|
|
55
51
|
private createTimelineItemFromStep;
|
|
56
52
|
private getStepIcon;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ai-agent-run-timeline.component.d.ts","sourceRoot":"","sources":["../../../../src/lib/custom/ai-agent-run/ai-agent-run-timeline.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAA4B,YAAY,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC1F,OAAO,EAAW,UAAU,
|
|
1
|
+
{"version":3,"file":"ai-agent-run-timeline.component.d.ts","sourceRoot":"","sources":["../../../../src/lib/custom/ai-agent-run/ai-agent-run-timeline.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAA4B,YAAY,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC1F,OAAO,EAAW,UAAU,EAAiB,MAAM,MAAM,CAAC;AAG1D,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,wBAAwB,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AACpI,OAAO,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;;AAEpE,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC;IAC9C,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,IAAI,CAAC;IAChB,OAAO,CAAC,EAAE,IAAI,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,GAAG,CAAC;IACV,QAAQ,CAAC,EAAE,YAAY,EAAE,CAAC;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED,qBAKa,2BAA4B,YAAW,MAAM,EAAE,SAAS;IAuBvD,OAAO,CAAC,WAAW;IAtBtB,YAAY,EAAG,MAAM,CAAC;IACtB,WAAW,UAAS;IACpB,eAAe,SAAQ;IACtB,YAAY,6BAAoC;IAChD,gBAAgB;oBAAkC,MAAM;kBAAY,MAAM;OAAM;IAE1F,OAAO,CAAC,QAAQ,CAAuB;IAGvC,MAAM,qCAA2B;IACjC,QAAQ,iCAA6B;IACrC,WAAW,yCAAgC;IAC3C,WAAW,kCAAgC;IAE3C,cAAc,EAAE,UAAU,CAAC,YAAY,EAAE,CAAC,CAAC;IAE3C,OAAO,UAAS;IAChB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAQ;IAC5B,YAAY,EAAE,YAAY,GAAG,IAAI,CAAQ;IAEzC,OAAO,CAAC,YAAY,CAAM;gBAEN,WAAW,EAAE,qBAAqB;IAetD,QAAQ;IAiBR,WAAW;IAQX,OAAO,CAAC,gBAAgB;IAiBlB,QAAQ;IAMd,OAAO,CAAC,kBAAkB;IAsB1B,OAAO,CAAC,0BAA0B;IA8BlC,OAAO,CAAC,WAAW;IAWnB,OAAO,CAAC,cAAc;IAWtB,iBAAiB,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,MAAM;IAazD,UAAU,CAAC,IAAI,EAAE,YAAY;IAKvB,mBAAmB,CAAC,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,KAAK;YAY5C,oBAAoB;IAkClC,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK;IAK5C,mBAAmB,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK;IAK/C,mBAAmB,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK;yCA1OpC,2BAA2B;2CAA3B,2BAA2B;CA8OvC"}
|