@memberjunction/ng-flow-editor 0.0.1 → 4.1.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 (58) hide show
  1. package/README.md +151 -43
  2. package/dist/lib/agent-editor/agent-flow-transformer.service.d.ts +83 -0
  3. package/dist/lib/agent-editor/agent-flow-transformer.service.d.ts.map +1 -0
  4. package/dist/lib/agent-editor/agent-flow-transformer.service.js +447 -0
  5. package/dist/lib/agent-editor/agent-flow-transformer.service.js.map +1 -0
  6. package/dist/lib/agent-editor/agent-properties-panel.component.d.ts +92 -0
  7. package/dist/lib/agent-editor/agent-properties-panel.component.d.ts.map +1 -0
  8. package/dist/lib/agent-editor/agent-properties-panel.component.js +1139 -0
  9. package/dist/lib/agent-editor/agent-properties-panel.component.js.map +1 -0
  10. package/dist/lib/agent-editor/agent-step-list.component.d.ts +17 -0
  11. package/dist/lib/agent-editor/agent-step-list.component.d.ts.map +1 -0
  12. package/dist/lib/agent-editor/agent-step-list.component.js +278 -0
  13. package/dist/lib/agent-editor/agent-step-list.component.js.map +1 -0
  14. package/dist/lib/agent-editor/flow-agent-editor.component.d.ts +134 -0
  15. package/dist/lib/agent-editor/flow-agent-editor.component.d.ts.map +1 -0
  16. package/dist/lib/agent-editor/flow-agent-editor.component.js +999 -0
  17. package/dist/lib/agent-editor/flow-agent-editor.component.js.map +1 -0
  18. package/dist/lib/components/flow-editor.component.d.ts +169 -0
  19. package/dist/lib/components/flow-editor.component.d.ts.map +1 -0
  20. package/dist/lib/components/flow-editor.component.js +1090 -0
  21. package/dist/lib/components/flow-editor.component.js.map +1 -0
  22. package/dist/lib/components/flow-node.component.d.ts +50 -0
  23. package/dist/lib/components/flow-node.component.d.ts.map +1 -0
  24. package/dist/lib/components/flow-node.component.js +358 -0
  25. package/dist/lib/components/flow-node.component.js.map +1 -0
  26. package/dist/lib/components/flow-palette.component.d.ts +17 -0
  27. package/dist/lib/components/flow-palette.component.d.ts.map +1 -0
  28. package/dist/lib/components/flow-palette.component.js +110 -0
  29. package/dist/lib/components/flow-palette.component.js.map +1 -0
  30. package/dist/lib/components/flow-status-bar.component.d.ts +13 -0
  31. package/dist/lib/components/flow-status-bar.component.d.ts.map +1 -0
  32. package/dist/lib/components/flow-status-bar.component.js +81 -0
  33. package/dist/lib/components/flow-status-bar.component.js.map +1 -0
  34. package/dist/lib/components/flow-toolbar.component.d.ts +25 -0
  35. package/dist/lib/components/flow-toolbar.component.d.ts.map +1 -0
  36. package/dist/lib/components/flow-toolbar.component.js +192 -0
  37. package/dist/lib/components/flow-toolbar.component.js.map +1 -0
  38. package/dist/lib/flow-editor.module.d.ts +19 -0
  39. package/dist/lib/flow-editor.module.d.ts.map +1 -0
  40. package/dist/lib/flow-editor.module.js +84 -0
  41. package/dist/lib/flow-editor.module.js.map +1 -0
  42. package/dist/lib/interfaces/flow-types.d.ts +153 -0
  43. package/dist/lib/interfaces/flow-types.d.ts.map +1 -0
  44. package/dist/lib/interfaces/flow-types.js +6 -0
  45. package/dist/lib/interfaces/flow-types.js.map +1 -0
  46. package/dist/lib/services/flow-layout.service.d.ts +21 -0
  47. package/dist/lib/services/flow-layout.service.d.ts.map +1 -0
  48. package/dist/lib/services/flow-layout.service.js +76 -0
  49. package/dist/lib/services/flow-layout.service.js.map +1 -0
  50. package/dist/lib/services/flow-state.service.d.ts +37 -0
  51. package/dist/lib/services/flow-state.service.d.ts.map +1 -0
  52. package/dist/lib/services/flow-state.service.js +89 -0
  53. package/dist/lib/services/flow-state.service.js.map +1 -0
  54. package/dist/public-api.d.ts +14 -0
  55. package/dist/public-api.d.ts.map +1 -0
  56. package/dist/public-api.js +22 -0
  57. package/dist/public-api.js.map +1 -0
  58. package/package.json +51 -6
@@ -0,0 +1,1139 @@
1
+ import { Component, Input, Output, EventEmitter, ViewEncapsulation, ChangeDetectionStrategy } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ import * as i1 from "@angular/common";
4
+ import * as i2 from "@angular/forms";
5
+ import * as i3 from "@memberjunction/ng-code-editor";
6
+ function AgentPropertiesPanelComponent_Conditional_1_Template(rf, ctx) { if (rf & 1) {
7
+ i0.ɵɵelementStart(0, "div", 1);
8
+ i0.ɵɵelement(1, "i", 2);
9
+ i0.ɵɵelementStart(2, "p");
10
+ i0.ɵɵtext(3, "Select a step or connection to view its properties");
11
+ i0.ɵɵelementEnd()();
12
+ } }
13
+ function AgentPropertiesPanelComponent_Conditional_2_Conditional_18_Template(rf, ctx) { if (rf & 1) {
14
+ i0.ɵɵelementStart(0, "span", 17);
15
+ i0.ɵɵtext(1, "Start");
16
+ i0.ɵɵelementEnd();
17
+ } }
18
+ function AgentPropertiesPanelComponent_Conditional_2_Conditional_25_Conditional_4_Template(rf, ctx) { if (rf & 1) {
19
+ const _r3 = i0.ɵɵgetCurrentView();
20
+ i0.ɵɵelementStart(0, "input", 30);
21
+ i0.ɵɵlistener("input", function AgentPropertiesPanelComponent_Conditional_2_Conditional_25_Conditional_4_Template_input_input_0_listener($event) { i0.ɵɵrestoreView(_r3); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.OnNameChange(ctx_r1.InputValue($event))); });
22
+ i0.ɵɵelementEnd();
23
+ } if (rf & 2) {
24
+ const ctx_r1 = i0.ɵɵnextContext(3);
25
+ i0.ɵɵproperty("value", ctx_r1.Step.Name);
26
+ } }
27
+ function AgentPropertiesPanelComponent_Conditional_2_Conditional_25_Conditional_5_Template(rf, ctx) { if (rf & 1) {
28
+ i0.ɵɵelementStart(0, "div", 26);
29
+ i0.ɵɵtext(1);
30
+ i0.ɵɵelementEnd();
31
+ } if (rf & 2) {
32
+ const ctx_r1 = i0.ɵɵnextContext(3);
33
+ i0.ɵɵadvance();
34
+ i0.ɵɵtextInterpolate(ctx_r1.Step.Name);
35
+ } }
36
+ function AgentPropertiesPanelComponent_Conditional_2_Conditional_25_Conditional_9_Template(rf, ctx) { if (rf & 1) {
37
+ const _r4 = i0.ɵɵgetCurrentView();
38
+ i0.ɵɵelementStart(0, "textarea", 31);
39
+ i0.ɵɵlistener("input", function AgentPropertiesPanelComponent_Conditional_2_Conditional_25_Conditional_9_Template_textarea_input_0_listener($event) { i0.ɵɵrestoreView(_r4); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.OnDescriptionChange(ctx_r1.InputValue($event))); });
40
+ i0.ɵɵelementEnd();
41
+ } if (rf & 2) {
42
+ const ctx_r1 = i0.ɵɵnextContext(3);
43
+ i0.ɵɵproperty("value", ctx_r1.Step.Description || "");
44
+ } }
45
+ function AgentPropertiesPanelComponent_Conditional_2_Conditional_25_Conditional_10_Template(rf, ctx) { if (rf & 1) {
46
+ i0.ɵɵelementStart(0, "div", 26);
47
+ i0.ɵɵtext(1);
48
+ i0.ɵɵelementEnd();
49
+ } if (rf & 2) {
50
+ const ctx_r1 = i0.ɵɵnextContext(3);
51
+ i0.ɵɵadvance();
52
+ i0.ɵɵtextInterpolate1(" ", ctx_r1.Step.Description || "\u2014", " ");
53
+ } }
54
+ function AgentPropertiesPanelComponent_Conditional_2_Conditional_25_Conditional_14_Template(rf, ctx) { if (rf & 1) {
55
+ const _r5 = i0.ɵɵgetCurrentView();
56
+ i0.ɵɵelementStart(0, "select", 32);
57
+ i0.ɵɵlistener("change", function AgentPropertiesPanelComponent_Conditional_2_Conditional_25_Conditional_14_Template_select_change_0_listener($event) { i0.ɵɵrestoreView(_r5); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.OnStatusChange(ctx_r1.InputValue($event))); });
58
+ i0.ɵɵelementStart(1, "option", 33);
59
+ i0.ɵɵtext(2, "Active");
60
+ i0.ɵɵelementEnd();
61
+ i0.ɵɵelementStart(3, "option", 34);
62
+ i0.ɵɵtext(4, "Disabled");
63
+ i0.ɵɵelementEnd();
64
+ i0.ɵɵelementStart(5, "option", 35);
65
+ i0.ɵɵtext(6, "Pending");
66
+ i0.ɵɵelementEnd()();
67
+ } if (rf & 2) {
68
+ const ctx_r1 = i0.ɵɵnextContext(3);
69
+ i0.ɵɵproperty("value", ctx_r1.Step.Status);
70
+ } }
71
+ function AgentPropertiesPanelComponent_Conditional_2_Conditional_25_Conditional_15_Template(rf, ctx) { if (rf & 1) {
72
+ i0.ɵɵelementStart(0, "div", 26);
73
+ i0.ɵɵelement(1, "span", 15);
74
+ i0.ɵɵtext(2);
75
+ i0.ɵɵelementEnd();
76
+ } if (rf & 2) {
77
+ const ctx_r1 = i0.ɵɵnextContext(3);
78
+ i0.ɵɵadvance();
79
+ i0.ɵɵstyleProp("background", ctx_r1.statusColor);
80
+ i0.ɵɵadvance();
81
+ i0.ɵɵtextInterpolate1(" ", ctx_r1.Step.Status, " ");
82
+ } }
83
+ function AgentPropertiesPanelComponent_Conditional_2_Conditional_25_Conditional_16_Template(rf, ctx) { if (rf & 1) {
84
+ const _r6 = i0.ɵɵgetCurrentView();
85
+ i0.ɵɵelementStart(0, "div", 29)(1, "label", 36)(2, "input", 37);
86
+ i0.ɵɵlistener("change", function AgentPropertiesPanelComponent_Conditional_2_Conditional_25_Conditional_16_Template_input_change_2_listener($event) { i0.ɵɵrestoreView(_r6); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.OnStartingStepChange(ctx_r1.CheckedValue($event))); });
87
+ i0.ɵɵelementEnd();
88
+ i0.ɵɵtext(3, " Starting Step ");
89
+ i0.ɵɵelementEnd()();
90
+ } if (rf & 2) {
91
+ const ctx_r1 = i0.ɵɵnextContext(3);
92
+ i0.ɵɵadvance(2);
93
+ i0.ɵɵproperty("checked", ctx_r1.Step.StartingStep);
94
+ } }
95
+ function AgentPropertiesPanelComponent_Conditional_2_Conditional_25_Conditional_17_Template(rf, ctx) { if (rf & 1) {
96
+ i0.ɵɵelementStart(0, "div", 24)(1, "label");
97
+ i0.ɵɵtext(2, "Starting Step");
98
+ i0.ɵɵelementEnd();
99
+ i0.ɵɵelementStart(3, "div", 26)(4, "span", 17);
100
+ i0.ɵɵtext(5, "Yes \u2014 this is the entry point");
101
+ i0.ɵɵelementEnd()()();
102
+ } }
103
+ function AgentPropertiesPanelComponent_Conditional_2_Conditional_25_Template(rf, ctx) { if (rf & 1) {
104
+ i0.ɵɵelementStart(0, "div", 22)(1, "div", 24)(2, "label");
105
+ i0.ɵɵtext(3, "Name");
106
+ i0.ɵɵelementEnd();
107
+ i0.ɵɵconditionalCreate(4, AgentPropertiesPanelComponent_Conditional_2_Conditional_25_Conditional_4_Template, 1, 1, "input", 25);
108
+ i0.ɵɵconditionalCreate(5, AgentPropertiesPanelComponent_Conditional_2_Conditional_25_Conditional_5_Template, 2, 1, "div", 26);
109
+ i0.ɵɵelementEnd();
110
+ i0.ɵɵelementStart(6, "div", 24)(7, "label");
111
+ i0.ɵɵtext(8, "Description");
112
+ i0.ɵɵelementEnd();
113
+ i0.ɵɵconditionalCreate(9, AgentPropertiesPanelComponent_Conditional_2_Conditional_25_Conditional_9_Template, 1, 1, "textarea", 27);
114
+ i0.ɵɵconditionalCreate(10, AgentPropertiesPanelComponent_Conditional_2_Conditional_25_Conditional_10_Template, 2, 1, "div", 26);
115
+ i0.ɵɵelementEnd();
116
+ i0.ɵɵelementStart(11, "div", 24)(12, "label");
117
+ i0.ɵɵtext(13, "Status");
118
+ i0.ɵɵelementEnd();
119
+ i0.ɵɵconditionalCreate(14, AgentPropertiesPanelComponent_Conditional_2_Conditional_25_Conditional_14_Template, 7, 1, "select", 28);
120
+ i0.ɵɵconditionalCreate(15, AgentPropertiesPanelComponent_Conditional_2_Conditional_25_Conditional_15_Template, 3, 3, "div", 26);
121
+ i0.ɵɵelementEnd();
122
+ i0.ɵɵconditionalCreate(16, AgentPropertiesPanelComponent_Conditional_2_Conditional_25_Conditional_16_Template, 4, 1, "div", 29);
123
+ i0.ɵɵconditionalCreate(17, AgentPropertiesPanelComponent_Conditional_2_Conditional_25_Conditional_17_Template, 6, 0, "div", 24);
124
+ i0.ɵɵelementEnd();
125
+ } if (rf & 2) {
126
+ const ctx_r1 = i0.ɵɵnextContext(2);
127
+ i0.ɵɵadvance(4);
128
+ i0.ɵɵconditional(!ctx_r1.ReadOnly ? 4 : -1);
129
+ i0.ɵɵadvance();
130
+ i0.ɵɵconditional(ctx_r1.ReadOnly ? 5 : -1);
131
+ i0.ɵɵadvance(4);
132
+ i0.ɵɵconditional(!ctx_r1.ReadOnly ? 9 : -1);
133
+ i0.ɵɵadvance();
134
+ i0.ɵɵconditional(ctx_r1.ReadOnly ? 10 : -1);
135
+ i0.ɵɵadvance(4);
136
+ i0.ɵɵconditional(!ctx_r1.ReadOnly ? 14 : -1);
137
+ i0.ɵɵadvance();
138
+ i0.ɵɵconditional(ctx_r1.ReadOnly ? 15 : -1);
139
+ i0.ɵɵadvance();
140
+ i0.ɵɵconditional(!ctx_r1.ReadOnly ? 16 : -1);
141
+ i0.ɵɵadvance();
142
+ i0.ɵɵconditional(ctx_r1.ReadOnly && ctx_r1.Step.StartingStep ? 17 : -1);
143
+ } }
144
+ function AgentPropertiesPanelComponent_Conditional_2_Conditional_31_Conditional_1_Conditional_3_Template(rf, ctx) { if (rf & 1) {
145
+ const _r7 = i0.ɵɵgetCurrentView();
146
+ i0.ɵɵelementStart(0, "select", 32);
147
+ i0.ɵɵlistener("change", function AgentPropertiesPanelComponent_Conditional_2_Conditional_31_Conditional_1_Conditional_3_Template_select_change_0_listener($event) { i0.ɵɵrestoreView(_r7); const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.OnLoopBodyTypeChange(ctx_r1.InputValue($event))); });
148
+ i0.ɵɵelementStart(1, "option", 38);
149
+ i0.ɵɵtext(2, "Action");
150
+ i0.ɵɵelementEnd();
151
+ i0.ɵɵelementStart(3, "option", 39);
152
+ i0.ɵɵtext(4, "Prompt");
153
+ i0.ɵɵelementEnd();
154
+ i0.ɵɵelementStart(5, "option", 40);
155
+ i0.ɵɵtext(6, "Sub-Agent");
156
+ i0.ɵɵelementEnd()();
157
+ } if (rf & 2) {
158
+ const ctx_r1 = i0.ɵɵnextContext(4);
159
+ i0.ɵɵproperty("value", ctx_r1.Step.LoopBodyType || "Action");
160
+ } }
161
+ function AgentPropertiesPanelComponent_Conditional_2_Conditional_31_Conditional_1_Conditional_4_Template(rf, ctx) { if (rf & 1) {
162
+ i0.ɵɵelementStart(0, "div", 26);
163
+ i0.ɵɵtext(1);
164
+ i0.ɵɵelementEnd();
165
+ } if (rf & 2) {
166
+ const ctx_r1 = i0.ɵɵnextContext(4);
167
+ i0.ɵɵadvance();
168
+ i0.ɵɵtextInterpolate1(" ", ctx_r1.Step.LoopBodyType || "Action", " ");
169
+ } }
170
+ function AgentPropertiesPanelComponent_Conditional_2_Conditional_31_Conditional_1_Template(rf, ctx) { if (rf & 1) {
171
+ i0.ɵɵelementStart(0, "div", 24)(1, "label");
172
+ i0.ɵɵtext(2, "Loop Body Type");
173
+ i0.ɵɵelementEnd();
174
+ i0.ɵɵconditionalCreate(3, AgentPropertiesPanelComponent_Conditional_2_Conditional_31_Conditional_1_Conditional_3_Template, 7, 1, "select", 28);
175
+ i0.ɵɵconditionalCreate(4, AgentPropertiesPanelComponent_Conditional_2_Conditional_31_Conditional_1_Conditional_4_Template, 2, 1, "div", 26);
176
+ i0.ɵɵelementEnd();
177
+ } if (rf & 2) {
178
+ const ctx_r1 = i0.ɵɵnextContext(3);
179
+ i0.ɵɵadvance(3);
180
+ i0.ɵɵconditional(!ctx_r1.ReadOnly ? 3 : -1);
181
+ i0.ɵɵadvance();
182
+ i0.ɵɵconditional(ctx_r1.ReadOnly ? 4 : -1);
183
+ } }
184
+ function AgentPropertiesPanelComponent_Conditional_2_Conditional_31_Conditional_2_Conditional_3_For_4_Template(rf, ctx) { if (rf & 1) {
185
+ i0.ɵɵelementStart(0, "option", 42);
186
+ i0.ɵɵtext(1);
187
+ i0.ɵɵelementEnd();
188
+ } if (rf & 2) {
189
+ const action_r9 = ctx.$implicit;
190
+ i0.ɵɵproperty("value", action_r9.ID);
191
+ i0.ɵɵadvance();
192
+ i0.ɵɵtextInterpolate(action_r9.Name);
193
+ } }
194
+ function AgentPropertiesPanelComponent_Conditional_2_Conditional_31_Conditional_2_Conditional_3_Template(rf, ctx) { if (rf & 1) {
195
+ const _r8 = i0.ɵɵgetCurrentView();
196
+ i0.ɵɵelementStart(0, "select", 32);
197
+ i0.ɵɵlistener("change", function AgentPropertiesPanelComponent_Conditional_2_Conditional_31_Conditional_2_Conditional_3_Template_select_change_0_listener($event) { i0.ɵɵrestoreView(_r8); const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.OnActionChange(ctx_r1.InputValue($event))); });
198
+ i0.ɵɵelementStart(1, "option", 41);
199
+ i0.ɵɵtext(2, "-- Select Action --");
200
+ i0.ɵɵelementEnd();
201
+ i0.ɵɵrepeaterCreate(3, AgentPropertiesPanelComponent_Conditional_2_Conditional_31_Conditional_2_Conditional_3_For_4_Template, 2, 2, "option", 42, i0.ɵɵrepeaterTrackByIdentity);
202
+ i0.ɵɵelementEnd();
203
+ } if (rf & 2) {
204
+ const ctx_r1 = i0.ɵɵnextContext(4);
205
+ i0.ɵɵproperty("value", ctx_r1.Step.ActionID || "");
206
+ i0.ɵɵadvance(3);
207
+ i0.ɵɵrepeater(ctx_r1.Actions);
208
+ } }
209
+ function AgentPropertiesPanelComponent_Conditional_2_Conditional_31_Conditional_2_Conditional_4_Template(rf, ctx) { if (rf & 1) {
210
+ i0.ɵɵelementStart(0, "div", 26);
211
+ i0.ɵɵtext(1);
212
+ i0.ɵɵelementEnd();
213
+ } if (rf & 2) {
214
+ const ctx_r1 = i0.ɵɵnextContext(4);
215
+ i0.ɵɵadvance();
216
+ i0.ɵɵtextInterpolate(ctx_r1.selectedActionName);
217
+ } }
218
+ function AgentPropertiesPanelComponent_Conditional_2_Conditional_31_Conditional_2_Template(rf, ctx) { if (rf & 1) {
219
+ i0.ɵɵelementStart(0, "div", 24)(1, "label");
220
+ i0.ɵɵtext(2, "Action");
221
+ i0.ɵɵelementEnd();
222
+ i0.ɵɵconditionalCreate(3, AgentPropertiesPanelComponent_Conditional_2_Conditional_31_Conditional_2_Conditional_3_Template, 5, 1, "select", 28);
223
+ i0.ɵɵconditionalCreate(4, AgentPropertiesPanelComponent_Conditional_2_Conditional_31_Conditional_2_Conditional_4_Template, 2, 1, "div", 26);
224
+ i0.ɵɵelementEnd();
225
+ } if (rf & 2) {
226
+ const ctx_r1 = i0.ɵɵnextContext(3);
227
+ i0.ɵɵadvance(3);
228
+ i0.ɵɵconditional(!ctx_r1.ReadOnly ? 3 : -1);
229
+ i0.ɵɵadvance();
230
+ i0.ɵɵconditional(ctx_r1.ReadOnly ? 4 : -1);
231
+ } }
232
+ function AgentPropertiesPanelComponent_Conditional_2_Conditional_31_Conditional_3_Conditional_3_For_4_Template(rf, ctx) { if (rf & 1) {
233
+ i0.ɵɵelementStart(0, "option", 42);
234
+ i0.ɵɵtext(1);
235
+ i0.ɵɵelementEnd();
236
+ } if (rf & 2) {
237
+ const prompt_r11 = ctx.$implicit;
238
+ i0.ɵɵproperty("value", prompt_r11.ID);
239
+ i0.ɵɵadvance();
240
+ i0.ɵɵtextInterpolate(prompt_r11.Name);
241
+ } }
242
+ function AgentPropertiesPanelComponent_Conditional_2_Conditional_31_Conditional_3_Conditional_3_Template(rf, ctx) { if (rf & 1) {
243
+ const _r10 = i0.ɵɵgetCurrentView();
244
+ i0.ɵɵelementStart(0, "select", 32);
245
+ i0.ɵɵlistener("change", function AgentPropertiesPanelComponent_Conditional_2_Conditional_31_Conditional_3_Conditional_3_Template_select_change_0_listener($event) { i0.ɵɵrestoreView(_r10); const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.OnPromptChange(ctx_r1.InputValue($event))); });
246
+ i0.ɵɵelementStart(1, "option", 41);
247
+ i0.ɵɵtext(2, "-- Select Prompt --");
248
+ i0.ɵɵelementEnd();
249
+ i0.ɵɵrepeaterCreate(3, AgentPropertiesPanelComponent_Conditional_2_Conditional_31_Conditional_3_Conditional_3_For_4_Template, 2, 2, "option", 42, i0.ɵɵrepeaterTrackByIdentity);
250
+ i0.ɵɵelementEnd();
251
+ } if (rf & 2) {
252
+ const ctx_r1 = i0.ɵɵnextContext(4);
253
+ i0.ɵɵproperty("value", ctx_r1.Step.PromptID || "");
254
+ i0.ɵɵadvance(3);
255
+ i0.ɵɵrepeater(ctx_r1.Prompts);
256
+ } }
257
+ function AgentPropertiesPanelComponent_Conditional_2_Conditional_31_Conditional_3_Conditional_4_Template(rf, ctx) { if (rf & 1) {
258
+ i0.ɵɵelementStart(0, "div", 26);
259
+ i0.ɵɵtext(1);
260
+ i0.ɵɵelementEnd();
261
+ } if (rf & 2) {
262
+ const ctx_r1 = i0.ɵɵnextContext(4);
263
+ i0.ɵɵadvance();
264
+ i0.ɵɵtextInterpolate(ctx_r1.selectedPromptName);
265
+ } }
266
+ function AgentPropertiesPanelComponent_Conditional_2_Conditional_31_Conditional_3_Template(rf, ctx) { if (rf & 1) {
267
+ i0.ɵɵelementStart(0, "div", 24)(1, "label");
268
+ i0.ɵɵtext(2, "Prompt");
269
+ i0.ɵɵelementEnd();
270
+ i0.ɵɵconditionalCreate(3, AgentPropertiesPanelComponent_Conditional_2_Conditional_31_Conditional_3_Conditional_3_Template, 5, 1, "select", 28);
271
+ i0.ɵɵconditionalCreate(4, AgentPropertiesPanelComponent_Conditional_2_Conditional_31_Conditional_3_Conditional_4_Template, 2, 1, "div", 26);
272
+ i0.ɵɵelementEnd();
273
+ } if (rf & 2) {
274
+ const ctx_r1 = i0.ɵɵnextContext(3);
275
+ i0.ɵɵadvance(3);
276
+ i0.ɵɵconditional(!ctx_r1.ReadOnly ? 3 : -1);
277
+ i0.ɵɵadvance();
278
+ i0.ɵɵconditional(ctx_r1.ReadOnly ? 4 : -1);
279
+ } }
280
+ function AgentPropertiesPanelComponent_Conditional_2_Conditional_31_Conditional_4_Conditional_3_For_4_Template(rf, ctx) { if (rf & 1) {
281
+ i0.ɵɵelementStart(0, "option", 42);
282
+ i0.ɵɵtext(1);
283
+ i0.ɵɵelementEnd();
284
+ } if (rf & 2) {
285
+ const agent_r13 = ctx.$implicit;
286
+ i0.ɵɵproperty("value", agent_r13.ID);
287
+ i0.ɵɵadvance();
288
+ i0.ɵɵtextInterpolate(agent_r13.Name);
289
+ } }
290
+ function AgentPropertiesPanelComponent_Conditional_2_Conditional_31_Conditional_4_Conditional_3_Template(rf, ctx) { if (rf & 1) {
291
+ const _r12 = i0.ɵɵgetCurrentView();
292
+ i0.ɵɵelementStart(0, "select", 32);
293
+ i0.ɵɵlistener("change", function AgentPropertiesPanelComponent_Conditional_2_Conditional_31_Conditional_4_Conditional_3_Template_select_change_0_listener($event) { i0.ɵɵrestoreView(_r12); const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.OnSubAgentChange(ctx_r1.InputValue($event))); });
294
+ i0.ɵɵelementStart(1, "option", 41);
295
+ i0.ɵɵtext(2, "-- Select Agent --");
296
+ i0.ɵɵelementEnd();
297
+ i0.ɵɵrepeaterCreate(3, AgentPropertiesPanelComponent_Conditional_2_Conditional_31_Conditional_4_Conditional_3_For_4_Template, 2, 2, "option", 42, i0.ɵɵrepeaterTrackByIdentity);
298
+ i0.ɵɵelementEnd();
299
+ } if (rf & 2) {
300
+ const ctx_r1 = i0.ɵɵnextContext(4);
301
+ i0.ɵɵproperty("value", ctx_r1.Step.SubAgentID || "");
302
+ i0.ɵɵadvance(3);
303
+ i0.ɵɵrepeater(ctx_r1.Agents);
304
+ } }
305
+ function AgentPropertiesPanelComponent_Conditional_2_Conditional_31_Conditional_4_Conditional_4_Template(rf, ctx) { if (rf & 1) {
306
+ i0.ɵɵelementStart(0, "div", 26);
307
+ i0.ɵɵtext(1);
308
+ i0.ɵɵelementEnd();
309
+ } if (rf & 2) {
310
+ const ctx_r1 = i0.ɵɵnextContext(4);
311
+ i0.ɵɵadvance();
312
+ i0.ɵɵtextInterpolate(ctx_r1.selectedAgentName);
313
+ } }
314
+ function AgentPropertiesPanelComponent_Conditional_2_Conditional_31_Conditional_4_Template(rf, ctx) { if (rf & 1) {
315
+ i0.ɵɵelementStart(0, "div", 24)(1, "label");
316
+ i0.ɵɵtext(2, "Sub-Agent");
317
+ i0.ɵɵelementEnd();
318
+ i0.ɵɵconditionalCreate(3, AgentPropertiesPanelComponent_Conditional_2_Conditional_31_Conditional_4_Conditional_3_Template, 5, 1, "select", 28);
319
+ i0.ɵɵconditionalCreate(4, AgentPropertiesPanelComponent_Conditional_2_Conditional_31_Conditional_4_Conditional_4_Template, 2, 1, "div", 26);
320
+ i0.ɵɵelementEnd();
321
+ } if (rf & 2) {
322
+ const ctx_r1 = i0.ɵɵnextContext(3);
323
+ i0.ɵɵadvance(3);
324
+ i0.ɵɵconditional(!ctx_r1.ReadOnly ? 3 : -1);
325
+ i0.ɵɵadvance();
326
+ i0.ɵɵconditional(ctx_r1.ReadOnly ? 4 : -1);
327
+ } }
328
+ function AgentPropertiesPanelComponent_Conditional_2_Conditional_31_Conditional_5_Template(rf, ctx) { if (rf & 1) {
329
+ const _r14 = i0.ɵɵgetCurrentView();
330
+ i0.ɵɵelementStart(0, "div", 24)(1, "label");
331
+ i0.ɵɵtext(2, "Loop Configuration");
332
+ i0.ɵɵelementEnd();
333
+ i0.ɵɵelementStart(3, "mj-code-editor", 43);
334
+ i0.ɵɵlistener("change", function AgentPropertiesPanelComponent_Conditional_2_Conditional_31_Conditional_5_Template_mj_code_editor_change_3_listener($event) { i0.ɵɵrestoreView(_r14); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.OnConfigurationChange($event)); });
335
+ i0.ɵɵelementEnd()();
336
+ } if (rf & 2) {
337
+ const ctx_r1 = i0.ɵɵnextContext(3);
338
+ i0.ɵɵadvance(3);
339
+ i0.ɵɵproperty("value", ctx_r1.FormatJsonDisplay(ctx_r1.Step.Configuration))("readonly", ctx_r1.ReadOnly)("lineWrapping", true);
340
+ } }
341
+ function AgentPropertiesPanelComponent_Conditional_2_Conditional_31_Template(rf, ctx) { if (rf & 1) {
342
+ i0.ɵɵelementStart(0, "div", 22);
343
+ i0.ɵɵconditionalCreate(1, AgentPropertiesPanelComponent_Conditional_2_Conditional_31_Conditional_1_Template, 5, 2, "div", 24);
344
+ i0.ɵɵconditionalCreate(2, AgentPropertiesPanelComponent_Conditional_2_Conditional_31_Conditional_2_Template, 5, 2, "div", 24);
345
+ i0.ɵɵconditionalCreate(3, AgentPropertiesPanelComponent_Conditional_2_Conditional_31_Conditional_3_Template, 5, 2, "div", 24);
346
+ i0.ɵɵconditionalCreate(4, AgentPropertiesPanelComponent_Conditional_2_Conditional_31_Conditional_4_Template, 5, 2, "div", 24);
347
+ i0.ɵɵconditionalCreate(5, AgentPropertiesPanelComponent_Conditional_2_Conditional_31_Conditional_5_Template, 4, 3, "div", 24);
348
+ i0.ɵɵelementEnd();
349
+ } if (rf & 2) {
350
+ const ctx_r1 = i0.ɵɵnextContext(2);
351
+ i0.ɵɵadvance();
352
+ i0.ɵɵconditional(ctx_r1.showLoopConfig ? 1 : -1);
353
+ i0.ɵɵadvance();
354
+ i0.ɵɵconditional(ctx_r1.showActionPicker ? 2 : -1);
355
+ i0.ɵɵadvance();
356
+ i0.ɵɵconditional(ctx_r1.showPromptPicker ? 3 : -1);
357
+ i0.ɵɵadvance();
358
+ i0.ɵɵconditional(ctx_r1.showAgentPicker ? 4 : -1);
359
+ i0.ɵɵadvance();
360
+ i0.ɵɵconditional(ctx_r1.showLoopConfig ? 5 : -1);
361
+ } }
362
+ function AgentPropertiesPanelComponent_Conditional_2_Conditional_32_Conditional_5_Template(rf, ctx) { if (rf & 1) {
363
+ const _r16 = i0.ɵɵgetCurrentView();
364
+ i0.ɵɵelementStart(0, "div", 22)(1, "div", 24)(2, "label");
365
+ i0.ɵɵtext(3, "Input Mapping");
366
+ i0.ɵɵelementEnd();
367
+ i0.ɵɵelementStart(4, "mj-code-editor", 44);
368
+ i0.ɵɵlistener("change", function AgentPropertiesPanelComponent_Conditional_2_Conditional_32_Conditional_5_Template_mj_code_editor_change_4_listener($event) { i0.ɵɵrestoreView(_r16); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.OnInputMappingChange($event)); });
369
+ i0.ɵɵelementEnd()();
370
+ i0.ɵɵelementStart(5, "div", 24)(6, "label");
371
+ i0.ɵɵtext(7, "Output Mapping");
372
+ i0.ɵɵelementEnd();
373
+ i0.ɵɵelementStart(8, "mj-code-editor", 45);
374
+ i0.ɵɵlistener("change", function AgentPropertiesPanelComponent_Conditional_2_Conditional_32_Conditional_5_Template_mj_code_editor_change_8_listener($event) { i0.ɵɵrestoreView(_r16); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.OnOutputMappingChange($event)); });
375
+ i0.ɵɵelementEnd()()();
376
+ } if (rf & 2) {
377
+ const ctx_r1 = i0.ɵɵnextContext(3);
378
+ i0.ɵɵadvance(4);
379
+ i0.ɵɵproperty("value", ctx_r1.FormatJsonDisplay(ctx_r1.Step.ActionInputMapping))("readonly", ctx_r1.ReadOnly)("lineWrapping", true);
380
+ i0.ɵɵadvance(4);
381
+ i0.ɵɵproperty("value", ctx_r1.FormatJsonDisplay(ctx_r1.Step.ActionOutputMapping))("readonly", ctx_r1.ReadOnly)("lineWrapping", true);
382
+ } }
383
+ function AgentPropertiesPanelComponent_Conditional_2_Conditional_32_Template(rf, ctx) { if (rf & 1) {
384
+ const _r15 = i0.ɵɵgetCurrentView();
385
+ i0.ɵɵelementStart(0, "div", 19)(1, "button", 20);
386
+ i0.ɵɵlistener("click", function AgentPropertiesPanelComponent_Conditional_2_Conditional_32_Template_button_click_1_listener() { i0.ɵɵrestoreView(_r15); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.ToggleSection("mapping")); });
387
+ i0.ɵɵelementStart(2, "span", 21);
388
+ i0.ɵɵtext(3, "Data Mapping");
389
+ i0.ɵɵelementEnd();
390
+ i0.ɵɵelement(4, "i", 10);
391
+ i0.ɵɵelementEnd();
392
+ i0.ɵɵconditionalCreate(5, AgentPropertiesPanelComponent_Conditional_2_Conditional_32_Conditional_5_Template, 9, 6, "div", 22);
393
+ i0.ɵɵelementEnd();
394
+ } if (rf & 2) {
395
+ const ctx_r1 = i0.ɵɵnextContext(2);
396
+ i0.ɵɵadvance(4);
397
+ i0.ɵɵproperty("ngClass", ctx_r1.IsSectionCollapsed("mapping") ? "fa-chevron-right" : "fa-chevron-down");
398
+ i0.ɵɵadvance();
399
+ i0.ɵɵconditional(!ctx_r1.IsSectionCollapsed("mapping") ? 5 : -1);
400
+ } }
401
+ function AgentPropertiesPanelComponent_Conditional_2_Conditional_38_Conditional_4_Template(rf, ctx) { if (rf & 1) {
402
+ const _r17 = i0.ɵɵgetCurrentView();
403
+ i0.ɵɵelementStart(0, "select", 32);
404
+ i0.ɵɵlistener("change", function AgentPropertiesPanelComponent_Conditional_2_Conditional_38_Conditional_4_Template_select_change_0_listener($event) { i0.ɵɵrestoreView(_r17); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.OnErrorBehaviorChange(ctx_r1.InputValue($event))); });
405
+ i0.ɵɵelementStart(1, "option", 47);
406
+ i0.ɵɵtext(2, "Fail (stop flow)");
407
+ i0.ɵɵelementEnd();
408
+ i0.ɵɵelementStart(3, "option", 48);
409
+ i0.ɵɵtext(4, "Continue (ignore error)");
410
+ i0.ɵɵelementEnd();
411
+ i0.ɵɵelementStart(5, "option", 49);
412
+ i0.ɵɵtext(6, "Retry");
413
+ i0.ɵɵelementEnd()();
414
+ } if (rf & 2) {
415
+ const ctx_r1 = i0.ɵɵnextContext(3);
416
+ i0.ɵɵproperty("value", ctx_r1.Step.OnErrorBehavior);
417
+ } }
418
+ function AgentPropertiesPanelComponent_Conditional_2_Conditional_38_Conditional_5_Template(rf, ctx) { if (rf & 1) {
419
+ i0.ɵɵelementStart(0, "div", 26);
420
+ i0.ɵɵtext(1);
421
+ i0.ɵɵelementEnd();
422
+ } if (rf & 2) {
423
+ const ctx_r1 = i0.ɵɵnextContext(3);
424
+ i0.ɵɵadvance();
425
+ i0.ɵɵtextInterpolate1(" ", ctx_r1.Step.OnErrorBehavior === "fail" ? "Fail (stop flow)" : ctx_r1.Step.OnErrorBehavior === "continue" ? "Continue (ignore error)" : "Retry", " ");
426
+ } }
427
+ function AgentPropertiesPanelComponent_Conditional_2_Conditional_38_Conditional_6_Conditional_3_Template(rf, ctx) { if (rf & 1) {
428
+ const _r18 = i0.ɵɵgetCurrentView();
429
+ i0.ɵɵelementStart(0, "input", 51);
430
+ i0.ɵɵlistener("input", function AgentPropertiesPanelComponent_Conditional_2_Conditional_38_Conditional_6_Conditional_3_Template_input_input_0_listener($event) { i0.ɵɵrestoreView(_r18); const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.OnRetryCountChange(ctx_r1.NumericValue($event))); });
431
+ i0.ɵɵelementEnd();
432
+ } if (rf & 2) {
433
+ const ctx_r1 = i0.ɵɵnextContext(4);
434
+ i0.ɵɵproperty("value", ctx_r1.Step.RetryCount);
435
+ } }
436
+ function AgentPropertiesPanelComponent_Conditional_2_Conditional_38_Conditional_6_Conditional_4_Template(rf, ctx) { if (rf & 1) {
437
+ i0.ɵɵelementStart(0, "div", 26);
438
+ i0.ɵɵtext(1);
439
+ i0.ɵɵelementEnd();
440
+ } if (rf & 2) {
441
+ const ctx_r1 = i0.ɵɵnextContext(4);
442
+ i0.ɵɵadvance();
443
+ i0.ɵɵtextInterpolate(ctx_r1.Step.RetryCount);
444
+ } }
445
+ function AgentPropertiesPanelComponent_Conditional_2_Conditional_38_Conditional_6_Template(rf, ctx) { if (rf & 1) {
446
+ i0.ɵɵelementStart(0, "div", 24)(1, "label");
447
+ i0.ɵɵtext(2, "Retry Count");
448
+ i0.ɵɵelementEnd();
449
+ i0.ɵɵconditionalCreate(3, AgentPropertiesPanelComponent_Conditional_2_Conditional_38_Conditional_6_Conditional_3_Template, 1, 1, "input", 50);
450
+ i0.ɵɵconditionalCreate(4, AgentPropertiesPanelComponent_Conditional_2_Conditional_38_Conditional_6_Conditional_4_Template, 2, 1, "div", 26);
451
+ i0.ɵɵelementEnd();
452
+ } if (rf & 2) {
453
+ const ctx_r1 = i0.ɵɵnextContext(3);
454
+ i0.ɵɵadvance(3);
455
+ i0.ɵɵconditional(!ctx_r1.ReadOnly ? 3 : -1);
456
+ i0.ɵɵadvance();
457
+ i0.ɵɵconditional(ctx_r1.ReadOnly ? 4 : -1);
458
+ } }
459
+ function AgentPropertiesPanelComponent_Conditional_2_Conditional_38_Conditional_10_Template(rf, ctx) { if (rf & 1) {
460
+ const _r19 = i0.ɵɵgetCurrentView();
461
+ i0.ɵɵelementStart(0, "input", 52);
462
+ i0.ɵɵlistener("input", function AgentPropertiesPanelComponent_Conditional_2_Conditional_38_Conditional_10_Template_input_input_0_listener($event) { i0.ɵɵrestoreView(_r19); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.OnTimeoutChange(ctx_r1.NumericValue($event))); });
463
+ i0.ɵɵelementEnd();
464
+ } if (rf & 2) {
465
+ const ctx_r1 = i0.ɵɵnextContext(3);
466
+ i0.ɵɵproperty("value", ctx_r1.Step.TimeoutSeconds);
467
+ } }
468
+ function AgentPropertiesPanelComponent_Conditional_2_Conditional_38_Conditional_11_Template(rf, ctx) { if (rf & 1) {
469
+ i0.ɵɵelementStart(0, "div", 26);
470
+ i0.ɵɵtext(1);
471
+ i0.ɵɵelementEnd();
472
+ } if (rf & 2) {
473
+ const ctx_r1 = i0.ɵɵnextContext(3);
474
+ i0.ɵɵadvance();
475
+ i0.ɵɵtextInterpolate1("", ctx_r1.Step.TimeoutSeconds, "s");
476
+ } }
477
+ function AgentPropertiesPanelComponent_Conditional_2_Conditional_38_Template(rf, ctx) { if (rf & 1) {
478
+ i0.ɵɵelementStart(0, "div", 22)(1, "div", 24)(2, "label");
479
+ i0.ɵɵtext(3, "On Error");
480
+ i0.ɵɵelementEnd();
481
+ i0.ɵɵconditionalCreate(4, AgentPropertiesPanelComponent_Conditional_2_Conditional_38_Conditional_4_Template, 7, 1, "select", 28);
482
+ i0.ɵɵconditionalCreate(5, AgentPropertiesPanelComponent_Conditional_2_Conditional_38_Conditional_5_Template, 2, 1, "div", 26);
483
+ i0.ɵɵelementEnd();
484
+ i0.ɵɵconditionalCreate(6, AgentPropertiesPanelComponent_Conditional_2_Conditional_38_Conditional_6_Template, 5, 2, "div", 24);
485
+ i0.ɵɵelementStart(7, "div", 24)(8, "label");
486
+ i0.ɵɵtext(9, "Timeout (seconds)");
487
+ i0.ɵɵelementEnd();
488
+ i0.ɵɵconditionalCreate(10, AgentPropertiesPanelComponent_Conditional_2_Conditional_38_Conditional_10_Template, 1, 1, "input", 46);
489
+ i0.ɵɵconditionalCreate(11, AgentPropertiesPanelComponent_Conditional_2_Conditional_38_Conditional_11_Template, 2, 1, "div", 26);
490
+ i0.ɵɵelementEnd()();
491
+ } if (rf & 2) {
492
+ const ctx_r1 = i0.ɵɵnextContext(2);
493
+ i0.ɵɵadvance(4);
494
+ i0.ɵɵconditional(!ctx_r1.ReadOnly ? 4 : -1);
495
+ i0.ɵɵadvance();
496
+ i0.ɵɵconditional(ctx_r1.ReadOnly ? 5 : -1);
497
+ i0.ɵɵadvance();
498
+ i0.ɵɵconditional(ctx_r1.Step.OnErrorBehavior === "retry" ? 6 : -1);
499
+ i0.ɵɵadvance(4);
500
+ i0.ɵɵconditional(!ctx_r1.ReadOnly ? 10 : -1);
501
+ i0.ɵɵadvance();
502
+ i0.ɵɵconditional(ctx_r1.ReadOnly ? 11 : -1);
503
+ } }
504
+ function AgentPropertiesPanelComponent_Conditional_2_Conditional_39_Template(rf, ctx) { if (rf & 1) {
505
+ const _r20 = i0.ɵɵgetCurrentView();
506
+ i0.ɵɵelementStart(0, "div", 23)(1, "button", 53);
507
+ i0.ɵɵlistener("click", function AgentPropertiesPanelComponent_Conditional_2_Conditional_39_Template_button_click_1_listener() { i0.ɵɵrestoreView(_r20); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.OnDeleteStep()); });
508
+ i0.ɵɵelement(2, "i", 54);
509
+ i0.ɵɵtext(3, " Delete Step ");
510
+ i0.ɵɵelementEnd()();
511
+ } }
512
+ function AgentPropertiesPanelComponent_Conditional_2_Template(rf, ctx) { if (rf & 1) {
513
+ const _r1 = i0.ɵɵgetCurrentView();
514
+ i0.ɵɵelementStart(0, "div", 3)(1, "div", 4)(2, "span", 5);
515
+ i0.ɵɵtext(3, "STEP");
516
+ i0.ɵɵelementEnd();
517
+ i0.ɵɵelementStart(4, "button", 6);
518
+ i0.ɵɵlistener("click", function AgentPropertiesPanelComponent_Conditional_2_Template_button_click_4_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.CloseRequested.emit()); });
519
+ i0.ɵɵelement(5, "i", 7);
520
+ i0.ɵɵelementEnd()();
521
+ i0.ɵɵelementStart(6, "div", 8)(7, "div", 9);
522
+ i0.ɵɵelement(8, "i", 10);
523
+ i0.ɵɵelementEnd();
524
+ i0.ɵɵelementStart(9, "div", 11)(10, "span", 12);
525
+ i0.ɵɵtext(11);
526
+ i0.ɵɵelementEnd();
527
+ i0.ɵɵelementStart(12, "span", 13)(13, "span", 14);
528
+ i0.ɵɵtext(14);
529
+ i0.ɵɵelementEnd();
530
+ i0.ɵɵelement(15, "span", 15);
531
+ i0.ɵɵelementStart(16, "span", 16);
532
+ i0.ɵɵtext(17);
533
+ i0.ɵɵelementEnd();
534
+ i0.ɵɵconditionalCreate(18, AgentPropertiesPanelComponent_Conditional_2_Conditional_18_Template, 2, 0, "span", 17);
535
+ i0.ɵɵelementEnd()()()();
536
+ i0.ɵɵelementStart(19, "div", 18)(20, "div", 19)(21, "button", 20);
537
+ i0.ɵɵlistener("click", function AgentPropertiesPanelComponent_Conditional_2_Template_button_click_21_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.ToggleSection("general")); });
538
+ i0.ɵɵelementStart(22, "span", 21);
539
+ i0.ɵɵtext(23, "General");
540
+ i0.ɵɵelementEnd();
541
+ i0.ɵɵelement(24, "i", 10);
542
+ i0.ɵɵelementEnd();
543
+ i0.ɵɵconditionalCreate(25, AgentPropertiesPanelComponent_Conditional_2_Conditional_25_Template, 18, 8, "div", 22);
544
+ i0.ɵɵelementEnd();
545
+ i0.ɵɵelementStart(26, "div", 19)(27, "button", 20);
546
+ i0.ɵɵlistener("click", function AgentPropertiesPanelComponent_Conditional_2_Template_button_click_27_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.ToggleSection("config")); });
547
+ i0.ɵɵelementStart(28, "span", 21);
548
+ i0.ɵɵtext(29, "Configuration");
549
+ i0.ɵɵelementEnd();
550
+ i0.ɵɵelement(30, "i", 10);
551
+ i0.ɵɵelementEnd();
552
+ i0.ɵɵconditionalCreate(31, AgentPropertiesPanelComponent_Conditional_2_Conditional_31_Template, 6, 5, "div", 22);
553
+ i0.ɵɵelementEnd();
554
+ i0.ɵɵconditionalCreate(32, AgentPropertiesPanelComponent_Conditional_2_Conditional_32_Template, 6, 2, "div", 19);
555
+ i0.ɵɵelementStart(33, "div", 19)(34, "button", 20);
556
+ i0.ɵɵlistener("click", function AgentPropertiesPanelComponent_Conditional_2_Template_button_click_34_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.ToggleSection("errors")); });
557
+ i0.ɵɵelementStart(35, "span", 21);
558
+ i0.ɵɵtext(36, "Error Handling");
559
+ i0.ɵɵelementEnd();
560
+ i0.ɵɵelement(37, "i", 10);
561
+ i0.ɵɵelementEnd();
562
+ i0.ɵɵconditionalCreate(38, AgentPropertiesPanelComponent_Conditional_2_Conditional_38_Template, 12, 5, "div", 22);
563
+ i0.ɵɵelementEnd();
564
+ i0.ɵɵconditionalCreate(39, AgentPropertiesPanelComponent_Conditional_2_Conditional_39_Template, 4, 0, "div", 23);
565
+ i0.ɵɵelementEnd();
566
+ } if (rf & 2) {
567
+ const ctx_r1 = i0.ɵɵnextContext();
568
+ i0.ɵɵstyleProp("border-left-color", ctx_r1.stepTypeColor);
569
+ i0.ɵɵadvance(7);
570
+ i0.ɵɵstyleProp("background", ctx_r1.stepTypeColor);
571
+ i0.ɵɵadvance();
572
+ i0.ɵɵproperty("ngClass", ctx_r1.stepTypeIcon);
573
+ i0.ɵɵadvance(3);
574
+ i0.ɵɵtextInterpolate(ctx_r1.Step.Name);
575
+ i0.ɵɵadvance(2);
576
+ i0.ɵɵstyleProp("color", ctx_r1.stepTypeColor)("background", ctx_r1.stepTypeColor + "18");
577
+ i0.ɵɵadvance();
578
+ i0.ɵɵtextInterpolate(ctx_r1.stepTypeLabel);
579
+ i0.ɵɵadvance();
580
+ i0.ɵɵstyleProp("background", ctx_r1.statusColor);
581
+ i0.ɵɵadvance(2);
582
+ i0.ɵɵtextInterpolate(ctx_r1.Step.Status);
583
+ i0.ɵɵadvance();
584
+ i0.ɵɵconditional(ctx_r1.Step.StartingStep ? 18 : -1);
585
+ i0.ɵɵadvance(6);
586
+ i0.ɵɵproperty("ngClass", ctx_r1.IsSectionCollapsed("general") ? "fa-chevron-right" : "fa-chevron-down");
587
+ i0.ɵɵadvance();
588
+ i0.ɵɵconditional(!ctx_r1.IsSectionCollapsed("general") ? 25 : -1);
589
+ i0.ɵɵadvance(5);
590
+ i0.ɵɵproperty("ngClass", ctx_r1.IsSectionCollapsed("config") ? "fa-chevron-right" : "fa-chevron-down");
591
+ i0.ɵɵadvance();
592
+ i0.ɵɵconditional(!ctx_r1.IsSectionCollapsed("config") ? 31 : -1);
593
+ i0.ɵɵadvance();
594
+ i0.ɵɵconditional(ctx_r1.Step.StepType === "Action" || ctx_r1.showActionPicker ? 32 : -1);
595
+ i0.ɵɵadvance(5);
596
+ i0.ɵɵproperty("ngClass", ctx_r1.IsSectionCollapsed("errors") ? "fa-chevron-right" : "fa-chevron-down");
597
+ i0.ɵɵadvance();
598
+ i0.ɵɵconditional(!ctx_r1.IsSectionCollapsed("errors") ? 38 : -1);
599
+ i0.ɵɵadvance();
600
+ i0.ɵɵconditional(!ctx_r1.ReadOnly ? 39 : -1);
601
+ } }
602
+ function AgentPropertiesPanelComponent_Conditional_3_Conditional_19_Template(rf, ctx) { if (rf & 1) {
603
+ i0.ɵɵelementStart(0, "span", 61);
604
+ i0.ɵɵtext(1);
605
+ i0.ɵɵelementEnd();
606
+ } if (rf & 2) {
607
+ const ctx_r1 = i0.ɵɵnextContext(2);
608
+ i0.ɵɵadvance();
609
+ i0.ɵɵtextInterpolate1(" Priority: ", ctx_r1.PathEntity.Priority, " ");
610
+ } }
611
+ function AgentPropertiesPanelComponent_Conditional_3_Conditional_26_Template(rf, ctx) { if (rf & 1) {
612
+ i0.ɵɵelementStart(0, "div", 22)(1, "div", 24)(2, "label");
613
+ i0.ɵɵtext(3, "From");
614
+ i0.ɵɵelementEnd();
615
+ i0.ɵɵelementStart(4, "div", 62);
616
+ i0.ɵɵtext(5);
617
+ i0.ɵɵelementEnd()();
618
+ i0.ɵɵelementStart(6, "div", 24)(7, "label");
619
+ i0.ɵɵtext(8, "To");
620
+ i0.ɵɵelementEnd();
621
+ i0.ɵɵelementStart(9, "div", 62);
622
+ i0.ɵɵtext(10);
623
+ i0.ɵɵelementEnd()();
624
+ i0.ɵɵelementStart(11, "span", 63);
625
+ i0.ɵɵtext(12, "To change the route, rewire the connection on the canvas.");
626
+ i0.ɵɵelementEnd()();
627
+ } if (rf & 2) {
628
+ const ctx_r1 = i0.ɵɵnextContext(2);
629
+ i0.ɵɵadvance(5);
630
+ i0.ɵɵtextInterpolate1(" ", ctx_r1.originStepName, " ");
631
+ i0.ɵɵadvance(5);
632
+ i0.ɵɵtextInterpolate1(" ", ctx_r1.destinationStepName, " ");
633
+ } }
634
+ function AgentPropertiesPanelComponent_Conditional_3_Conditional_32_Conditional_4_Template(rf, ctx) { if (rf & 1) {
635
+ const _r22 = i0.ɵɵgetCurrentView();
636
+ i0.ɵɵelementStart(0, "input", 68);
637
+ i0.ɵɵlistener("input", function AgentPropertiesPanelComponent_Conditional_3_Conditional_32_Conditional_4_Template_input_input_0_listener($event) { i0.ɵɵrestoreView(_r22); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.OnPathDescriptionChange(ctx_r1.InputValue($event))); });
638
+ i0.ɵɵelementEnd();
639
+ } if (rf & 2) {
640
+ const ctx_r1 = i0.ɵɵnextContext(3);
641
+ i0.ɵɵproperty("value", ctx_r1.PathEntity.Description || "");
642
+ } }
643
+ function AgentPropertiesPanelComponent_Conditional_3_Conditional_32_Conditional_5_Template(rf, ctx) { if (rf & 1) {
644
+ i0.ɵɵelementStart(0, "div", 26);
645
+ i0.ɵɵtext(1);
646
+ i0.ɵɵelementEnd();
647
+ } if (rf & 2) {
648
+ const ctx_r1 = i0.ɵɵnextContext(3);
649
+ i0.ɵɵadvance();
650
+ i0.ɵɵtextInterpolate1(" ", ctx_r1.PathEntity.Description || "\u2014", " ");
651
+ } }
652
+ function AgentPropertiesPanelComponent_Conditional_3_Conditional_32_Conditional_6_Template(rf, ctx) { if (rf & 1) {
653
+ i0.ɵɵelementStart(0, "span", 63);
654
+ i0.ɵɵtext(1, "Displayed as a label on the connection line");
655
+ i0.ɵɵelementEnd();
656
+ } }
657
+ function AgentPropertiesPanelComponent_Conditional_3_Conditional_32_Conditional_10_Template(rf, ctx) { if (rf & 1) {
658
+ const _r23 = i0.ɵɵgetCurrentView();
659
+ i0.ɵɵelementStart(0, "mj-code-editor", 69);
660
+ i0.ɵɵlistener("change", function AgentPropertiesPanelComponent_Conditional_3_Conditional_32_Conditional_10_Template_mj_code_editor_change_0_listener($event) { i0.ɵɵrestoreView(_r23); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.OnPathConditionChange($event)); });
661
+ i0.ɵɵelementEnd();
662
+ } if (rf & 2) {
663
+ const ctx_r1 = i0.ɵɵnextContext(3);
664
+ i0.ɵɵproperty("value", ctx_r1.PathEntity.Condition || "")("readonly", false)("lineWrapping", true);
665
+ } }
666
+ function AgentPropertiesPanelComponent_Conditional_3_Conditional_32_Conditional_11_Template(rf, ctx) { if (rf & 1) {
667
+ i0.ɵɵelement(0, "mj-code-editor", 66);
668
+ } if (rf & 2) {
669
+ const ctx_r1 = i0.ɵɵnextContext(3);
670
+ i0.ɵɵproperty("value", ctx_r1.PathEntity.Condition)("readonly", true)("lineWrapping", true);
671
+ } }
672
+ function AgentPropertiesPanelComponent_Conditional_3_Conditional_32_Conditional_12_Template(rf, ctx) { if (rf & 1) {
673
+ i0.ɵɵelementStart(0, "div", 62);
674
+ i0.ɵɵtext(1, " No condition (always taken) ");
675
+ i0.ɵɵelementEnd();
676
+ } }
677
+ function AgentPropertiesPanelComponent_Conditional_3_Conditional_32_Conditional_13_Template(rf, ctx) { if (rf & 1) {
678
+ i0.ɵɵelementStart(0, "span", 63);
679
+ i0.ɵɵtext(1, " JavaScript expression evaluated at runtime. Leave empty for unconditional. ");
680
+ i0.ɵɵelementEnd();
681
+ } }
682
+ function AgentPropertiesPanelComponent_Conditional_3_Conditional_32_Conditional_17_Template(rf, ctx) { if (rf & 1) {
683
+ const _r24 = i0.ɵɵgetCurrentView();
684
+ i0.ɵɵelementStart(0, "input", 70);
685
+ i0.ɵɵlistener("input", function AgentPropertiesPanelComponent_Conditional_3_Conditional_32_Conditional_17_Template_input_input_0_listener($event) { i0.ɵɵrestoreView(_r24); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.OnPathPriorityChange(ctx_r1.NumericValue($event))); });
686
+ i0.ɵɵelementEnd();
687
+ } if (rf & 2) {
688
+ const ctx_r1 = i0.ɵɵnextContext(3);
689
+ i0.ɵɵproperty("value", ctx_r1.PathEntity.Priority);
690
+ } }
691
+ function AgentPropertiesPanelComponent_Conditional_3_Conditional_32_Conditional_18_Template(rf, ctx) { if (rf & 1) {
692
+ i0.ɵɵelementStart(0, "div", 26);
693
+ i0.ɵɵtext(1);
694
+ i0.ɵɵelementEnd();
695
+ } if (rf & 2) {
696
+ const ctx_r1 = i0.ɵɵnextContext(3);
697
+ i0.ɵɵadvance();
698
+ i0.ɵɵtextInterpolate(ctx_r1.PathEntity.Priority);
699
+ } }
700
+ function AgentPropertiesPanelComponent_Conditional_3_Conditional_32_Template(rf, ctx) { if (rf & 1) {
701
+ i0.ɵɵelementStart(0, "div", 22)(1, "div", 24)(2, "label");
702
+ i0.ɵɵtext(3, "Description");
703
+ i0.ɵɵelementEnd();
704
+ i0.ɵɵconditionalCreate(4, AgentPropertiesPanelComponent_Conditional_3_Conditional_32_Conditional_4_Template, 1, 1, "input", 64);
705
+ i0.ɵɵconditionalCreate(5, AgentPropertiesPanelComponent_Conditional_3_Conditional_32_Conditional_5_Template, 2, 1, "div", 26);
706
+ i0.ɵɵconditionalCreate(6, AgentPropertiesPanelComponent_Conditional_3_Conditional_32_Conditional_6_Template, 2, 0, "span", 63);
707
+ i0.ɵɵelementEnd();
708
+ i0.ɵɵelementStart(7, "div", 24)(8, "label");
709
+ i0.ɵɵtext(9, "Condition");
710
+ i0.ɵɵelementEnd();
711
+ i0.ɵɵconditionalCreate(10, AgentPropertiesPanelComponent_Conditional_3_Conditional_32_Conditional_10_Template, 1, 3, "mj-code-editor", 65);
712
+ i0.ɵɵconditionalCreate(11, AgentPropertiesPanelComponent_Conditional_3_Conditional_32_Conditional_11_Template, 1, 3, "mj-code-editor", 66);
713
+ i0.ɵɵconditionalCreate(12, AgentPropertiesPanelComponent_Conditional_3_Conditional_32_Conditional_12_Template, 2, 0, "div", 62);
714
+ i0.ɵɵconditionalCreate(13, AgentPropertiesPanelComponent_Conditional_3_Conditional_32_Conditional_13_Template, 2, 0, "span", 63);
715
+ i0.ɵɵelementEnd();
716
+ i0.ɵɵelementStart(14, "div", 24)(15, "label");
717
+ i0.ɵɵtext(16, "Priority");
718
+ i0.ɵɵelementEnd();
719
+ i0.ɵɵconditionalCreate(17, AgentPropertiesPanelComponent_Conditional_3_Conditional_32_Conditional_17_Template, 1, 1, "input", 67);
720
+ i0.ɵɵconditionalCreate(18, AgentPropertiesPanelComponent_Conditional_3_Conditional_32_Conditional_18_Template, 2, 1, "div", 26);
721
+ i0.ɵɵelementStart(19, "span", 63);
722
+ i0.ɵɵtext(20, "Higher priority paths are evaluated first when multiple paths leave a step.");
723
+ i0.ɵɵelementEnd()()();
724
+ } if (rf & 2) {
725
+ const ctx_r1 = i0.ɵɵnextContext(2);
726
+ i0.ɵɵadvance(4);
727
+ i0.ɵɵconditional(!ctx_r1.ReadOnly ? 4 : -1);
728
+ i0.ɵɵadvance();
729
+ i0.ɵɵconditional(ctx_r1.ReadOnly ? 5 : -1);
730
+ i0.ɵɵadvance();
731
+ i0.ɵɵconditional(!ctx_r1.ReadOnly ? 6 : -1);
732
+ i0.ɵɵadvance(4);
733
+ i0.ɵɵconditional(!ctx_r1.ReadOnly ? 10 : -1);
734
+ i0.ɵɵadvance();
735
+ i0.ɵɵconditional(ctx_r1.ReadOnly && ctx_r1.PathEntity.Condition ? 11 : -1);
736
+ i0.ɵɵadvance();
737
+ i0.ɵɵconditional(ctx_r1.ReadOnly && !ctx_r1.PathEntity.Condition ? 12 : -1);
738
+ i0.ɵɵadvance();
739
+ i0.ɵɵconditional(!ctx_r1.ReadOnly ? 13 : -1);
740
+ i0.ɵɵadvance(4);
741
+ i0.ɵɵconditional(!ctx_r1.ReadOnly ? 17 : -1);
742
+ i0.ɵɵadvance();
743
+ i0.ɵɵconditional(ctx_r1.ReadOnly ? 18 : -1);
744
+ } }
745
+ function AgentPropertiesPanelComponent_Conditional_3_Conditional_33_Template(rf, ctx) { if (rf & 1) {
746
+ const _r25 = i0.ɵɵgetCurrentView();
747
+ i0.ɵɵelementStart(0, "div", 23)(1, "button", 53);
748
+ i0.ɵɵlistener("click", function AgentPropertiesPanelComponent_Conditional_3_Conditional_33_Template_button_click_1_listener() { i0.ɵɵrestoreView(_r25); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.OnDeletePath()); });
749
+ i0.ɵɵelement(2, "i", 54);
750
+ i0.ɵɵtext(3, " Delete Path ");
751
+ i0.ɵɵelementEnd()();
752
+ } }
753
+ function AgentPropertiesPanelComponent_Conditional_3_Template(rf, ctx) { if (rf & 1) {
754
+ const _r21 = i0.ɵɵgetCurrentView();
755
+ i0.ɵɵelementStart(0, "div", 55)(1, "div", 4)(2, "span", 5);
756
+ i0.ɵɵtext(3, "PATH");
757
+ i0.ɵɵelementEnd();
758
+ i0.ɵɵelementStart(4, "button", 6);
759
+ i0.ɵɵlistener("click", function AgentPropertiesPanelComponent_Conditional_3_Template_button_click_4_listener() { i0.ɵɵrestoreView(_r21); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.CloseRequested.emit()); });
760
+ i0.ɵɵelement(5, "i", 7);
761
+ i0.ɵɵelementEnd()();
762
+ i0.ɵɵelementStart(6, "div", 8)(7, "div", 56);
763
+ i0.ɵɵelement(8, "i", 57);
764
+ i0.ɵɵelementEnd();
765
+ i0.ɵɵelementStart(9, "div", 11)(10, "span", 58)(11, "span", 59);
766
+ i0.ɵɵtext(12);
767
+ i0.ɵɵelementEnd();
768
+ i0.ɵɵelement(13, "i", 60);
769
+ i0.ɵɵelementStart(14, "span", 59);
770
+ i0.ɵɵtext(15);
771
+ i0.ɵɵelementEnd()();
772
+ i0.ɵɵelementStart(16, "span", 13)(17, "span", 14);
773
+ i0.ɵɵtext(18);
774
+ i0.ɵɵelementEnd();
775
+ i0.ɵɵconditionalCreate(19, AgentPropertiesPanelComponent_Conditional_3_Conditional_19_Template, 2, 1, "span", 61);
776
+ i0.ɵɵelementEnd()()()();
777
+ i0.ɵɵelementStart(20, "div", 18)(21, "div", 19)(22, "button", 20);
778
+ i0.ɵɵlistener("click", function AgentPropertiesPanelComponent_Conditional_3_Template_button_click_22_listener() { i0.ɵɵrestoreView(_r21); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.ToggleSection("path-overview")); });
779
+ i0.ɵɵelementStart(23, "span", 21);
780
+ i0.ɵɵtext(24, "Route");
781
+ i0.ɵɵelementEnd();
782
+ i0.ɵɵelement(25, "i", 10);
783
+ i0.ɵɵelementEnd();
784
+ i0.ɵɵconditionalCreate(26, AgentPropertiesPanelComponent_Conditional_3_Conditional_26_Template, 13, 2, "div", 22);
785
+ i0.ɵɵelementEnd();
786
+ i0.ɵɵelementStart(27, "div", 19)(28, "button", 20);
787
+ i0.ɵɵlistener("click", function AgentPropertiesPanelComponent_Conditional_3_Template_button_click_28_listener() { i0.ɵɵrestoreView(_r21); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.ToggleSection("path-settings")); });
788
+ i0.ɵɵelementStart(29, "span", 21);
789
+ i0.ɵɵtext(30, "Settings");
790
+ i0.ɵɵelementEnd();
791
+ i0.ɵɵelement(31, "i", 10);
792
+ i0.ɵɵelementEnd();
793
+ i0.ɵɵconditionalCreate(32, AgentPropertiesPanelComponent_Conditional_3_Conditional_32_Template, 21, 9, "div", 22);
794
+ i0.ɵɵelementEnd();
795
+ i0.ɵɵconditionalCreate(33, AgentPropertiesPanelComponent_Conditional_3_Conditional_33_Template, 4, 0, "div", 23);
796
+ i0.ɵɵelementEnd();
797
+ } if (rf & 2) {
798
+ const ctx_r1 = i0.ɵɵnextContext();
799
+ i0.ɵɵstyleProp("border-left-color", ctx_r1.pathAccentColor);
800
+ i0.ɵɵadvance(7);
801
+ i0.ɵɵstyleProp("background", ctx_r1.pathAccentColor);
802
+ i0.ɵɵadvance(5);
803
+ i0.ɵɵtextInterpolate(ctx_r1.originStepName);
804
+ i0.ɵɵadvance(3);
805
+ i0.ɵɵtextInterpolate(ctx_r1.destinationStepName);
806
+ i0.ɵɵadvance(2);
807
+ i0.ɵɵstyleProp("color", ctx_r1.pathAccentColor)("background", ctx_r1.pathAccentColor + "18");
808
+ i0.ɵɵadvance();
809
+ i0.ɵɵtextInterpolate1(" ", ctx_r1.isConditionalPath ? "Conditional" : "Always", " ");
810
+ i0.ɵɵadvance();
811
+ i0.ɵɵconditional(ctx_r1.PathEntity.Priority !== 0 ? 19 : -1);
812
+ i0.ɵɵadvance(6);
813
+ i0.ɵɵproperty("ngClass", ctx_r1.IsSectionCollapsed("path-overview") ? "fa-chevron-right" : "fa-chevron-down");
814
+ i0.ɵɵadvance();
815
+ i0.ɵɵconditional(!ctx_r1.IsSectionCollapsed("path-overview") ? 26 : -1);
816
+ i0.ɵɵadvance(5);
817
+ i0.ɵɵproperty("ngClass", ctx_r1.IsSectionCollapsed("path-settings") ? "fa-chevron-right" : "fa-chevron-down");
818
+ i0.ɵɵadvance();
819
+ i0.ɵɵconditional(!ctx_r1.IsSectionCollapsed("path-settings") ? 32 : -1);
820
+ i0.ɵɵadvance();
821
+ i0.ɵɵconditional(!ctx_r1.ReadOnly ? 33 : -1);
822
+ } }
823
+ /** Step type accent color mapping */
824
+ const STEP_TYPE_COLORS = {
825
+ Action: '#3b82f6',
826
+ Prompt: '#8b5cf6',
827
+ 'Sub-Agent': '#10b981',
828
+ ForEach: '#f59e0b',
829
+ While: '#f59e0b'
830
+ };
831
+ /** Step type icon mapping */
832
+ const STEP_TYPE_ICONS = {
833
+ Action: 'fa-bolt',
834
+ Prompt: 'fa-comment-dots',
835
+ 'Sub-Agent': 'fa-robot',
836
+ ForEach: 'fa-arrows-spin',
837
+ While: 'fa-rotate'
838
+ };
839
+ /**
840
+ * Properties panel for editing AI Agent step and path configurations.
841
+ * Shows context-aware sections based on the selected step type.
842
+ */
843
+ export class AgentPropertiesPanelComponent {
844
+ // ── Inputs ──────────────────────────────────────────────────
845
+ Step = null;
846
+ SelectedConnection = null;
847
+ PathEntity = null;
848
+ ReadOnly = false;
849
+ Actions = [];
850
+ Prompts = [];
851
+ Agents = [];
852
+ AllSteps = [];
853
+ // ── Outputs ─────────────────────────────────────────────────
854
+ StepChanged = new EventEmitter();
855
+ PathChanged = new EventEmitter();
856
+ DeleteStepRequested = new EventEmitter();
857
+ DeletePathRequested = new EventEmitter();
858
+ CloseRequested = new EventEmitter();
859
+ // ── Collapsible section state ─────────────────────────────
860
+ collapsedSections = {};
861
+ // ── Computed Properties ─────────────────────────────────────
862
+ get isStepSelected() {
863
+ return this.Step != null;
864
+ }
865
+ get isConnectionSelected() {
866
+ return this.SelectedConnection != null && this.PathEntity != null;
867
+ }
868
+ get showActionPicker() {
869
+ return this.Step?.StepType === 'Action' ||
870
+ ((this.Step?.StepType === 'ForEach' || this.Step?.StepType === 'While') && this.Step?.LoopBodyType === 'Action');
871
+ }
872
+ get showPromptPicker() {
873
+ return this.Step?.StepType === 'Prompt' ||
874
+ ((this.Step?.StepType === 'ForEach' || this.Step?.StepType === 'While') && this.Step?.LoopBodyType === 'Prompt');
875
+ }
876
+ get showAgentPicker() {
877
+ return this.Step?.StepType === 'Sub-Agent' ||
878
+ ((this.Step?.StepType === 'ForEach' || this.Step?.StepType === 'While') && this.Step?.LoopBodyType === 'Sub-Agent');
879
+ }
880
+ get showLoopConfig() {
881
+ return this.Step?.StepType === 'ForEach' || this.Step?.StepType === 'While';
882
+ }
883
+ get stepTypeLabel() {
884
+ switch (this.Step?.StepType) {
885
+ case 'Action': return 'Action';
886
+ case 'Prompt': return 'Prompt';
887
+ case 'Sub-Agent': return 'Sub-Agent';
888
+ case 'ForEach': return 'For Each Loop';
889
+ case 'While': return 'While Loop';
890
+ default: return 'Step';
891
+ }
892
+ }
893
+ get stepTypeColor() {
894
+ return STEP_TYPE_COLORS[this.Step?.StepType ?? ''] ?? '#64748b';
895
+ }
896
+ get stepTypeIcon() {
897
+ return STEP_TYPE_ICONS[this.Step?.StepType ?? ''] ?? 'fa-circle-nodes';
898
+ }
899
+ get statusColor() {
900
+ switch (this.Step?.Status) {
901
+ case 'Active': return '#10b981';
902
+ case 'Disabled': return '#94a3b8';
903
+ case 'Pending': return '#f59e0b';
904
+ default: return '#94a3b8';
905
+ }
906
+ }
907
+ /** Path: origin step name */
908
+ get originStepName() {
909
+ if (!this.PathEntity)
910
+ return '';
911
+ const step = this.AllSteps.find(s => s.ID === this.PathEntity.OriginStepID);
912
+ return step?.Name ?? 'Unknown Step';
913
+ }
914
+ /** Path: destination step name */
915
+ get destinationStepName() {
916
+ if (!this.PathEntity)
917
+ return '';
918
+ const step = this.AllSteps.find(s => s.ID === this.PathEntity.DestinationStepID);
919
+ return step?.Name ?? 'Unknown Step';
920
+ }
921
+ /** Path: whether a condition is set */
922
+ get isConditionalPath() {
923
+ return this.PathEntity?.Condition != null && this.PathEntity.Condition.trim().length > 0;
924
+ }
925
+ /** Path accent color */
926
+ get pathAccentColor() {
927
+ return this.isConditionalPath ? '#f59e0b' : '#94a3b8';
928
+ }
929
+ /** Resolved action name for display */
930
+ get selectedActionName() {
931
+ if (!this.Step?.ActionID)
932
+ return 'None selected';
933
+ return this.Actions.find(a => a.ID === this.Step.ActionID)?.Name ?? 'Unknown';
934
+ }
935
+ /** Resolved prompt name for display */
936
+ get selectedPromptName() {
937
+ if (!this.Step?.PromptID)
938
+ return 'None selected';
939
+ return this.Prompts.find(p => p.ID === this.Step.PromptID)?.Name ?? 'Unknown';
940
+ }
941
+ /** Resolved agent name for display */
942
+ get selectedAgentName() {
943
+ if (!this.Step?.SubAgentID)
944
+ return 'None selected';
945
+ return this.Agents.find(a => a.ID === this.Step.SubAgentID)?.Name ?? 'Unknown';
946
+ }
947
+ // ── Section Collapse ──────────────────────────────────────
948
+ ToggleSection(sectionId) {
949
+ this.collapsedSections[sectionId] = !this.collapsedSections[sectionId];
950
+ }
951
+ IsSectionCollapsed(sectionId) {
952
+ return this.collapsedSections[sectionId] === true;
953
+ }
954
+ // ── Step Event Handlers ─────────────────────────────────────
955
+ OnNameChange(value) {
956
+ if (!this.Step || this.ReadOnly)
957
+ return;
958
+ this.Step.Name = value;
959
+ this.StepChanged.emit(this.Step);
960
+ }
961
+ OnDescriptionChange(value) {
962
+ if (!this.Step || this.ReadOnly)
963
+ return;
964
+ this.Step.Description = value;
965
+ this.StepChanged.emit(this.Step);
966
+ }
967
+ OnStatusChange(value) {
968
+ if (!this.Step || this.ReadOnly)
969
+ return;
970
+ this.Step.Status = value;
971
+ this.StepChanged.emit(this.Step);
972
+ }
973
+ OnStartingStepChange(checked) {
974
+ if (!this.Step || this.ReadOnly)
975
+ return;
976
+ this.Step.StartingStep = checked;
977
+ this.StepChanged.emit(this.Step);
978
+ }
979
+ OnActionChange(actionId) {
980
+ if (!this.Step || this.ReadOnly)
981
+ return;
982
+ this.Step.ActionID = actionId || null;
983
+ this.StepChanged.emit(this.Step);
984
+ }
985
+ OnPromptChange(promptId) {
986
+ if (!this.Step || this.ReadOnly)
987
+ return;
988
+ this.Step.PromptID = promptId || null;
989
+ this.StepChanged.emit(this.Step);
990
+ }
991
+ OnSubAgentChange(agentId) {
992
+ if (!this.Step || this.ReadOnly)
993
+ return;
994
+ this.Step.SubAgentID = agentId || null;
995
+ this.StepChanged.emit(this.Step);
996
+ }
997
+ OnLoopBodyTypeChange(value) {
998
+ if (!this.Step || this.ReadOnly)
999
+ return;
1000
+ this.Step.LoopBodyType = value;
1001
+ this.StepChanged.emit(this.Step);
1002
+ }
1003
+ OnInputMappingChange(value) {
1004
+ if (!this.Step || this.ReadOnly)
1005
+ return;
1006
+ this.Step.ActionInputMapping = value || null;
1007
+ this.StepChanged.emit(this.Step);
1008
+ }
1009
+ OnOutputMappingChange(value) {
1010
+ if (!this.Step || this.ReadOnly)
1011
+ return;
1012
+ this.Step.ActionOutputMapping = value || null;
1013
+ this.StepChanged.emit(this.Step);
1014
+ }
1015
+ OnErrorBehaviorChange(value) {
1016
+ if (!this.Step || this.ReadOnly)
1017
+ return;
1018
+ this.Step.OnErrorBehavior = value;
1019
+ this.StepChanged.emit(this.Step);
1020
+ }
1021
+ OnRetryCountChange(value) {
1022
+ if (!this.Step || this.ReadOnly)
1023
+ return;
1024
+ this.Step.RetryCount = value;
1025
+ this.StepChanged.emit(this.Step);
1026
+ }
1027
+ OnTimeoutChange(value) {
1028
+ if (!this.Step || this.ReadOnly)
1029
+ return;
1030
+ this.Step.TimeoutSeconds = value;
1031
+ this.StepChanged.emit(this.Step);
1032
+ }
1033
+ OnConfigurationChange(value) {
1034
+ if (!this.Step || this.ReadOnly)
1035
+ return;
1036
+ this.Step.Configuration = value || null;
1037
+ this.StepChanged.emit(this.Step);
1038
+ }
1039
+ // ── Path Event Handlers ─────────────────────────────────────
1040
+ OnPathDescriptionChange(value) {
1041
+ if (!this.PathEntity || this.ReadOnly)
1042
+ return;
1043
+ this.PathEntity.Description = value;
1044
+ this.PathChanged.emit(this.PathEntity);
1045
+ }
1046
+ OnPathConditionChange(value) {
1047
+ if (!this.PathEntity || this.ReadOnly)
1048
+ return;
1049
+ this.PathEntity.Condition = value || null;
1050
+ this.PathChanged.emit(this.PathEntity);
1051
+ }
1052
+ OnPathPriorityChange(value) {
1053
+ if (!this.PathEntity || this.ReadOnly)
1054
+ return;
1055
+ this.PathEntity.Priority = value;
1056
+ this.PathChanged.emit(this.PathEntity);
1057
+ }
1058
+ OnDeleteStep() {
1059
+ if (this.Step) {
1060
+ this.DeleteStepRequested.emit(this.Step);
1061
+ }
1062
+ }
1063
+ OnDeletePath() {
1064
+ if (this.PathEntity) {
1065
+ this.DeletePathRequested.emit(this.PathEntity);
1066
+ }
1067
+ }
1068
+ // ── Template Helpers ──────────────────────────────────────
1069
+ /** Safely extract string value from an input/textarea/select change event */
1070
+ InputValue(event) {
1071
+ return event.target.value;
1072
+ }
1073
+ /** Safely extract checked state from a checkbox change event */
1074
+ CheckedValue(event) {
1075
+ return event.target.checked;
1076
+ }
1077
+ /** Safely extract numeric value from a number input event */
1078
+ NumericValue(event) {
1079
+ return +event.target.value;
1080
+ }
1081
+ /** Format JSON for display */
1082
+ FormatJsonDisplay(value) {
1083
+ if (!value)
1084
+ return '';
1085
+ try {
1086
+ return JSON.stringify(JSON.parse(value), null, 2);
1087
+ }
1088
+ catch {
1089
+ return value;
1090
+ }
1091
+ }
1092
+ static ɵfac = function AgentPropertiesPanelComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || AgentPropertiesPanelComponent)(); };
1093
+ static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: AgentPropertiesPanelComponent, selectors: [["mj-agent-properties-panel"]], inputs: { Step: "Step", SelectedConnection: "SelectedConnection", PathEntity: "PathEntity", ReadOnly: "ReadOnly", Actions: "Actions", Prompts: "Prompts", Agents: "Agents", AllSteps: "AllSteps" }, outputs: { StepChanged: "StepChanged", PathChanged: "PathChanged", DeleteStepRequested: "DeleteStepRequested", DeletePathRequested: "DeletePathRequested", CloseRequested: "CloseRequested" }, standalone: false, decls: 4, vars: 3, consts: [[1, "mj-agent-props"], [1, "mj-agent-props-empty"], [1, "fa-solid", "fa-mouse-pointer"], [1, "mj-agent-props-header", "mj-agent-props-header--step"], [1, "mj-agent-props-header-top"], [1, "mj-agent-props-header-label"], ["title", "Close", 1, "mj-agent-props-close", 3, "click"], [1, "fa-solid", "fa-times"], [1, "mj-agent-props-identity"], [1, "mj-agent-props-identity-icon"], [1, "fa-solid", 3, "ngClass"], [1, "mj-agent-props-identity-info"], [1, "mj-agent-props-identity-name"], [1, "mj-agent-props-identity-meta"], [1, "mj-agent-props-type-pill"], [1, "mj-agent-props-status-dot"], [1, "mj-agent-props-status-label"], [1, "mj-agent-props-start-badge"], [1, "mj-agent-props-content"], [1, "mj-agent-props-section"], [1, "mj-agent-props-section-header", 3, "click"], [1, "mj-agent-props-section-title"], [1, "mj-agent-props-section-body"], [1, "mj-agent-props-section", "mj-agent-props-danger"], [1, "mj-agent-props-field"], ["type", "text", "placeholder", "Step name...", 1, "mj-agent-props-input", 3, "value"], [1, "mj-agent-props-readonly-value"], ["placeholder", "Optional description...", "rows", "2", 1, "mj-agent-props-input", "mj-agent-props-textarea", 3, "value"], [1, "mj-agent-props-input", 3, "value"], [1, "mj-agent-props-field", "mj-agent-props-field--row"], ["type", "text", "placeholder", "Step name...", 1, "mj-agent-props-input", 3, "input", "value"], ["placeholder", "Optional description...", "rows", "2", 1, "mj-agent-props-input", "mj-agent-props-textarea", 3, "input", "value"], [1, "mj-agent-props-input", 3, "change", "value"], ["value", "Active"], ["value", "Disabled"], ["value", "Pending"], [1, "mj-agent-props-checkbox-label"], ["type", "checkbox", 3, "change", "checked"], ["value", "Action"], ["value", "Prompt"], ["value", "Sub-Agent"], ["value", ""], [3, "value"], ["language", "json", "setup", "minimal", 3, "change", "value", "readonly", "lineWrapping"], ["language", "json", "setup", "minimal", "placeholder", "Enter JSON input mapping...", 3, "change", "value", "readonly", "lineWrapping"], ["language", "json", "setup", "minimal", "placeholder", "Enter JSON output mapping...", 3, "change", "value", "readonly", "lineWrapping"], ["type", "number", "min", "1", 1, "mj-agent-props-input", 3, "value"], ["value", "fail"], ["value", "continue"], ["value", "retry"], ["type", "number", "min", "0", "max", "10", 1, "mj-agent-props-input", 3, "value"], ["type", "number", "min", "0", "max", "10", 1, "mj-agent-props-input", 3, "input", "value"], ["type", "number", "min", "1", 1, "mj-agent-props-input", 3, "input", "value"], [1, "mj-agent-props-delete-btn", 3, "click"], [1, "fa-solid", "fa-trash-can"], [1, "mj-agent-props-header", "mj-agent-props-header--path"], [1, "mj-agent-props-identity-icon", "mj-agent-props-identity-icon--path"], [1, "fa-solid", "fa-arrow-right"], [1, "mj-agent-props-path-route"], [1, "mj-agent-props-path-step-name"], [1, "fa-solid", "fa-arrow-right", "mj-agent-props-path-arrow"], [1, "mj-agent-props-priority-badge"], [1, "mj-agent-props-readonly-value", "mj-agent-props-readonly-value--muted"], [1, "mj-agent-props-hint"], ["type", "text", "placeholder", "Path label...", 1, "mj-agent-props-input", 3, "value"], ["language", "javascript", "setup", "minimal", "placeholder", "e.g. payload.status === 'active'", 3, "value", "readonly", "lineWrapping"], ["language", "javascript", "setup", "minimal", 3, "value", "readonly", "lineWrapping"], ["type", "number", "min", "-100", "max", "100", 1, "mj-agent-props-input", 3, "value"], ["type", "text", "placeholder", "Path label...", 1, "mj-agent-props-input", 3, "input", "value"], ["language", "javascript", "setup", "minimal", "placeholder", "e.g. payload.status === 'active'", 3, "change", "value", "readonly", "lineWrapping"], ["type", "number", "min", "-100", "max", "100", 1, "mj-agent-props-input", 3, "input", "value"]], template: function AgentPropertiesPanelComponent_Template(rf, ctx) { if (rf & 1) {
1094
+ i0.ɵɵelementStart(0, "div", 0);
1095
+ i0.ɵɵconditionalCreate(1, AgentPropertiesPanelComponent_Conditional_1_Template, 4, 0, "div", 1);
1096
+ i0.ɵɵconditionalCreate(2, AgentPropertiesPanelComponent_Conditional_2_Template, 40, 23);
1097
+ i0.ɵɵconditionalCreate(3, AgentPropertiesPanelComponent_Conditional_3_Template, 34, 17);
1098
+ i0.ɵɵelementEnd();
1099
+ } if (rf & 2) {
1100
+ i0.ɵɵadvance();
1101
+ i0.ɵɵconditional(!ctx.isStepSelected && !ctx.isConnectionSelected ? 1 : -1);
1102
+ i0.ɵɵadvance();
1103
+ i0.ɵɵconditional(ctx.isStepSelected ? 2 : -1);
1104
+ i0.ɵɵadvance();
1105
+ i0.ɵɵconditional(ctx.isConnectionSelected ? 3 : -1);
1106
+ } }, dependencies: [i1.NgClass, i2.NgSelectOption, i2.ɵNgSelectMultipleOption, i3.CodeEditorComponent], styles: ["/* ============================================================\n Agent Properties Panel \u2014 Step/Connection configuration\n ============================================================ */\n\n.mj-agent-props {\n display: flex;\n flex-direction: column;\n height: 100%;\n background: #ffffff;\n overflow: hidden;\n box-sizing: border-box;\n}\n\n.mj-agent-props *,\n.mj-agent-props *::before,\n.mj-agent-props *::after {\n box-sizing: border-box;\n}\n\n/* \u2500\u2500 Header \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n\n.mj-agent-props-header {\n flex-shrink: 0;\n padding: 12px 14px;\n border-bottom: 1px solid #f1f5f9;\n border-left: 3px solid transparent;\n}\n\n.mj-agent-props-header-top {\n display: flex;\n align-items: center;\n justify-content: space-between;\n margin-bottom: 10px;\n}\n\n.mj-agent-props-header-label {\n font-size: 10px;\n font-weight: 700;\n letter-spacing: 1.2px;\n text-transform: uppercase;\n color: #94a3b8;\n}\n\n.mj-agent-props-close {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 26px;\n height: 26px;\n border: none;\n border-radius: 6px;\n background: transparent;\n color: #94a3b8;\n cursor: pointer;\n font-size: 12px;\n transition: all 0.15s ease;\n}\n\n.mj-agent-props-close:hover { background: #f1f5f9; color: #475569; }\n\n/* \u2500\u2500 Identity Card \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n\n.mj-agent-props-identity {\n display: flex;\n align-items: flex-start;\n gap: 10px;\n}\n\n.mj-agent-props-identity-icon {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 32px;\n height: 32px;\n min-width: 32px;\n border-radius: 8px;\n color: #ffffff;\n font-size: 13px;\n flex-shrink: 0;\n}\n\n.mj-agent-props-identity-icon--path {\n border-radius: 50%;\n width: 28px;\n height: 28px;\n min-width: 28px;\n font-size: 11px;\n}\n\n.mj-agent-props-identity-info {\n display: flex;\n flex-direction: column;\n gap: 4px;\n min-width: 0;\n}\n\n.mj-agent-props-identity-name {\n font-size: 14px;\n font-weight: 600;\n color: #1e293b;\n line-height: 1.3;\n word-break: break-word;\n}\n\n.mj-agent-props-identity-meta {\n display: flex;\n align-items: center;\n gap: 6px;\n flex-wrap: wrap;\n}\n\n.mj-agent-props-type-pill {\n display: inline-flex;\n align-items: center;\n font-size: 11px;\n font-weight: 600;\n padding: 1px 7px;\n border-radius: 4px;\n line-height: 1.6;\n}\n\n.mj-agent-props-status-dot {\n display: inline-block;\n width: 7px;\n height: 7px;\n border-radius: 50%;\n flex-shrink: 0;\n}\n\n.mj-agent-props-status-label {\n font-size: 11px;\n color: #64748b;\n}\n\n.mj-agent-props-start-badge {\n display: inline-flex;\n align-items: center;\n font-size: 10px;\n font-weight: 600;\n color: #059669;\n background: #ecfdf5;\n padding: 1px 6px;\n border-radius: 3px;\n letter-spacing: 0.2px;\n}\n\n.mj-agent-props-priority-badge {\n font-size: 11px;\n color: #64748b;\n font-weight: 500;\n}\n\n/* \u2500\u2500 Path Route Display \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n\n.mj-agent-props-path-route {\n display: flex;\n align-items: center;\n gap: 6px;\n font-size: 13px;\n font-weight: 600;\n color: #1e293b;\n line-height: 1.3;\n flex-wrap: wrap;\n}\n\n.mj-agent-props-path-step-name {\n max-width: 100px;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.mj-agent-props-path-arrow {\n font-size: 10px;\n color: #94a3b8;\n flex-shrink: 0;\n}\n\n/* \u2500\u2500 Empty State \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n\n.mj-agent-props-empty {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 40px 20px;\n text-align: center;\n flex: 1;\n}\n\n.mj-agent-props-empty i { font-size: 28px; color: #cbd5e1; margin-bottom: 12px; }\n.mj-agent-props-empty p { font-size: 13px; color: #94a3b8; margin: 0; }\n\n/* \u2500\u2500 Scrollable Content \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n\n.mj-agent-props-content {\n flex: 1;\n overflow-y: auto;\n padding-bottom: 16px;\n}\n\n/* \u2500\u2500 Sections \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n\n.mj-agent-props-section {\n border-bottom: 1px solid #f1f5f9;\n}\n\n.mj-agent-props-section:last-child { border-bottom: none; }\n\n.mj-agent-props-section-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n width: 100%;\n padding: 10px 14px;\n border: none;\n background: none;\n cursor: pointer;\n transition: background-color 0.1s ease;\n}\n\n.mj-agent-props-section-header:hover {\n background: #f8fafc;\n}\n\n.mj-agent-props-section-header i {\n font-size: 10px;\n color: #94a3b8;\n transition: transform 0.15s ease;\n}\n\n.mj-agent-props-section-title {\n font-size: 11px;\n font-weight: 600;\n color: #94a3b8;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.mj-agent-props-section-body {\n padding: 0 14px 12px;\n}\n\n/* \u2500\u2500 Fields \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n\n.mj-agent-props-field {\n margin-bottom: 12px;\n}\n\n.mj-agent-props-field label {\n display: block;\n font-size: 12px;\n font-weight: 500;\n color: #475569;\n margin-bottom: 4px;\n}\n\n.mj-agent-props-field--row {\n display: flex;\n align-items: center;\n}\n\n.mj-agent-props-input {\n width: 100%;\n padding: 6px 10px;\n border: 1px solid #e2e8f0;\n border-radius: 6px;\n font-size: 13px;\n color: #1e293b;\n background: #ffffff;\n transition: border-color 0.15s ease;\n outline: none;\n font-family: inherit;\n}\n\n.mj-agent-props-input:focus { border-color: #3b82f6; }\n.mj-agent-props-input:focus-visible { box-shadow: 0 0 0 2px rgba(59, 130, 246, 0.15); }\n\n/* Select dropdown with consistent cross-browser styling */\nselect.mj-agent-props-input {\n appearance: none;\n background-image: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%2364748b' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E\");\n background-repeat: no-repeat;\n background-position: right 8px center;\n padding-right: 28px;\n cursor: pointer;\n}\n\n.mj-agent-props-textarea {\n resize: vertical;\n min-height: 48px;\n}\n\n.mj-agent-props-checkbox-label {\n display: flex !important;\n align-items: center;\n gap: 8px;\n font-size: 13px;\n color: #475569;\n cursor: pointer;\n}\n\n.mj-agent-props-checkbox-label input[type=\"checkbox\"] {\n width: 16px;\n height: 16px;\n accent-color: #3b82f6;\n cursor: pointer;\n}\n\n/* \u2500\u2500 Read-only Values \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n\n.mj-agent-props-readonly-value {\n display: flex;\n align-items: center;\n gap: 6px;\n font-size: 13px;\n color: #1e293b;\n background: #f8fafc;\n border: 1px solid #f1f5f9;\n border-radius: 6px;\n padding: 6px 10px;\n min-height: 34px;\n word-break: break-word;\n}\n\n.mj-agent-props-readonly-value--muted {\n color: #64748b;\n font-style: italic;\n}\n\n/* \u2500\u2500 Code Editor in Panel \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n\n.mj-agent-props-field mj-code-editor {\n display: block;\n border: 1px solid #e2e8f0;\n border-radius: 6px;\n overflow: hidden;\n min-height: 60px;\n max-height: 200px;\n}\n\n.mj-agent-props-field mj-code-editor .cm-editor {\n font-size: 12px;\n}\n\n/* \u2500\u2500 Hints \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n\n.mj-agent-props-hint {\n display: block;\n font-size: 11px;\n color: #94a3b8;\n margin-top: 3px;\n}\n\n/* \u2500\u2500 Danger Zone \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n\n.mj-agent-props-danger {\n padding: 12px 14px;\n}\n\n.mj-agent-props-delete-btn {\n width: 100%;\n padding: 8px 12px;\n border: 1px solid #fecaca;\n border-radius: 6px;\n background: #fef2f2;\n color: #dc2626;\n font-size: 13px;\n font-weight: 500;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 6px;\n transition: all 0.15s ease;\n}\n\n.mj-agent-props-delete-btn:hover { background: #fee2e2; border-color: #fca5a5; }\n\n.mj-agent-props-delete-btn i { font-size: 12px; }\n"], encapsulation: 2 });
1107
+ }
1108
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(AgentPropertiesPanelComponent, [{
1109
+ type: Component,
1110
+ args: [{ standalone: false, selector: 'mj-agent-properties-panel', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.Default, template: "<div class=\"mj-agent-props\">\n\n <!-- Empty State -->\n @if (!isStepSelected && !isConnectionSelected) {\n <div class=\"mj-agent-props-empty\">\n <i class=\"fa-solid fa-mouse-pointer\"></i>\n <p>Select a step or connection to view its properties</p>\n </div>\n }\n\n <!-- ============================================ -->\n <!-- STEP PROPERTIES -->\n <!-- ============================================ -->\n @if (isStepSelected) {\n <!-- Step Header -->\n <div class=\"mj-agent-props-header mj-agent-props-header--step\"\n [style.border-left-color]=\"stepTypeColor\">\n <div class=\"mj-agent-props-header-top\">\n <span class=\"mj-agent-props-header-label\">STEP</span>\n <button class=\"mj-agent-props-close\" (click)=\"CloseRequested.emit()\" title=\"Close\">\n <i class=\"fa-solid fa-times\"></i>\n </button>\n </div>\n <!-- Identity card -->\n <div class=\"mj-agent-props-identity\">\n <div class=\"mj-agent-props-identity-icon\" [style.background]=\"stepTypeColor\">\n <i class=\"fa-solid\" [ngClass]=\"stepTypeIcon\"></i>\n </div>\n <div class=\"mj-agent-props-identity-info\">\n <span class=\"mj-agent-props-identity-name\">{{ Step!.Name }}</span>\n <span class=\"mj-agent-props-identity-meta\">\n <span class=\"mj-agent-props-type-pill\" [style.color]=\"stepTypeColor\"\n [style.background]=\"stepTypeColor + '18'\">{{ stepTypeLabel }}</span>\n <span class=\"mj-agent-props-status-dot\" [style.background]=\"statusColor\"></span>\n <span class=\"mj-agent-props-status-label\">{{ Step!.Status }}</span>\n @if (Step!.StartingStep) {\n <span class=\"mj-agent-props-start-badge\">Start</span>\n }\n </span>\n </div>\n </div>\n </div>\n <div class=\"mj-agent-props-content\">\n <!-- \u2500\u2500 General Section \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 -->\n <div class=\"mj-agent-props-section\">\n <button class=\"mj-agent-props-section-header\" (click)=\"ToggleSection('general')\">\n <span class=\"mj-agent-props-section-title\">General</span>\n <i class=\"fa-solid\" [ngClass]=\"IsSectionCollapsed('general') ? 'fa-chevron-right' : 'fa-chevron-down'\"></i>\n </button>\n @if (!IsSectionCollapsed('general')) {\n <div class=\"mj-agent-props-section-body\">\n <div class=\"mj-agent-props-field\">\n <label>Name</label>\n @if (!ReadOnly) {\n <input type=\"text\" [value]=\"Step!.Name\"\n (input)=\"OnNameChange(InputValue($event))\"\n placeholder=\"Step name...\" class=\"mj-agent-props-input\">\n }\n @if (ReadOnly) {\n <div class=\"mj-agent-props-readonly-value\">{{ Step!.Name }}</div>\n }\n </div>\n <div class=\"mj-agent-props-field\">\n <label>Description</label>\n @if (!ReadOnly) {\n <textarea [value]=\"Step!.Description || ''\"\n (input)=\"OnDescriptionChange(InputValue($event))\"\n placeholder=\"Optional description...\" rows=\"2\"\n class=\"mj-agent-props-input mj-agent-props-textarea\"></textarea>\n }\n @if (ReadOnly) {\n <div class=\"mj-agent-props-readonly-value\">\n {{ Step!.Description || '\u2014' }}\n </div>\n }\n </div>\n <div class=\"mj-agent-props-field\">\n <label>Status</label>\n @if (!ReadOnly) {\n <select [value]=\"Step!.Status\"\n (change)=\"OnStatusChange(InputValue($event))\"\n class=\"mj-agent-props-input\">\n <option value=\"Active\">Active</option>\n <option value=\"Disabled\">Disabled</option>\n <option value=\"Pending\">Pending</option>\n </select>\n }\n @if (ReadOnly) {\n <div class=\"mj-agent-props-readonly-value\">\n <span class=\"mj-agent-props-status-dot\" [style.background]=\"statusColor\"></span>\n {{ Step!.Status }}\n </div>\n }\n </div>\n @if (!ReadOnly) {\n <div class=\"mj-agent-props-field mj-agent-props-field--row\">\n <label class=\"mj-agent-props-checkbox-label\">\n <input type=\"checkbox\" [checked]=\"Step!.StartingStep\"\n (change)=\"OnStartingStepChange(CheckedValue($event))\">\n Starting Step\n </label>\n </div>\n }\n @if (ReadOnly && Step!.StartingStep) {\n <div class=\"mj-agent-props-field\">\n <label>Starting Step</label>\n <div class=\"mj-agent-props-readonly-value\">\n <span class=\"mj-agent-props-start-badge\">Yes \u2014 this is the entry point</span>\n </div>\n </div>\n }\n </div>\n }\n </div>\n <!-- \u2500\u2500 Configuration Section \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 -->\n <div class=\"mj-agent-props-section\">\n <button class=\"mj-agent-props-section-header\" (click)=\"ToggleSection('config')\">\n <span class=\"mj-agent-props-section-title\">Configuration</span>\n <i class=\"fa-solid\" [ngClass]=\"IsSectionCollapsed('config') ? 'fa-chevron-right' : 'fa-chevron-down'\"></i>\n </button>\n @if (!IsSectionCollapsed('config')) {\n <div class=\"mj-agent-props-section-body\">\n <!-- Loop Body Type (ForEach / While) -->\n @if (showLoopConfig) {\n <div class=\"mj-agent-props-field\">\n <label>Loop Body Type</label>\n @if (!ReadOnly) {\n <select [value]=\"Step!.LoopBodyType || 'Action'\"\n (change)=\"OnLoopBodyTypeChange(InputValue($event))\"\n class=\"mj-agent-props-input\">\n <option value=\"Action\">Action</option>\n <option value=\"Prompt\">Prompt</option>\n <option value=\"Sub-Agent\">Sub-Agent</option>\n </select>\n }\n @if (ReadOnly) {\n <div class=\"mj-agent-props-readonly-value\">\n {{ Step!.LoopBodyType || 'Action' }}\n </div>\n }\n </div>\n }\n <!-- Action Picker -->\n @if (showActionPicker) {\n <div class=\"mj-agent-props-field\">\n <label>Action</label>\n @if (!ReadOnly) {\n <select [value]=\"Step!.ActionID || ''\"\n (change)=\"OnActionChange(InputValue($event))\"\n class=\"mj-agent-props-input\">\n <option value=\"\">-- Select Action --</option>\n @for (action of Actions; track action) {\n <option [value]=\"action.ID\">{{ action.Name }}</option>\n }\n </select>\n }\n @if (ReadOnly) {\n <div class=\"mj-agent-props-readonly-value\">{{ selectedActionName }}</div>\n }\n </div>\n }\n <!-- Prompt Picker -->\n @if (showPromptPicker) {\n <div class=\"mj-agent-props-field\">\n <label>Prompt</label>\n @if (!ReadOnly) {\n <select [value]=\"Step!.PromptID || ''\"\n (change)=\"OnPromptChange(InputValue($event))\"\n class=\"mj-agent-props-input\">\n <option value=\"\">-- Select Prompt --</option>\n @for (prompt of Prompts; track prompt) {\n <option [value]=\"prompt.ID\">{{ prompt.Name }}</option>\n }\n </select>\n }\n @if (ReadOnly) {\n <div class=\"mj-agent-props-readonly-value\">{{ selectedPromptName }}</div>\n }\n </div>\n }\n <!-- Sub-Agent Picker -->\n @if (showAgentPicker) {\n <div class=\"mj-agent-props-field\">\n <label>Sub-Agent</label>\n @if (!ReadOnly) {\n <select [value]=\"Step!.SubAgentID || ''\"\n (change)=\"OnSubAgentChange(InputValue($event))\"\n class=\"mj-agent-props-input\">\n <option value=\"\">-- Select Agent --</option>\n @for (agent of Agents; track agent) {\n <option [value]=\"agent.ID\">{{ agent.Name }}</option>\n }\n </select>\n }\n @if (ReadOnly) {\n <div class=\"mj-agent-props-readonly-value\">{{ selectedAgentName }}</div>\n }\n </div>\n }\n <!-- Loop Configuration (JSON) -->\n @if (showLoopConfig) {\n <div class=\"mj-agent-props-field\">\n <label>Loop Configuration</label>\n <mj-code-editor\n [value]=\"FormatJsonDisplay(Step!.Configuration)\"\n language=\"json\"\n [readonly]=\"ReadOnly\"\n setup=\"minimal\"\n [lineWrapping]=\"true\"\n (change)=\"OnConfigurationChange($any($event))\">\n </mj-code-editor>\n </div>\n }\n </div>\n }\n </div>\n <!-- \u2500\u2500 Data Mapping Section (Action steps) \u2500\u2500\u2500 -->\n @if (Step!.StepType === 'Action' || showActionPicker) {\n <div class=\"mj-agent-props-section\">\n <button class=\"mj-agent-props-section-header\" (click)=\"ToggleSection('mapping')\">\n <span class=\"mj-agent-props-section-title\">Data Mapping</span>\n <i class=\"fa-solid\" [ngClass]=\"IsSectionCollapsed('mapping') ? 'fa-chevron-right' : 'fa-chevron-down'\"></i>\n </button>\n @if (!IsSectionCollapsed('mapping')) {\n <div class=\"mj-agent-props-section-body\">\n <div class=\"mj-agent-props-field\">\n <label>Input Mapping</label>\n <mj-code-editor\n [value]=\"FormatJsonDisplay(Step!.ActionInputMapping)\"\n language=\"json\"\n [readonly]=\"ReadOnly\"\n setup=\"minimal\"\n [lineWrapping]=\"true\"\n placeholder=\"Enter JSON input mapping...\"\n (change)=\"OnInputMappingChange($any($event))\">\n </mj-code-editor>\n </div>\n <div class=\"mj-agent-props-field\">\n <label>Output Mapping</label>\n <mj-code-editor\n [value]=\"FormatJsonDisplay(Step!.ActionOutputMapping)\"\n language=\"json\"\n [readonly]=\"ReadOnly\"\n setup=\"minimal\"\n [lineWrapping]=\"true\"\n placeholder=\"Enter JSON output mapping...\"\n (change)=\"OnOutputMappingChange($any($event))\">\n </mj-code-editor>\n </div>\n </div>\n }\n </div>\n }\n <!-- \u2500\u2500 Error Handling Section \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 -->\n <div class=\"mj-agent-props-section\">\n <button class=\"mj-agent-props-section-header\" (click)=\"ToggleSection('errors')\">\n <span class=\"mj-agent-props-section-title\">Error Handling</span>\n <i class=\"fa-solid\" [ngClass]=\"IsSectionCollapsed('errors') ? 'fa-chevron-right' : 'fa-chevron-down'\"></i>\n </button>\n @if (!IsSectionCollapsed('errors')) {\n <div class=\"mj-agent-props-section-body\">\n <div class=\"mj-agent-props-field\">\n <label>On Error</label>\n @if (!ReadOnly) {\n <select [value]=\"Step!.OnErrorBehavior\"\n (change)=\"OnErrorBehaviorChange(InputValue($event))\"\n class=\"mj-agent-props-input\">\n <option value=\"fail\">Fail (stop flow)</option>\n <option value=\"continue\">Continue (ignore error)</option>\n <option value=\"retry\">Retry</option>\n </select>\n }\n @if (ReadOnly) {\n <div class=\"mj-agent-props-readonly-value\">\n {{ Step!.OnErrorBehavior === 'fail' ? 'Fail (stop flow)' :\n Step!.OnErrorBehavior === 'continue' ? 'Continue (ignore error)' : 'Retry' }}\n </div>\n }\n </div>\n @if (Step!.OnErrorBehavior === 'retry') {\n <div class=\"mj-agent-props-field\">\n <label>Retry Count</label>\n @if (!ReadOnly) {\n <input type=\"number\" [value]=\"Step!.RetryCount\" min=\"0\" max=\"10\"\n (input)=\"OnRetryCountChange(NumericValue($event))\"\n class=\"mj-agent-props-input\">\n }\n @if (ReadOnly) {\n <div class=\"mj-agent-props-readonly-value\">{{ Step!.RetryCount }}</div>\n }\n </div>\n }\n <div class=\"mj-agent-props-field\">\n <label>Timeout (seconds)</label>\n @if (!ReadOnly) {\n <input type=\"number\" [value]=\"Step!.TimeoutSeconds\" min=\"1\"\n (input)=\"OnTimeoutChange(NumericValue($event))\"\n class=\"mj-agent-props-input\">\n }\n @if (ReadOnly) {\n <div class=\"mj-agent-props-readonly-value\">{{ Step!.TimeoutSeconds }}s</div>\n }\n </div>\n </div>\n }\n </div>\n <!-- \u2500\u2500 Danger Zone \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 -->\n @if (!ReadOnly) {\n <div class=\"mj-agent-props-section mj-agent-props-danger\">\n <button class=\"mj-agent-props-delete-btn\" (click)=\"OnDeleteStep()\">\n <i class=\"fa-solid fa-trash-can\"></i> Delete Step\n </button>\n </div>\n }\n </div>\n }\n\n <!-- ============================================ -->\n <!-- PATH PROPERTIES -->\n <!-- ============================================ -->\n @if (isConnectionSelected) {\n <!-- Path Header -->\n <div class=\"mj-agent-props-header mj-agent-props-header--path\"\n [style.border-left-color]=\"pathAccentColor\">\n <div class=\"mj-agent-props-header-top\">\n <span class=\"mj-agent-props-header-label\">PATH</span>\n <button class=\"mj-agent-props-close\" (click)=\"CloseRequested.emit()\" title=\"Close\">\n <i class=\"fa-solid fa-times\"></i>\n </button>\n </div>\n <!-- Path identity card -->\n <div class=\"mj-agent-props-identity\">\n <div class=\"mj-agent-props-identity-icon mj-agent-props-identity-icon--path\"\n [style.background]=\"pathAccentColor\">\n <i class=\"fa-solid fa-arrow-right\"></i>\n </div>\n <div class=\"mj-agent-props-identity-info\">\n <span class=\"mj-agent-props-path-route\">\n <span class=\"mj-agent-props-path-step-name\">{{ originStepName }}</span>\n <i class=\"fa-solid fa-arrow-right mj-agent-props-path-arrow\"></i>\n <span class=\"mj-agent-props-path-step-name\">{{ destinationStepName }}</span>\n </span>\n <span class=\"mj-agent-props-identity-meta\">\n <span class=\"mj-agent-props-type-pill\"\n [style.color]=\"pathAccentColor\"\n [style.background]=\"pathAccentColor + '18'\">\n {{ isConditionalPath ? 'Conditional' : 'Always' }}\n </span>\n @if (PathEntity!.Priority !== 0) {\n <span class=\"mj-agent-props-priority-badge\">\n Priority: {{ PathEntity!.Priority }}\n </span>\n }\n </span>\n </div>\n </div>\n </div>\n <div class=\"mj-agent-props-content\">\n <!-- \u2500\u2500 Overview Section \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 -->\n <div class=\"mj-agent-props-section\">\n <button class=\"mj-agent-props-section-header\" (click)=\"ToggleSection('path-overview')\">\n <span class=\"mj-agent-props-section-title\">Route</span>\n <i class=\"fa-solid\" [ngClass]=\"IsSectionCollapsed('path-overview') ? 'fa-chevron-right' : 'fa-chevron-down'\"></i>\n </button>\n @if (!IsSectionCollapsed('path-overview')) {\n <div class=\"mj-agent-props-section-body\">\n <div class=\"mj-agent-props-field\">\n <label>From</label>\n <div class=\"mj-agent-props-readonly-value mj-agent-props-readonly-value--muted\">\n {{ originStepName }}\n </div>\n </div>\n <div class=\"mj-agent-props-field\">\n <label>To</label>\n <div class=\"mj-agent-props-readonly-value mj-agent-props-readonly-value--muted\">\n {{ destinationStepName }}\n </div>\n </div>\n <span class=\"mj-agent-props-hint\">To change the route, rewire the connection on the canvas.</span>\n </div>\n }\n </div>\n <!-- \u2500\u2500 Path Settings Section \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 -->\n <div class=\"mj-agent-props-section\">\n <button class=\"mj-agent-props-section-header\" (click)=\"ToggleSection('path-settings')\">\n <span class=\"mj-agent-props-section-title\">Settings</span>\n <i class=\"fa-solid\" [ngClass]=\"IsSectionCollapsed('path-settings') ? 'fa-chevron-right' : 'fa-chevron-down'\"></i>\n </button>\n @if (!IsSectionCollapsed('path-settings')) {\n <div class=\"mj-agent-props-section-body\">\n <div class=\"mj-agent-props-field\">\n <label>Description</label>\n @if (!ReadOnly) {\n <input type=\"text\" [value]=\"PathEntity!.Description || ''\"\n (input)=\"OnPathDescriptionChange(InputValue($event))\"\n placeholder=\"Path label...\" class=\"mj-agent-props-input\">\n }\n @if (ReadOnly) {\n <div class=\"mj-agent-props-readonly-value\">\n {{ PathEntity!.Description || '\u2014' }}\n </div>\n }\n @if (!ReadOnly) {\n <span class=\"mj-agent-props-hint\">Displayed as a label on the connection line</span>\n }\n </div>\n <div class=\"mj-agent-props-field\">\n <label>Condition</label>\n @if (!ReadOnly) {\n <mj-code-editor\n [value]=\"PathEntity!.Condition || ''\"\n language=\"javascript\"\n [readonly]=\"false\"\n setup=\"minimal\"\n [lineWrapping]=\"true\"\n placeholder=\"e.g. payload.status === 'active'\"\n (change)=\"OnPathConditionChange($any($event))\">\n </mj-code-editor>\n }\n @if (ReadOnly && PathEntity!.Condition) {\n <mj-code-editor\n [value]=\"PathEntity!.Condition\"\n language=\"javascript\"\n [readonly]=\"true\"\n setup=\"minimal\"\n [lineWrapping]=\"true\">\n </mj-code-editor>\n }\n @if (ReadOnly && !PathEntity!.Condition) {\n <div class=\"mj-agent-props-readonly-value mj-agent-props-readonly-value--muted\">\n No condition (always taken)\n </div>\n }\n @if (!ReadOnly) {\n <span class=\"mj-agent-props-hint\">\n JavaScript expression evaluated at runtime. Leave empty for unconditional.\n </span>\n }\n </div>\n <div class=\"mj-agent-props-field\">\n <label>Priority</label>\n @if (!ReadOnly) {\n <input type=\"number\" [value]=\"PathEntity!.Priority\" min=\"-100\" max=\"100\"\n (input)=\"OnPathPriorityChange(NumericValue($event))\"\n class=\"mj-agent-props-input\">\n }\n @if (ReadOnly) {\n <div class=\"mj-agent-props-readonly-value\">{{ PathEntity!.Priority }}</div>\n }\n <span class=\"mj-agent-props-hint\">Higher priority paths are evaluated first when multiple paths leave a step.</span>\n </div>\n </div>\n }\n </div>\n <!-- \u2500\u2500 Danger Zone \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 -->\n @if (!ReadOnly) {\n <div class=\"mj-agent-props-section mj-agent-props-danger\">\n <button class=\"mj-agent-props-delete-btn\" (click)=\"OnDeletePath()\">\n <i class=\"fa-solid fa-trash-can\"></i> Delete Path\n </button>\n </div>\n }\n </div>\n }\n</div>\n", styles: ["/* ============================================================\n Agent Properties Panel \u2014 Step/Connection configuration\n ============================================================ */\n\n.mj-agent-props {\n display: flex;\n flex-direction: column;\n height: 100%;\n background: #ffffff;\n overflow: hidden;\n box-sizing: border-box;\n}\n\n.mj-agent-props *,\n.mj-agent-props *::before,\n.mj-agent-props *::after {\n box-sizing: border-box;\n}\n\n/* \u2500\u2500 Header \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n\n.mj-agent-props-header {\n flex-shrink: 0;\n padding: 12px 14px;\n border-bottom: 1px solid #f1f5f9;\n border-left: 3px solid transparent;\n}\n\n.mj-agent-props-header-top {\n display: flex;\n align-items: center;\n justify-content: space-between;\n margin-bottom: 10px;\n}\n\n.mj-agent-props-header-label {\n font-size: 10px;\n font-weight: 700;\n letter-spacing: 1.2px;\n text-transform: uppercase;\n color: #94a3b8;\n}\n\n.mj-agent-props-close {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 26px;\n height: 26px;\n border: none;\n border-radius: 6px;\n background: transparent;\n color: #94a3b8;\n cursor: pointer;\n font-size: 12px;\n transition: all 0.15s ease;\n}\n\n.mj-agent-props-close:hover { background: #f1f5f9; color: #475569; }\n\n/* \u2500\u2500 Identity Card \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n\n.mj-agent-props-identity {\n display: flex;\n align-items: flex-start;\n gap: 10px;\n}\n\n.mj-agent-props-identity-icon {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 32px;\n height: 32px;\n min-width: 32px;\n border-radius: 8px;\n color: #ffffff;\n font-size: 13px;\n flex-shrink: 0;\n}\n\n.mj-agent-props-identity-icon--path {\n border-radius: 50%;\n width: 28px;\n height: 28px;\n min-width: 28px;\n font-size: 11px;\n}\n\n.mj-agent-props-identity-info {\n display: flex;\n flex-direction: column;\n gap: 4px;\n min-width: 0;\n}\n\n.mj-agent-props-identity-name {\n font-size: 14px;\n font-weight: 600;\n color: #1e293b;\n line-height: 1.3;\n word-break: break-word;\n}\n\n.mj-agent-props-identity-meta {\n display: flex;\n align-items: center;\n gap: 6px;\n flex-wrap: wrap;\n}\n\n.mj-agent-props-type-pill {\n display: inline-flex;\n align-items: center;\n font-size: 11px;\n font-weight: 600;\n padding: 1px 7px;\n border-radius: 4px;\n line-height: 1.6;\n}\n\n.mj-agent-props-status-dot {\n display: inline-block;\n width: 7px;\n height: 7px;\n border-radius: 50%;\n flex-shrink: 0;\n}\n\n.mj-agent-props-status-label {\n font-size: 11px;\n color: #64748b;\n}\n\n.mj-agent-props-start-badge {\n display: inline-flex;\n align-items: center;\n font-size: 10px;\n font-weight: 600;\n color: #059669;\n background: #ecfdf5;\n padding: 1px 6px;\n border-radius: 3px;\n letter-spacing: 0.2px;\n}\n\n.mj-agent-props-priority-badge {\n font-size: 11px;\n color: #64748b;\n font-weight: 500;\n}\n\n/* \u2500\u2500 Path Route Display \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n\n.mj-agent-props-path-route {\n display: flex;\n align-items: center;\n gap: 6px;\n font-size: 13px;\n font-weight: 600;\n color: #1e293b;\n line-height: 1.3;\n flex-wrap: wrap;\n}\n\n.mj-agent-props-path-step-name {\n max-width: 100px;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.mj-agent-props-path-arrow {\n font-size: 10px;\n color: #94a3b8;\n flex-shrink: 0;\n}\n\n/* \u2500\u2500 Empty State \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n\n.mj-agent-props-empty {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 40px 20px;\n text-align: center;\n flex: 1;\n}\n\n.mj-agent-props-empty i { font-size: 28px; color: #cbd5e1; margin-bottom: 12px; }\n.mj-agent-props-empty p { font-size: 13px; color: #94a3b8; margin: 0; }\n\n/* \u2500\u2500 Scrollable Content \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n\n.mj-agent-props-content {\n flex: 1;\n overflow-y: auto;\n padding-bottom: 16px;\n}\n\n/* \u2500\u2500 Sections \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n\n.mj-agent-props-section {\n border-bottom: 1px solid #f1f5f9;\n}\n\n.mj-agent-props-section:last-child { border-bottom: none; }\n\n.mj-agent-props-section-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n width: 100%;\n padding: 10px 14px;\n border: none;\n background: none;\n cursor: pointer;\n transition: background-color 0.1s ease;\n}\n\n.mj-agent-props-section-header:hover {\n background: #f8fafc;\n}\n\n.mj-agent-props-section-header i {\n font-size: 10px;\n color: #94a3b8;\n transition: transform 0.15s ease;\n}\n\n.mj-agent-props-section-title {\n font-size: 11px;\n font-weight: 600;\n color: #94a3b8;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.mj-agent-props-section-body {\n padding: 0 14px 12px;\n}\n\n/* \u2500\u2500 Fields \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n\n.mj-agent-props-field {\n margin-bottom: 12px;\n}\n\n.mj-agent-props-field label {\n display: block;\n font-size: 12px;\n font-weight: 500;\n color: #475569;\n margin-bottom: 4px;\n}\n\n.mj-agent-props-field--row {\n display: flex;\n align-items: center;\n}\n\n.mj-agent-props-input {\n width: 100%;\n padding: 6px 10px;\n border: 1px solid #e2e8f0;\n border-radius: 6px;\n font-size: 13px;\n color: #1e293b;\n background: #ffffff;\n transition: border-color 0.15s ease;\n outline: none;\n font-family: inherit;\n}\n\n.mj-agent-props-input:focus { border-color: #3b82f6; }\n.mj-agent-props-input:focus-visible { box-shadow: 0 0 0 2px rgba(59, 130, 246, 0.15); }\n\n/* Select dropdown with consistent cross-browser styling */\nselect.mj-agent-props-input {\n appearance: none;\n background-image: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%2364748b' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E\");\n background-repeat: no-repeat;\n background-position: right 8px center;\n padding-right: 28px;\n cursor: pointer;\n}\n\n.mj-agent-props-textarea {\n resize: vertical;\n min-height: 48px;\n}\n\n.mj-agent-props-checkbox-label {\n display: flex !important;\n align-items: center;\n gap: 8px;\n font-size: 13px;\n color: #475569;\n cursor: pointer;\n}\n\n.mj-agent-props-checkbox-label input[type=\"checkbox\"] {\n width: 16px;\n height: 16px;\n accent-color: #3b82f6;\n cursor: pointer;\n}\n\n/* \u2500\u2500 Read-only Values \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n\n.mj-agent-props-readonly-value {\n display: flex;\n align-items: center;\n gap: 6px;\n font-size: 13px;\n color: #1e293b;\n background: #f8fafc;\n border: 1px solid #f1f5f9;\n border-radius: 6px;\n padding: 6px 10px;\n min-height: 34px;\n word-break: break-word;\n}\n\n.mj-agent-props-readonly-value--muted {\n color: #64748b;\n font-style: italic;\n}\n\n/* \u2500\u2500 Code Editor in Panel \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n\n.mj-agent-props-field mj-code-editor {\n display: block;\n border: 1px solid #e2e8f0;\n border-radius: 6px;\n overflow: hidden;\n min-height: 60px;\n max-height: 200px;\n}\n\n.mj-agent-props-field mj-code-editor .cm-editor {\n font-size: 12px;\n}\n\n/* \u2500\u2500 Hints \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n\n.mj-agent-props-hint {\n display: block;\n font-size: 11px;\n color: #94a3b8;\n margin-top: 3px;\n}\n\n/* \u2500\u2500 Danger Zone \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n\n.mj-agent-props-danger {\n padding: 12px 14px;\n}\n\n.mj-agent-props-delete-btn {\n width: 100%;\n padding: 8px 12px;\n border: 1px solid #fecaca;\n border-radius: 6px;\n background: #fef2f2;\n color: #dc2626;\n font-size: 13px;\n font-weight: 500;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 6px;\n transition: all 0.15s ease;\n}\n\n.mj-agent-props-delete-btn:hover { background: #fee2e2; border-color: #fca5a5; }\n\n.mj-agent-props-delete-btn i { font-size: 12px; }\n"] }]
1111
+ }], null, { Step: [{
1112
+ type: Input
1113
+ }], SelectedConnection: [{
1114
+ type: Input
1115
+ }], PathEntity: [{
1116
+ type: Input
1117
+ }], ReadOnly: [{
1118
+ type: Input
1119
+ }], Actions: [{
1120
+ type: Input
1121
+ }], Prompts: [{
1122
+ type: Input
1123
+ }], Agents: [{
1124
+ type: Input
1125
+ }], AllSteps: [{
1126
+ type: Input
1127
+ }], StepChanged: [{
1128
+ type: Output
1129
+ }], PathChanged: [{
1130
+ type: Output
1131
+ }], DeleteStepRequested: [{
1132
+ type: Output
1133
+ }], DeletePathRequested: [{
1134
+ type: Output
1135
+ }], CloseRequested: [{
1136
+ type: Output
1137
+ }] }); })();
1138
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(AgentPropertiesPanelComponent, { className: "AgentPropertiesPanelComponent", filePath: "src/lib/agent-editor/agent-properties-panel.component.ts", lineNumber: 35 }); })();
1139
+ //# sourceMappingURL=agent-properties-panel.component.js.map