@memberjunction/ng-core-entity-forms 2.50.0 → 2.51.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 (97) hide show
  1. package/README.md +215 -1
  2. package/dist/lib/custom/AIAgents/agent-execution-monitor.component.d.ts +244 -0
  3. package/dist/lib/custom/AIAgents/agent-execution-monitor.component.d.ts.map +1 -0
  4. package/dist/lib/custom/AIAgents/agent-execution-monitor.component.js +1314 -0
  5. package/dist/lib/custom/AIAgents/agent-execution-monitor.component.js.map +1 -0
  6. package/dist/lib/custom/AIAgents/agent-execution-node.component.d.ts +19 -0
  7. package/dist/lib/custom/AIAgents/agent-execution-node.component.d.ts.map +1 -0
  8. package/dist/lib/custom/AIAgents/agent-execution-node.component.js +458 -0
  9. package/dist/lib/custom/AIAgents/agent-execution-node.component.js.map +1 -0
  10. package/dist/lib/custom/AIAgents/ai-agent-form.component.d.ts +171 -11
  11. package/dist/lib/custom/AIAgents/ai-agent-form.component.d.ts.map +1 -1
  12. package/dist/lib/custom/AIAgents/ai-agent-form.component.js +1411 -145
  13. package/dist/lib/custom/AIAgents/ai-agent-form.component.js.map +1 -1
  14. package/dist/lib/custom/AIAgents/ai-test-harness-dialog.component.d.ts +78 -0
  15. package/dist/lib/custom/AIAgents/ai-test-harness-dialog.component.d.ts.map +1 -0
  16. package/dist/lib/custom/AIAgents/ai-test-harness-dialog.component.js +157 -0
  17. package/dist/lib/custom/AIAgents/ai-test-harness-dialog.component.js.map +1 -0
  18. package/dist/lib/custom/AIAgents/ai-test-harness.component.d.ts +508 -0
  19. package/dist/lib/custom/AIAgents/ai-test-harness.component.d.ts.map +1 -0
  20. package/dist/lib/custom/AIAgents/ai-test-harness.component.js +2658 -0
  21. package/dist/lib/custom/AIAgents/ai-test-harness.component.js.map +1 -0
  22. package/dist/lib/custom/AIPromptRuns/ai-prompt-run-form.component.d.ts +40 -0
  23. package/dist/lib/custom/AIPromptRuns/ai-prompt-run-form.component.d.ts.map +1 -0
  24. package/dist/lib/custom/AIPromptRuns/ai-prompt-run-form.component.js +965 -0
  25. package/dist/lib/custom/AIPromptRuns/ai-prompt-run-form.component.js.map +1 -0
  26. package/dist/lib/custom/AIPrompts/ai-prompt-execution-dialog.component.d.ts +5 -0
  27. package/dist/lib/custom/AIPrompts/ai-prompt-execution-dialog.component.d.ts.map +1 -1
  28. package/dist/lib/custom/AIPrompts/ai-prompt-execution-dialog.component.js +137 -99
  29. package/dist/lib/custom/AIPrompts/ai-prompt-execution-dialog.component.js.map +1 -1
  30. package/dist/lib/custom/AIPrompts/ai-prompt-form.component.d.ts +80 -4
  31. package/dist/lib/custom/AIPrompts/ai-prompt-form.component.d.ts.map +1 -1
  32. package/dist/lib/custom/AIPrompts/ai-prompt-form.component.js +956 -470
  33. package/dist/lib/custom/AIPrompts/ai-prompt-form.component.js.map +1 -1
  34. package/dist/lib/custom/Actions/action-execution-log-form.component.d.ts +40 -0
  35. package/dist/lib/custom/Actions/action-execution-log-form.component.d.ts.map +1 -0
  36. package/dist/lib/custom/Actions/action-execution-log-form.component.js +530 -0
  37. package/dist/lib/custom/Actions/action-execution-log-form.component.js.map +1 -0
  38. package/dist/lib/custom/Actions/action-form.component.d.ts +90 -0
  39. package/dist/lib/custom/Actions/action-form.component.d.ts.map +1 -0
  40. package/dist/lib/custom/Actions/action-form.component.js +1579 -0
  41. package/dist/lib/custom/Actions/action-form.component.js.map +1 -0
  42. package/dist/lib/custom/Actions/action-param-dialog.component.d.ts +32 -0
  43. package/dist/lib/custom/Actions/action-param-dialog.component.d.ts.map +1 -0
  44. package/dist/lib/custom/Actions/action-param-dialog.component.js +320 -0
  45. package/dist/lib/custom/Actions/action-param-dialog.component.js.map +1 -0
  46. package/dist/lib/custom/Actions/action-test-harness-dialog.component.d.ts +15 -0
  47. package/dist/lib/custom/Actions/action-test-harness-dialog.component.d.ts.map +1 -0
  48. package/dist/lib/custom/Actions/action-test-harness-dialog.component.js +96 -0
  49. package/dist/lib/custom/Actions/action-test-harness-dialog.component.js.map +1 -0
  50. package/dist/lib/custom/Actions/action-test-harness.component.d.ts +50 -0
  51. package/dist/lib/custom/Actions/action-test-harness.component.d.ts.map +1 -0
  52. package/dist/lib/custom/Actions/action-test-harness.component.js +708 -0
  53. package/dist/lib/custom/Actions/action-test-harness.component.js.map +1 -0
  54. package/dist/lib/custom/custom-forms.module.d.ts +31 -19
  55. package/dist/lib/custom/custom-forms.module.d.ts.map +1 -1
  56. package/dist/lib/custom/custom-forms.module.js +94 -15
  57. package/dist/lib/custom/custom-forms.module.js.map +1 -1
  58. package/dist/lib/custom/shared/entity-selector-dialog.component.d.ts +35 -0
  59. package/dist/lib/custom/shared/entity-selector-dialog.component.d.ts.map +1 -0
  60. package/dist/lib/custom/shared/entity-selector-dialog.component.js +290 -0
  61. package/dist/lib/custom/shared/entity-selector-dialog.component.js.map +1 -0
  62. package/dist/lib/custom/test-harness-dialog.service.d.ts +111 -0
  63. package/dist/lib/custom/test-harness-dialog.service.d.ts.map +1 -0
  64. package/dist/lib/custom/test-harness-dialog.service.js +211 -0
  65. package/dist/lib/custom/test-harness-dialog.service.js.map +1 -0
  66. package/dist/lib/generated/Entities/AIAgent/aiagent.form.component.js +12 -11
  67. package/dist/lib/generated/Entities/AIAgent/aiagent.form.component.js.map +1 -1
  68. package/dist/lib/generated/Entities/AIAgent/sections/aiagent-form-overview.component.d.ts +54 -0
  69. package/dist/lib/generated/Entities/AIAgent/sections/aiagent-form-overview.component.d.ts.map +1 -0
  70. package/dist/lib/generated/Entities/AIAgent/sections/aiagent-form-overview.component.js +492 -0
  71. package/dist/lib/generated/Entities/AIAgent/sections/aiagent-form-overview.component.js.map +1 -0
  72. package/dist/lib/generated/Entities/AIAgentRun/aiagentrun.form.component.js +8 -7
  73. package/dist/lib/generated/Entities/AIAgentRun/aiagentrun.form.component.js.map +1 -1
  74. package/dist/lib/generated/Entities/AIConfiguration/aiconfiguration.form.component.js +8 -7
  75. package/dist/lib/generated/Entities/AIConfiguration/aiconfiguration.form.component.js.map +1 -1
  76. package/dist/lib/generated/Entities/AIModel/aimodel.form.component.js +8 -7
  77. package/dist/lib/generated/Entities/AIModel/aimodel.form.component.js.map +1 -1
  78. package/dist/lib/generated/Entities/AIModelType/aimodeltype.form.component.js +12 -11
  79. package/dist/lib/generated/Entities/AIModelType/aimodeltype.form.component.js.map +1 -1
  80. package/dist/lib/generated/Entities/AIPrompt/aiprompt.form.component.js +12 -11
  81. package/dist/lib/generated/Entities/AIPrompt/aiprompt.form.component.js.map +1 -1
  82. package/dist/lib/generated/Entities/AIPromptRun/aipromptrun.form.component.js +12 -11
  83. package/dist/lib/generated/Entities/AIPromptRun/aipromptrun.form.component.js.map +1 -1
  84. package/dist/lib/generated/Entities/AIVendor/aivendor.form.component.js +12 -11
  85. package/dist/lib/generated/Entities/AIVendor/aivendor.form.component.js.map +1 -1
  86. package/dist/lib/generated/Entities/ActionExecutionLog/sections/details.component.d.ts.map +1 -1
  87. package/dist/lib/generated/Entities/ActionExecutionLog/sections/details.component.js +13 -4
  88. package/dist/lib/generated/Entities/ActionExecutionLog/sections/details.component.js.map +1 -1
  89. package/dist/public-api.d.ts +3 -0
  90. package/dist/public-api.d.ts.map +1 -1
  91. package/dist/public-api.js +16 -0
  92. package/dist/public-api.js.map +1 -1
  93. package/package.json +12 -11
  94. package/dist/lib/custom/AIAgents/ai-agent-execution-dialog.component.d.ts +0 -52
  95. package/dist/lib/custom/AIAgents/ai-agent-execution-dialog.component.d.ts.map +0 -1
  96. package/dist/lib/custom/AIAgents/ai-agent-execution-dialog.component.js +0 -590
  97. package/dist/lib/custom/AIAgents/ai-agent-execution-dialog.component.js.map +0 -1
@@ -34,7 +34,7 @@ function AIPromptExecutionDialogComponent_kendo_dialog_0_Conditional_10_Template
34
34
  i0.ɵɵelementEnd()();
35
35
  } }
36
36
  function AIPromptExecutionDialogComponent_kendo_dialog_0_Conditional_11_ng_template_1_Conditional_5_Template(rf, ctx) { if (rf & 1) {
37
- i0.ɵɵelementStart(0, "span", 45);
37
+ i0.ɵɵelementStart(0, "span", 47);
38
38
  i0.ɵɵtext(1);
39
39
  i0.ɵɵelementEnd();
40
40
  } if (rf & 2) {
@@ -43,13 +43,13 @@ function AIPromptExecutionDialogComponent_kendo_dialog_0_Conditional_11_ng_templ
43
43
  i0.ɵɵtextInterpolate1(" ", ctx_r1.dataContextVariables.length, " ");
44
44
  } }
45
45
  function AIPromptExecutionDialogComponent_kendo_dialog_0_Conditional_11_ng_template_1_Template(rf, ctx) { if (rf & 1) {
46
- i0.ɵɵelementStart(0, "span", 42);
47
- i0.ɵɵelement(1, "i", 43);
46
+ i0.ɵɵelementStart(0, "span", 44);
47
+ i0.ɵɵelement(1, "i", 45);
48
48
  i0.ɵɵtext(2, " Data Context Variables ");
49
- i0.ɵɵelementStart(3, "span", 44);
49
+ i0.ɵɵelementStart(3, "span", 46);
50
50
  i0.ɵɵtext(4, "*");
51
51
  i0.ɵɵelementEnd();
52
- i0.ɵɵtemplate(5, AIPromptExecutionDialogComponent_kendo_dialog_0_Conditional_11_ng_template_1_Conditional_5_Template, 2, 1, "span", 45);
52
+ i0.ɵɵtemplate(5, AIPromptExecutionDialogComponent_kendo_dialog_0_Conditional_11_ng_template_1_Conditional_5_Template, 2, 1, "span", 47);
53
53
  i0.ɵɵelementEnd();
54
54
  } if (rf & 2) {
55
55
  const ctx_r1 = i0.ɵɵnextContext(3);
@@ -58,7 +58,7 @@ function AIPromptExecutionDialogComponent_kendo_dialog_0_Conditional_11_ng_templ
58
58
  } }
59
59
  function AIPromptExecutionDialogComponent_kendo_dialog_0_Conditional_11_Conditional_6_For_13_Conditional_4_Template(rf, ctx) { if (rf & 1) {
60
60
  const _r7 = i0.ɵɵgetCurrentView();
61
- i0.ɵɵelementStart(0, "kendo-textarea", 61);
61
+ i0.ɵɵelementStart(0, "kendo-textarea", 63);
62
62
  i0.ɵɵtwoWayListener("ngModelChange", function AIPromptExecutionDialogComponent_kendo_dialog_0_Conditional_11_Conditional_6_For_13_Conditional_4_Template_kendo_textarea_ngModelChange_0_listener($event) { i0.ɵɵrestoreView(_r7); const variable_r6 = i0.ɵɵnextContext().$implicit; i0.ɵɵtwoWayBindingSet(variable_r6.value, $event) || (variable_r6.value = $event); return i0.ɵɵresetView($event); });
63
63
  i0.ɵɵlistener("valueChange", function AIPromptExecutionDialogComponent_kendo_dialog_0_Conditional_11_Conditional_6_For_13_Conditional_4_Template_kendo_textarea_valueChange_0_listener() { i0.ɵɵrestoreView(_r7); const ctx_r1 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r1.updateDataContextFromVariables()); });
64
64
  i0.ɵɵelementEnd();
@@ -72,7 +72,7 @@ function AIPromptExecutionDialogComponent_kendo_dialog_0_Conditional_11_Conditio
72
72
  } }
73
73
  function AIPromptExecutionDialogComponent_kendo_dialog_0_Conditional_11_Conditional_6_For_13_Conditional_5_Template(rf, ctx) { if (rf & 1) {
74
74
  const _r10 = i0.ɵɵgetCurrentView();
75
- i0.ɵɵelementStart(0, "kendo-dropdownlist", 62);
75
+ i0.ɵɵelementStart(0, "kendo-dropdownlist", 64);
76
76
  i0.ɵɵtwoWayListener("ngModelChange", function AIPromptExecutionDialogComponent_kendo_dialog_0_Conditional_11_Conditional_6_For_13_Conditional_5_Template_kendo_dropdownlist_ngModelChange_0_listener($event) { i0.ɵɵrestoreView(_r10); const variable_r6 = i0.ɵɵnextContext().$implicit; i0.ɵɵtwoWayBindingSet(variable_r6.value, $event) || (variable_r6.value = $event); return i0.ɵɵresetView($event); });
77
77
  i0.ɵɵlistener("valueChange", function AIPromptExecutionDialogComponent_kendo_dialog_0_Conditional_11_Conditional_6_For_13_Conditional_5_Template_kendo_dropdownlist_valueChange_0_listener() { i0.ɵɵrestoreView(_r10); const ctx_r1 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r1.updateDataContextFromVariables()); });
78
78
  i0.ɵɵelementEnd();
@@ -86,7 +86,7 @@ function AIPromptExecutionDialogComponent_kendo_dialog_0_Conditional_11_Conditio
86
86
  } }
87
87
  function AIPromptExecutionDialogComponent_kendo_dialog_0_Conditional_11_Conditional_6_For_13_Conditional_6_Template(rf, ctx) { if (rf & 1) {
88
88
  const _r11 = i0.ɵɵgetCurrentView();
89
- i0.ɵɵelementStart(0, "kendo-textbox", 63);
89
+ i0.ɵɵelementStart(0, "kendo-textbox", 65);
90
90
  i0.ɵɵtwoWayListener("ngModelChange", function AIPromptExecutionDialogComponent_kendo_dialog_0_Conditional_11_Conditional_6_For_13_Conditional_6_Template_kendo_textbox_ngModelChange_0_listener($event) { i0.ɵɵrestoreView(_r11); const variable_r6 = i0.ɵɵnextContext().$implicit; i0.ɵɵtwoWayBindingSet(variable_r6.value, $event) || (variable_r6.value = $event); return i0.ɵɵresetView($event); });
91
91
  i0.ɵɵlistener("valueChange", function AIPromptExecutionDialogComponent_kendo_dialog_0_Conditional_11_Conditional_6_For_13_Conditional_6_Template_kendo_textbox_valueChange_0_listener() { i0.ɵɵrestoreView(_r11); const ctx_r1 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r1.updateDataContextFromVariables()); });
92
92
  i0.ɵɵelementEnd();
@@ -100,20 +100,20 @@ function AIPromptExecutionDialogComponent_kendo_dialog_0_Conditional_11_Conditio
100
100
  } }
101
101
  function AIPromptExecutionDialogComponent_kendo_dialog_0_Conditional_11_Conditional_6_For_13_Template(rf, ctx) { if (rf & 1) {
102
102
  const _r5 = i0.ɵɵgetCurrentView();
103
- i0.ɵɵelementStart(0, "div", 52)(1, "div")(2, "kendo-textbox", 53);
103
+ i0.ɵɵelementStart(0, "div", 54)(1, "div")(2, "kendo-textbox", 55);
104
104
  i0.ɵɵtwoWayListener("ngModelChange", function AIPromptExecutionDialogComponent_kendo_dialog_0_Conditional_11_Conditional_6_For_13_Template_kendo_textbox_ngModelChange_2_listener($event) { const variable_r6 = i0.ɵɵrestoreView(_r5).$implicit; i0.ɵɵtwoWayBindingSet(variable_r6.name, $event) || (variable_r6.name = $event); return i0.ɵɵresetView($event); });
105
105
  i0.ɵɵlistener("valueChange", function AIPromptExecutionDialogComponent_kendo_dialog_0_Conditional_11_Conditional_6_For_13_Template_kendo_textbox_valueChange_2_listener() { i0.ɵɵrestoreView(_r5); const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.updateDataContextFromVariables()); });
106
106
  i0.ɵɵelementEnd()();
107
107
  i0.ɵɵelementStart(3, "div");
108
- i0.ɵɵtemplate(4, AIPromptExecutionDialogComponent_kendo_dialog_0_Conditional_11_Conditional_6_For_13_Conditional_4_Template, 1, 4, "kendo-textarea", 54)(5, AIPromptExecutionDialogComponent_kendo_dialog_0_Conditional_11_Conditional_6_For_13_Conditional_5_Template, 1, 10, "kendo-dropdownlist", 55)(6, AIPromptExecutionDialogComponent_kendo_dialog_0_Conditional_11_Conditional_6_For_13_Conditional_6_Template, 1, 4, "kendo-textbox", 56);
108
+ i0.ɵɵtemplate(4, AIPromptExecutionDialogComponent_kendo_dialog_0_Conditional_11_Conditional_6_For_13_Conditional_4_Template, 1, 4, "kendo-textarea", 56)(5, AIPromptExecutionDialogComponent_kendo_dialog_0_Conditional_11_Conditional_6_For_13_Conditional_5_Template, 1, 10, "kendo-dropdownlist", 57)(6, AIPromptExecutionDialogComponent_kendo_dialog_0_Conditional_11_Conditional_6_For_13_Conditional_6_Template, 1, 4, "kendo-textbox", 58);
109
109
  i0.ɵɵelementEnd();
110
- i0.ɵɵelementStart(7, "div")(8, "kendo-dropdownlist", 57);
110
+ i0.ɵɵelementStart(7, "div")(8, "kendo-dropdownlist", 59);
111
111
  i0.ɵɵtwoWayListener("ngModelChange", function AIPromptExecutionDialogComponent_kendo_dialog_0_Conditional_11_Conditional_6_For_13_Template_kendo_dropdownlist_ngModelChange_8_listener($event) { const variable_r6 = i0.ɵɵrestoreView(_r5).$implicit; i0.ɵɵtwoWayBindingSet(variable_r6.type, $event) || (variable_r6.type = $event); return i0.ɵɵresetView($event); });
112
112
  i0.ɵɵlistener("valueChange", function AIPromptExecutionDialogComponent_kendo_dialog_0_Conditional_11_Conditional_6_For_13_Template_kendo_dropdownlist_valueChange_8_listener() { i0.ɵɵrestoreView(_r5); const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.updateDataContextFromVariables()); });
113
113
  i0.ɵɵelementEnd()();
114
- i0.ɵɵelementStart(9, "div", 58)(10, "kendo-button", 59);
114
+ i0.ɵɵelementStart(9, "div", 60)(10, "kendo-button", 61);
115
115
  i0.ɵɵlistener("click", function AIPromptExecutionDialogComponent_kendo_dialog_0_Conditional_11_Conditional_6_For_13_Template_kendo_button_click_10_listener() { const ɵ$index_75_r9 = i0.ɵɵrestoreView(_r5).$index; const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.removeDataContextVariable(ɵ$index_75_r9)); });
116
- i0.ɵɵelement(11, "i", 60);
116
+ i0.ɵɵelement(11, "i", 62);
117
117
  i0.ɵɵelementEnd()()();
118
118
  } if (rf & 2) {
119
119
  const variable_r6 = ctx.$implicit;
@@ -133,9 +133,9 @@ function AIPromptExecutionDialogComponent_kendo_dialog_0_Conditional_11_Conditio
133
133
  } }
134
134
  function AIPromptExecutionDialogComponent_kendo_dialog_0_Conditional_11_Conditional_6_Template(rf, ctx) { if (rf & 1) {
135
135
  const _r4 = i0.ɵɵgetCurrentView();
136
- i0.ɵɵelementStart(0, "div", 20)(1, "div", 46)(2, "div");
136
+ i0.ɵɵelementStart(0, "div", 20)(1, "div", 48)(2, "div");
137
137
  i0.ɵɵtext(3, "Variable Name ");
138
- i0.ɵɵelementStart(4, "span", 47);
138
+ i0.ɵɵelementStart(4, "span", 49);
139
139
  i0.ɵɵtext(5, "*");
140
140
  i0.ɵɵelementEnd()();
141
141
  i0.ɵɵelementStart(6, "div");
@@ -147,10 +147,10 @@ function AIPromptExecutionDialogComponent_kendo_dialog_0_Conditional_11_Conditio
147
147
  i0.ɵɵelementStart(10, "div");
148
148
  i0.ɵɵtext(11, "Actions");
149
149
  i0.ɵɵelementEnd()();
150
- i0.ɵɵrepeaterCreate(12, AIPromptExecutionDialogComponent_kendo_dialog_0_Conditional_11_Conditional_6_For_13_Template, 12, 23, "div", 48, i0.ɵɵrepeaterTrackByIndex);
151
- i0.ɵɵelementStart(14, "div", 49)(15, "kendo-button", 50);
150
+ i0.ɵɵrepeaterCreate(12, AIPromptExecutionDialogComponent_kendo_dialog_0_Conditional_11_Conditional_6_For_13_Template, 12, 23, "div", 50, i0.ɵɵrepeaterTrackByIndex);
151
+ i0.ɵɵelementStart(14, "div", 51)(15, "kendo-button", 52);
152
152
  i0.ɵɵlistener("click", function AIPromptExecutionDialogComponent_kendo_dialog_0_Conditional_11_Conditional_6_Template_kendo_button_click_15_listener() { i0.ɵɵrestoreView(_r4); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.addDataContextVariable()); });
153
- i0.ɵɵelement(16, "i", 51);
153
+ i0.ɵɵelement(16, "i", 53);
154
154
  i0.ɵɵtext(17, " Add Variable ");
155
155
  i0.ɵɵelementEnd()()();
156
156
  } if (rf & 2) {
@@ -163,13 +163,13 @@ function AIPromptExecutionDialogComponent_kendo_dialog_0_Conditional_11_Conditio
163
163
  function AIPromptExecutionDialogComponent_kendo_dialog_0_Conditional_11_Conditional_7_Template(rf, ctx) { if (rf & 1) {
164
164
  const _r12 = i0.ɵɵgetCurrentView();
165
165
  i0.ɵɵelementStart(0, "div", 21);
166
- i0.ɵɵelement(1, "i", 64);
167
- i0.ɵɵelementStart(2, "p", 65);
166
+ i0.ɵɵelement(1, "i", 66);
167
+ i0.ɵɵelementStart(2, "p", 67);
168
168
  i0.ɵɵtext(3, "No variables defined yet");
169
169
  i0.ɵɵelementEnd();
170
- i0.ɵɵelementStart(4, "kendo-button", 66);
170
+ i0.ɵɵelementStart(4, "kendo-button", 68);
171
171
  i0.ɵɵlistener("click", function AIPromptExecutionDialogComponent_kendo_dialog_0_Conditional_11_Conditional_7_Template_kendo_button_click_4_listener() { i0.ɵɵrestoreView(_r12); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.addDataContextVariable()); });
172
- i0.ɵɵelement(5, "i", 51);
172
+ i0.ɵɵelement(5, "i", 53);
173
173
  i0.ɵɵtext(6, " Add First Variable ");
174
174
  i0.ɵɵelementEnd()();
175
175
  } if (rf & 2) {
@@ -178,12 +178,12 @@ function AIPromptExecutionDialogComponent_kendo_dialog_0_Conditional_11_Conditio
178
178
  i0.ɵɵproperty("disabled", ctx_r1.isRunning);
179
179
  } }
180
180
  function AIPromptExecutionDialogComponent_kendo_dialog_0_Conditional_11_Conditional_8_Template(rf, ctx) { if (rf & 1) {
181
- i0.ɵɵelementStart(0, "div", 22)(1, "div", 67);
182
- i0.ɵɵelement(2, "i", 68);
183
- i0.ɵɵelementStart(3, "span", 69);
181
+ i0.ɵɵelementStart(0, "div", 22)(1, "div", 69);
182
+ i0.ɵɵelement(2, "i", 70);
183
+ i0.ɵɵelementStart(3, "span", 71);
184
184
  i0.ɵɵtext(4, "Generated JSON:");
185
185
  i0.ɵɵelementEnd()();
186
- i0.ɵɵelementStart(5, "div", 70);
186
+ i0.ɵɵelementStart(5, "div", 72);
187
187
  i0.ɵɵtext(6);
188
188
  i0.ɵɵelementEnd()();
189
189
  } if (rf & 2) {
@@ -192,13 +192,13 @@ function AIPromptExecutionDialogComponent_kendo_dialog_0_Conditional_11_Conditio
192
192
  i0.ɵɵtextInterpolate(ctx_r1.dataContext);
193
193
  } }
194
194
  function AIPromptExecutionDialogComponent_kendo_dialog_0_Conditional_11_ng_template_10_Template(rf, ctx) { if (rf & 1) {
195
- i0.ɵɵelementStart(0, "span", 42);
196
- i0.ɵɵelement(1, "i", 71);
195
+ i0.ɵɵelementStart(0, "span", 44);
196
+ i0.ɵɵelement(1, "i", 73);
197
197
  i0.ɵɵtext(2, " Execution Options ");
198
198
  i0.ɵɵelementEnd();
199
199
  } }
200
- function AIPromptExecutionDialogComponent_kendo_dialog_0_Conditional_11_ng_template_42_Conditional_3_Template(rf, ctx) { if (rf & 1) {
201
- i0.ɵɵelementStart(0, "span", 74);
200
+ function AIPromptExecutionDialogComponent_kendo_dialog_0_Conditional_11_ng_template_49_Conditional_3_Template(rf, ctx) { if (rf & 1) {
201
+ i0.ɵɵelementStart(0, "span", 76);
202
202
  i0.ɵɵtext(1);
203
203
  i0.ɵɵelementEnd();
204
204
  } if (rf & 2) {
@@ -207,29 +207,29 @@ function AIPromptExecutionDialogComponent_kendo_dialog_0_Conditional_11_ng_templ
207
207
  i0.ɵɵadvance();
208
208
  i0.ɵɵtextInterpolate1(" ", ctx_r1.executionResult.success ? "Success" : "Error", " ");
209
209
  } }
210
- function AIPromptExecutionDialogComponent_kendo_dialog_0_Conditional_11_ng_template_42_Template(rf, ctx) { if (rf & 1) {
211
- i0.ɵɵelementStart(0, "span", 42);
212
- i0.ɵɵelement(1, "i", 72);
210
+ function AIPromptExecutionDialogComponent_kendo_dialog_0_Conditional_11_ng_template_49_Template(rf, ctx) { if (rf & 1) {
211
+ i0.ɵɵelementStart(0, "span", 44);
212
+ i0.ɵɵelement(1, "i", 74);
213
213
  i0.ɵɵtext(2, " Execution Results ");
214
- i0.ɵɵtemplate(3, AIPromptExecutionDialogComponent_kendo_dialog_0_Conditional_11_ng_template_42_Conditional_3_Template, 2, 3, "span", 73);
214
+ i0.ɵɵtemplate(3, AIPromptExecutionDialogComponent_kendo_dialog_0_Conditional_11_ng_template_49_Conditional_3_Template, 2, 3, "span", 75);
215
215
  i0.ɵɵelementEnd();
216
216
  } if (rf & 2) {
217
217
  const ctx_r1 = i0.ɵɵnextContext(3);
218
218
  i0.ɵɵadvance(3);
219
219
  i0.ɵɵconditional(ctx_r1.executionResult ? 3 : -1);
220
220
  } }
221
- function AIPromptExecutionDialogComponent_kendo_dialog_0_Conditional_11_Conditional_44_Template(rf, ctx) { if (rf & 1) {
222
- i0.ɵɵelementStart(0, "div", 39);
221
+ function AIPromptExecutionDialogComponent_kendo_dialog_0_Conditional_11_Conditional_51_Template(rf, ctx) { if (rf & 1) {
222
+ i0.ɵɵelementStart(0, "div", 41);
223
223
  i0.ɵɵelement(1, "i", 13);
224
224
  i0.ɵɵelementStart(2, "span", 14);
225
225
  i0.ɵɵtext(3, "Executing AI prompt...");
226
226
  i0.ɵɵelementEnd()();
227
227
  } }
228
- function AIPromptExecutionDialogComponent_kendo_dialog_0_Conditional_11_Conditional_45_Conditional_7_Template(rf, ctx) { if (rf & 1) {
229
- i0.ɵɵelementStart(0, "div", 58)(1, "div", 76);
228
+ function AIPromptExecutionDialogComponent_kendo_dialog_0_Conditional_11_Conditional_52_Conditional_7_Template(rf, ctx) { if (rf & 1) {
229
+ i0.ɵɵelementStart(0, "div", 60)(1, "div", 78);
230
230
  i0.ɵɵtext(2, "EXECUTION TIME");
231
231
  i0.ɵɵelementEnd();
232
- i0.ɵɵelementStart(3, "div", 80);
232
+ i0.ɵɵelementStart(3, "div", 82);
233
233
  i0.ɵɵtext(4);
234
234
  i0.ɵɵelementEnd()();
235
235
  } if (rf & 2) {
@@ -237,11 +237,11 @@ function AIPromptExecutionDialogComponent_kendo_dialog_0_Conditional_11_Conditio
237
237
  i0.ɵɵadvance(4);
238
238
  i0.ɵɵtextInterpolate1("", ctx_r1.executionResult.executionTimeMs, "ms");
239
239
  } }
240
- function AIPromptExecutionDialogComponent_kendo_dialog_0_Conditional_11_Conditional_45_Conditional_8_Template(rf, ctx) { if (rf & 1) {
241
- i0.ɵɵelementStart(0, "div", 58)(1, "div", 76);
240
+ function AIPromptExecutionDialogComponent_kendo_dialog_0_Conditional_11_Conditional_52_Conditional_8_Template(rf, ctx) { if (rf & 1) {
241
+ i0.ɵɵelementStart(0, "div", 60)(1, "div", 78);
242
242
  i0.ɵɵtext(2, "TOKENS USED");
243
243
  i0.ɵɵelementEnd();
244
- i0.ɵɵelementStart(3, "div", 80);
244
+ i0.ɵɵelementStart(3, "div", 82);
245
245
  i0.ɵɵtext(4);
246
246
  i0.ɵɵelementEnd()();
247
247
  } if (rf & 2) {
@@ -249,11 +249,11 @@ function AIPromptExecutionDialogComponent_kendo_dialog_0_Conditional_11_Conditio
249
249
  i0.ɵɵadvance(4);
250
250
  i0.ɵɵtextInterpolate(ctx_r1.executionResult.tokensUsed);
251
251
  } }
252
- function AIPromptExecutionDialogComponent_kendo_dialog_0_Conditional_11_Conditional_45_Conditional_9_Template(rf, ctx) { if (rf & 1) {
253
- i0.ɵɵelementStart(0, "div", 58)(1, "div", 76);
252
+ function AIPromptExecutionDialogComponent_kendo_dialog_0_Conditional_11_Conditional_52_Conditional_9_Template(rf, ctx) { if (rf & 1) {
253
+ i0.ɵɵelementStart(0, "div", 60)(1, "div", 78);
254
254
  i0.ɵɵtext(2, "RUN ID");
255
255
  i0.ɵɵelementEnd();
256
- i0.ɵɵelementStart(3, "div", 81);
256
+ i0.ɵɵelementStart(3, "div", 83);
257
257
  i0.ɵɵtext(4);
258
258
  i0.ɵɵelementEnd()();
259
259
  } if (rf & 2) {
@@ -261,12 +261,12 @@ function AIPromptExecutionDialogComponent_kendo_dialog_0_Conditional_11_Conditio
261
261
  i0.ɵɵadvance(4);
262
262
  i0.ɵɵtextInterpolate(ctx_r1.executionResult.promptRunId);
263
263
  } }
264
- function AIPromptExecutionDialogComponent_kendo_dialog_0_Conditional_11_Conditional_45_Conditional_11_Template(rf, ctx) { if (rf & 1) {
265
- i0.ɵɵelementStart(0, "div", 79)(1, "h6", 82);
266
- i0.ɵɵelement(2, "i", 83);
264
+ function AIPromptExecutionDialogComponent_kendo_dialog_0_Conditional_11_Conditional_52_Conditional_11_Template(rf, ctx) { if (rf & 1) {
265
+ i0.ɵɵelementStart(0, "div", 81)(1, "h6", 84);
266
+ i0.ɵɵelement(2, "i", 85);
267
267
  i0.ɵɵtext(3, " Output ");
268
268
  i0.ɵɵelementEnd();
269
- i0.ɵɵelementStart(4, "div", 84);
269
+ i0.ɵɵelementStart(4, "div", 86);
270
270
  i0.ɵɵtext(5);
271
271
  i0.ɵɵelementEnd()();
272
272
  } if (rf & 2) {
@@ -274,12 +274,12 @@ function AIPromptExecutionDialogComponent_kendo_dialog_0_Conditional_11_Conditio
274
274
  i0.ɵɵadvance(5);
275
275
  i0.ɵɵtextInterpolate(ctx_r1.executionResult.output);
276
276
  } }
277
- function AIPromptExecutionDialogComponent_kendo_dialog_0_Conditional_11_Conditional_45_Conditional_12_Template(rf, ctx) { if (rf & 1) {
278
- i0.ɵɵelementStart(0, "div", 79)(1, "h6", 85);
279
- i0.ɵɵelement(2, "i", 86);
277
+ function AIPromptExecutionDialogComponent_kendo_dialog_0_Conditional_11_Conditional_52_Conditional_12_Template(rf, ctx) { if (rf & 1) {
278
+ i0.ɵɵelementStart(0, "div", 81)(1, "h6", 87);
279
+ i0.ɵɵelement(2, "i", 88);
280
280
  i0.ɵɵtext(3, " Error ");
281
281
  i0.ɵɵelementEnd();
282
- i0.ɵɵelementStart(4, "div", 87);
282
+ i0.ɵɵelementStart(4, "div", 89);
283
283
  i0.ɵɵtext(5);
284
284
  i0.ɵɵelementEnd()();
285
285
  } if (rf & 2) {
@@ -287,12 +287,12 @@ function AIPromptExecutionDialogComponent_kendo_dialog_0_Conditional_11_Conditio
287
287
  i0.ɵɵadvance(5);
288
288
  i0.ɵɵtextInterpolate(ctx_r1.executionResult.error);
289
289
  } }
290
- function AIPromptExecutionDialogComponent_kendo_dialog_0_Conditional_11_Conditional_45_Conditional_13_Template(rf, ctx) { if (rf & 1) {
291
- i0.ɵɵelementStart(0, "div", 79)(1, "h6", 82);
292
- i0.ɵɵelement(2, "i", 88);
290
+ function AIPromptExecutionDialogComponent_kendo_dialog_0_Conditional_11_Conditional_52_Conditional_13_Template(rf, ctx) { if (rf & 1) {
291
+ i0.ɵɵelementStart(0, "div", 81)(1, "h6", 84);
292
+ i0.ɵɵelement(2, "i", 90);
293
293
  i0.ɵɵtext(3, " Parsed Result ");
294
294
  i0.ɵɵelementEnd();
295
- i0.ɵɵelementStart(4, "div", 89);
295
+ i0.ɵɵelementStart(4, "div", 91);
296
296
  i0.ɵɵtext(5);
297
297
  i0.ɵɵelementEnd()();
298
298
  } if (rf & 2) {
@@ -300,12 +300,12 @@ function AIPromptExecutionDialogComponent_kendo_dialog_0_Conditional_11_Conditio
300
300
  i0.ɵɵadvance(5);
301
301
  i0.ɵɵtextInterpolate(ctx_r1.executionResult.parsedResult);
302
302
  } }
303
- function AIPromptExecutionDialogComponent_kendo_dialog_0_Conditional_11_Conditional_45_Conditional_14_Template(rf, ctx) { if (rf & 1) {
304
- i0.ɵɵelementStart(0, "div", 79)(1, "h6", 82);
305
- i0.ɵɵelement(2, "i", 90);
303
+ function AIPromptExecutionDialogComponent_kendo_dialog_0_Conditional_11_Conditional_52_Conditional_14_Template(rf, ctx) { if (rf & 1) {
304
+ i0.ɵɵelementStart(0, "div", 81)(1, "h6", 84);
305
+ i0.ɵɵelement(2, "i", 92);
306
306
  i0.ɵɵtext(3, " Validation Result ");
307
307
  i0.ɵɵelementEnd();
308
- i0.ɵɵelementStart(4, "div", 91);
308
+ i0.ɵɵelementStart(4, "div", 93);
309
309
  i0.ɵɵtext(5);
310
310
  i0.ɵɵelementEnd()();
311
311
  } if (rf & 2) {
@@ -313,17 +313,17 @@ function AIPromptExecutionDialogComponent_kendo_dialog_0_Conditional_11_Conditio
313
313
  i0.ɵɵadvance(5);
314
314
  i0.ɵɵtextInterpolate(ctx_r1.executionResult.validationResult);
315
315
  } }
316
- function AIPromptExecutionDialogComponent_kendo_dialog_0_Conditional_11_Conditional_45_Template(rf, ctx) { if (rf & 1) {
317
- i0.ɵɵelementStart(0, "div", 40)(1, "div", 75)(2, "div", 58)(3, "div", 76);
316
+ function AIPromptExecutionDialogComponent_kendo_dialog_0_Conditional_11_Conditional_52_Template(rf, ctx) { if (rf & 1) {
317
+ i0.ɵɵelementStart(0, "div", 42)(1, "div", 77)(2, "div", 60)(3, "div", 78);
318
318
  i0.ɵɵtext(4, "STATUS");
319
319
  i0.ɵɵelementEnd();
320
- i0.ɵɵelementStart(5, "div", 77);
320
+ i0.ɵɵelementStart(5, "div", 79);
321
321
  i0.ɵɵtext(6);
322
322
  i0.ɵɵelementEnd()();
323
- i0.ɵɵtemplate(7, AIPromptExecutionDialogComponent_kendo_dialog_0_Conditional_11_Conditional_45_Conditional_7_Template, 5, 1, "div", 58)(8, AIPromptExecutionDialogComponent_kendo_dialog_0_Conditional_11_Conditional_45_Conditional_8_Template, 5, 1, "div", 58)(9, AIPromptExecutionDialogComponent_kendo_dialog_0_Conditional_11_Conditional_45_Conditional_9_Template, 5, 1, "div", 58);
323
+ i0.ɵɵtemplate(7, AIPromptExecutionDialogComponent_kendo_dialog_0_Conditional_11_Conditional_52_Conditional_7_Template, 5, 1, "div", 60)(8, AIPromptExecutionDialogComponent_kendo_dialog_0_Conditional_11_Conditional_52_Conditional_8_Template, 5, 1, "div", 60)(9, AIPromptExecutionDialogComponent_kendo_dialog_0_Conditional_11_Conditional_52_Conditional_9_Template, 5, 1, "div", 60);
324
324
  i0.ɵɵelementEnd();
325
- i0.ɵɵelementStart(10, "div", 78);
326
- i0.ɵɵtemplate(11, AIPromptExecutionDialogComponent_kendo_dialog_0_Conditional_11_Conditional_45_Conditional_11_Template, 6, 1, "div", 79)(12, AIPromptExecutionDialogComponent_kendo_dialog_0_Conditional_11_Conditional_45_Conditional_12_Template, 6, 1, "div", 79)(13, AIPromptExecutionDialogComponent_kendo_dialog_0_Conditional_11_Conditional_45_Conditional_13_Template, 6, 1, "div", 79)(14, AIPromptExecutionDialogComponent_kendo_dialog_0_Conditional_11_Conditional_45_Conditional_14_Template, 6, 1, "div", 79);
325
+ i0.ɵɵelementStart(10, "div", 80);
326
+ i0.ɵɵtemplate(11, AIPromptExecutionDialogComponent_kendo_dialog_0_Conditional_11_Conditional_52_Conditional_11_Template, 6, 1, "div", 81)(12, AIPromptExecutionDialogComponent_kendo_dialog_0_Conditional_11_Conditional_52_Conditional_12_Template, 6, 1, "div", 81)(13, AIPromptExecutionDialogComponent_kendo_dialog_0_Conditional_11_Conditional_52_Conditional_13_Template, 6, 1, "div", 81)(14, AIPromptExecutionDialogComponent_kendo_dialog_0_Conditional_11_Conditional_52_Conditional_14_Template, 6, 1, "div", 81);
327
327
  i0.ɵɵelementEnd()();
328
328
  } if (rf & 2) {
329
329
  const ctx_r1 = i0.ɵɵnextContext(3);
@@ -346,10 +346,10 @@ function AIPromptExecutionDialogComponent_kendo_dialog_0_Conditional_11_Conditio
346
346
  i0.ɵɵadvance();
347
347
  i0.ɵɵconditional(ctx_r1.executionResult.validationResult ? 14 : -1);
348
348
  } }
349
- function AIPromptExecutionDialogComponent_kendo_dialog_0_Conditional_11_Conditional_46_Template(rf, ctx) { if (rf & 1) {
350
- i0.ɵɵelementStart(0, "div", 41)(1, "div", 58);
351
- i0.ɵɵelement(2, "i", 92);
352
- i0.ɵɵelementStart(3, "p", 93);
349
+ function AIPromptExecutionDialogComponent_kendo_dialog_0_Conditional_11_Conditional_53_Template(rf, ctx) { if (rf & 1) {
350
+ i0.ɵɵelementStart(0, "div", 43)(1, "div", 60);
351
+ i0.ɵɵelement(2, "i", 94);
352
+ i0.ɵɵelementStart(3, "p", 95);
353
353
  i0.ɵɵtext(4, "No execution results yet. Run the prompt to see results here.");
354
354
  i0.ɵɵelementEnd()()();
355
355
  } }
@@ -389,28 +389,38 @@ function AIPromptExecutionDialogComponent_kendo_dialog_0_Conditional_11_Template
389
389
  i0.ɵɵelementEnd()();
390
390
  i0.ɵɵelementStart(27, "div", 24)(28, "label", 25);
391
391
  i0.ɵɵelement(29, "i", 31);
392
- i0.ɵɵtext(30, " Configuration ID ");
392
+ i0.ɵɵtext(30, " Response Format ");
393
393
  i0.ɵɵelementEnd();
394
- i0.ɵɵelementStart(31, "kendo-textbox", 32);
395
- i0.ɵɵtwoWayListener("ngModelChange", function AIPromptExecutionDialogComponent_kendo_dialog_0_Conditional_11_Template_kendo_textbox_ngModelChange_31_listener($event) { i0.ɵɵrestoreView(_r3); const ctx_r1 = i0.ɵɵnextContext(2); i0.ɵɵtwoWayBindingSet(ctx_r1.executionOptions.configurationId, $event) || (ctx_r1.executionOptions.configurationId = $event); return i0.ɵɵresetView($event); });
394
+ i0.ɵɵelementStart(31, "kendo-dropdownlist", 32);
395
+ i0.ɵɵtwoWayListener("ngModelChange", function AIPromptExecutionDialogComponent_kendo_dialog_0_Conditional_11_Template_kendo_dropdownlist_ngModelChange_31_listener($event) { i0.ɵɵrestoreView(_r3); const ctx_r1 = i0.ɵɵnextContext(2); i0.ɵɵtwoWayBindingSet(ctx_r1.selectedResponseFormat, $event) || (ctx_r1.selectedResponseFormat = $event); return i0.ɵɵresetView($event); });
396
396
  i0.ɵɵelementEnd();
397
397
  i0.ɵɵelementStart(32, "div", 28);
398
- i0.ɵɵtext(33, " Environment-specific configuration identifier ");
398
+ i0.ɵɵtext(33, " Expected format for AI response (defaults to prompt setting) ");
399
+ i0.ɵɵelementEnd()();
400
+ i0.ɵɵelementStart(34, "div", 24)(35, "label", 25);
401
+ i0.ɵɵelement(36, "i", 33);
402
+ i0.ɵɵtext(37, " Configuration ID ");
403
+ i0.ɵɵelementEnd();
404
+ i0.ɵɵelementStart(38, "kendo-textbox", 34);
405
+ i0.ɵɵtwoWayListener("ngModelChange", function AIPromptExecutionDialogComponent_kendo_dialog_0_Conditional_11_Template_kendo_textbox_ngModelChange_38_listener($event) { i0.ɵɵrestoreView(_r3); const ctx_r1 = i0.ɵɵnextContext(2); i0.ɵɵtwoWayBindingSet(ctx_r1.executionOptions.configurationId, $event) || (ctx_r1.executionOptions.configurationId = $event); return i0.ɵɵresetView($event); });
406
+ i0.ɵɵelementEnd();
407
+ i0.ɵɵelementStart(39, "div", 28);
408
+ i0.ɵɵtext(40, " Environment-specific configuration identifier ");
399
409
  i0.ɵɵelementEnd()();
400
- i0.ɵɵelementStart(34, "div", 24)(35, "label", 33)(36, "kendo-checkbox", 34);
401
- i0.ɵɵtwoWayListener("ngModelChange", function AIPromptExecutionDialogComponent_kendo_dialog_0_Conditional_11_Template_kendo_checkbox_ngModelChange_36_listener($event) { i0.ɵɵrestoreView(_r3); const ctx_r1 = i0.ɵɵnextContext(2); i0.ɵɵtwoWayBindingSet(ctx_r1.executionOptions.skipValidation, $event) || (ctx_r1.executionOptions.skipValidation = $event); return i0.ɵɵresetView($event); });
410
+ i0.ɵɵelementStart(41, "div", 24)(42, "label", 35)(43, "kendo-checkbox", 36);
411
+ i0.ɵɵtwoWayListener("ngModelChange", function AIPromptExecutionDialogComponent_kendo_dialog_0_Conditional_11_Template_kendo_checkbox_ngModelChange_43_listener($event) { i0.ɵɵrestoreView(_r3); const ctx_r1 = i0.ɵɵnextContext(2); i0.ɵɵtwoWayBindingSet(ctx_r1.executionOptions.skipValidation, $event) || (ctx_r1.executionOptions.skipValidation = $event); return i0.ɵɵresetView($event); });
402
412
  i0.ɵɵelementEnd();
403
- i0.ɵɵelement(37, "i", 35);
404
- i0.ɵɵtext(38, " Skip Output Validation ");
413
+ i0.ɵɵelement(44, "i", 37);
414
+ i0.ɵɵtext(45, " Skip Output Validation ");
405
415
  i0.ɵɵelementEnd();
406
- i0.ɵɵelementStart(39, "div", 36);
407
- i0.ɵɵtext(40, " Bypass output format validation for faster execution ");
416
+ i0.ɵɵelementStart(46, "div", 38);
417
+ i0.ɵɵtext(47, " Bypass output format validation for faster execution ");
408
418
  i0.ɵɵelementEnd()()()()();
409
- i0.ɵɵelementStart(41, "kendo-expansionpanel", 37);
410
- i0.ɵɵtwoWayListener("expandedChange", function AIPromptExecutionDialogComponent_kendo_dialog_0_Conditional_11_Template_kendo_expansionpanel_expandedChange_41_listener($event) { i0.ɵɵrestoreView(_r3); const ctx_r1 = i0.ɵɵnextContext(2); i0.ɵɵtwoWayBindingSet(ctx_r1.resultsExpanded, $event) || (ctx_r1.resultsExpanded = $event); return i0.ɵɵresetView($event); });
411
- i0.ɵɵtemplate(42, AIPromptExecutionDialogComponent_kendo_dialog_0_Conditional_11_ng_template_42_Template, 4, 1, "ng-template", 16);
412
- i0.ɵɵelementStart(43, "div", 38);
413
- i0.ɵɵtemplate(44, AIPromptExecutionDialogComponent_kendo_dialog_0_Conditional_11_Conditional_44_Template, 4, 0, "div", 39)(45, AIPromptExecutionDialogComponent_kendo_dialog_0_Conditional_11_Conditional_45_Template, 15, 10, "div", 40)(46, AIPromptExecutionDialogComponent_kendo_dialog_0_Conditional_11_Conditional_46_Template, 5, 0, "div", 41);
419
+ i0.ɵɵelementStart(48, "kendo-expansionpanel", 39);
420
+ i0.ɵɵtwoWayListener("expandedChange", function AIPromptExecutionDialogComponent_kendo_dialog_0_Conditional_11_Template_kendo_expansionpanel_expandedChange_48_listener($event) { i0.ɵɵrestoreView(_r3); const ctx_r1 = i0.ɵɵnextContext(2); i0.ɵɵtwoWayBindingSet(ctx_r1.resultsExpanded, $event) || (ctx_r1.resultsExpanded = $event); return i0.ɵɵresetView($event); });
421
+ i0.ɵɵtemplate(49, AIPromptExecutionDialogComponent_kendo_dialog_0_Conditional_11_ng_template_49_Template, 4, 1, "ng-template", 16);
422
+ i0.ɵɵelementStart(50, "div", 40);
423
+ i0.ɵɵtemplate(51, AIPromptExecutionDialogComponent_kendo_dialog_0_Conditional_11_Conditional_51_Template, 4, 0, "div", 41)(52, AIPromptExecutionDialogComponent_kendo_dialog_0_Conditional_11_Conditional_52_Template, 15, 10, "div", 42)(53, AIPromptExecutionDialogComponent_kendo_dialog_0_Conditional_11_Conditional_53_Template, 5, 0, "div", 43);
414
424
  i0.ɵɵelementEnd()();
415
425
  } if (rf & 2) {
416
426
  const ctx_r1 = i0.ɵɵnextContext(2);
@@ -428,6 +438,9 @@ function AIPromptExecutionDialogComponent_kendo_dialog_0_Conditional_11_Template
428
438
  i0.ɵɵtwoWayProperty("ngModel", ctx_r1.executionOptions.vendorId);
429
439
  i0.ɵɵproperty("data", ctx_r1.availableVendors)("valuePrimitive", true)("filterable", true)("disabled", ctx_r1.isRunning);
430
440
  i0.ɵɵadvance(7);
441
+ i0.ɵɵtwoWayProperty("ngModel", ctx_r1.selectedResponseFormat);
442
+ i0.ɵɵproperty("data", ctx_r1.responseFormatOptions)("valuePrimitive", true)("disabled", ctx_r1.isRunning);
443
+ i0.ɵɵadvance(7);
431
444
  i0.ɵɵtwoWayProperty("ngModel", ctx_r1.executionOptions.configurationId);
432
445
  i0.ɵɵproperty("disabled", ctx_r1.isRunning);
433
446
  i0.ɵɵadvance(5);
@@ -436,22 +449,22 @@ function AIPromptExecutionDialogComponent_kendo_dialog_0_Conditional_11_Template
436
449
  i0.ɵɵadvance(5);
437
450
  i0.ɵɵtwoWayProperty("expanded", ctx_r1.resultsExpanded);
438
451
  i0.ɵɵadvance(3);
439
- i0.ɵɵconditional(ctx_r1.isRunning ? 44 : ctx_r1.executionResult ? 45 : 46);
452
+ i0.ɵɵconditional(ctx_r1.isRunning ? 51 : ctx_r1.executionResult ? 52 : 53);
440
453
  } }
441
454
  function AIPromptExecutionDialogComponent_kendo_dialog_0_Conditional_15_Template(rf, ctx) { if (rf & 1) {
442
455
  const _r13 = i0.ɵɵgetCurrentView();
443
- i0.ɵɵelementStart(0, "kendo-button", 94);
456
+ i0.ɵɵelementStart(0, "kendo-button", 96);
444
457
  i0.ɵɵlistener("click", function AIPromptExecutionDialogComponent_kendo_dialog_0_Conditional_15_Template_kendo_button_click_0_listener() { i0.ɵɵrestoreView(_r13); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.saveResults()); });
445
- i0.ɵɵelement(1, "i", 95);
458
+ i0.ɵɵelement(1, "i", 97);
446
459
  i0.ɵɵtext(2, " Save Results ");
447
460
  i0.ɵɵelementEnd();
448
461
  } }
449
462
  function AIPromptExecutionDialogComponent_kendo_dialog_0_Conditional_17_Template(rf, ctx) { if (rf & 1) {
450
- i0.ɵɵelement(0, "i", 96);
463
+ i0.ɵɵelement(0, "i", 98);
451
464
  i0.ɵɵtext(1, " Running... ");
452
465
  } }
453
466
  function AIPromptExecutionDialogComponent_kendo_dialog_0_Conditional_18_Template(rf, ctx) { if (rf & 1) {
454
- i0.ɵɵelement(0, "i", 97);
467
+ i0.ɵɵelement(0, "i", 99);
455
468
  i0.ɵɵtext(1, " Run Prompt ");
456
469
  } }
457
470
  function AIPromptExecutionDialogComponent_kendo_dialog_0_Template(rf, ctx) { if (rf & 1) {
@@ -468,7 +481,7 @@ function AIPromptExecutionDialogComponent_kendo_dialog_0_Template(rf, ctx) { if
468
481
  i0.ɵɵelementStart(8, "p", 8);
469
482
  i0.ɵɵtext(9, " Define variables for the AI prompt to process. Each variable will be available as data context during execution. ");
470
483
  i0.ɵɵelementEnd()();
471
- i0.ɵɵtemplate(10, AIPromptExecutionDialogComponent_kendo_dialog_0_Conditional_10_Template, 4, 0, "div", 9)(11, AIPromptExecutionDialogComponent_kendo_dialog_0_Conditional_11_Template, 47, 20);
484
+ i0.ɵɵtemplate(10, AIPromptExecutionDialogComponent_kendo_dialog_0_Conditional_10_Template, 4, 0, "div", 9)(11, AIPromptExecutionDialogComponent_kendo_dialog_0_Conditional_11_Template, 54, 24);
472
485
  i0.ɵɵelementEnd();
473
486
  i0.ɵɵelementStart(12, "kendo-dialog-actions")(13, "kendo-button", 10);
474
487
  i0.ɵɵlistener("click", function AIPromptExecutionDialogComponent_kendo_dialog_0_Template_kendo_button_click_13_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.close()); });
@@ -518,6 +531,15 @@ export class AIPromptExecutionDialogComponent {
518
531
  this.isLoading = false;
519
532
  this.isRunning = false;
520
533
  this.executionResult = null;
534
+ // Response format options
535
+ this.selectedResponseFormat = 'Any';
536
+ this.responseFormatOptions = [
537
+ { text: 'Any', value: 'Any' },
538
+ { text: 'Text', value: 'Text' },
539
+ { text: 'Markdown', value: 'Markdown' },
540
+ { text: 'JSON', value: 'JSON' },
541
+ { text: 'Model Specific', value: 'ModelSpecific' }
542
+ ];
521
543
  // UI State
522
544
  this.dataContextExpanded = true;
523
545
  this.optionsExpanded = false;
@@ -535,6 +557,12 @@ export class AIPromptExecutionDialogComponent {
535
557
  this.dataContextExpanded = true;
536
558
  this.optionsExpanded = false;
537
559
  this.resultsExpanded = false;
560
+ // Set default response format from prompt with slight delay for Kendo dropdown
561
+ if (this.aiPrompt) {
562
+ setTimeout(() => {
563
+ this.selectedResponseFormat = this.aiPrompt?.ResponseFormat || 'Any';
564
+ }, 0);
565
+ }
538
566
  // Initialize with one default variable
539
567
  this.addDataContextVariable();
540
568
  if (this.aiPrompt?.ID) {
@@ -569,13 +597,22 @@ export class AIPromptExecutionDialogComponent {
569
597
  async loadAvailableModels() {
570
598
  try {
571
599
  const rv = new RunView();
600
+ // Filter by the prompt's AIModelTypeID if it exists
601
+ let extraFilter = `IsActive=1`;
602
+ if (this.aiPrompt?.AIModelTypeID) {
603
+ extraFilter += ` AND AIModelTypeID='${this.aiPrompt.AIModelTypeID}'`;
604
+ }
572
605
  const result = await rv.RunView({
573
606
  EntityName: 'AI Models',
574
- ExtraFilter: `IsActive=1`,
607
+ ExtraFilter: extraFilter,
575
608
  OrderBy: 'PowerRank DESC, Name ASC',
576
609
  ResultType: 'entity_object'
577
610
  });
578
- this.availableModels = result.Results || [];
611
+ // Add a blank option at the beginning
612
+ this.availableModels = [
613
+ { ID: '', Name: '-- Use Default Model --' },
614
+ ...(result.Results || [])
615
+ ];
579
616
  }
580
617
  catch (error) {
581
618
  console.error('Error loading AI models:', error);
@@ -683,8 +720,8 @@ export class AIPromptExecutionDialogComponent {
683
720
  const dataProvider = Metadata.Provider;
684
721
  // Execute the RunAIPrompt GraphQL mutation
685
722
  const query = `
686
- mutation RunAIPrompt($promptId: String!, $data: String, $modelId: String, $vendorId: String, $configurationId: String, $skipValidation: Boolean, $templateData: String) {
687
- RunAIPrompt(promptId: $promptId, data: $data, modelId: $modelId, vendorId: $vendorId, configurationId: $configurationId, skipValidation: $skipValidation, templateData: $templateData) {
723
+ mutation RunAIPrompt($promptId: String!, $data: String, $modelId: String, $vendorId: String, $configurationId: String, $skipValidation: Boolean, $templateData: String, $responseFormat: String) {
724
+ RunAIPrompt(promptId: $promptId, data: $data, modelId: $modelId, vendorId: $vendorId, configurationId: $configurationId, skipValidation: $skipValidation, templateData: $templateData, responseFormat: $responseFormat) {
688
725
  success
689
726
  output
690
727
  parsedResult
@@ -704,7 +741,8 @@ export class AIPromptExecutionDialogComponent {
704
741
  vendorId: this.executionOptions.vendorId,
705
742
  configurationId: this.executionOptions.configurationId,
706
743
  skipValidation: this.executionOptions.skipValidation,
707
- templateData: null // Could be extended for additional template context
744
+ templateData: null, // Could be extended for additional template context
745
+ responseFormat: this.selectedResponseFormat || undefined
708
746
  };
709
747
  const result = await dataProvider.ExecuteGQL(query, variables);
710
748
  if (result?.RunAIPrompt) {
@@ -770,7 +808,7 @@ export class AIPromptExecutionDialogComponent {
770
808
  this.onClose.emit();
771
809
  }
772
810
  static { this.ɵfac = function AIPromptExecutionDialogComponent_Factory(t) { return new (t || AIPromptExecutionDialogComponent)(); }; }
773
- static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: AIPromptExecutionDialogComponent, selectors: [["mj-ai-prompt-execution-dialog"]], inputs: { aiPrompt: "aiPrompt", isVisible: "isVisible" }, outputs: { isVisibleChange: "isVisibleChange", onClose: "onClose" }, decls: 1, vars: 1, consts: [[3, "minWidth", "width", "height", "title", "close", 4, "ngIf"], [3, "close", "minWidth", "width", "height", "title"], [1, "dialog-content", 2, "display", "flex", "flex-direction", "column", "height", "100%", "font-family", "'Segoe UI', Tahoma, Geneva, Verdana, sans-serif"], [1, "header-section", 2, "margin-bottom", "20px", "padding-bottom", "16px", "border-bottom", "2px solid #e9ecef"], [2, "display", "flex", "align-items", "center", "gap", "12px", "margin-bottom", "8px"], [1, "fa-solid", "fa-robot", 2, "color", "#6f42c1", "font-size", "1.2em"], [2, "margin", "0", "color", "#495057", "font-weight", "600"], [1, "badge", 2, "background", "#6f42c1", "color", "white", "padding", "3px 8px", "border-radius", "12px", "font-size", "0.7em"], [2, "margin", "0", "color", "#6c757d", "font-size", "0.9em"], [1, "loading-state", 2, "display", "flex", "align-items", "center", "justify-content", "center", "padding", "40px"], ["fillMode", "outline", 3, "click"], ["fillMode", "outline", "themeColor", "info"], ["themeColor", "primary", 3, "click", "disabled"], [1, "fa-solid", "fa-spinner", "fa-spin", 2, "font-size", "24px", "color", "#6c757d", "margin-right", "12px"], [2, "color", "#6c757d"], [2, "margin-bottom", "16px", "flex-shrink", "0", 3, "expandedChange", "expanded"], ["kendoExpansionPanelTitleDirective", ""], [2, "padding", "12px 0"], [2, "margin-bottom", "12px", "color", "#6c757d", "font-size", "0.85em"], [1, "fa-solid", "fa-info-circle"], [2, "border", "1px solid #dee2e6", "border-radius", "6px", "background", "#f8f9fa"], [2, "text-align", "center", "padding", "20px", "color", "#6c757d"], [2, "margin-top", "16px"], [2, "display", "grid", "grid-template-columns", "1fr 1fr", "gap", "16px"], [1, "option-group"], [2, "display", "block", "font-weight", "500", "margin-bottom", "6px", "color", "#495057", "font-size", "0.9em"], [1, "fa-solid", "fa-microchip", 2, "margin-right", "6px", "color", "#6c757d"], ["textField", "Name", "valueField", "ID", "placeholder", "Use prompt's configured models...", 2, "width", "100%", 3, "ngModelChange", "ngModel", "data", "valuePrimitive", "filterable", "disabled"], [2, "margin-top", "4px", "font-size", "0.75em", "color", "#6c757d"], [1, "fa-solid", "fa-server", 2, "margin-right", "6px", "color", "#6c757d"], ["textField", "Name", "valueField", "ID", "placeholder", "Use prompt's configured vendors...", 2, "width", "100%", 3, "ngModelChange", "ngModel", "data", "valuePrimitive", "filterable", "disabled"], [1, "fa-solid", "fa-gear", 2, "margin-right", "6px", "color", "#6c757d"], ["placeholder", "Optional configuration identifier...", 2, "width", "100%", 3, "ngModelChange", "ngModel", "disabled"], [2, "display", "flex", "align-items", "center", "font-weight", "500", "color", "#495057", "font-size", "0.9em"], [3, "ngModelChange", "ngModel", "disabled"], [1, "fa-solid", "fa-shield-alt", 2, "margin-right", "6px", "color", "#6c757d"], [2, "margin-top", "4px", "margin-left", "24px", "font-size", "0.75em", "color", "#6c757d"], [2, "margin-bottom", "16px", "flex", "1", "display", "flex", "flex-direction", "column", 3, "expandedChange", "expanded"], [2, "padding", "12px 0", "flex", "1", "display", "flex", "flex-direction", "column"], [1, "loading-state", 2, "display", "flex", "align-items", "center", "justify-content", "center", "padding", "40px", "flex", "1"], [2, "flex", "1", "display", "flex", "flex-direction", "column"], [2, "display", "flex", "align-items", "center", "justify-content", "center", "padding", "40px", "color", "#6c757d", "flex", "1"], [2, "display", "flex", "align-items", "center", "gap", "8px", "font-weight", "600"], [1, "fa-solid", "fa-database", 2, "color", "#6c757d"], [2, "color", "#dc3545", "font-weight", "bold"], [1, "badge", 2, "background", "#17a2b8", "color", "white", "padding", "2px 6px", "border-radius", "10px", "font-size", "0.7em"], [2, "display", "grid", "grid-template-columns", "200px 1fr 120px 60px", "gap", "12px", "padding", "12px 16px", "background", "#e9ecef", "font-weight", "600", "font-size", "0.85em", "color", "#495057", "border-bottom", "1px solid #dee2e6"], [2, "color", "#dc3545"], [2, "display", "grid", "grid-template-columns", "200px 1fr 120px 60px", "gap", "12px", "padding", "12px 16px", "border-bottom", "1px solid #e9ecef", "align-items", "center", 3, "background", "border-left"], [2, "padding", "12px 16px", "text-align", "center", "background", "white", "border-top", "1px solid #dee2e6"], ["fillMode", "outline", "themeColor", "success", "size", "small", 3, "click", "disabled"], [1, "fa-solid", "fa-plus"], [2, "display", "grid", "grid-template-columns", "200px 1fr 120px 60px", "gap", "12px", "padding", "12px 16px", "border-bottom", "1px solid #e9ecef", "align-items", "center"], ["placeholder", "Variable name...", 2, "width", "100%", "font-size", "0.9em", 3, "ngModelChange", "valueChange", "ngModel", "name", "disabled"], ["placeholder", "JSON object...", 2, "width", "100%", "font-size", "0.85em", "font-family", "'Courier New', monospace", 3, "ngModel", "name", "rows", "disabled"], ["textField", "text", "valueField", "value", 2, "width", "100%", "font-size", "0.9em", 3, "ngModel", "name", "data", "valuePrimitive", "disabled"], [2, "width", "100%", "font-size", "0.9em", 3, "ngModel", "name", "placeholder", "disabled"], ["textField", "text", "valueField", "value", 2, "width", "100%", "font-size", "0.85em", 3, "ngModelChange", "valueChange", "ngModel", "name", "data", "valuePrimitive", "disabled"], [2, "text-align", "center"], ["fillMode", "flat", "themeColor", "error", "size", "small", "title", "Remove variable", 3, "click", "disabled"], [1, "fa-solid", "fa-times"], ["placeholder", "JSON object...", 2, "width", "100%", "font-size", "0.85em", "font-family", "'Courier New', monospace", 3, "ngModelChange", "valueChange", "ngModel", "name", "rows", "disabled"], ["textField", "text", "valueField", "value", 2, "width", "100%", "font-size", "0.9em", 3, "ngModelChange", "valueChange", "ngModel", "name", "data", "valuePrimitive", "disabled"], [2, "width", "100%", "font-size", "0.9em", 3, "ngModelChange", "valueChange", "ngModel", "name", "placeholder", "disabled"], [1, "fa-solid", "fa-info-circle", 2, "font-size", "2em", "margin-bottom", "12px", "opacity", "0.5"], [2, "margin", "0 0 12px 0"], ["themeColor", "primary", "size", "small", 3, "click", "disabled"], [2, "display", "flex", "align-items", "center", "gap", "8px", "margin-bottom", "8px"], [1, "fa-solid", "fa-code", 2, "color", "#6c757d", "font-size", "0.9em"], [2, "font-weight", "600", "color", "#495057", "font-size", "0.9em"], [2, "background", "#f8f9fa", "border", "1px solid #dee2e6", "border-radius", "4px", "padding", "12px", "font-family", "'Courier New', monospace", "font-size", "0.85em", "white-space", "pre-wrap", "overflow", "auto", "max-height", "150px"], [1, "fa-solid", "fa-cogs", 2, "color", "#6c757d"], [1, "fa-solid", "fa-chart-line", 2, "color", "#6c757d"], [1, "badge", 2, "color", "white", "padding", "2px 6px", "border-radius", "10px", "font-size", "0.7em", 3, "background"], [1, "badge", 2, "color", "white", "padding", "2px 6px", "border-radius", "10px", "font-size", "0.7em"], [2, "display", "grid", "grid-template-columns", "repeat(auto-fit, minmax(150px, 1fr))", "gap", "12px", "margin-bottom", "16px", "padding", "12px", "background", "#f8f9fa", "border", "1px solid #dee2e6", "border-radius", "6px"], [2, "font-size", "0.75em", "color", "#6c757d", "margin-bottom", "2px"], [2, "font-weight", "600"], [2, "flex", "1", "overflow-y", "auto", "padding-right", "8px"], [2, "margin-bottom", "16px"], [2, "font-weight", "600", "color", "#495057"], [2, "font-weight", "600", "color", "#495057", "font-size", "0.8em"], [2, "margin", "0 0 8px 0", "color", "#495057", "display", "flex", "align-items", "center", "gap", "6px"], [1, "fa-solid", "fa-check-circle", 2, "color", "#28a745"], [2, "background", "#f8f9fa", "border", "1px solid #dee2e6", "border-radius", "4px", "padding", "12px", "font-family", "'Courier New', monospace", "font-size", "0.9em", "white-space", "pre-wrap", "overflow", "auto", "max-height", "300px"], [2, "margin", "0 0 8px 0", "color", "#dc3545", "display", "flex", "align-items", "center", "gap", "6px"], [1, "fa-solid", "fa-exclamation-triangle"], [2, "background", "#f8d7da", "border", "1px solid #f5c6cb", "border-radius", "4px", "padding", "12px", "color", "#721c24", "font-size", "0.9em", "white-space", "pre-wrap", "overflow", "auto", "max-height", "300px"], [1, "fa-solid", "fa-code", 2, "color", "#17a2b8"], [2, "background", "#f8f9fa", "border", "1px solid #dee2e6", "border-radius", "4px", "padding", "12px", "font-family", "'Courier New', monospace", "font-size", "0.9em", "white-space", "pre-wrap", "overflow", "auto", "max-height", "200px"], [1, "fa-solid", "fa-shield-alt", 2, "color", "#ffc107"], [2, "background", "#fff3cd", "border", "1px solid #ffeaa7", "border-radius", "4px", "padding", "12px", "color", "#856404", "font-size", "0.9em", "white-space", "pre-wrap", "overflow", "auto", "max-height", "150px"], [1, "fa-solid", "fa-play-circle", 2, "font-size", "3em", "margin-bottom", "12px", "opacity", "0.3"], [2, "margin", "0"], ["fillMode", "outline", "themeColor", "info", 3, "click"], [1, "fa-solid", "fa-download"], [1, "fa-solid", "fa-spinner", "fa-spin"], [1, "fa-solid", "fa-play"]], template: function AIPromptExecutionDialogComponent_Template(rf, ctx) { if (rf & 1) {
811
+ static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: AIPromptExecutionDialogComponent, selectors: [["mj-ai-prompt-execution-dialog"]], inputs: { aiPrompt: "aiPrompt", isVisible: "isVisible" }, outputs: { isVisibleChange: "isVisibleChange", onClose: "onClose" }, decls: 1, vars: 1, consts: [[3, "minWidth", "width", "height", "title", "close", 4, "ngIf"], [3, "close", "minWidth", "width", "height", "title"], [1, "dialog-content", 2, "display", "flex", "flex-direction", "column", "height", "100%", "font-family", "'Segoe UI', Tahoma, Geneva, Verdana, sans-serif"], [1, "header-section", 2, "margin-bottom", "20px", "padding-bottom", "16px", "border-bottom", "2px solid #e9ecef"], [2, "display", "flex", "align-items", "center", "gap", "12px", "margin-bottom", "8px"], [1, "fa-solid", "fa-robot", 2, "color", "#6f42c1", "font-size", "1.2em"], [2, "margin", "0", "color", "#495057", "font-weight", "600"], [1, "badge", 2, "background", "#6f42c1", "color", "white", "padding", "3px 8px", "border-radius", "12px", "font-size", "0.7em"], [2, "margin", "0", "color", "#6c757d", "font-size", "0.9em"], [1, "loading-state", 2, "display", "flex", "align-items", "center", "justify-content", "center", "padding", "40px"], ["fillMode", "outline", 3, "click"], ["fillMode", "outline", "themeColor", "info"], ["themeColor", "primary", 3, "click", "disabled"], [1, "fa-solid", "fa-spinner", "fa-spin", 2, "font-size", "24px", "color", "#6c757d", "margin-right", "12px"], [2, "color", "#6c757d"], [2, "margin-bottom", "16px", "flex-shrink", "0", 3, "expandedChange", "expanded"], ["kendoExpansionPanelTitleDirective", ""], [2, "padding", "12px 0"], [2, "margin-bottom", "12px", "color", "#6c757d", "font-size", "0.85em"], [1, "fa-solid", "fa-info-circle"], [2, "border", "1px solid #dee2e6", "border-radius", "6px", "background", "#f8f9fa"], [2, "text-align", "center", "padding", "20px", "color", "#6c757d"], [2, "margin-top", "16px"], [2, "display", "grid", "grid-template-columns", "1fr 1fr", "gap", "16px"], [1, "option-group"], [2, "display", "block", "font-weight", "500", "margin-bottom", "6px", "color", "#495057", "font-size", "0.9em"], [1, "fa-solid", "fa-microchip", 2, "margin-right", "6px", "color", "#6c757d"], ["textField", "Name", "valueField", "ID", "placeholder", "Use prompt's configured models...", 2, "width", "100%", 3, "ngModelChange", "ngModel", "data", "valuePrimitive", "filterable", "disabled"], [2, "margin-top", "4px", "font-size", "0.75em", "color", "#6c757d"], [1, "fa-solid", "fa-server", 2, "margin-right", "6px", "color", "#6c757d"], ["textField", "Name", "valueField", "ID", "placeholder", "Use prompt's configured vendors...", 2, "width", "100%", 3, "ngModelChange", "ngModel", "data", "valuePrimitive", "filterable", "disabled"], [1, "fa-solid", "fa-file-alt", 2, "margin-right", "6px", "color", "#6c757d"], ["textField", "text", "valueField", "value", "placeholder", "Select format...", 2, "width", "100%", 3, "ngModelChange", "ngModel", "data", "valuePrimitive", "disabled"], [1, "fa-solid", "fa-gear", 2, "margin-right", "6px", "color", "#6c757d"], ["placeholder", "Optional configuration identifier...", 2, "width", "100%", 3, "ngModelChange", "ngModel", "disabled"], [2, "display", "flex", "align-items", "center", "font-weight", "500", "color", "#495057", "font-size", "0.9em"], [3, "ngModelChange", "ngModel", "disabled"], [1, "fa-solid", "fa-shield-alt", 2, "margin-right", "6px", "color", "#6c757d"], [2, "margin-top", "4px", "margin-left", "24px", "font-size", "0.75em", "color", "#6c757d"], [2, "margin-bottom", "16px", "flex", "1", "display", "flex", "flex-direction", "column", 3, "expandedChange", "expanded"], [2, "padding", "12px 0", "flex", "1", "display", "flex", "flex-direction", "column"], [1, "loading-state", 2, "display", "flex", "align-items", "center", "justify-content", "center", "padding", "40px", "flex", "1"], [2, "flex", "1", "display", "flex", "flex-direction", "column"], [2, "display", "flex", "align-items", "center", "justify-content", "center", "padding", "40px", "color", "#6c757d", "flex", "1"], [2, "display", "flex", "align-items", "center", "gap", "8px", "font-weight", "600"], [1, "fa-solid", "fa-database", 2, "color", "#6c757d"], [2, "color", "#dc3545", "font-weight", "bold"], [1, "badge", 2, "background", "#17a2b8", "color", "white", "padding", "2px 6px", "border-radius", "10px", "font-size", "0.7em"], [2, "display", "grid", "grid-template-columns", "200px 1fr 120px 60px", "gap", "12px", "padding", "12px 16px", "background", "#e9ecef", "font-weight", "600", "font-size", "0.85em", "color", "#495057", "border-bottom", "1px solid #dee2e6"], [2, "color", "#dc3545"], [2, "display", "grid", "grid-template-columns", "200px 1fr 120px 60px", "gap", "12px", "padding", "12px 16px", "border-bottom", "1px solid #e9ecef", "align-items", "center", 3, "background", "border-left"], [2, "padding", "12px 16px", "text-align", "center", "background", "white", "border-top", "1px solid #dee2e6"], ["fillMode", "outline", "themeColor", "success", "size", "small", 3, "click", "disabled"], [1, "fa-solid", "fa-plus"], [2, "display", "grid", "grid-template-columns", "200px 1fr 120px 60px", "gap", "12px", "padding", "12px 16px", "border-bottom", "1px solid #e9ecef", "align-items", "center"], ["placeholder", "Variable name...", 2, "width", "100%", "font-size", "0.9em", 3, "ngModelChange", "valueChange", "ngModel", "name", "disabled"], ["placeholder", "JSON object...", 2, "width", "100%", "font-size", "0.85em", "font-family", "'Courier New', monospace", 3, "ngModel", "name", "rows", "disabled"], ["textField", "text", "valueField", "value", 2, "width", "100%", "font-size", "0.9em", 3, "ngModel", "name", "data", "valuePrimitive", "disabled"], [2, "width", "100%", "font-size", "0.9em", 3, "ngModel", "name", "placeholder", "disabled"], ["textField", "text", "valueField", "value", 2, "width", "100%", "font-size", "0.85em", 3, "ngModelChange", "valueChange", "ngModel", "name", "data", "valuePrimitive", "disabled"], [2, "text-align", "center"], ["fillMode", "flat", "themeColor", "error", "size", "small", "title", "Remove variable", 3, "click", "disabled"], [1, "fa-solid", "fa-times"], ["placeholder", "JSON object...", 2, "width", "100%", "font-size", "0.85em", "font-family", "'Courier New', monospace", 3, "ngModelChange", "valueChange", "ngModel", "name", "rows", "disabled"], ["textField", "text", "valueField", "value", 2, "width", "100%", "font-size", "0.9em", 3, "ngModelChange", "valueChange", "ngModel", "name", "data", "valuePrimitive", "disabled"], [2, "width", "100%", "font-size", "0.9em", 3, "ngModelChange", "valueChange", "ngModel", "name", "placeholder", "disabled"], [1, "fa-solid", "fa-info-circle", 2, "font-size", "2em", "margin-bottom", "12px", "opacity", "0.5"], [2, "margin", "0 0 12px 0"], ["themeColor", "primary", "size", "small", 3, "click", "disabled"], [2, "display", "flex", "align-items", "center", "gap", "8px", "margin-bottom", "8px"], [1, "fa-solid", "fa-code", 2, "color", "#6c757d", "font-size", "0.9em"], [2, "font-weight", "600", "color", "#495057", "font-size", "0.9em"], [2, "background", "#f8f9fa", "border", "1px solid #dee2e6", "border-radius", "4px", "padding", "12px", "font-family", "'Courier New', monospace", "font-size", "0.85em", "white-space", "pre-wrap", "overflow", "auto", "max-height", "150px"], [1, "fa-solid", "fa-cogs", 2, "color", "#6c757d"], [1, "fa-solid", "fa-chart-line", 2, "color", "#6c757d"], [1, "badge", 2, "color", "white", "padding", "2px 6px", "border-radius", "10px", "font-size", "0.7em", 3, "background"], [1, "badge", 2, "color", "white", "padding", "2px 6px", "border-radius", "10px", "font-size", "0.7em"], [2, "display", "grid", "grid-template-columns", "repeat(auto-fit, minmax(150px, 1fr))", "gap", "12px", "margin-bottom", "16px", "padding", "12px", "background", "#f8f9fa", "border", "1px solid #dee2e6", "border-radius", "6px"], [2, "font-size", "0.75em", "color", "#6c757d", "margin-bottom", "2px"], [2, "font-weight", "600"], [2, "flex", "1", "overflow-y", "auto", "padding-right", "8px"], [2, "margin-bottom", "16px"], [2, "font-weight", "600", "color", "#495057"], [2, "font-weight", "600", "color", "#495057", "font-size", "0.8em"], [2, "margin", "0 0 8px 0", "color", "#495057", "display", "flex", "align-items", "center", "gap", "6px"], [1, "fa-solid", "fa-check-circle", 2, "color", "#28a745"], [2, "background", "#f8f9fa", "border", "1px solid #dee2e6", "border-radius", "4px", "padding", "12px", "font-family", "'Courier New', monospace", "font-size", "0.9em", "white-space", "pre-wrap", "overflow", "auto", "max-height", "300px"], [2, "margin", "0 0 8px 0", "color", "#dc3545", "display", "flex", "align-items", "center", "gap", "6px"], [1, "fa-solid", "fa-exclamation-triangle"], [2, "background", "#f8d7da", "border", "1px solid #f5c6cb", "border-radius", "4px", "padding", "12px", "color", "#721c24", "font-size", "0.9em", "white-space", "pre-wrap", "overflow", "auto", "max-height", "300px"], [1, "fa-solid", "fa-code", 2, "color", "#17a2b8"], [2, "background", "#f8f9fa", "border", "1px solid #dee2e6", "border-radius", "4px", "padding", "12px", "font-family", "'Courier New', monospace", "font-size", "0.9em", "white-space", "pre-wrap", "overflow", "auto", "max-height", "200px"], [1, "fa-solid", "fa-shield-alt", 2, "color", "#ffc107"], [2, "background", "#fff3cd", "border", "1px solid #ffeaa7", "border-radius", "4px", "padding", "12px", "color", "#856404", "font-size", "0.9em", "white-space", "pre-wrap", "overflow", "auto", "max-height", "150px"], [1, "fa-solid", "fa-play-circle", 2, "font-size", "3em", "margin-bottom", "12px", "opacity", "0.3"], [2, "margin", "0"], ["fillMode", "outline", "themeColor", "info", 3, "click"], [1, "fa-solid", "fa-download"], [1, "fa-solid", "fa-spinner", "fa-spin"], [1, "fa-solid", "fa-play"]], template: function AIPromptExecutionDialogComponent_Template(rf, ctx) { if (rf & 1) {
774
812
  i0.ɵɵtemplate(0, AIPromptExecutionDialogComponent_kendo_dialog_0_Template, 19, 9, "kendo-dialog", 0);
775
813
  } if (rf & 2) {
776
814
  i0.ɵɵproperty("ngIf", ctx._isVisible);
@@ -778,7 +816,7 @@ export class AIPromptExecutionDialogComponent {
778
816
  }
779
817
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(AIPromptExecutionDialogComponent, [{
780
818
  type: Component,
781
- args: [{ selector: 'mj-ai-prompt-execution-dialog', template: "<kendo-dialog *ngIf=\"_isVisible\"\n [minWidth]=\"700\"\n [width]=\"900\"\n [height]=\"850\"\n (close)=\"close()\"\n [title]=\"'Execute AI Prompt: ' + (aiPrompt?.Name || 'Unknown')\">\n \n <div class=\"dialog-content\" style=\"display: flex; flex-direction: column; height: 100%; font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;\">\n \n <!-- Header Section -->\n <div class=\"header-section\" style=\"margin-bottom: 20px; padding-bottom: 16px; border-bottom: 2px solid #e9ecef;\">\n <div style=\"display: flex; align-items: center; gap: 12px; margin-bottom: 8px;\">\n <i class=\"fa-solid fa-robot\" style=\"color: #6f42c1; font-size: 1.2em;\"></i>\n <h5 style=\"margin: 0; color: #495057; font-weight: 600;\">AI Prompt Execution</h5>\n @if (aiPrompt?.ParallelizationMode && aiPrompt?.ParallelizationMode !== 'None') {\n <span class=\"badge\" style=\"background: #6f42c1; color: white; padding: 3px 8px; border-radius: 12px; font-size: 0.7em;\">\n {{ aiPrompt?.ParallelizationMode }}\n </span>\n }\n </div>\n <p style=\"margin: 0; color: #6c757d; font-size: 0.9em;\">\n Define variables for the AI prompt to process. Each variable will be available as data context during execution.\n </p>\n </div>\n\n <!-- Loading State -->\n @if (isLoading) {\n <div class=\"loading-state\" style=\"display: flex; align-items: center; justify-content: center; padding: 40px;\">\n <i class=\"fa-solid fa-spinner fa-spin\" style=\"font-size: 24px; color: #6c757d; margin-right: 12px;\"></i>\n <span style=\"color: #6c757d;\">Loading prompt configuration...</span>\n </div>\n } @else {\n \n <!-- Data Context Variables Section -->\n <kendo-expansionpanel \n [(expanded)]=\"dataContextExpanded\"\n style=\"margin-bottom: 16px; flex-shrink: 0;\">\n <ng-template kendoExpansionPanelTitleDirective>\n <span style=\"display: flex; align-items: center; gap: 8px; font-weight: 600;\">\n <i class=\"fa-solid fa-database\" style=\"color: #6c757d;\"></i>\n Data Context Variables\n <span style=\"color: #dc3545; font-weight: bold;\">*</span>\n @if (dataContextVariables.length > 0) {\n <span class=\"badge\" style=\"background: #17a2b8; color: white; padding: 2px 6px; border-radius: 10px; font-size: 0.7em;\">\n {{ dataContextVariables.length }}\n </span>\n }\n </span>\n </ng-template>\n \n <div style=\"padding: 12px 0;\">\n <div style=\"margin-bottom: 12px; color: #6c757d; font-size: 0.85em;\">\n <i class=\"fa-solid fa-info-circle\"></i>\n Define variables that will be available to the AI prompt during execution. These are converted to JSON format automatically.\n </div>\n \n <!-- Variables Table -->\n @if (dataContextVariables.length > 0) {\n <div style=\"border: 1px solid #dee2e6; border-radius: 6px; background: #f8f9fa;\">\n <!-- Header -->\n <div style=\"display: grid; grid-template-columns: 200px 1fr 120px 60px; gap: 12px; padding: 12px 16px; background: #e9ecef; font-weight: 600; font-size: 0.85em; color: #495057; border-bottom: 1px solid #dee2e6;\">\n <div>Variable Name <span style=\"color: #dc3545;\">*</span></div>\n <div>Value</div>\n <div>Type</div>\n <div>Actions</div>\n </div>\n \n <!-- Variable Rows -->\n @for (variable of dataContextVariables; track $index; let i = $index) {\n <div [style.background]=\"!variable.name.trim() ? '#fff3cd' : 'white'\"\n [style.border-left]=\"!variable.name.trim() ? '3px solid #ffc107' : 'none'\"\n style=\"display: grid; grid-template-columns: 200px 1fr 120px 60px; gap: 12px; padding: 12px 16px; border-bottom: 1px solid #e9ecef; align-items: center;\">\n \n <!-- Variable Name -->\n <div>\n <kendo-textbox [(ngModel)]=\"variable.name\"\n [name]=\"'varName_' + i\"\n placeholder=\"Variable name...\"\n [disabled]=\"isRunning\"\n (valueChange)=\"updateDataContextFromVariables()\"\n style=\"width: 100%; font-size: 0.9em;\">\n </kendo-textbox>\n </div>\n \n <!-- Variable Value -->\n <div>\n @if (variable.type === 'object') {\n <kendo-textarea [(ngModel)]=\"variable.value\"\n [name]=\"'varValue_' + i\"\n [rows]=\"2\"\n placeholder=\"JSON object...\"\n [disabled]=\"isRunning\"\n (valueChange)=\"updateDataContextFromVariables()\"\n style=\"width: 100%; font-size: 0.85em; font-family: 'Courier New', monospace;\">\n </kendo-textarea>\n } @else if (variable.type === 'boolean') {\n <kendo-dropdownlist [(ngModel)]=\"variable.value\"\n [name]=\"'varValue_' + i\"\n [data]=\"[{text: 'True', value: 'true'}, {text: 'False', value: 'false'}]\"\n textField=\"text\"\n valueField=\"value\"\n [valuePrimitive]=\"true\"\n [disabled]=\"isRunning\"\n (valueChange)=\"updateDataContextFromVariables()\"\n style=\"width: 100%; font-size: 0.9em;\">\n </kendo-dropdownlist>\n } @else {\n <kendo-textbox [(ngModel)]=\"variable.value\"\n [name]=\"'varValue_' + i\"\n [placeholder]=\"variable.type === 'number' ? 'Enter number...' : 'Enter text...'\"\n [disabled]=\"isRunning\"\n (valueChange)=\"updateDataContextFromVariables()\"\n style=\"width: 100%; font-size: 0.9em;\">\n </kendo-textbox>\n }\n </div>\n \n <!-- Variable Type -->\n <div>\n <kendo-dropdownlist [(ngModel)]=\"variable.type\"\n [name]=\"'varType_' + i\"\n [data]=\"[{text: 'String', value: 'string'}, {text: 'Number', value: 'number'}, {text: 'Boolean', value: 'boolean'}, {text: 'Object', value: 'object'}]\"\n textField=\"text\"\n valueField=\"value\"\n [valuePrimitive]=\"true\"\n [disabled]=\"isRunning\"\n (valueChange)=\"updateDataContextFromVariables()\"\n style=\"width: 100%; font-size: 0.85em;\">\n </kendo-dropdownlist>\n </div>\n \n <!-- Actions -->\n <div style=\"text-align: center;\">\n <kendo-button fillMode=\"flat\" themeColor=\"error\" size=\"small\"\n (click)=\"removeDataContextVariable(i)\"\n [disabled]=\"isRunning\"\n title=\"Remove variable\">\n <i class=\"fa-solid fa-times\"></i>\n </kendo-button>\n </div>\n </div>\n }\n \n <!-- Add Variable Row -->\n <div style=\"padding: 12px 16px; text-align: center; background: white; border-top: 1px solid #dee2e6;\">\n <kendo-button fillMode=\"outline\" themeColor=\"success\" size=\"small\"\n (click)=\"addDataContextVariable()\"\n [disabled]=\"isRunning\">\n <i class=\"fa-solid fa-plus\"></i> Add Variable\n </kendo-button>\n </div>\n </div>\n } @else {\n <div style=\"text-align: center; padding: 20px; color: #6c757d;\">\n <i class=\"fa-solid fa-info-circle\" style=\"font-size: 2em; margin-bottom: 12px; opacity: 0.5;\"></i>\n <p style=\"margin: 0 0 12px 0;\">No variables defined yet</p>\n <kendo-button themeColor=\"primary\" size=\"small\"\n (click)=\"addDataContextVariable()\"\n [disabled]=\"isRunning\">\n <i class=\"fa-solid fa-plus\"></i> Add First Variable\n </kendo-button>\n </div>\n }\n \n <!-- Generated JSON Preview -->\n @if (dataContext) {\n <div style=\"margin-top: 16px;\">\n <div style=\"display: flex; align-items: center; gap: 8px; margin-bottom: 8px;\">\n <i class=\"fa-solid fa-code\" style=\"color: #6c757d; font-size: 0.9em;\"></i>\n <span style=\"font-weight: 600; color: #495057; font-size: 0.9em;\">Generated JSON:</span>\n </div>\n <div style=\"background: #f8f9fa; border: 1px solid #dee2e6; border-radius: 4px; padding: 12px; font-family: 'Courier New', monospace; font-size: 0.85em; white-space: pre-wrap; overflow: auto; max-height: 150px;\">{{ dataContext }}</div>\n </div>\n }\n </div>\n </kendo-expansionpanel>\n\n <!-- Execution Options Section -->\n <kendo-expansionpanel \n [(expanded)]=\"optionsExpanded\"\n style=\"margin-bottom: 16px; flex-shrink: 0;\">\n <ng-template kendoExpansionPanelTitleDirective>\n <span style=\"display: flex; align-items: center; gap: 8px; font-weight: 600;\">\n <i class=\"fa-solid fa-cogs\" style=\"color: #6c757d;\"></i>\n Execution Options\n </span>\n </ng-template>\n \n <div style=\"padding: 12px 0;\">\n <div style=\"display: grid; grid-template-columns: 1fr 1fr; gap: 16px;\">\n \n <!-- Model Selection -->\n <div class=\"option-group\">\n <label style=\"display: block; font-weight: 500; margin-bottom: 6px; color: #495057; font-size: 0.9em;\">\n <i class=\"fa-solid fa-microchip\" style=\"margin-right: 6px; color: #6c757d;\"></i>\n AI Model Override\n </label>\n <kendo-dropdownlist [(ngModel)]=\"executionOptions.modelId\"\n [data]=\"availableModels\"\n textField=\"Name\"\n valueField=\"ID\"\n [valuePrimitive]=\"true\"\n [filterable]=\"true\"\n [disabled]=\"isRunning\"\n placeholder=\"Use prompt's configured models...\"\n style=\"width: 100%;\">\n </kendo-dropdownlist>\n <div style=\"margin-top: 4px; font-size: 0.75em; color: #6c757d;\">\n Optional: Override the prompt's configured models\n </div>\n </div>\n \n <!-- Vendor Selection -->\n <div class=\"option-group\">\n <label style=\"display: block; font-weight: 500; margin-bottom: 6px; color: #495057; font-size: 0.9em;\">\n <i class=\"fa-solid fa-server\" style=\"margin-right: 6px; color: #6c757d;\"></i>\n AI Vendor Override\n </label>\n <kendo-dropdownlist [(ngModel)]=\"executionOptions.vendorId\"\n [data]=\"availableVendors\"\n textField=\"Name\"\n valueField=\"ID\"\n [valuePrimitive]=\"true\"\n [filterable]=\"true\"\n [disabled]=\"isRunning\"\n placeholder=\"Use prompt's configured vendors...\"\n style=\"width: 100%;\">\n </kendo-dropdownlist>\n <div style=\"margin-top: 4px; font-size: 0.75em; color: #6c757d;\">\n Optional: Override the vendor for model inference\n </div>\n </div>\n \n <!-- Configuration ID -->\n <div class=\"option-group\">\n <label style=\"display: block; font-weight: 500; margin-bottom: 6px; color: #495057; font-size: 0.9em;\">\n <i class=\"fa-solid fa-gear\" style=\"margin-right: 6px; color: #6c757d;\"></i>\n Configuration ID\n </label>\n <kendo-textbox [(ngModel)]=\"executionOptions.configurationId\"\n placeholder=\"Optional configuration identifier...\"\n [disabled]=\"isRunning\"\n style=\"width: 100%;\">\n </kendo-textbox>\n <div style=\"margin-top: 4px; font-size: 0.75em; color: #6c757d;\">\n Environment-specific configuration identifier\n </div>\n </div>\n \n <!-- Skip Validation -->\n <div class=\"option-group\">\n <label style=\"display: flex; align-items: center; font-weight: 500; color: #495057; font-size: 0.9em;\">\n <kendo-checkbox [(ngModel)]=\"executionOptions.skipValidation\"\n [disabled]=\"isRunning\">\n </kendo-checkbox>\n <i class=\"fa-solid fa-shield-alt\" style=\"margin-right: 6px; color: #6c757d;\"></i>\n Skip Output Validation\n </label>\n <div style=\"margin-top: 4px; margin-left: 24px; font-size: 0.75em; color: #6c757d;\">\n Bypass output format validation for faster execution\n </div>\n </div>\n </div>\n </div>\n </kendo-expansionpanel>\n\n <!-- Results Section -->\n <kendo-expansionpanel \n [(expanded)]=\"resultsExpanded\"\n style=\"margin-bottom: 16px; flex: 1; display: flex; flex-direction: column;\">\n <ng-template kendoExpansionPanelTitleDirective>\n <span style=\"display: flex; align-items: center; gap: 8px; font-weight: 600;\">\n <i class=\"fa-solid fa-chart-line\" style=\"color: #6c757d;\"></i>\n Execution Results\n @if (executionResult) {\n <span class=\"badge\" \n [style.background]=\"executionResult.success ? '#28a745' : '#dc3545'\"\n style=\"color: white; padding: 2px 6px; border-radius: 10px; font-size: 0.7em;\">\n {{ executionResult.success ? 'Success' : 'Error' }}\n </span>\n }\n </span>\n </ng-template>\n \n <div style=\"padding: 12px 0; flex: 1; display: flex; flex-direction: column;\">\n @if (isRunning) {\n <div class=\"loading-state\" style=\"display: flex; align-items: center; justify-content: center; padding: 40px; flex: 1;\">\n <i class=\"fa-solid fa-spinner fa-spin\" style=\"font-size: 24px; color: #6c757d; margin-right: 12px;\"></i>\n <span style=\"color: #6c757d;\">Executing AI prompt...</span>\n </div>\n } @else if (executionResult) {\n <div style=\"flex: 1; display: flex; flex-direction: column;\">\n <!-- Result Header with Stats -->\n <div style=\"display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: 12px; margin-bottom: 16px; padding: 12px; background: #f8f9fa; border: 1px solid #dee2e6; border-radius: 6px;\">\n <div style=\"text-align: center;\">\n <div style=\"font-size: 0.75em; color: #6c757d; margin-bottom: 2px;\">STATUS</div>\n <div [style.color]=\"executionResult.success ? '#28a745' : '#dc3545'\" style=\"font-weight: 600;\">\n {{ executionResult.success ? 'Success' : 'Failed' }}\n </div>\n </div>\n @if (executionResult.executionTimeMs) {\n <div style=\"text-align: center;\">\n <div style=\"font-size: 0.75em; color: #6c757d; margin-bottom: 2px;\">EXECUTION TIME</div>\n <div style=\"font-weight: 600; color: #495057;\">{{ executionResult.executionTimeMs }}ms</div>\n </div>\n }\n @if (executionResult.tokensUsed) {\n <div style=\"text-align: center;\">\n <div style=\"font-size: 0.75em; color: #6c757d; margin-bottom: 2px;\">TOKENS USED</div>\n <div style=\"font-weight: 600; color: #495057;\">{{ executionResult.tokensUsed }}</div>\n </div>\n }\n @if (executionResult.promptRunId) {\n <div style=\"text-align: center;\">\n <div style=\"font-size: 0.75em; color: #6c757d; margin-bottom: 2px;\">RUN ID</div>\n <div style=\"font-weight: 600; color: #495057; font-size: 0.8em;\">{{ executionResult.promptRunId }}</div>\n </div>\n }\n </div>\n\n <!-- Result Content -->\n <div style=\"flex: 1; overflow-y: auto; padding-right: 8px;\">\n @if (executionResult.success && executionResult.output) {\n <div style=\"margin-bottom: 16px;\">\n <h6 style=\"margin: 0 0 8px 0; color: #495057; display: flex; align-items: center; gap: 6px;\">\n <i class=\"fa-solid fa-check-circle\" style=\"color: #28a745;\"></i>\n Output\n </h6>\n <div style=\"background: #f8f9fa; border: 1px solid #dee2e6; border-radius: 4px; padding: 12px; font-family: 'Courier New', monospace; font-size: 0.9em; white-space: pre-wrap; overflow: auto; max-height: 300px;\">{{ executionResult.output }}</div>\n </div>\n }\n \n @if (executionResult.error) {\n <div style=\"margin-bottom: 16px;\">\n <h6 style=\"margin: 0 0 8px 0; color: #dc3545; display: flex; align-items: center; gap: 6px;\">\n <i class=\"fa-solid fa-exclamation-triangle\"></i>\n Error\n </h6>\n <div style=\"background: #f8d7da; border: 1px solid #f5c6cb; border-radius: 4px; padding: 12px; color: #721c24; font-size: 0.9em; white-space: pre-wrap; overflow: auto; max-height: 300px;\">{{ executionResult.error }}</div>\n </div>\n }\n \n @if (executionResult.parsedResult && executionResult.parsedResult !== executionResult.output) {\n <div style=\"margin-bottom: 16px;\">\n <h6 style=\"margin: 0 0 8px 0; color: #495057; display: flex; align-items: center; gap: 6px;\">\n <i class=\"fa-solid fa-code\" style=\"color: #17a2b8;\"></i>\n Parsed Result\n </h6>\n <div style=\"background: #f8f9fa; border: 1px solid #dee2e6; border-radius: 4px; padding: 12px; font-family: 'Courier New', monospace; font-size: 0.9em; white-space: pre-wrap; overflow: auto; max-height: 200px;\">{{ executionResult.parsedResult }}</div>\n </div>\n }\n \n @if (executionResult.validationResult) {\n <div style=\"margin-bottom: 16px;\">\n <h6 style=\"margin: 0 0 8px 0; color: #495057; display: flex; align-items: center; gap: 6px;\">\n <i class=\"fa-solid fa-shield-alt\" style=\"color: #ffc107;\"></i>\n Validation Result\n </h6>\n <div style=\"background: #fff3cd; border: 1px solid #ffeaa7; border-radius: 4px; padding: 12px; color: #856404; font-size: 0.9em; white-space: pre-wrap; overflow: auto; max-height: 150px;\">{{ executionResult.validationResult }}</div>\n </div>\n }\n </div>\n </div>\n } @else {\n <div style=\"display: flex; align-items: center; justify-content: center; padding: 40px; color: #6c757d; flex: 1;\">\n <div style=\"text-align: center;\">\n <i class=\"fa-solid fa-play-circle\" style=\"font-size: 3em; margin-bottom: 12px; opacity: 0.3;\"></i>\n <p style=\"margin: 0;\">No execution results yet. Run the prompt to see results here.</p>\n </div>\n </div>\n }\n </div>\n </kendo-expansionpanel>\n }\n </div>\n\n <!-- Dialog Actions -->\n <kendo-dialog-actions>\n <kendo-button fillMode=\"outline\" (click)=\"close()\">\n Close\n </kendo-button>\n \n @if (executionResult) {\n <kendo-button fillMode=\"outline\" themeColor=\"info\" (click)=\"saveResults()\">\n <i class=\"fa-solid fa-download\"></i> Save Results\n </kendo-button>\n }\n \n <kendo-button themeColor=\"primary\" \n (click)=\"runAIPrompt()\" \n [disabled]=\"isRunning || isLoading\">\n @if (isRunning) {\n <i class=\"fa-solid fa-spinner fa-spin\"></i> Running...\n } @else {\n <i class=\"fa-solid fa-play\"></i> Run Prompt\n }\n </kendo-button>\n </kendo-dialog-actions>\n</kendo-dialog>", styles: [".dialog-content {\n font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;\n}\n\n.section-header h6 {\n font-size: 0.9em;\n}\n\n.parameter-row:hover {\n background-color: #f8f9fa !important;\n}\n\n.option-group label {\n display: flex;\n align-items: center;\n}\n\n.loading-state {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 8px;\n}\n\n.badge {\n display: inline-block;\n font-size: 0.7em;\n line-height: 1;\n}\n\n.execution-results {\n transition: box-shadow 0.2s ease;\n}\n\n.execution-results:hover {\n box-shadow: 0 2px 4px rgba(0,0,0,0.1);\n}\n\n.result-header {\n transition: background-color 0.2s ease;\n}\n\n.result-content {\n line-height: 1.4;\n}\n\n.result-content pre {\n word-wrap: break-word;\n white-space: pre-wrap;\n}\n\n/* Kendo UI overrides for better integration */\n.ai-prompt-execution-dialog kendo-textbox,\n.ai-prompt-execution-dialog kendo-textarea,\n.ai-prompt-execution-dialog kendo-dropdownlist {\n width: 100%;\n}\n\n.ai-prompt-execution-dialog kendo-button {\n min-width: auto;\n}\n\n.ai-prompt-execution-dialog kendo-checkbox {\n margin-right: 8px;\n}\n\n/* Grid layouts for responsive design */\n@media (max-width: 768px) {\n .options-content > div {\n grid-template-columns: 1fr !important;\n }\n \n .parameter-row {\n grid-template-columns: 1fr !important;\n gap: 8px !important;\n }\n}"] }]
819
+ args: [{ selector: 'mj-ai-prompt-execution-dialog', template: "<kendo-dialog *ngIf=\"_isVisible\"\n [minWidth]=\"700\"\n [width]=\"900\"\n [height]=\"850\"\n (close)=\"close()\"\n [title]=\"'Execute AI Prompt: ' + (aiPrompt?.Name || 'Unknown')\">\n \n <div class=\"dialog-content\" style=\"display: flex; flex-direction: column; height: 100%; font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;\">\n \n <!-- Header Section -->\n <div class=\"header-section\" style=\"margin-bottom: 20px; padding-bottom: 16px; border-bottom: 2px solid #e9ecef;\">\n <div style=\"display: flex; align-items: center; gap: 12px; margin-bottom: 8px;\">\n <i class=\"fa-solid fa-robot\" style=\"color: #6f42c1; font-size: 1.2em;\"></i>\n <h5 style=\"margin: 0; color: #495057; font-weight: 600;\">AI Prompt Execution</h5>\n @if (aiPrompt?.ParallelizationMode && aiPrompt?.ParallelizationMode !== 'None') {\n <span class=\"badge\" style=\"background: #6f42c1; color: white; padding: 3px 8px; border-radius: 12px; font-size: 0.7em;\">\n {{ aiPrompt?.ParallelizationMode }}\n </span>\n }\n </div>\n <p style=\"margin: 0; color: #6c757d; font-size: 0.9em;\">\n Define variables for the AI prompt to process. Each variable will be available as data context during execution.\n </p>\n </div>\n\n <!-- Loading State -->\n @if (isLoading) {\n <div class=\"loading-state\" style=\"display: flex; align-items: center; justify-content: center; padding: 40px;\">\n <i class=\"fa-solid fa-spinner fa-spin\" style=\"font-size: 24px; color: #6c757d; margin-right: 12px;\"></i>\n <span style=\"color: #6c757d;\">Loading prompt configuration...</span>\n </div>\n } @else {\n \n <!-- Data Context Variables Section -->\n <kendo-expansionpanel \n [(expanded)]=\"dataContextExpanded\"\n style=\"margin-bottom: 16px; flex-shrink: 0;\">\n <ng-template kendoExpansionPanelTitleDirective>\n <span style=\"display: flex; align-items: center; gap: 8px; font-weight: 600;\">\n <i class=\"fa-solid fa-database\" style=\"color: #6c757d;\"></i>\n Data Context Variables\n <span style=\"color: #dc3545; font-weight: bold;\">*</span>\n @if (dataContextVariables.length > 0) {\n <span class=\"badge\" style=\"background: #17a2b8; color: white; padding: 2px 6px; border-radius: 10px; font-size: 0.7em;\">\n {{ dataContextVariables.length }}\n </span>\n }\n </span>\n </ng-template>\n \n <div style=\"padding: 12px 0;\">\n <div style=\"margin-bottom: 12px; color: #6c757d; font-size: 0.85em;\">\n <i class=\"fa-solid fa-info-circle\"></i>\n Define variables that will be available to the AI prompt during execution. These are converted to JSON format automatically.\n </div>\n \n <!-- Variables Table -->\n @if (dataContextVariables.length > 0) {\n <div style=\"border: 1px solid #dee2e6; border-radius: 6px; background: #f8f9fa;\">\n <!-- Header -->\n <div style=\"display: grid; grid-template-columns: 200px 1fr 120px 60px; gap: 12px; padding: 12px 16px; background: #e9ecef; font-weight: 600; font-size: 0.85em; color: #495057; border-bottom: 1px solid #dee2e6;\">\n <div>Variable Name <span style=\"color: #dc3545;\">*</span></div>\n <div>Value</div>\n <div>Type</div>\n <div>Actions</div>\n </div>\n \n <!-- Variable Rows -->\n @for (variable of dataContextVariables; track $index; let i = $index) {\n <div [style.background]=\"!variable.name.trim() ? '#fff3cd' : 'white'\"\n [style.border-left]=\"!variable.name.trim() ? '3px solid #ffc107' : 'none'\"\n style=\"display: grid; grid-template-columns: 200px 1fr 120px 60px; gap: 12px; padding: 12px 16px; border-bottom: 1px solid #e9ecef; align-items: center;\">\n \n <!-- Variable Name -->\n <div>\n <kendo-textbox [(ngModel)]=\"variable.name\"\n [name]=\"'varName_' + i\"\n placeholder=\"Variable name...\"\n [disabled]=\"isRunning\"\n (valueChange)=\"updateDataContextFromVariables()\"\n style=\"width: 100%; font-size: 0.9em;\">\n </kendo-textbox>\n </div>\n \n <!-- Variable Value -->\n <div>\n @if (variable.type === 'object') {\n <kendo-textarea [(ngModel)]=\"variable.value\"\n [name]=\"'varValue_' + i\"\n [rows]=\"2\"\n placeholder=\"JSON object...\"\n [disabled]=\"isRunning\"\n (valueChange)=\"updateDataContextFromVariables()\"\n style=\"width: 100%; font-size: 0.85em; font-family: 'Courier New', monospace;\">\n </kendo-textarea>\n } @else if (variable.type === 'boolean') {\n <kendo-dropdownlist [(ngModel)]=\"variable.value\"\n [name]=\"'varValue_' + i\"\n [data]=\"[{text: 'True', value: 'true'}, {text: 'False', value: 'false'}]\"\n textField=\"text\"\n valueField=\"value\"\n [valuePrimitive]=\"true\"\n [disabled]=\"isRunning\"\n (valueChange)=\"updateDataContextFromVariables()\"\n style=\"width: 100%; font-size: 0.9em;\">\n </kendo-dropdownlist>\n } @else {\n <kendo-textbox [(ngModel)]=\"variable.value\"\n [name]=\"'varValue_' + i\"\n [placeholder]=\"variable.type === 'number' ? 'Enter number...' : 'Enter text...'\"\n [disabled]=\"isRunning\"\n (valueChange)=\"updateDataContextFromVariables()\"\n style=\"width: 100%; font-size: 0.9em;\">\n </kendo-textbox>\n }\n </div>\n \n <!-- Variable Type -->\n <div>\n <kendo-dropdownlist [(ngModel)]=\"variable.type\"\n [name]=\"'varType_' + i\"\n [data]=\"[{text: 'String', value: 'string'}, {text: 'Number', value: 'number'}, {text: 'Boolean', value: 'boolean'}, {text: 'Object', value: 'object'}]\"\n textField=\"text\"\n valueField=\"value\"\n [valuePrimitive]=\"true\"\n [disabled]=\"isRunning\"\n (valueChange)=\"updateDataContextFromVariables()\"\n style=\"width: 100%; font-size: 0.85em;\">\n </kendo-dropdownlist>\n </div>\n \n <!-- Actions -->\n <div style=\"text-align: center;\">\n <kendo-button fillMode=\"flat\" themeColor=\"error\" size=\"small\"\n (click)=\"removeDataContextVariable(i)\"\n [disabled]=\"isRunning\"\n title=\"Remove variable\">\n <i class=\"fa-solid fa-times\"></i>\n </kendo-button>\n </div>\n </div>\n }\n \n <!-- Add Variable Row -->\n <div style=\"padding: 12px 16px; text-align: center; background: white; border-top: 1px solid #dee2e6;\">\n <kendo-button fillMode=\"outline\" themeColor=\"success\" size=\"small\"\n (click)=\"addDataContextVariable()\"\n [disabled]=\"isRunning\">\n <i class=\"fa-solid fa-plus\"></i> Add Variable\n </kendo-button>\n </div>\n </div>\n } @else {\n <div style=\"text-align: center; padding: 20px; color: #6c757d;\">\n <i class=\"fa-solid fa-info-circle\" style=\"font-size: 2em; margin-bottom: 12px; opacity: 0.5;\"></i>\n <p style=\"margin: 0 0 12px 0;\">No variables defined yet</p>\n <kendo-button themeColor=\"primary\" size=\"small\"\n (click)=\"addDataContextVariable()\"\n [disabled]=\"isRunning\">\n <i class=\"fa-solid fa-plus\"></i> Add First Variable\n </kendo-button>\n </div>\n }\n \n <!-- Generated JSON Preview -->\n @if (dataContext) {\n <div style=\"margin-top: 16px;\">\n <div style=\"display: flex; align-items: center; gap: 8px; margin-bottom: 8px;\">\n <i class=\"fa-solid fa-code\" style=\"color: #6c757d; font-size: 0.9em;\"></i>\n <span style=\"font-weight: 600; color: #495057; font-size: 0.9em;\">Generated JSON:</span>\n </div>\n <div style=\"background: #f8f9fa; border: 1px solid #dee2e6; border-radius: 4px; padding: 12px; font-family: 'Courier New', monospace; font-size: 0.85em; white-space: pre-wrap; overflow: auto; max-height: 150px;\">{{ dataContext }}</div>\n </div>\n }\n </div>\n </kendo-expansionpanel>\n\n <!-- Execution Options Section -->\n <kendo-expansionpanel \n [(expanded)]=\"optionsExpanded\"\n style=\"margin-bottom: 16px; flex-shrink: 0;\">\n <ng-template kendoExpansionPanelTitleDirective>\n <span style=\"display: flex; align-items: center; gap: 8px; font-weight: 600;\">\n <i class=\"fa-solid fa-cogs\" style=\"color: #6c757d;\"></i>\n Execution Options\n </span>\n </ng-template>\n \n <div style=\"padding: 12px 0;\">\n <div style=\"display: grid; grid-template-columns: 1fr 1fr; gap: 16px;\">\n \n <!-- Model Selection -->\n <div class=\"option-group\">\n <label style=\"display: block; font-weight: 500; margin-bottom: 6px; color: #495057; font-size: 0.9em;\">\n <i class=\"fa-solid fa-microchip\" style=\"margin-right: 6px; color: #6c757d;\"></i>\n AI Model Override\n </label>\n <kendo-dropdownlist [(ngModel)]=\"executionOptions.modelId\"\n [data]=\"availableModels\"\n textField=\"Name\"\n valueField=\"ID\"\n [valuePrimitive]=\"true\"\n [filterable]=\"true\"\n [disabled]=\"isRunning\"\n placeholder=\"Use prompt's configured models...\"\n style=\"width: 100%;\">\n </kendo-dropdownlist>\n <div style=\"margin-top: 4px; font-size: 0.75em; color: #6c757d;\">\n Optional: Override the prompt's configured models\n </div>\n </div>\n \n <!-- Vendor Selection -->\n <div class=\"option-group\">\n <label style=\"display: block; font-weight: 500; margin-bottom: 6px; color: #495057; font-size: 0.9em;\">\n <i class=\"fa-solid fa-server\" style=\"margin-right: 6px; color: #6c757d;\"></i>\n AI Vendor Override\n </label>\n <kendo-dropdownlist [(ngModel)]=\"executionOptions.vendorId\"\n [data]=\"availableVendors\"\n textField=\"Name\"\n valueField=\"ID\"\n [valuePrimitive]=\"true\"\n [filterable]=\"true\"\n [disabled]=\"isRunning\"\n placeholder=\"Use prompt's configured vendors...\"\n style=\"width: 100%;\">\n </kendo-dropdownlist>\n <div style=\"margin-top: 4px; font-size: 0.75em; color: #6c757d;\">\n Optional: Override the vendor for model inference\n </div>\n </div>\n \n <!-- Response Format -->\n <div class=\"option-group\">\n <label style=\"display: block; font-weight: 500; margin-bottom: 6px; color: #495057; font-size: 0.9em;\">\n <i class=\"fa-solid fa-file-alt\" style=\"margin-right: 6px; color: #6c757d;\"></i>\n Response Format\n </label>\n <kendo-dropdownlist [(ngModel)]=\"selectedResponseFormat\"\n [data]=\"responseFormatOptions\"\n textField=\"text\"\n valueField=\"value\"\n [valuePrimitive]=\"true\"\n [disabled]=\"isRunning\"\n placeholder=\"Select format...\"\n style=\"width: 100%;\">\n </kendo-dropdownlist>\n <div style=\"margin-top: 4px; font-size: 0.75em; color: #6c757d;\">\n Expected format for AI response (defaults to prompt setting)\n </div>\n </div>\n \n <!-- Configuration ID -->\n <div class=\"option-group\">\n <label style=\"display: block; font-weight: 500; margin-bottom: 6px; color: #495057; font-size: 0.9em;\">\n <i class=\"fa-solid fa-gear\" style=\"margin-right: 6px; color: #6c757d;\"></i>\n Configuration ID\n </label>\n <kendo-textbox [(ngModel)]=\"executionOptions.configurationId\"\n placeholder=\"Optional configuration identifier...\"\n [disabled]=\"isRunning\"\n style=\"width: 100%;\">\n </kendo-textbox>\n <div style=\"margin-top: 4px; font-size: 0.75em; color: #6c757d;\">\n Environment-specific configuration identifier\n </div>\n </div>\n \n <!-- Skip Validation -->\n <div class=\"option-group\">\n <label style=\"display: flex; align-items: center; font-weight: 500; color: #495057; font-size: 0.9em;\">\n <kendo-checkbox [(ngModel)]=\"executionOptions.skipValidation\"\n [disabled]=\"isRunning\">\n </kendo-checkbox>\n <i class=\"fa-solid fa-shield-alt\" style=\"margin-right: 6px; color: #6c757d;\"></i>\n Skip Output Validation\n </label>\n <div style=\"margin-top: 4px; margin-left: 24px; font-size: 0.75em; color: #6c757d;\">\n Bypass output format validation for faster execution\n </div>\n </div>\n </div>\n </div>\n </kendo-expansionpanel>\n\n <!-- Results Section -->\n <kendo-expansionpanel \n [(expanded)]=\"resultsExpanded\"\n style=\"margin-bottom: 16px; flex: 1; display: flex; flex-direction: column;\">\n <ng-template kendoExpansionPanelTitleDirective>\n <span style=\"display: flex; align-items: center; gap: 8px; font-weight: 600;\">\n <i class=\"fa-solid fa-chart-line\" style=\"color: #6c757d;\"></i>\n Execution Results\n @if (executionResult) {\n <span class=\"badge\" \n [style.background]=\"executionResult.success ? '#28a745' : '#dc3545'\"\n style=\"color: white; padding: 2px 6px; border-radius: 10px; font-size: 0.7em;\">\n {{ executionResult.success ? 'Success' : 'Error' }}\n </span>\n }\n </span>\n </ng-template>\n \n <div style=\"padding: 12px 0; flex: 1; display: flex; flex-direction: column;\">\n @if (isRunning) {\n <div class=\"loading-state\" style=\"display: flex; align-items: center; justify-content: center; padding: 40px; flex: 1;\">\n <i class=\"fa-solid fa-spinner fa-spin\" style=\"font-size: 24px; color: #6c757d; margin-right: 12px;\"></i>\n <span style=\"color: #6c757d;\">Executing AI prompt...</span>\n </div>\n } @else if (executionResult) {\n <div style=\"flex: 1; display: flex; flex-direction: column;\">\n <!-- Result Header with Stats -->\n <div style=\"display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: 12px; margin-bottom: 16px; padding: 12px; background: #f8f9fa; border: 1px solid #dee2e6; border-radius: 6px;\">\n <div style=\"text-align: center;\">\n <div style=\"font-size: 0.75em; color: #6c757d; margin-bottom: 2px;\">STATUS</div>\n <div [style.color]=\"executionResult.success ? '#28a745' : '#dc3545'\" style=\"font-weight: 600;\">\n {{ executionResult.success ? 'Success' : 'Failed' }}\n </div>\n </div>\n @if (executionResult.executionTimeMs) {\n <div style=\"text-align: center;\">\n <div style=\"font-size: 0.75em; color: #6c757d; margin-bottom: 2px;\">EXECUTION TIME</div>\n <div style=\"font-weight: 600; color: #495057;\">{{ executionResult.executionTimeMs }}ms</div>\n </div>\n }\n @if (executionResult.tokensUsed) {\n <div style=\"text-align: center;\">\n <div style=\"font-size: 0.75em; color: #6c757d; margin-bottom: 2px;\">TOKENS USED</div>\n <div style=\"font-weight: 600; color: #495057;\">{{ executionResult.tokensUsed }}</div>\n </div>\n }\n @if (executionResult.promptRunId) {\n <div style=\"text-align: center;\">\n <div style=\"font-size: 0.75em; color: #6c757d; margin-bottom: 2px;\">RUN ID</div>\n <div style=\"font-weight: 600; color: #495057; font-size: 0.8em;\">{{ executionResult.promptRunId }}</div>\n </div>\n }\n </div>\n\n <!-- Result Content -->\n <div style=\"flex: 1; overflow-y: auto; padding-right: 8px;\">\n @if (executionResult.success && executionResult.output) {\n <div style=\"margin-bottom: 16px;\">\n <h6 style=\"margin: 0 0 8px 0; color: #495057; display: flex; align-items: center; gap: 6px;\">\n <i class=\"fa-solid fa-check-circle\" style=\"color: #28a745;\"></i>\n Output\n </h6>\n <div style=\"background: #f8f9fa; border: 1px solid #dee2e6; border-radius: 4px; padding: 12px; font-family: 'Courier New', monospace; font-size: 0.9em; white-space: pre-wrap; overflow: auto; max-height: 300px;\">{{ executionResult.output }}</div>\n </div>\n }\n \n @if (executionResult.error) {\n <div style=\"margin-bottom: 16px;\">\n <h6 style=\"margin: 0 0 8px 0; color: #dc3545; display: flex; align-items: center; gap: 6px;\">\n <i class=\"fa-solid fa-exclamation-triangle\"></i>\n Error\n </h6>\n <div style=\"background: #f8d7da; border: 1px solid #f5c6cb; border-radius: 4px; padding: 12px; color: #721c24; font-size: 0.9em; white-space: pre-wrap; overflow: auto; max-height: 300px;\">{{ executionResult.error }}</div>\n </div>\n }\n \n @if (executionResult.parsedResult && executionResult.parsedResult !== executionResult.output) {\n <div style=\"margin-bottom: 16px;\">\n <h6 style=\"margin: 0 0 8px 0; color: #495057; display: flex; align-items: center; gap: 6px;\">\n <i class=\"fa-solid fa-code\" style=\"color: #17a2b8;\"></i>\n Parsed Result\n </h6>\n <div style=\"background: #f8f9fa; border: 1px solid #dee2e6; border-radius: 4px; padding: 12px; font-family: 'Courier New', monospace; font-size: 0.9em; white-space: pre-wrap; overflow: auto; max-height: 200px;\">{{ executionResult.parsedResult }}</div>\n </div>\n }\n \n @if (executionResult.validationResult) {\n <div style=\"margin-bottom: 16px;\">\n <h6 style=\"margin: 0 0 8px 0; color: #495057; display: flex; align-items: center; gap: 6px;\">\n <i class=\"fa-solid fa-shield-alt\" style=\"color: #ffc107;\"></i>\n Validation Result\n </h6>\n <div style=\"background: #fff3cd; border: 1px solid #ffeaa7; border-radius: 4px; padding: 12px; color: #856404; font-size: 0.9em; white-space: pre-wrap; overflow: auto; max-height: 150px;\">{{ executionResult.validationResult }}</div>\n </div>\n }\n </div>\n </div>\n } @else {\n <div style=\"display: flex; align-items: center; justify-content: center; padding: 40px; color: #6c757d; flex: 1;\">\n <div style=\"text-align: center;\">\n <i class=\"fa-solid fa-play-circle\" style=\"font-size: 3em; margin-bottom: 12px; opacity: 0.3;\"></i>\n <p style=\"margin: 0;\">No execution results yet. Run the prompt to see results here.</p>\n </div>\n </div>\n }\n </div>\n </kendo-expansionpanel>\n }\n </div>\n\n <!-- Dialog Actions -->\n <kendo-dialog-actions>\n <kendo-button fillMode=\"outline\" (click)=\"close()\">\n Close\n </kendo-button>\n \n @if (executionResult) {\n <kendo-button fillMode=\"outline\" themeColor=\"info\" (click)=\"saveResults()\">\n <i class=\"fa-solid fa-download\"></i> Save Results\n </kendo-button>\n }\n \n <kendo-button themeColor=\"primary\" \n (click)=\"runAIPrompt()\" \n [disabled]=\"isRunning || isLoading\">\n @if (isRunning) {\n <i class=\"fa-solid fa-spinner fa-spin\"></i> Running...\n } @else {\n <i class=\"fa-solid fa-play\"></i> Run Prompt\n }\n </kendo-button>\n </kendo-dialog-actions>\n</kendo-dialog>", styles: [".dialog-content {\n font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;\n}\n\n.section-header h6 {\n font-size: 0.9em;\n}\n\n.parameter-row:hover {\n background-color: #f8f9fa !important;\n}\n\n.option-group label {\n display: flex;\n align-items: center;\n}\n\n.loading-state {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 8px;\n}\n\n.badge {\n display: inline-block;\n font-size: 0.7em;\n line-height: 1;\n}\n\n.execution-results {\n transition: box-shadow 0.2s ease;\n}\n\n.execution-results:hover {\n box-shadow: 0 2px 4px rgba(0,0,0,0.1);\n}\n\n.result-header {\n transition: background-color 0.2s ease;\n}\n\n.result-content {\n line-height: 1.4;\n}\n\n.result-content pre {\n word-wrap: break-word;\n white-space: pre-wrap;\n}\n\n/* Kendo UI overrides for better integration */\n.ai-prompt-execution-dialog kendo-textbox,\n.ai-prompt-execution-dialog kendo-textarea,\n.ai-prompt-execution-dialog kendo-dropdownlist {\n width: 100%;\n}\n\n.ai-prompt-execution-dialog kendo-button {\n min-width: auto;\n}\n\n.ai-prompt-execution-dialog kendo-checkbox {\n margin-right: 8px;\n}\n\n/* Grid layouts for responsive design */\n@media (max-width: 768px) {\n .options-content > div {\n grid-template-columns: 1fr !important;\n }\n \n .parameter-row {\n grid-template-columns: 1fr !important;\n gap: 8px !important;\n }\n}"] }]
782
820
  }], () => [], { aiPrompt: [{
783
821
  type: Input
784
822
  }], isVisible: [{