@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.
Files changed (87) hide show
  1. package/README.md +124 -0
  2. package/dist/lib/custom/AIAgents/FlowAgentType/flow-agent-diagram.component.d.ts +109 -0
  3. package/dist/lib/custom/AIAgents/FlowAgentType/flow-agent-diagram.component.d.ts.map +1 -0
  4. package/dist/lib/custom/AIAgents/FlowAgentType/flow-agent-diagram.component.js +2020 -0
  5. package/dist/lib/custom/AIAgents/FlowAgentType/flow-agent-diagram.component.js.map +1 -0
  6. package/dist/lib/custom/AIAgents/FlowAgentType/flow-agent-form-section.component.d.ts +32 -0
  7. package/dist/lib/custom/AIAgents/FlowAgentType/flow-agent-form-section.component.d.ts.map +1 -0
  8. package/dist/lib/custom/AIAgents/FlowAgentType/flow-agent-form-section.component.js +413 -0
  9. package/dist/lib/custom/AIAgents/FlowAgentType/flow-agent-form-section.component.js.map +1 -0
  10. package/dist/lib/custom/AIAgents/FlowAgentType/step-info-control.component.d.ts +9 -0
  11. package/dist/lib/custom/AIAgents/FlowAgentType/step-info-control.component.d.ts.map +1 -0
  12. package/dist/lib/custom/AIAgents/FlowAgentType/step-info-control.component.js +84 -0
  13. package/dist/lib/custom/AIAgents/FlowAgentType/step-info-control.component.js.map +1 -0
  14. package/dist/lib/custom/AIAgents/ai-agent-form.component.d.ts +34 -6
  15. package/dist/lib/custom/AIAgents/ai-agent-form.component.d.ts.map +1 -1
  16. package/dist/lib/custom/AIAgents/ai-agent-form.component.js +656 -520
  17. package/dist/lib/custom/AIAgents/ai-agent-form.component.js.map +1 -1
  18. package/dist/lib/custom/AIPromptRuns/ai-prompt-run-form.component.js +223 -221
  19. package/dist/lib/custom/AIPromptRuns/ai-prompt-run-form.component.js.map +1 -1
  20. package/dist/lib/custom/Actions/action-execution-log-form.component.js +51 -49
  21. package/dist/lib/custom/Actions/action-execution-log-form.component.js.map +1 -1
  22. package/dist/lib/custom/Actions/action-test-harness.component.d.ts.map +1 -1
  23. package/dist/lib/custom/Actions/action-test-harness.component.js +5 -3
  24. package/dist/lib/custom/Actions/action-test-harness.component.js.map +1 -1
  25. package/dist/lib/custom/ai-agent-run/ai-agent-run-analytics.component.js +160 -158
  26. package/dist/lib/custom/ai-agent-run/ai-agent-run-analytics.component.js.map +1 -1
  27. package/dist/lib/custom/ai-agent-run/ai-agent-run-cost.service.d.ts.map +1 -1
  28. package/dist/lib/custom/ai-agent-run/ai-agent-run-cost.service.js +3 -6
  29. package/dist/lib/custom/ai-agent-run/ai-agent-run-cost.service.js.map +1 -1
  30. package/dist/lib/custom/ai-agent-run/ai-agent-run-data.service.d.ts +49 -0
  31. package/dist/lib/custom/ai-agent-run/ai-agent-run-data.service.d.ts.map +1 -0
  32. package/dist/lib/custom/ai-agent-run/ai-agent-run-data.service.js +211 -0
  33. package/dist/lib/custom/ai-agent-run/ai-agent-run-data.service.js.map +1 -0
  34. package/dist/lib/custom/ai-agent-run/ai-agent-run-step-detail.component.d.ts +33 -0
  35. package/dist/lib/custom/ai-agent-run/ai-agent-run-step-detail.component.d.ts.map +1 -0
  36. package/dist/lib/custom/ai-agent-run/ai-agent-run-step-detail.component.js +265 -0
  37. package/dist/lib/custom/ai-agent-run/ai-agent-run-step-detail.component.js.map +1 -0
  38. package/dist/lib/custom/ai-agent-run/ai-agent-run-timeline.component.d.ts +4 -8
  39. package/dist/lib/custom/ai-agent-run/ai-agent-run-timeline.component.d.ts.map +1 -1
  40. package/dist/lib/custom/ai-agent-run/ai-agent-run-timeline.component.js +47 -163
  41. package/dist/lib/custom/ai-agent-run/ai-agent-run-timeline.component.js.map +1 -1
  42. package/dist/lib/custom/ai-agent-run/ai-agent-run-visualization.component.d.ts +71 -0
  43. package/dist/lib/custom/ai-agent-run/ai-agent-run-visualization.component.d.ts.map +1 -0
  44. package/dist/lib/custom/ai-agent-run/ai-agent-run-visualization.component.js +931 -0
  45. package/dist/lib/custom/ai-agent-run/ai-agent-run-visualization.component.js.map +1 -0
  46. package/dist/lib/custom/ai-agent-run/ai-agent-run.component.d.ts +6 -4
  47. package/dist/lib/custom/ai-agent-run/ai-agent-run.component.d.ts.map +1 -1
  48. package/dist/lib/custom/ai-agent-run/ai-agent-run.component.js +202 -297
  49. package/dist/lib/custom/ai-agent-run/ai-agent-run.component.js.map +1 -1
  50. package/dist/lib/custom/custom-forms.module.d.ts +30 -25
  51. package/dist/lib/custom/custom-forms.module.d.ts.map +1 -1
  52. package/dist/lib/custom/custom-forms.module.js +31 -4
  53. package/dist/lib/custom/custom-forms.module.js.map +1 -1
  54. package/dist/lib/generated/Entities/AIAgent/aiagent.form.component.js +34 -14
  55. package/dist/lib/generated/Entities/AIAgent/aiagent.form.component.js.map +1 -1
  56. package/dist/lib/generated/Entities/AIAgentStep/aiagentstep.form.component.d.ts +10 -0
  57. package/dist/lib/generated/Entities/AIAgentStep/aiagentstep.form.component.d.ts.map +1 -0
  58. package/dist/lib/generated/Entities/AIAgentStep/aiagentstep.form.component.js +80 -0
  59. package/dist/lib/generated/Entities/AIAgentStep/aiagentstep.form.component.js.map +1 -0
  60. package/dist/lib/generated/Entities/AIAgentStep/sections/details.component.d.ts +11 -0
  61. package/dist/lib/generated/Entities/AIAgentStep/sections/details.component.d.ts.map +1 -0
  62. package/dist/lib/generated/Entities/AIAgentStep/sections/details.component.js +277 -0
  63. package/dist/lib/generated/Entities/AIAgentStep/sections/details.component.js.map +1 -0
  64. package/dist/lib/generated/Entities/AIAgentStepPath/aiagentsteppath.form.component.d.ts +10 -0
  65. package/dist/lib/generated/Entities/AIAgentStepPath/aiagentsteppath.form.component.d.ts.map +1 -0
  66. package/dist/lib/generated/Entities/AIAgentStepPath/aiagentsteppath.form.component.js +59 -0
  67. package/dist/lib/generated/Entities/AIAgentStepPath/aiagentsteppath.form.component.js.map +1 -0
  68. package/dist/lib/generated/Entities/AIAgentStepPath/sections/details.component.d.ts +11 -0
  69. package/dist/lib/generated/Entities/AIAgentStepPath/sections/details.component.d.ts.map +1 -0
  70. package/dist/lib/generated/Entities/AIAgentStepPath/sections/details.component.js +147 -0
  71. package/dist/lib/generated/Entities/AIAgentStepPath/sections/details.component.js.map +1 -0
  72. package/dist/lib/generated/Entities/AIAgentType/sections/details.component.d.ts.map +1 -1
  73. package/dist/lib/generated/Entities/AIAgentType/sections/details.component.js +31 -4
  74. package/dist/lib/generated/Entities/AIAgentType/sections/details.component.js.map +1 -1
  75. package/dist/lib/generated/Entities/AIPrompt/aiprompt.form.component.js +16 -6
  76. package/dist/lib/generated/Entities/AIPrompt/aiprompt.form.component.js.map +1 -1
  77. package/dist/lib/generated/Entities/Action/action.form.component.js +19 -9
  78. package/dist/lib/generated/Entities/Action/action.form.component.js.map +1 -1
  79. package/dist/lib/generated/generated-forms.module.d.ts +294 -285
  80. package/dist/lib/generated/generated-forms.module.d.ts.map +1 -1
  81. package/dist/lib/generated/generated-forms.module.js +183 -110
  82. package/dist/lib/generated/generated-forms.module.js.map +1 -1
  83. package/dist/public-api.d.ts +2 -0
  84. package/dist/public-api.d.ts.map +1 -1
  85. package/dist/public-api.js +3 -0
  86. package/dist/public-api.js.map +1 -1
  87. 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":"AAAA,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,YAAY,EAAqB,MAAM,eAAe,CAAC;AAE1F,OAAO,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AACrE,OAAO,EAAE,kBAAkB,EAAoB,MAAM,wBAAwB,CAAC;;;;;;;;IC2BxE,AADF,+BAAyG,iBAChB;IAA9D,iMAAS,iEAAmD,KAAC;IACpF,wBAAwC;IAAC,2CAC3C;IACF,AADE,iBAAS,EACL;;;;IAKF,AADF,+BAA8B,iBAIO;IAAjC,gOAAyB,MAAM,KAAC;IAChC,wBAAuC;IACvC,iCACF;IAAA,iBAAS;IACT,kCAGmC;IAAjC,gOAAyB,MAAM,KAAC;IAChC,wBAAgC;IAChC,2BACF;IACF,AADE,iBAAS,EACL;;;IAZF,cAAyC;IAAzC,yDAAyC;IAOzC,eAAyC;IAAzC,yDAAyC;;;IAY3C,+BAA+B;IAC7B,mCAUe;IACjB,iBAAM;;;IAVF,cAAqC;IAQrC,AADA,AADA,AADA,AADA,AADA,AADA,AADA,AADA,0DAAqC,2CACF,aACvB,qBACQ,wBACG,oBACJ,eACL,wBACS,8BACM;;;;IAS7B,AADF,AADF,+BAAyB,cACG,iBACiD;IAA9B,yMAAS,0BAAmB,KAAC;IACtE,wBAA2B;IAE/B,AADE,iBAAS,EACL;IACN,0CAIkD;IAHhD,kWAAoC;IAKxC,AADE,iBAAiB,EACb;;;IALF,eAAoC;IAApC,6DAAoC;IAEpC,AADA,iCAAmB,kBACF;;;;IAnFzB,AADF,AADF,8BAA2D,aAC3B,SACxB;IACF,uBAAyD;IACzD,YACF;IAAA,iBAAK;IACL,iCAAgE;IAAvC,yLAAS,qBAAc,KAAC;IAC/C,uBAA4B;IAEhC,AADE,iBAAS,EACL;IAIA,AADF,AADF,AADF,8BAA+B,aACN,aACE,aACd;IAAA,qBAAI;IAAA,iBAAQ;IACnB,6BAAM;IAAA,aAA+B;IACvC,AADuC,iBAAO,EACxC;IAEJ,AADF,+BAAuB,aACd;IAAA,uBAAM;IAAA,iBAAQ;IACrB,gCAAkF;IAChF,aACF;IACF,AADE,iBAAO,EACH;IAEJ,AADF,+BAAuB,aACd;IAAA,yBAAQ;IAAA,iBAAQ;IACvB,6BAAM;IAAA,aAA4C;IAEtD,AADE,AADoD,iBAAO,EACrD,EACF;IAUN,AAPA,uFAAyG,kFAO9E;IAoB3B,gCAAyE;IAmBvE,AAjBA,+FAAuD,kFAiBC;IAiB9D,AADE,AADE,iBAAM,EACF,EACF;;;IAzFe,eAAqC;IAArC,0DAAqC;IACpD,cACF;IADE,kEACF;IASU,eAA+B;IAA/B,sDAA+B;IAIJ,eAAgD;;IAC/E,cACF;IADE,mEACF;IAIM,eAA4C;IAA5C,mEAA4C;IAK5B,cAA6E;IAA7E,+JAA6E;IAOvG,cAiBC;IAjBD,sDAiBC;IAGgC,cAAuC;IAAvC,uDAAuC;IAEtE,cAcC;IAdD,yFAcC;IAGD,cAcC;IAdD,0FAcC;;AD/EP,MAAM,OAAO,6BAA6B;IASxC,YAAoB,GAAsB;QAAtB,QAAG,GAAH,GAAG,CAAmB;QARjC,yBAAoB,GAAwB,IAAI,CAAC;QAChD,eAAU,GAAG,IAAI,YAAY,EAAQ,CAAC;QACtC,wBAAmB,GAAG,IAAI,YAAY,EAAU,CAAC;QACjD,oBAAe,GAAG,IAAI,YAAY,EAAU,CAAC;QAEvD,2BAAsB,GAAG,IAAI,CAAC;QAC9B,kBAAa,GAAoB,MAAM,CAAC;IAEK,CAAC;IAE9C,WAAW;QACT,IAAI,IAAI,CAAC,oBAAoB,EAAE,CAAC;YAC9B,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC;YACzD,mEAAmE;YACnE,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC;YAChE,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;QAC3B,CAAC;IACH,CAAC;IAED,mBAAmB;QACjB,IAAI,CAAC,IAAI,CAAC,oBAAoB;YAAE,OAAO,IAAI,CAAC;QAE5C,mCAAmC;QACnC,IAAI,IAAI,CAAC;QACT,IAAI,IAAI,CAAC,oBAAoB,CAAC,IAAI,YAAY,oBAAoB,EAAE,CAAC;YACnE,0DAA0D;YAC1D,IAAI,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;QACjD,CAAC;aAAM,CAAC;YACN,IAAI,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC;QACxC,CAAC;QAED,yDAAyD;QACzD,MAAM,YAAY,GAAqB;YACrC,iBAAiB,EAAE,IAAI;YACvB,QAAQ,EAAE,GAAG;YACb,KAAK,EAAE,KAAK;SACb,CAAC;QACF,MAAM,UAAU,GAAG,kBAAkB,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;QAE1D,OAAO,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IAC7C,CAAC;IAED;;OAEG;IACH,IAAI,mBAAmB;QACrB,IAAI,CAAC,IAAI,CAAC,oBAAoB,IAAI,IAAI,CAAC,oBAAoB,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YAC5E,OAAO,KAAK,CAAC;QACf,CAAC;QAED,MAAM,QAAQ,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC;QAChD,IAAI,QAAQ,IAAI,CAAC,QAAQ,CAAC,cAAc,EAAE,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC;eAC3C,QAAQ,CAAC,YAAY,EAAE,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC;YAC1D,OAAO,QAAQ,CAAC,cAAc,KAAK,QAAQ,CAAC,YAAY,CAAC;QAC3D,CAAC;aAAM,CAAC;YACN,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED;;OAEG;IACH,IAAI,wBAAwB;QAC1B,IAAI,CAAC,IAAI,CAAC,oBAAoB,IAAI,IAAI,CAAC,oBAAoB,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YAC5E,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,QAAQ,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC;QAChD,IAAI,CAAC,QAAQ,EAAE,cAAc;YAAE,OAAO,IAAI,CAAC;QAE3C,IAAI,CAAC;YACH,0EAA0E;YAC1E,IAAI,WAAW,GAAG,QAAQ,CAAC,cAAc,CAAC;YAC1C,IAAI,CAAC;gBACH,qDAAqD;gBACrD,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;YACpD,CAAC;YAAC,MAAM,CAAC;gBACP,uCAAuC;gBACvC,WAAW,GAAG,QAAQ,CAAC,cAAc,CAAC;YACxC,CAAC;YAED,MAAM,YAAY,GAAqB;gBACrC,iBAAiB,EAAE,IAAI;gBACvB,QAAQ,EAAE,GAAG;gBACb,KAAK,EAAE,KAAK;aACb,CAAC;YACF,OAAO,kBAAkB,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;QACvD,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED;;OAEG;IACH,IAAI,sBAAsB;QACxB,IAAI,CAAC,IAAI,CAAC,oBAAoB,IAAI,IAAI,CAAC,oBAAoB,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YAC5E,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,QAAQ,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC;QAChD,IAAI,CAAC,QAAQ,EAAE,YAAY;YAAE,OAAO,IAAI,CAAC;QAEzC,IAAI,CAAC;YACH,wEAAwE;YACxE,IAAI,WAAW,GAAG,QAAQ,CAAC,YAAY,CAAC;YACxC,IAAI,CAAC;gBACH,mDAAmD;gBACnD,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;YAClD,CAAC;YAAC,MAAM,CAAC;gBACP,uCAAuC;gBACvC,WAAW,GAAG,QAAQ,CAAC,YAAY,CAAC;YACtC,CAAC;YAED,MAAM,YAAY,GAAqB;gBACrC,iBAAiB,EAAE,IAAI;gBACvB,QAAQ,EAAE,GAAG;gBACb,KAAK,EAAE,KAAK;aACb,CAAC;YACF,OAAO,kBAAkB,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;QACvD,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED,YAAY;QACV,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;IACzB,CAAC;IAED,qBAAqB,CAAC,KAAa;QACjC,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACvC,CAAC;IAED,iBAAiB;QACf,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE,CAAC,CAAC;IACxD,CAAC;8FAxIU,6BAA6B;oEAA7B,6BAA6B;YCV1C,gFAA2D;;YAA5B,+CAA0B;;;iFDU5C,6BAA6B;cALzC,SAAS;2BACE,6BAA6B;kDAK9B,oBAAoB;kBAA5B,KAAK;YACI,UAAU;kBAAnB,MAAM;YACG,mBAAmB;kBAA5B,MAAM;YACG,eAAe;kBAAxB,MAAM;;kFAJI,6BAA6B"}
@@ -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
- constructor();
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,EAAkC,MAAM,MAAM,CAAC;AAG3E,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,wBAAwB,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;;AAEpI,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;IAC1D,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,OAAO,CAAC,aAAa,CAAmD;IACxE,OAAO,CAAC,eAAe,CAA+C;IACtE,OAAO,CAAC,kBAAkB,CAAuD;IACjF,OAAO,CAAC,kBAAkB,CAAgD;IAE1E,OAAO,CAAC,SAAS,CAAiC;IAGlD,OAAO,CAAC,iBAAiB,CAGpB;IAGL,MAAM,qCAAqC;IAC3C,QAAQ,iCAAuC;IAC/C,WAAW,yCAA0C;IACrD,WAAW,kCAA0C;IAErD,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;;IAiBzC,QAAQ;IAUR,WAAW;IAMX,OAAO,CAAC,gBAAgB;IAWlB,QAAQ;YAmBA,mBAAmB;IAkGjC,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;IA6ElC,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;yCAjYpC,2BAA2B;2CAA3B,2BAA2B;CAqYvC"}
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"}