@memberjunction/ng-core-entity-forms 2.51.0 → 2.53.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 (432) hide show
  1. package/dist/lib/custom/AIAgents/ai-agent-form.component.js +1 -1
  2. package/dist/lib/custom/AIPrompts/ai-prompt-form.component.d.ts +19 -2
  3. package/dist/lib/custom/AIPrompts/ai-prompt-form.component.d.ts.map +1 -1
  4. package/dist/lib/custom/AIPrompts/ai-prompt-form.component.js +797 -508
  5. package/dist/lib/custom/AIPrompts/ai-prompt-form.component.js.map +1 -1
  6. package/dist/lib/custom/Entities/entities-form.component.js +14 -16
  7. package/dist/lib/custom/Entities/entities-form.component.js.map +1 -1
  8. package/dist/lib/custom/EntityActions/entityaction.form.component.js +10 -12
  9. package/dist/lib/custom/EntityActions/entityaction.form.component.js.map +1 -1
  10. package/dist/lib/custom/Templates/template-params-grid.component.d.ts +37 -0
  11. package/dist/lib/custom/Templates/template-params-grid.component.d.ts.map +1 -0
  12. package/dist/lib/custom/Templates/template-params-grid.component.js +537 -0
  13. package/dist/lib/custom/Templates/template-params-grid.component.js.map +1 -0
  14. package/dist/lib/custom/Templates/templates-form.component.js +20 -25
  15. package/dist/lib/custom/Templates/templates-form.component.js.map +1 -1
  16. package/dist/lib/custom/ai-test-harness/agent-execution-monitor.component.d.ts.map +1 -0
  17. package/dist/lib/custom/{AIAgents → ai-test-harness}/agent-execution-monitor.component.js +18 -5
  18. package/dist/lib/custom/ai-test-harness/agent-execution-monitor.component.js.map +1 -0
  19. package/dist/lib/custom/ai-test-harness/agent-execution-node.component.d.ts.map +1 -0
  20. package/dist/lib/custom/{AIAgents → ai-test-harness}/agent-execution-node.component.js +4 -4
  21. package/dist/lib/custom/ai-test-harness/agent-execution-node.component.js.map +1 -0
  22. package/dist/lib/custom/ai-test-harness/ai-test-harness-dialog.component.d.ts.map +1 -0
  23. package/dist/lib/custom/{AIAgents → ai-test-harness}/ai-test-harness-dialog.component.js +1 -1
  24. package/dist/lib/custom/ai-test-harness/ai-test-harness-dialog.component.js.map +1 -0
  25. package/dist/lib/custom/{AIAgents → ai-test-harness}/ai-test-harness.component.d.ts +97 -7
  26. package/dist/lib/custom/ai-test-harness/ai-test-harness.component.d.ts.map +1 -0
  27. package/dist/lib/custom/ai-test-harness/ai-test-harness.component.js +3204 -0
  28. package/dist/lib/custom/ai-test-harness/ai-test-harness.component.js.map +1 -0
  29. package/dist/lib/custom/ai-test-harness/json-viewer-window.component.d.ts +8 -0
  30. package/dist/lib/custom/ai-test-harness/json-viewer-window.component.d.ts.map +1 -0
  31. package/dist/lib/custom/ai-test-harness/json-viewer-window.component.js +57 -0
  32. package/dist/lib/custom/ai-test-harness/json-viewer-window.component.js.map +1 -0
  33. package/dist/lib/custom/custom-forms.module.d.ts +26 -24
  34. package/dist/lib/custom/custom-forms.module.d.ts.map +1 -1
  35. package/dist/lib/custom/custom-forms.module.js +19 -9
  36. package/dist/lib/custom/custom-forms.module.js.map +1 -1
  37. package/dist/lib/custom/test-harness-dialog.service.js +1 -1
  38. package/dist/lib/custom/test-harness-dialog.service.js.map +1 -1
  39. package/dist/lib/generated/Entities/AIAction/aiaction.form.component.js +6 -8
  40. package/dist/lib/generated/Entities/AIAction/aiaction.form.component.js.map +1 -1
  41. package/dist/lib/generated/Entities/AIAgent/aiagent.form.component.js +19 -21
  42. package/dist/lib/generated/Entities/AIAgent/aiagent.form.component.js.map +1 -1
  43. package/dist/lib/generated/Entities/AIAgentAction/aiagentaction.form.component.js +3 -5
  44. package/dist/lib/generated/Entities/AIAgentAction/aiagentaction.form.component.js.map +1 -1
  45. package/dist/lib/generated/Entities/AIAgentLearningCycle/aiagentlearningcycle.form.component.js +3 -5
  46. package/dist/lib/generated/Entities/AIAgentLearningCycle/aiagentlearningcycle.form.component.js.map +1 -1
  47. package/dist/lib/generated/Entities/AIAgentModel/aiagentmodel.form.component.js +3 -5
  48. package/dist/lib/generated/Entities/AIAgentModel/aiagentmodel.form.component.js.map +1 -1
  49. package/dist/lib/generated/Entities/AIAgentNote/aiagentnote.form.component.js +3 -5
  50. package/dist/lib/generated/Entities/AIAgentNote/aiagentnote.form.component.js.map +1 -1
  51. package/dist/lib/generated/Entities/AIAgentNoteType/aiagentnotetype.form.component.js +5 -7
  52. package/dist/lib/generated/Entities/AIAgentNoteType/aiagentnotetype.form.component.js.map +1 -1
  53. package/dist/lib/generated/Entities/AIAgentPrompt/aiagentprompt.form.component.js +3 -5
  54. package/dist/lib/generated/Entities/AIAgentPrompt/aiagentprompt.form.component.js.map +1 -1
  55. package/dist/lib/generated/Entities/AIAgentRequest/aiagentrequest.form.component.js +3 -5
  56. package/dist/lib/generated/Entities/AIAgentRequest/aiagentrequest.form.component.js.map +1 -1
  57. package/dist/lib/generated/Entities/AIConfiguration/aiconfiguration.form.component.js +9 -11
  58. package/dist/lib/generated/Entities/AIConfiguration/aiconfiguration.form.component.js.map +1 -1
  59. package/dist/lib/generated/Entities/AIConfigurationParam/aiconfigurationparam.form.component.js +3 -5
  60. package/dist/lib/generated/Entities/AIConfigurationParam/aiconfigurationparam.form.component.js.map +1 -1
  61. package/dist/lib/generated/Entities/AIModel/aimodel.form.component.js +21 -23
  62. package/dist/lib/generated/Entities/AIModel/aimodel.form.component.js.map +1 -1
  63. package/dist/lib/generated/Entities/AIModelAction/aimodelaction.form.component.js +3 -5
  64. package/dist/lib/generated/Entities/AIModelAction/aimodelaction.form.component.js.map +1 -1
  65. package/dist/lib/generated/Entities/AIModelType/aimodeltype.form.component.js +6 -8
  66. package/dist/lib/generated/Entities/AIModelType/aimodeltype.form.component.js.map +1 -1
  67. package/dist/lib/generated/Entities/AIModelVendor/aimodelvendor.form.component.js +3 -5
  68. package/dist/lib/generated/Entities/AIModelVendor/aimodelvendor.form.component.js.map +1 -1
  69. package/dist/lib/generated/Entities/AIPrompt/aiprompt.form.component.js +21 -23
  70. package/dist/lib/generated/Entities/AIPrompt/aiprompt.form.component.js.map +1 -1
  71. package/dist/lib/generated/Entities/AIPrompt/sections/details.component.d.ts.map +1 -1
  72. package/dist/lib/generated/Entities/AIPrompt/sections/details.component.js +94 -4
  73. package/dist/lib/generated/Entities/AIPrompt/sections/details.component.js.map +1 -1
  74. package/dist/lib/generated/Entities/AIPromptCategory/aipromptcategory.form.component.js +6 -8
  75. package/dist/lib/generated/Entities/AIPromptCategory/aipromptcategory.form.component.js.map +1 -1
  76. package/dist/lib/generated/Entities/AIPromptModel/aipromptmodel.form.component.js +3 -5
  77. package/dist/lib/generated/Entities/AIPromptModel/aipromptmodel.form.component.js.map +1 -1
  78. package/dist/lib/generated/Entities/AIPromptRun/aipromptrun.form.component.js +6 -8
  79. package/dist/lib/generated/Entities/AIPromptRun/aipromptrun.form.component.js.map +1 -1
  80. package/dist/lib/generated/Entities/AIPromptRun/sections/details.component.d.ts.map +1 -1
  81. package/dist/lib/generated/Entities/AIPromptRun/sections/details.component.js +103 -4
  82. package/dist/lib/generated/Entities/AIPromptRun/sections/details.component.js.map +1 -1
  83. package/dist/lib/generated/Entities/AIPromptType/aiprompttype.form.component.js +5 -7
  84. package/dist/lib/generated/Entities/AIPromptType/aiprompttype.form.component.js.map +1 -1
  85. package/dist/lib/generated/Entities/AIResultCache/airesultcache.form.component.js +3 -5
  86. package/dist/lib/generated/Entities/AIResultCache/airesultcache.form.component.js.map +1 -1
  87. package/dist/lib/generated/Entities/AIVendor/aivendor.form.component.js +14 -16
  88. package/dist/lib/generated/Entities/AIVendor/aivendor.form.component.js.map +1 -1
  89. package/dist/lib/generated/Entities/AIVendorType/aivendortype.form.component.js +3 -5
  90. package/dist/lib/generated/Entities/AIVendorType/aivendortype.form.component.js.map +1 -1
  91. package/dist/lib/generated/Entities/AIVendorTypeDefinition/aivendortypedefinition.form.component.js +6 -8
  92. package/dist/lib/generated/Entities/AIVendorTypeDefinition/aivendortypedefinition.form.component.js.map +1 -1
  93. package/dist/lib/generated/Entities/Action/action.form.component.js +24 -15
  94. package/dist/lib/generated/Entities/Action/action.form.component.js.map +1 -1
  95. package/dist/lib/generated/Entities/Action/sections/code.component.js +3 -4
  96. package/dist/lib/generated/Entities/Action/sections/code.component.js.map +1 -1
  97. package/dist/lib/generated/Entities/Action/sections/details.component.d.ts.map +1 -1
  98. package/dist/lib/generated/Entities/Action/sections/details.component.js +24 -4
  99. package/dist/lib/generated/Entities/Action/sections/details.component.js.map +1 -1
  100. package/dist/lib/generated/Entities/ActionAuthorization/actionauthorization.form.component.js +3 -5
  101. package/dist/lib/generated/Entities/ActionAuthorization/actionauthorization.form.component.js.map +1 -1
  102. package/dist/lib/generated/Entities/ActionCategory/actioncategory.form.component.js +6 -8
  103. package/dist/lib/generated/Entities/ActionCategory/actioncategory.form.component.js.map +1 -1
  104. package/dist/lib/generated/Entities/ActionContext/actioncontext.form.component.js +3 -5
  105. package/dist/lib/generated/Entities/ActionContext/actioncontext.form.component.js.map +1 -1
  106. package/dist/lib/generated/Entities/ActionContextType/actioncontexttype.form.component.js +5 -7
  107. package/dist/lib/generated/Entities/ActionContextType/actioncontexttype.form.component.js.map +1 -1
  108. package/dist/lib/generated/Entities/ActionExecutionLog/actionexecutionlog.form.component.js +3 -5
  109. package/dist/lib/generated/Entities/ActionExecutionLog/actionexecutionlog.form.component.js.map +1 -1
  110. package/dist/lib/generated/Entities/ActionFilter/actionfilter.form.component.js +5 -7
  111. package/dist/lib/generated/Entities/ActionFilter/actionfilter.form.component.js.map +1 -1
  112. package/dist/lib/generated/Entities/ActionLibrary/actionlibrary.form.component.js +3 -5
  113. package/dist/lib/generated/Entities/ActionLibrary/actionlibrary.form.component.js.map +1 -1
  114. package/dist/lib/generated/Entities/ActionParam/actionparam.form.component.js +6 -8
  115. package/dist/lib/generated/Entities/ActionParam/actionparam.form.component.js.map +1 -1
  116. package/dist/lib/generated/Entities/ActionResultCode/actionresultcode.form.component.js +3 -5
  117. package/dist/lib/generated/Entities/ActionResultCode/actionresultcode.form.component.js.map +1 -1
  118. package/dist/lib/generated/Entities/Application/application.form.component.js +9 -11
  119. package/dist/lib/generated/Entities/Application/application.form.component.js.map +1 -1
  120. package/dist/lib/generated/Entities/ApplicationEntity/applicationentity.form.component.js +3 -5
  121. package/dist/lib/generated/Entities/ApplicationEntity/applicationentity.form.component.js.map +1 -1
  122. package/dist/lib/generated/Entities/ApplicationSetting/applicationsetting.form.component.js +3 -5
  123. package/dist/lib/generated/Entities/ApplicationSetting/applicationsetting.form.component.js.map +1 -1
  124. package/dist/lib/generated/Entities/ArtifactType/artifacttype.form.component.js +5 -7
  125. package/dist/lib/generated/Entities/ArtifactType/artifacttype.form.component.js.map +1 -1
  126. package/dist/lib/generated/Entities/AuditLog/auditlog.form.component.js +3 -5
  127. package/dist/lib/generated/Entities/AuditLog/auditlog.form.component.js.map +1 -1
  128. package/dist/lib/generated/Entities/AuditLogType/auditlogtype.form.component.js +6 -8
  129. package/dist/lib/generated/Entities/AuditLogType/auditlogtype.form.component.js.map +1 -1
  130. package/dist/lib/generated/Entities/Authorization/authorization.form.component.js +9 -11
  131. package/dist/lib/generated/Entities/Authorization/authorization.form.component.js.map +1 -1
  132. package/dist/lib/generated/Entities/AuthorizationRole/authorizationrole.form.component.js +3 -5
  133. package/dist/lib/generated/Entities/AuthorizationRole/authorizationrole.form.component.js.map +1 -1
  134. package/dist/lib/generated/Entities/CommunicationBaseMessageType/communicationbasemessagetype.form.component.js +6 -8
  135. package/dist/lib/generated/Entities/CommunicationBaseMessageType/communicationbasemessagetype.form.component.js.map +1 -1
  136. package/dist/lib/generated/Entities/CommunicationLog/communicationlog.form.component.js +3 -5
  137. package/dist/lib/generated/Entities/CommunicationLog/communicationlog.form.component.js.map +1 -1
  138. package/dist/lib/generated/Entities/CommunicationProvider/communicationprovider.form.component.js +7 -9
  139. package/dist/lib/generated/Entities/CommunicationProvider/communicationprovider.form.component.js.map +1 -1
  140. package/dist/lib/generated/Entities/CommunicationProviderMessageType/communicationprovidermessagetype.form.component.js +5 -7
  141. package/dist/lib/generated/Entities/CommunicationProviderMessageType/communicationprovidermessagetype.form.component.js.map +1 -1
  142. package/dist/lib/generated/Entities/CommunicationRun/communicationrun.form.component.js +5 -7
  143. package/dist/lib/generated/Entities/CommunicationRun/communicationrun.form.component.js.map +1 -1
  144. package/dist/lib/generated/Entities/Company/company.form.component.js +7 -9
  145. package/dist/lib/generated/Entities/Company/company.form.component.js.map +1 -1
  146. package/dist/lib/generated/Entities/CompanyIntegration/companyintegration.form.component.js +8 -10
  147. package/dist/lib/generated/Entities/CompanyIntegration/companyintegration.form.component.js.map +1 -1
  148. package/dist/lib/generated/Entities/CompanyIntegrationRecordMap/companyintegrationrecordmap.form.component.js +3 -5
  149. package/dist/lib/generated/Entities/CompanyIntegrationRecordMap/companyintegrationrecordmap.form.component.js.map +1 -1
  150. package/dist/lib/generated/Entities/CompanyIntegrationRun/companyintegrationrun.form.component.js +7 -9
  151. package/dist/lib/generated/Entities/CompanyIntegrationRun/companyintegrationrun.form.component.js.map +1 -1
  152. package/dist/lib/generated/Entities/CompanyIntegrationRunAPILog/companyintegrationrunapilog.form.component.js +3 -5
  153. package/dist/lib/generated/Entities/CompanyIntegrationRunAPILog/companyintegrationrunapilog.form.component.js.map +1 -1
  154. package/dist/lib/generated/Entities/CompanyIntegrationRunDetail/companyintegrationrundetail.form.component.js +5 -7
  155. package/dist/lib/generated/Entities/CompanyIntegrationRunDetail/companyintegrationrundetail.form.component.js.map +1 -1
  156. package/dist/lib/generated/Entities/ContentFileType/contentfiletype.form.component.js +6 -8
  157. package/dist/lib/generated/Entities/ContentFileType/contentfiletype.form.component.js.map +1 -1
  158. package/dist/lib/generated/Entities/ContentItem/contentitem.form.component.js +6 -8
  159. package/dist/lib/generated/Entities/ContentItem/contentitem.form.component.js.map +1 -1
  160. package/dist/lib/generated/Entities/ContentItemAttribute/contentitemattribute.form.component.js +3 -5
  161. package/dist/lib/generated/Entities/ContentItemAttribute/contentitemattribute.form.component.js.map +1 -1
  162. package/dist/lib/generated/Entities/ContentItemTag/contentitemtag.form.component.js +3 -5
  163. package/dist/lib/generated/Entities/ContentItemTag/contentitemtag.form.component.js.map +1 -1
  164. package/dist/lib/generated/Entities/ContentProcessRun/contentprocessrun.form.component.js +3 -5
  165. package/dist/lib/generated/Entities/ContentProcessRun/contentprocessrun.form.component.js.map +1 -1
  166. package/dist/lib/generated/Entities/ContentSource/contentsource.form.component.js +7 -9
  167. package/dist/lib/generated/Entities/ContentSource/contentsource.form.component.js.map +1 -1
  168. package/dist/lib/generated/Entities/ContentSourceParam/contentsourceparam.form.component.js +3 -5
  169. package/dist/lib/generated/Entities/ContentSourceParam/contentsourceparam.form.component.js.map +1 -1
  170. package/dist/lib/generated/Entities/ContentSourceType/contentsourcetype.form.component.js +6 -8
  171. package/dist/lib/generated/Entities/ContentSourceType/contentsourcetype.form.component.js.map +1 -1
  172. package/dist/lib/generated/Entities/ContentSourceTypeParam/contentsourcetypeparam.form.component.js +3 -5
  173. package/dist/lib/generated/Entities/ContentSourceTypeParam/contentsourcetypeparam.form.component.js.map +1 -1
  174. package/dist/lib/generated/Entities/ContentType/contenttype.form.component.js +6 -8
  175. package/dist/lib/generated/Entities/ContentType/contenttype.form.component.js.map +1 -1
  176. package/dist/lib/generated/Entities/ContentTypeAttribute/contenttypeattribute.form.component.js +3 -5
  177. package/dist/lib/generated/Entities/ContentTypeAttribute/contenttypeattribute.form.component.js.map +1 -1
  178. package/dist/lib/generated/Entities/Conversation/conversation.form.component.js +8 -10
  179. package/dist/lib/generated/Entities/Conversation/conversation.form.component.js.map +1 -1
  180. package/dist/lib/generated/Entities/ConversationArtifact/conversationartifact.form.component.js +7 -9
  181. package/dist/lib/generated/Entities/ConversationArtifact/conversationartifact.form.component.js.map +1 -1
  182. package/dist/lib/generated/Entities/ConversationArtifactPermission/conversationartifactpermission.form.component.js +3 -5
  183. package/dist/lib/generated/Entities/ConversationArtifactPermission/conversationartifactpermission.form.component.js.map +1 -1
  184. package/dist/lib/generated/Entities/ConversationArtifactVersion/conversationartifactversion.form.component.js +5 -7
  185. package/dist/lib/generated/Entities/ConversationArtifactVersion/conversationartifactversion.form.component.js.map +1 -1
  186. package/dist/lib/generated/Entities/ConversationDetail/conversationdetail.form.component.js +5 -7
  187. package/dist/lib/generated/Entities/ConversationDetail/conversationdetail.form.component.js.map +1 -1
  188. package/dist/lib/generated/Entities/Dashboard/dashboard.form.component.js +6 -8
  189. package/dist/lib/generated/Entities/Dashboard/dashboard.form.component.js.map +1 -1
  190. package/dist/lib/generated/Entities/DashboardCategory/dashboardcategory.form.component.js +6 -8
  191. package/dist/lib/generated/Entities/DashboardCategory/dashboardcategory.form.component.js.map +1 -1
  192. package/dist/lib/generated/Entities/DashboardUserPreference/dashboarduserpreference.form.component.js +3 -5
  193. package/dist/lib/generated/Entities/DashboardUserPreference/dashboarduserpreference.form.component.js.map +1 -1
  194. package/dist/lib/generated/Entities/DashboardUserState/dashboarduserstate.form.component.js +3 -5
  195. package/dist/lib/generated/Entities/DashboardUserState/dashboarduserstate.form.component.js.map +1 -1
  196. package/dist/lib/generated/Entities/DataContext/datacontext.form.component.js +7 -9
  197. package/dist/lib/generated/Entities/DataContext/datacontext.form.component.js.map +1 -1
  198. package/dist/lib/generated/Entities/DataContextItem/datacontextitem.form.component.js +3 -5
  199. package/dist/lib/generated/Entities/DataContextItem/datacontextitem.form.component.js.map +1 -1
  200. package/dist/lib/generated/Entities/Dataset/dataset.form.component.js +5 -7
  201. package/dist/lib/generated/Entities/Dataset/dataset.form.component.js.map +1 -1
  202. package/dist/lib/generated/Entities/DatasetItem/datasetitem.form.component.js +3 -5
  203. package/dist/lib/generated/Entities/DatasetItem/datasetitem.form.component.js.map +1 -1
  204. package/dist/lib/generated/Entities/DuplicateRun/duplicaterun.form.component.js +5 -7
  205. package/dist/lib/generated/Entities/DuplicateRun/duplicaterun.form.component.js.map +1 -1
  206. package/dist/lib/generated/Entities/DuplicateRunDetail/duplicaterundetail.form.component.js +5 -7
  207. package/dist/lib/generated/Entities/DuplicateRunDetail/duplicaterundetail.form.component.js.map +1 -1
  208. package/dist/lib/generated/Entities/DuplicateRunDetailMatch/duplicaterundetailmatch.form.component.js +3 -5
  209. package/dist/lib/generated/Entities/DuplicateRunDetailMatch/duplicaterundetailmatch.form.component.js.map +1 -1
  210. package/dist/lib/generated/Entities/Employee/employee.form.component.js +9 -11
  211. package/dist/lib/generated/Entities/Employee/employee.form.component.js.map +1 -1
  212. package/dist/lib/generated/Entities/EmployeeCompanyIntegration/employeecompanyintegration.form.component.js +3 -5
  213. package/dist/lib/generated/Entities/EmployeeCompanyIntegration/employeecompanyintegration.form.component.js.map +1 -1
  214. package/dist/lib/generated/Entities/EmployeeRole/employeerole.form.component.js +3 -5
  215. package/dist/lib/generated/Entities/EmployeeRole/employeerole.form.component.js.map +1 -1
  216. package/dist/lib/generated/Entities/EmployeeSkill/employeeskill.form.component.js +3 -5
  217. package/dist/lib/generated/Entities/EmployeeSkill/employeeskill.form.component.js.map +1 -1
  218. package/dist/lib/generated/Entities/Entity/entity.form.component.js +41 -43
  219. package/dist/lib/generated/Entities/Entity/entity.form.component.js.map +1 -1
  220. package/dist/lib/generated/Entities/Entity/sections/ui.component.js +3 -4
  221. package/dist/lib/generated/Entities/Entity/sections/ui.component.js.map +1 -1
  222. package/dist/lib/generated/Entities/EntityAIAction/entityaiaction.form.component.js +3 -5
  223. package/dist/lib/generated/Entities/EntityAIAction/entityaiaction.form.component.js.map +1 -1
  224. package/dist/lib/generated/Entities/EntityAction/entityaction.form.component.js +7 -9
  225. package/dist/lib/generated/Entities/EntityAction/entityaction.form.component.js.map +1 -1
  226. package/dist/lib/generated/Entities/EntityActionFilter/entityactionfilter.form.component.js +3 -5
  227. package/dist/lib/generated/Entities/EntityActionFilter/entityactionfilter.form.component.js.map +1 -1
  228. package/dist/lib/generated/Entities/EntityActionInvocation/entityactioninvocation.form.component.js +3 -5
  229. package/dist/lib/generated/Entities/EntityActionInvocation/entityactioninvocation.form.component.js.map +1 -1
  230. package/dist/lib/generated/Entities/EntityActionInvocationType/entityactioninvocationtype.form.component.js +5 -7
  231. package/dist/lib/generated/Entities/EntityActionInvocationType/entityactioninvocationtype.form.component.js.map +1 -1
  232. package/dist/lib/generated/Entities/EntityActionParam/entityactionparam.form.component.js +3 -5
  233. package/dist/lib/generated/Entities/EntityActionParam/entityactionparam.form.component.js.map +1 -1
  234. package/dist/lib/generated/Entities/EntityCommunicationField/entitycommunicationfield.form.component.js +3 -5
  235. package/dist/lib/generated/Entities/EntityCommunicationField/entitycommunicationfield.form.component.js.map +1 -1
  236. package/dist/lib/generated/Entities/EntityCommunicationMessageType/entitycommunicationmessagetype.form.component.js +5 -7
  237. package/dist/lib/generated/Entities/EntityCommunicationMessageType/entitycommunicationmessagetype.form.component.js.map +1 -1
  238. package/dist/lib/generated/Entities/EntityDocument/entitydocument.form.component.js +7 -9
  239. package/dist/lib/generated/Entities/EntityDocument/entitydocument.form.component.js.map +1 -1
  240. package/dist/lib/generated/Entities/EntityDocumentRun/entitydocumentrun.form.component.js +3 -5
  241. package/dist/lib/generated/Entities/EntityDocumentRun/entitydocumentrun.form.component.js.map +1 -1
  242. package/dist/lib/generated/Entities/EntityDocumentSetting/entitydocumentsetting.form.component.js +3 -5
  243. package/dist/lib/generated/Entities/EntityDocumentSetting/entitydocumentsetting.form.component.js.map +1 -1
  244. package/dist/lib/generated/Entities/EntityDocumentType/entitydocumenttype.form.component.js +5 -7
  245. package/dist/lib/generated/Entities/EntityDocumentType/entitydocumenttype.form.component.js.map +1 -1
  246. package/dist/lib/generated/Entities/EntityField/entityfield.form.component.js +5 -7
  247. package/dist/lib/generated/Entities/EntityField/entityfield.form.component.js.map +1 -1
  248. package/dist/lib/generated/Entities/EntityFieldValue/entityfieldvalue.form.component.js +3 -5
  249. package/dist/lib/generated/Entities/EntityFieldValue/entityfieldvalue.form.component.js.map +1 -1
  250. package/dist/lib/generated/Entities/EntityPermission/entitypermission.form.component.js +3 -5
  251. package/dist/lib/generated/Entities/EntityPermission/entitypermission.form.component.js.map +1 -1
  252. package/dist/lib/generated/Entities/EntityRecordDocument/entityrecorddocument.form.component.js +3 -5
  253. package/dist/lib/generated/Entities/EntityRecordDocument/entityrecorddocument.form.component.js.map +1 -1
  254. package/dist/lib/generated/Entities/EntityRelationship/entityrelationship.form.component.js +3 -5
  255. package/dist/lib/generated/Entities/EntityRelationship/entityrelationship.form.component.js.map +1 -1
  256. package/dist/lib/generated/Entities/EntityRelationshipDisplayComponent/entityrelationshipdisplaycomponent.form.component.js +5 -7
  257. package/dist/lib/generated/Entities/EntityRelationshipDisplayComponent/entityrelationshipdisplaycomponent.form.component.js.map +1 -1
  258. package/dist/lib/generated/Entities/EntitySetting/entitysetting.form.component.js +3 -5
  259. package/dist/lib/generated/Entities/EntitySetting/entitysetting.form.component.js.map +1 -1
  260. package/dist/lib/generated/Entities/ErrorLog/errorlog.form.component.js +3 -5
  261. package/dist/lib/generated/Entities/ErrorLog/errorlog.form.component.js.map +1 -1
  262. package/dist/lib/generated/Entities/ExplorerNavigationItem/explorernavigationitem.form.component.js +3 -5
  263. package/dist/lib/generated/Entities/ExplorerNavigationItem/explorernavigationitem.form.component.js.map +1 -1
  264. package/dist/lib/generated/Entities/File/file.form.component.js +5 -7
  265. package/dist/lib/generated/Entities/File/file.form.component.js.map +1 -1
  266. package/dist/lib/generated/Entities/FileCategory/filecategory.form.component.js +6 -8
  267. package/dist/lib/generated/Entities/FileCategory/filecategory.form.component.js.map +1 -1
  268. package/dist/lib/generated/Entities/FileEntityRecordLink/fileentityrecordlink.form.component.js +3 -5
  269. package/dist/lib/generated/Entities/FileEntityRecordLink/fileentityrecordlink.form.component.js.map +1 -1
  270. package/dist/lib/generated/Entities/FileStorageProvider/filestorageprovider.form.component.js +5 -7
  271. package/dist/lib/generated/Entities/FileStorageProvider/filestorageprovider.form.component.js.map +1 -1
  272. package/dist/lib/generated/Entities/GeneratedCode/generatedcode.form.component.js +3 -5
  273. package/dist/lib/generated/Entities/GeneratedCode/generatedcode.form.component.js.map +1 -1
  274. package/dist/lib/generated/Entities/GeneratedCodeCategory/generatedcodecategory.form.component.js +6 -8
  275. package/dist/lib/generated/Entities/GeneratedCodeCategory/generatedcodecategory.form.component.js.map +1 -1
  276. package/dist/lib/generated/Entities/Integration/integration.form.component.js +7 -9
  277. package/dist/lib/generated/Entities/Integration/integration.form.component.js.map +1 -1
  278. package/dist/lib/generated/Entities/IntegrationURLFormat/integrationurlformat.form.component.js +3 -5
  279. package/dist/lib/generated/Entities/IntegrationURLFormat/integrationurlformat.form.component.js.map +1 -1
  280. package/dist/lib/generated/Entities/Library/library.form.component.js +6 -8
  281. package/dist/lib/generated/Entities/Library/library.form.component.js.map +1 -1
  282. package/dist/lib/generated/Entities/LibraryItem/libraryitem.form.component.js +3 -5
  283. package/dist/lib/generated/Entities/LibraryItem/libraryitem.form.component.js.map +1 -1
  284. package/dist/lib/generated/Entities/List/list.form.component.js +6 -8
  285. package/dist/lib/generated/Entities/List/list.form.component.js.map +1 -1
  286. package/dist/lib/generated/Entities/ListCategory/listcategory.form.component.js +6 -8
  287. package/dist/lib/generated/Entities/ListCategory/listcategory.form.component.js.map +1 -1
  288. package/dist/lib/generated/Entities/ListDetail/listdetail.form.component.js +3 -5
  289. package/dist/lib/generated/Entities/ListDetail/listdetail.form.component.js.map +1 -1
  290. package/dist/lib/generated/Entities/OutputDeliveryType/outputdeliverytype.form.component.js +5 -7
  291. package/dist/lib/generated/Entities/OutputDeliveryType/outputdeliverytype.form.component.js.map +1 -1
  292. package/dist/lib/generated/Entities/OutputFormatType/outputformattype.form.component.js +5 -7
  293. package/dist/lib/generated/Entities/OutputFormatType/outputformattype.form.component.js.map +1 -1
  294. package/dist/lib/generated/Entities/OutputTriggerType/outputtriggertype.form.component.js +5 -7
  295. package/dist/lib/generated/Entities/OutputTriggerType/outputtriggertype.form.component.js.map +1 -1
  296. package/dist/lib/generated/Entities/Query/query.form.component.js +8 -10
  297. package/dist/lib/generated/Entities/Query/query.form.component.js.map +1 -1
  298. package/dist/lib/generated/Entities/QueryCategory/querycategory.form.component.js +6 -8
  299. package/dist/lib/generated/Entities/QueryCategory/querycategory.form.component.js.map +1 -1
  300. package/dist/lib/generated/Entities/QueryEntity/queryentity.form.component.js +3 -5
  301. package/dist/lib/generated/Entities/QueryEntity/queryentity.form.component.js.map +1 -1
  302. package/dist/lib/generated/Entities/QueryField/queryfield.form.component.js +3 -5
  303. package/dist/lib/generated/Entities/QueryField/queryfield.form.component.js.map +1 -1
  304. package/dist/lib/generated/Entities/QueryPermission/querypermission.form.component.js +3 -5
  305. package/dist/lib/generated/Entities/QueryPermission/querypermission.form.component.js.map +1 -1
  306. package/dist/lib/generated/Entities/Queue/queue.form.component.js +5 -7
  307. package/dist/lib/generated/Entities/Queue/queue.form.component.js.map +1 -1
  308. package/dist/lib/generated/Entities/QueueTask/queuetask.form.component.js +3 -5
  309. package/dist/lib/generated/Entities/QueueTask/queuetask.form.component.js.map +1 -1
  310. package/dist/lib/generated/Entities/QueueType/queuetype.form.component.js +5 -7
  311. package/dist/lib/generated/Entities/QueueType/queuetype.form.component.js.map +1 -1
  312. package/dist/lib/generated/Entities/Recommendation/recommendation.form.component.js +5 -7
  313. package/dist/lib/generated/Entities/Recommendation/recommendation.form.component.js.map +1 -1
  314. package/dist/lib/generated/Entities/RecommendationItem/recommendationitem.form.component.js +3 -5
  315. package/dist/lib/generated/Entities/RecommendationItem/recommendationitem.form.component.js.map +1 -1
  316. package/dist/lib/generated/Entities/RecommendationProvider/recommendationprovider.form.component.js +5 -7
  317. package/dist/lib/generated/Entities/RecommendationProvider/recommendationprovider.form.component.js.map +1 -1
  318. package/dist/lib/generated/Entities/RecommendationRun/recommendationrun.form.component.js +5 -7
  319. package/dist/lib/generated/Entities/RecommendationRun/recommendationrun.form.component.js.map +1 -1
  320. package/dist/lib/generated/Entities/RecordChange/recordchange.form.component.js +3 -5
  321. package/dist/lib/generated/Entities/RecordChange/recordchange.form.component.js.map +1 -1
  322. package/dist/lib/generated/Entities/RecordChangeReplayRun/recordchangereplayrun.form.component.js +5 -7
  323. package/dist/lib/generated/Entities/RecordChangeReplayRun/recordchangereplayrun.form.component.js.map +1 -1
  324. package/dist/lib/generated/Entities/RecordMergeDeletionLog/recordmergedeletionlog.form.component.js +3 -5
  325. package/dist/lib/generated/Entities/RecordMergeDeletionLog/recordmergedeletionlog.form.component.js.map +1 -1
  326. package/dist/lib/generated/Entities/RecordMergeLog/recordmergelog.form.component.js +6 -8
  327. package/dist/lib/generated/Entities/RecordMergeLog/recordmergelog.form.component.js.map +1 -1
  328. package/dist/lib/generated/Entities/Report/report.form.component.js +7 -9
  329. package/dist/lib/generated/Entities/Report/report.form.component.js.map +1 -1
  330. package/dist/lib/generated/Entities/ReportCategory/reportcategory.form.component.js +6 -8
  331. package/dist/lib/generated/Entities/ReportCategory/reportcategory.form.component.js.map +1 -1
  332. package/dist/lib/generated/Entities/ReportSnapshot/reportsnapshot.form.component.js +3 -5
  333. package/dist/lib/generated/Entities/ReportSnapshot/reportsnapshot.form.component.js.map +1 -1
  334. package/dist/lib/generated/Entities/ReportUserState/reportuserstate.form.component.js +3 -5
  335. package/dist/lib/generated/Entities/ReportUserState/reportuserstate.form.component.js.map +1 -1
  336. package/dist/lib/generated/Entities/ReportVersion/reportversion.form.component.js +3 -5
  337. package/dist/lib/generated/Entities/ReportVersion/reportversion.form.component.js.map +1 -1
  338. package/dist/lib/generated/Entities/ResourceLink/resourcelink.form.component.js +3 -5
  339. package/dist/lib/generated/Entities/ResourceLink/resourcelink.form.component.js.map +1 -1
  340. package/dist/lib/generated/Entities/ResourcePermission/resourcepermission.form.component.js +3 -5
  341. package/dist/lib/generated/Entities/ResourcePermission/resourcepermission.form.component.js.map +1 -1
  342. package/dist/lib/generated/Entities/ResourceType/resourcetype.form.component.js +8 -10
  343. package/dist/lib/generated/Entities/ResourceType/resourcetype.form.component.js.map +1 -1
  344. package/dist/lib/generated/Entities/Role/role.form.component.js +10 -12
  345. package/dist/lib/generated/Entities/Role/role.form.component.js.map +1 -1
  346. package/dist/lib/generated/Entities/RowLevelSecurityFilter/rowlevelsecurityfilter.form.component.js +5 -7
  347. package/dist/lib/generated/Entities/RowLevelSecurityFilter/rowlevelsecurityfilter.form.component.js.map +1 -1
  348. package/dist/lib/generated/Entities/ScheduledAction/scheduledaction.form.component.js +5 -7
  349. package/dist/lib/generated/Entities/ScheduledAction/scheduledaction.form.component.js.map +1 -1
  350. package/dist/lib/generated/Entities/ScheduledActionParam/scheduledactionparam.form.component.js +3 -5
  351. package/dist/lib/generated/Entities/ScheduledActionParam/scheduledactionparam.form.component.js.map +1 -1
  352. package/dist/lib/generated/Entities/SchemaInfo/schemainfo.form.component.js +3 -5
  353. package/dist/lib/generated/Entities/SchemaInfo/schemainfo.form.component.js.map +1 -1
  354. package/dist/lib/generated/Entities/Skill/skill.form.component.js +6 -8
  355. package/dist/lib/generated/Entities/Skill/skill.form.component.js.map +1 -1
  356. package/dist/lib/generated/Entities/Tag/tag.form.component.js +6 -8
  357. package/dist/lib/generated/Entities/Tag/tag.form.component.js.map +1 -1
  358. package/dist/lib/generated/Entities/TaggedItem/taggeditem.form.component.js +3 -5
  359. package/dist/lib/generated/Entities/TaggedItem/taggeditem.form.component.js.map +1 -1
  360. package/dist/lib/generated/Entities/Template/template.form.component.js +8 -10
  361. package/dist/lib/generated/Entities/Template/template.form.component.js.map +1 -1
  362. package/dist/lib/generated/Entities/TemplateCategory/templatecategory.form.component.js +6 -8
  363. package/dist/lib/generated/Entities/TemplateCategory/templatecategory.form.component.js.map +1 -1
  364. package/dist/lib/generated/Entities/TemplateContent/templatecontent.form.component.d.ts.map +1 -1
  365. package/dist/lib/generated/Entities/TemplateContent/templatecontent.form.component.js +19 -10
  366. package/dist/lib/generated/Entities/TemplateContent/templatecontent.form.component.js.map +1 -1
  367. package/dist/lib/generated/Entities/TemplateContentType/templatecontenttype.form.component.js +5 -7
  368. package/dist/lib/generated/Entities/TemplateContentType/templatecontenttype.form.component.js.map +1 -1
  369. package/dist/lib/generated/Entities/TemplateParam/sections/details.component.d.ts.map +1 -1
  370. package/dist/lib/generated/Entities/TemplateParam/sections/details.component.js +15 -4
  371. package/dist/lib/generated/Entities/TemplateParam/sections/details.component.js.map +1 -1
  372. package/dist/lib/generated/Entities/TemplateParam/templateparam.form.component.js +3 -5
  373. package/dist/lib/generated/Entities/TemplateParam/templateparam.form.component.js.map +1 -1
  374. package/dist/lib/generated/Entities/User/user.form.component.js +46 -48
  375. package/dist/lib/generated/Entities/User/user.form.component.js.map +1 -1
  376. package/dist/lib/generated/Entities/UserApplication/userapplication.form.component.js +5 -7
  377. package/dist/lib/generated/Entities/UserApplication/userapplication.form.component.js.map +1 -1
  378. package/dist/lib/generated/Entities/UserApplicationEntity/userapplicationentity.form.component.js +3 -5
  379. package/dist/lib/generated/Entities/UserApplicationEntity/userapplicationentity.form.component.js.map +1 -1
  380. package/dist/lib/generated/Entities/UserFavorite/userfavorite.form.component.js +3 -5
  381. package/dist/lib/generated/Entities/UserFavorite/userfavorite.form.component.js.map +1 -1
  382. package/dist/lib/generated/Entities/UserNotification/usernotification.form.component.js +3 -5
  383. package/dist/lib/generated/Entities/UserNotification/usernotification.form.component.js.map +1 -1
  384. package/dist/lib/generated/Entities/UserRecordLog/userrecordlog.form.component.js +3 -5
  385. package/dist/lib/generated/Entities/UserRecordLog/userrecordlog.form.component.js.map +1 -1
  386. package/dist/lib/generated/Entities/UserRole/userrole.form.component.js +3 -5
  387. package/dist/lib/generated/Entities/UserRole/userrole.form.component.js.map +1 -1
  388. package/dist/lib/generated/Entities/UserView/userview.form.component.js +7 -9
  389. package/dist/lib/generated/Entities/UserView/userview.form.component.js.map +1 -1
  390. package/dist/lib/generated/Entities/UserViewCategory/userviewcategory.form.component.js +6 -8
  391. package/dist/lib/generated/Entities/UserViewCategory/userviewcategory.form.component.js.map +1 -1
  392. package/dist/lib/generated/Entities/UserViewRun/userviewrun.form.component.js +5 -7
  393. package/dist/lib/generated/Entities/UserViewRun/userviewrun.form.component.js.map +1 -1
  394. package/dist/lib/generated/Entities/UserViewRunDetail/userviewrundetail.form.component.js +3 -5
  395. package/dist/lib/generated/Entities/UserViewRunDetail/userviewrundetail.form.component.js.map +1 -1
  396. package/dist/lib/generated/Entities/VectorDatabase/vectordatabase.form.component.js +6 -8
  397. package/dist/lib/generated/Entities/VectorDatabase/vectordatabase.form.component.js.map +1 -1
  398. package/dist/lib/generated/Entities/VectorIndex/vectorindex.form.component.js +5 -7
  399. package/dist/lib/generated/Entities/VectorIndex/vectorindex.form.component.js.map +1 -1
  400. package/dist/lib/generated/Entities/VersionInstallation/versioninstallation.form.component.js +3 -5
  401. package/dist/lib/generated/Entities/VersionInstallation/versioninstallation.form.component.js.map +1 -1
  402. package/dist/lib/generated/Entities/Workflow/workflow.form.component.js +6 -8
  403. package/dist/lib/generated/Entities/Workflow/workflow.form.component.js.map +1 -1
  404. package/dist/lib/generated/Entities/WorkflowEngine/workflowengine.form.component.js +5 -7
  405. package/dist/lib/generated/Entities/WorkflowEngine/workflowengine.form.component.js.map +1 -1
  406. package/dist/lib/generated/Entities/WorkflowRun/workflowrun.form.component.js +3 -5
  407. package/dist/lib/generated/Entities/WorkflowRun/workflowrun.form.component.js.map +1 -1
  408. package/dist/lib/generated/Entities/Workspace/workspace.form.component.js +5 -7
  409. package/dist/lib/generated/Entities/Workspace/workspace.form.component.js.map +1 -1
  410. package/dist/lib/generated/Entities/WorkspaceItem/workspaceitem.form.component.js +3 -5
  411. package/dist/lib/generated/Entities/WorkspaceItem/workspaceitem.form.component.js.map +1 -1
  412. package/dist/public-api.d.ts +2 -2
  413. package/dist/public-api.d.ts.map +1 -1
  414. package/dist/public-api.js +2 -2
  415. package/dist/public-api.js.map +1 -1
  416. package/package.json +12 -12
  417. package/dist/lib/custom/AIAgents/agent-execution-monitor.component.d.ts.map +0 -1
  418. package/dist/lib/custom/AIAgents/agent-execution-monitor.component.js.map +0 -1
  419. package/dist/lib/custom/AIAgents/agent-execution-node.component.d.ts.map +0 -1
  420. package/dist/lib/custom/AIAgents/agent-execution-node.component.js.map +0 -1
  421. package/dist/lib/custom/AIAgents/ai-test-harness-dialog.component.d.ts.map +0 -1
  422. package/dist/lib/custom/AIAgents/ai-test-harness-dialog.component.js.map +0 -1
  423. package/dist/lib/custom/AIAgents/ai-test-harness.component.d.ts.map +0 -1
  424. package/dist/lib/custom/AIAgents/ai-test-harness.component.js +0 -2658
  425. package/dist/lib/custom/AIAgents/ai-test-harness.component.js.map +0 -1
  426. package/dist/lib/custom/AIPrompts/ai-prompt-execution-dialog.component.d.ts +0 -99
  427. package/dist/lib/custom/AIPrompts/ai-prompt-execution-dialog.component.d.ts.map +0 -1
  428. package/dist/lib/custom/AIPrompts/ai-prompt-execution-dialog.component.js +0 -830
  429. package/dist/lib/custom/AIPrompts/ai-prompt-execution-dialog.component.js.map +0 -1
  430. /package/dist/lib/custom/{AIAgents → ai-test-harness}/agent-execution-monitor.component.d.ts +0 -0
  431. /package/dist/lib/custom/{AIAgents → ai-test-harness}/agent-execution-node.component.d.ts +0 -0
  432. /package/dist/lib/custom/{AIAgents → ai-test-harness}/ai-test-harness-dialog.component.d.ts +0 -0
@@ -25,14 +25,12 @@ import * as i9 from "@progress/kendo-angular-buttons";
25
25
  import * as i10 from "@memberjunction/ng-user-view-grid";
26
26
  import * as i11 from "@memberjunction/ng-base-forms";
27
27
  import * as i12 from "@memberjunction/ng-form-toolbar";
28
- import * as i13 from "@memberjunction/ng-container-directives";
29
- import * as i14 from "@memberjunction/ng-code-editor";
30
- import * as i15 from "../../shared/components/template-editor.component";
31
- import * as i16 from "./ai-prompt-execution-dialog.component";
32
- import * as i17 from "../AIAgents/ai-test-harness.component";
28
+ import * as i13 from "@memberjunction/ng-code-editor";
29
+ import * as i14 from "../../shared/components/template-editor.component";
30
+ import * as i15 from "../ai-test-harness/ai-test-harness.component";
33
31
  const _c0 = ["templateEditor"];
34
- const _forTrack0 = ($index, $item) => $item.ID || $index;
35
- const _forTrack1 = ($index, $item) => $item.ID;
32
+ const _forTrack0 = ($index, $item) => $item.ID;
33
+ const _forTrack1 = ($index, $item) => $item.ID || $index;
36
34
  const _c1 = () => ({ text: "Active", value: "Active" });
37
35
  const _c2 = () => ({ text: "Pending", value: "Pending" });
38
36
  const _c3 = () => ({ text: "Disabled", value: "Disabled" });
@@ -42,7 +40,7 @@ const _c6 = () => ({ text: "Static Count", value: "StaticCount" });
42
40
  const _c7 = () => ({ text: "Config Param", value: "ConfigParam" });
43
41
  function AIPromptFormComponentExtended_form_1_Conditional_9_Template(rf, ctx) { if (rf & 1) {
44
42
  const _r1 = i0.ɵɵgetCurrentView();
45
- i0.ɵɵelementStart(0, "kendo-textbox", 48);
43
+ i0.ɵɵelementStart(0, "kendo-textbox", 47);
46
44
  i0.ɵɵtwoWayListener("ngModelChange", function AIPromptFormComponentExtended_form_1_Conditional_9_Template_kendo_textbox_ngModelChange_0_listener($event) { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(2); i0.ɵɵtwoWayBindingSet(ctx_r1.record.Name, $event) || (ctx_r1.record.Name = $event); return i0.ɵɵresetView($event); });
47
45
  i0.ɵɵelementEnd();
48
46
  } if (rf & 2) {
@@ -50,10 +48,10 @@ function AIPromptFormComponentExtended_form_1_Conditional_9_Template(rf, ctx) {
50
48
  i0.ɵɵtwoWayProperty("ngModel", ctx_r1.record.Name);
51
49
  } }
52
50
  function AIPromptFormComponentExtended_form_1_Conditional_10_Template(rf, ctx) { if (rf & 1) {
53
- i0.ɵɵelementStart(0, "h4", 49);
51
+ i0.ɵɵelementStart(0, "h4", 48);
54
52
  i0.ɵɵtext(1);
55
53
  i0.ɵɵelementEnd();
56
- i0.ɵɵelementStart(2, "span", 50);
54
+ i0.ɵɵelementStart(2, "span", 49);
57
55
  i0.ɵɵtext(3);
58
56
  i0.ɵɵelementEnd();
59
57
  } if (rf & 2) {
@@ -66,14 +64,14 @@ function AIPromptFormComponentExtended_form_1_Conditional_10_Template(rf, ctx) {
66
64
  i0.ɵɵtextInterpolate1(" ", ctx_r1.record.Status, " ");
67
65
  } }
68
66
  function AIPromptFormComponentExtended_form_1_Conditional_11_Conditional_10_Template(rf, ctx) { if (rf & 1) {
69
- i0.ɵɵelementStart(0, "div", 53);
70
- i0.ɵɵelement(1, "i", 55);
67
+ i0.ɵɵelementStart(0, "div", 52);
68
+ i0.ɵɵelement(1, "i", 54);
71
69
  i0.ɵɵtext(2, " Loading types... ");
72
70
  i0.ɵɵelementEnd();
73
71
  } }
74
72
  function AIPromptFormComponentExtended_form_1_Conditional_11_Conditional_11_Template(rf, ctx) { if (rf & 1) {
75
73
  const _r4 = i0.ɵɵgetCurrentView();
76
- i0.ɵɵelementStart(0, "kendo-dropdownlist", 56);
74
+ i0.ɵɵelementStart(0, "kendo-dropdownlist", 55);
77
75
  i0.ɵɵtwoWayListener("ngModelChange", function AIPromptFormComponentExtended_form_1_Conditional_11_Conditional_11_Template_kendo_dropdownlist_ngModelChange_0_listener($event) { i0.ɵɵrestoreView(_r4); const ctx_r1 = i0.ɵɵnextContext(3); i0.ɵɵtwoWayBindingSet(ctx_r1.record.TypeID, $event) || (ctx_r1.record.TypeID = $event); return i0.ɵɵresetView($event); });
78
76
  i0.ɵɵelementEnd();
79
77
  } if (rf & 2) {
@@ -83,18 +81,18 @@ function AIPromptFormComponentExtended_form_1_Conditional_11_Conditional_11_Temp
83
81
  } }
84
82
  function AIPromptFormComponentExtended_form_1_Conditional_11_Template(rf, ctx) { if (rf & 1) {
85
83
  const _r3 = i0.ɵɵgetCurrentView();
86
- i0.ɵɵelementStart(0, "div", 15)(1, "div")(2, "label", 46);
84
+ i0.ɵɵelementStart(0, "div", 14)(1, "div")(2, "label", 45);
87
85
  i0.ɵɵtext(3, "Status");
88
86
  i0.ɵɵelementEnd();
89
- i0.ɵɵelementStart(4, "kendo-dropdownlist", 51);
87
+ i0.ɵɵelementStart(4, "kendo-dropdownlist", 50);
90
88
  i0.ɵɵtwoWayListener("ngModelChange", function AIPromptFormComponentExtended_form_1_Conditional_11_Template_kendo_dropdownlist_ngModelChange_4_listener($event) { i0.ɵɵrestoreView(_r3); const ctx_r1 = i0.ɵɵnextContext(2); i0.ɵɵtwoWayBindingSet(ctx_r1.record.Status, $event) || (ctx_r1.record.Status = $event); return i0.ɵɵresetView($event); });
91
89
  i0.ɵɵelementEnd()();
92
- i0.ɵɵelementStart(5, "div")(6, "label", 46);
90
+ i0.ɵɵelementStart(5, "div")(6, "label", 45);
93
91
  i0.ɵɵtext(7, " Type ");
94
- i0.ɵɵelementStart(8, "span", 52);
92
+ i0.ɵɵelementStart(8, "span", 51);
95
93
  i0.ɵɵtext(9, "*");
96
94
  i0.ɵɵelementEnd()();
97
- i0.ɵɵtemplate(10, AIPromptFormComponentExtended_form_1_Conditional_11_Conditional_10_Template, 3, 0, "div", 53)(11, AIPromptFormComponentExtended_form_1_Conditional_11_Conditional_11_Template, 1, 4, "kendo-dropdownlist", 54);
95
+ i0.ɵɵtemplate(10, AIPromptFormComponentExtended_form_1_Conditional_11_Conditional_10_Template, 3, 0, "div", 52)(11, AIPromptFormComponentExtended_form_1_Conditional_11_Conditional_11_Template, 1, 4, "kendo-dropdownlist", 53);
98
96
  i0.ɵɵelementEnd()();
99
97
  } if (rf & 2) {
100
98
  const ctx_r1 = i0.ɵɵnextContext(2);
@@ -106,7 +104,7 @@ function AIPromptFormComponentExtended_form_1_Conditional_11_Template(rf, ctx) {
106
104
  } }
107
105
  function AIPromptFormComponentExtended_form_1_Conditional_12_Template(rf, ctx) { if (rf & 1) {
108
106
  const _r5 = i0.ɵɵgetCurrentView();
109
- i0.ɵɵelementStart(0, "kendo-textarea", 57);
107
+ i0.ɵɵelementStart(0, "kendo-textarea", 56);
110
108
  i0.ɵɵtwoWayListener("ngModelChange", function AIPromptFormComponentExtended_form_1_Conditional_12_Template_kendo_textarea_ngModelChange_0_listener($event) { i0.ɵɵrestoreView(_r5); const ctx_r1 = i0.ɵɵnextContext(2); i0.ɵɵtwoWayBindingSet(ctx_r1.record.Description, $event) || (ctx_r1.record.Description = $event); return i0.ɵɵresetView($event); });
111
109
  i0.ɵɵelementEnd();
112
110
  } if (rf & 2) {
@@ -115,7 +113,7 @@ function AIPromptFormComponentExtended_form_1_Conditional_12_Template(rf, ctx) {
115
113
  i0.ɵɵproperty("rows", 2);
116
114
  } }
117
115
  function AIPromptFormComponentExtended_form_1_Conditional_13_Template(rf, ctx) { if (rf & 1) {
118
- i0.ɵɵelementStart(0, "p", 17);
116
+ i0.ɵɵelementStart(0, "p", 16);
119
117
  i0.ɵɵtext(1);
120
118
  i0.ɵɵelementEnd();
121
119
  } if (rf & 2) {
@@ -124,12 +122,12 @@ function AIPromptFormComponentExtended_form_1_Conditional_13_Template(rf, ctx) {
124
122
  i0.ɵɵtextInterpolate(ctx_r1.record.Description);
125
123
  } }
126
124
  function AIPromptFormComponentExtended_form_1_Conditional_15_Template(rf, ctx) { if (rf & 1) {
127
- i0.ɵɵelementStart(0, "div", 19);
128
- i0.ɵɵelement(1, "i", 58);
129
- i0.ɵɵelementStart(2, "span", 21);
125
+ i0.ɵɵelementStart(0, "div", 18);
126
+ i0.ɵɵelement(1, "i", 57);
127
+ i0.ɵɵelementStart(2, "span", 20);
130
128
  i0.ɵɵtext(3, "Type:");
131
129
  i0.ɵɵelementEnd();
132
- i0.ɵɵelementStart(4, "span", 22);
130
+ i0.ɵɵelementStart(4, "span", 21);
133
131
  i0.ɵɵtext(5);
134
132
  i0.ɵɵelementEnd()();
135
133
  } if (rf & 2) {
@@ -138,19 +136,21 @@ function AIPromptFormComponentExtended_form_1_Conditional_15_Template(rf, ctx) {
138
136
  i0.ɵɵtextInterpolate(ctx_r1.getPromptTypeDisplayName(ctx_r1.record.TypeID));
139
137
  } }
140
138
  function AIPromptFormComponentExtended_form_1_Conditional_28_Template(rf, ctx) { if (rf & 1) {
141
- i0.ɵɵelementStart(0, "div", 19);
142
- i0.ɵɵelement(1, "i", 59);
143
- i0.ɵɵelementStart(2, "span", 60);
139
+ i0.ɵɵelementStart(0, "div", 18);
140
+ i0.ɵɵelement(1, "i", 58);
141
+ i0.ɵɵelementStart(2, "span", 59);
144
142
  i0.ɵɵtext(3, "Caching Enabled");
145
143
  i0.ɵɵelementEnd()();
146
144
  } }
147
145
  function AIPromptFormComponentExtended_form_1_Conditional_31_Template(rf, ctx) { if (rf & 1) {
148
146
  const _r6 = i0.ɵɵgetCurrentView();
149
- i0.ɵɵelementStart(0, "kendo-button", 61);
150
- i0.ɵɵlistener("click", function AIPromptFormComponentExtended_form_1_Conditional_31_Template_kendo_button_click_0_listener() { i0.ɵɵrestoreView(_r6); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.openTestHarness()); });
151
- i0.ɵɵelement(1, "i", 62);
147
+ i0.ɵɵelementStart(0, "button", 60);
148
+ i0.ɵɵlistener("click", function AIPromptFormComponentExtended_form_1_Conditional_31_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r6); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.openTestHarness()); });
149
+ i0.ɵɵelement(1, "i", 61);
152
150
  i0.ɵɵtext(2, " Run ");
153
151
  i0.ɵɵelementEnd();
152
+ } if (rf & 2) {
153
+ i0.ɵɵproperty("themeColor", "primary")("size", "large");
154
154
  } }
155
155
  function AIPromptFormComponentExtended_form_1_Conditional_32_Conditional_1_Template(rf, ctx) { if (rf & 1) {
156
156
  i0.ɵɵtext(0, " \u2022 Prompt must be Active");
@@ -165,7 +165,7 @@ function AIPromptFormComponentExtended_form_1_Conditional_32_Conditional_3_Templ
165
165
  i0.ɵɵelement(1, "br");
166
166
  } }
167
167
  function AIPromptFormComponentExtended_form_1_Conditional_32_Template(rf, ctx) { if (rf & 1) {
168
- i0.ɵɵelementStart(0, "div", 28);
168
+ i0.ɵɵelementStart(0, "div", 27);
169
169
  i0.ɵɵtemplate(1, AIPromptFormComponentExtended_form_1_Conditional_32_Conditional_1_Template, 2, 0, "br")(2, AIPromptFormComponentExtended_form_1_Conditional_32_Conditional_2_Template, 2, 0, "br")(3, AIPromptFormComponentExtended_form_1_Conditional_32_Conditional_3_Template, 2, 0, "br");
170
170
  i0.ɵɵelementEnd();
171
171
  } if (rf & 2) {
@@ -178,7 +178,7 @@ function AIPromptFormComponentExtended_form_1_Conditional_32_Template(rf, ctx) {
178
178
  i0.ɵɵconditional(!ctx_r1.template && ctx_r1.record.TemplateID ? 3 : -1);
179
179
  } }
180
180
  function AIPromptFormComponentExtended_form_1_ng_template_35_Conditional_3_Template(rf, ctx) { if (rf & 1) {
181
- i0.ɵɵelementStart(0, "span", 64);
181
+ i0.ɵɵelementStart(0, "span", 63);
182
182
  i0.ɵɵtext(1);
183
183
  i0.ɵɵelementEnd();
184
184
  } if (rf & 2) {
@@ -187,10 +187,10 @@ function AIPromptFormComponentExtended_form_1_ng_template_35_Conditional_3_Templ
187
187
  i0.ɵɵtextInterpolate1("\u2022 ", ctx_r1.template.Name, "");
188
188
  } }
189
189
  function AIPromptFormComponentExtended_form_1_ng_template_35_Template(rf, ctx) { if (rf & 1) {
190
- i0.ɵɵelementStart(0, "span", 63);
191
- i0.ɵɵelement(1, "i", 23);
190
+ i0.ɵɵelementStart(0, "span", 62);
191
+ i0.ɵɵelement(1, "i", 22);
192
192
  i0.ɵɵtext(2, " Template Editor ");
193
- i0.ɵɵtemplate(3, AIPromptFormComponentExtended_form_1_ng_template_35_Conditional_3_Template, 2, 1, "span", 64);
193
+ i0.ɵɵtemplate(3, AIPromptFormComponentExtended_form_1_ng_template_35_Conditional_3_Template, 2, 1, "span", 63);
194
194
  i0.ɵɵelementEnd();
195
195
  } if (rf & 2) {
196
196
  const ctx_r1 = i0.ɵɵnextContext(2);
@@ -198,56 +198,66 @@ function AIPromptFormComponentExtended_form_1_ng_template_35_Template(rf, ctx) {
198
198
  i0.ɵɵconditional(ctx_r1.template ? 3 : -1);
199
199
  } }
200
200
  function AIPromptFormComponentExtended_form_1_Conditional_37_Template(rf, ctx) { if (rf & 1) {
201
- i0.ɵɵelementStart(0, "div", 33);
202
- i0.ɵɵelement(1, "i", 65);
201
+ i0.ɵɵelementStart(0, "div", 32);
202
+ i0.ɵɵelement(1, "i", 64);
203
203
  i0.ɵɵtext(2, " Loading template... ");
204
204
  i0.ɵɵelementEnd();
205
205
  } }
206
206
  function AIPromptFormComponentExtended_form_1_Conditional_38_Template(rf, ctx) { if (rf & 1) {
207
207
  const _r7 = i0.ɵɵgetCurrentView();
208
- i0.ɵɵelementStart(0, "div", 34);
209
- i0.ɵɵelement(1, "i", 66);
210
- i0.ɵɵelementStart(2, "h5", 67);
208
+ i0.ɵɵelementStart(0, "div", 33);
209
+ i0.ɵɵelement(1, "i", 65);
210
+ i0.ɵɵelementStart(2, "h5", 66);
211
211
  i0.ɵɵtext(3, "No Template Associated");
212
212
  i0.ɵɵelementEnd();
213
- i0.ɵɵelementStart(4, "p", 68);
213
+ i0.ɵɵelementStart(4, "p", 67);
214
214
  i0.ɵɵtext(5, " This AI prompt needs a template to define its structure and parameters. Create a new template or link to an existing one. ");
215
215
  i0.ɵɵelementEnd();
216
- i0.ɵɵelementStart(6, "div", 69)(7, "kendo-button", 70);
217
- i0.ɵɵlistener("click", function AIPromptFormComponentExtended_form_1_Conditional_38_Template_kendo_button_click_7_listener() { i0.ɵɵrestoreView(_r7); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.createNewTemplate()); });
218
- i0.ɵɵelement(8, "i", 71);
216
+ i0.ɵɵelementStart(6, "div", 68)(7, "button", 69);
217
+ i0.ɵɵlistener("click", function AIPromptFormComponentExtended_form_1_Conditional_38_Template_button_click_7_listener() { i0.ɵɵrestoreView(_r7); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.createNewTemplate()); });
218
+ i0.ɵɵelement(8, "i", 70);
219
219
  i0.ɵɵtext(9, " Create New Template ");
220
220
  i0.ɵɵelementEnd();
221
- i0.ɵɵelementStart(10, "kendo-button", 72);
222
- i0.ɵɵlistener("click", function AIPromptFormComponentExtended_form_1_Conditional_38_Template_kendo_button_click_10_listener() { i0.ɵɵrestoreView(_r7); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.linkExistingTemplate()); });
223
- i0.ɵɵelement(11, "i", 73);
221
+ i0.ɵɵelementStart(10, "button", 71);
222
+ i0.ɵɵlistener("click", function AIPromptFormComponentExtended_form_1_Conditional_38_Template_button_click_10_listener() { i0.ɵɵrestoreView(_r7); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.linkExistingTemplate()); });
223
+ i0.ɵɵelement(11, "i", 72);
224
224
  i0.ɵɵtext(12, " Link Existing Template ");
225
225
  i0.ɵɵelementEnd()()();
226
+ } if (rf & 2) {
227
+ i0.ɵɵadvance(7);
228
+ i0.ɵɵproperty("themeColor", "primary");
229
+ i0.ɵɵadvance(3);
230
+ i0.ɵɵproperty("fillMode", "outline");
226
231
  } }
227
232
  function AIPromptFormComponentExtended_form_1_Conditional_39_Template(rf, ctx) { if (rf & 1) {
228
233
  const _r8 = i0.ɵɵgetCurrentView();
229
- i0.ɵɵelementStart(0, "div", 35);
230
- i0.ɵɵelement(1, "i", 74);
231
- i0.ɵɵelementStart(2, "h5", 75);
234
+ i0.ɵɵelementStart(0, "div", 34);
235
+ i0.ɵɵelement(1, "i", 73);
236
+ i0.ɵɵelementStart(2, "h5", 74);
232
237
  i0.ɵɵtext(3, "Template Not Found");
233
238
  i0.ɵɵelementEnd();
234
- i0.ɵɵelementStart(4, "p", 68);
239
+ i0.ɵɵelementStart(4, "p", 67);
235
240
  i0.ɵɵtext(5, " The referenced template could not be loaded. It may have been deleted or moved. ");
236
241
  i0.ɵɵelementEnd();
237
- i0.ɵɵelementStart(6, "div", 69)(7, "kendo-button", 72);
238
- i0.ɵɵlistener("click", function AIPromptFormComponentExtended_form_1_Conditional_39_Template_kendo_button_click_7_listener() { i0.ɵɵrestoreView(_r8); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.loadTemplate()); });
239
- i0.ɵɵelement(8, "i", 76);
242
+ i0.ɵɵelementStart(6, "div", 68)(7, "button", 71);
243
+ i0.ɵɵlistener("click", function AIPromptFormComponentExtended_form_1_Conditional_39_Template_button_click_7_listener() { i0.ɵɵrestoreView(_r8); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.loadTemplate()); });
244
+ i0.ɵɵelement(8, "i", 75);
240
245
  i0.ɵɵtext(9, " Retry Loading ");
241
246
  i0.ɵɵelementEnd();
242
- i0.ɵɵelementStart(10, "kendo-button", 70);
243
- i0.ɵɵlistener("click", function AIPromptFormComponentExtended_form_1_Conditional_39_Template_kendo_button_click_10_listener() { i0.ɵɵrestoreView(_r8); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.createNewTemplate()); });
244
- i0.ɵɵelement(11, "i", 71);
247
+ i0.ɵɵelementStart(10, "button", 69);
248
+ i0.ɵɵlistener("click", function AIPromptFormComponentExtended_form_1_Conditional_39_Template_button_click_10_listener() { i0.ɵɵrestoreView(_r8); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.createNewTemplate()); });
249
+ i0.ɵɵelement(11, "i", 70);
245
250
  i0.ɵɵtext(12, " Create New Template ");
246
251
  i0.ɵɵelementEnd()()();
252
+ } if (rf & 2) {
253
+ i0.ɵɵadvance(7);
254
+ i0.ɵɵproperty("fillMode", "outline");
255
+ i0.ɵɵadvance(3);
256
+ i0.ɵɵproperty("themeColor", "primary");
247
257
  } }
248
258
  function AIPromptFormComponentExtended_form_1_Conditional_40_Template(rf, ctx) { if (rf & 1) {
249
259
  const _r9 = i0.ɵɵgetCurrentView();
250
- i0.ɵɵelementStart(0, "div", 36)(1, "div", 77)(2, "mj-template-editor", 78, 1);
260
+ i0.ɵɵelementStart(0, "div", 35)(1, "div", 76)(2, "mj-template-editor", 77, 1);
251
261
  i0.ɵɵlistener("contentChange", function AIPromptFormComponentExtended_form_1_Conditional_40_Template_mj_template_editor_contentChange_2_listener($event) { i0.ɵɵrestoreView(_r9); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.onTemplateContentChange($event)); })("runTemplate", function AIPromptFormComponentExtended_form_1_Conditional_40_Template_mj_template_editor_runTemplate_2_listener($event) { i0.ɵɵrestoreView(_r9); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.onTemplateRun($event)); });
252
262
  i0.ɵɵelementEnd()()();
253
263
  } if (rf & 2) {
@@ -255,8 +265,209 @@ function AIPromptFormComponentExtended_form_1_Conditional_40_Template(rf, ctx) {
255
265
  i0.ɵɵadvance(2);
256
266
  i0.ɵɵproperty("template", ctx_r1.template)("config", ctx_r1.templateEditorConfig);
257
267
  } }
258
- function AIPromptFormComponentExtended_form_1_Conditional_41_ng_template_1_Conditional_3_Template(rf, ctx) { if (rf & 1) {
259
- i0.ɵɵelementStart(0, "span", 82);
268
+ function AIPromptFormComponentExtended_form_1_Conditional_41_ng_template_1_Template(rf, ctx) { if (rf & 1) {
269
+ i0.ɵɵelementStart(0, "span", 62);
270
+ i0.ɵɵelement(1, "i", 80);
271
+ i0.ɵɵtext(2, " Template Parameters ");
272
+ i0.ɵɵelementStart(3, "span", 81);
273
+ i0.ɵɵtext(4);
274
+ i0.ɵɵelementEnd();
275
+ i0.ɵɵelementStart(5, "span", 82);
276
+ i0.ɵɵelement(6, "i", 83);
277
+ i0.ɵɵtext(7, " Parameters defined in the template ");
278
+ i0.ɵɵelementEnd()();
279
+ } if (rf & 2) {
280
+ const ctx_r1 = i0.ɵɵnextContext(3);
281
+ i0.ɵɵadvance(4);
282
+ i0.ɵɵtextInterpolate1(" ", ctx_r1.templateParams.length, " ");
283
+ } }
284
+ function AIPromptFormComponentExtended_form_1_Conditional_41_Conditional_3_Template(rf, ctx) { if (rf & 1) {
285
+ i0.ɵɵelementStart(0, "div", 78);
286
+ i0.ɵɵelement(1, "i", 54);
287
+ i0.ɵɵtext(2, " Loading template parameters... ");
288
+ i0.ɵɵelementEnd();
289
+ } }
290
+ function AIPromptFormComponentExtended_form_1_Conditional_41_Conditional_4_Template(rf, ctx) { if (rf & 1) {
291
+ i0.ɵɵelementStart(0, "div", 79);
292
+ i0.ɵɵelement(1, "i", 84);
293
+ i0.ɵɵtext(2, " This template has no parameters defined ");
294
+ i0.ɵɵelementEnd();
295
+ } }
296
+ function AIPromptFormComponentExtended_form_1_Conditional_41_Conditional_5_For_2_Conditional_6_Template(rf, ctx) { if (rf & 1) {
297
+ i0.ɵɵelementStart(0, "span", 96);
298
+ i0.ɵɵtext(1, "*");
299
+ i0.ɵɵelementEnd();
300
+ } }
301
+ function AIPromptFormComponentExtended_form_1_Conditional_41_Conditional_5_For_2_Conditional_10_Template(rf, ctx) { if (rf & 1) {
302
+ i0.ɵɵelementStart(0, "span", 98);
303
+ i0.ɵɵtext(1, "Required");
304
+ i0.ɵɵelementEnd();
305
+ } }
306
+ function AIPromptFormComponentExtended_form_1_Conditional_41_Conditional_5_For_2_Conditional_11_Template(rf, ctx) { if (rf & 1) {
307
+ i0.ɵɵelementStart(0, "span", 99);
308
+ i0.ɵɵtext(1, "Optional");
309
+ i0.ɵɵelementEnd();
310
+ } }
311
+ function AIPromptFormComponentExtended_form_1_Conditional_41_Conditional_5_For_2_Conditional_12_Template(rf, ctx) { if (rf & 1) {
312
+ i0.ɵɵelementStart(0, "p", 100);
313
+ i0.ɵɵtext(1);
314
+ i0.ɵɵelementEnd();
315
+ } if (rf & 2) {
316
+ const param_r10 = i0.ɵɵnextContext().$implicit;
317
+ i0.ɵɵadvance();
318
+ i0.ɵɵtextInterpolate1(" ", param_r10.Description, " ");
319
+ } }
320
+ function AIPromptFormComponentExtended_form_1_Conditional_41_Conditional_5_For_2_Conditional_18_Template(rf, ctx) { if (rf & 1) {
321
+ i0.ɵɵelementStart(0, "div", 105)(1, "label", 106);
322
+ i0.ɵɵtext(2, "Default Value");
323
+ i0.ɵɵelementEnd();
324
+ i0.ɵɵelementStart(3, "code", 107);
325
+ i0.ɵɵtext(4);
326
+ i0.ɵɵelementEnd()();
327
+ } if (rf & 2) {
328
+ const param_r10 = i0.ɵɵnextContext().$implicit;
329
+ i0.ɵɵadvance(4);
330
+ i0.ɵɵtextInterpolate(param_r10.DefaultValue);
331
+ } }
332
+ function AIPromptFormComponentExtended_form_1_Conditional_41_Conditional_5_For_2_Conditional_19_Template(rf, ctx) { if (rf & 1) {
333
+ i0.ɵɵelementStart(0, "div", 105)(1, "label", 106);
334
+ i0.ɵɵtext(2, "Entity");
335
+ i0.ɵɵelementEnd();
336
+ i0.ɵɵelementStart(3, "span", 101);
337
+ i0.ɵɵtext(4);
338
+ i0.ɵɵelementEnd()();
339
+ } if (rf & 2) {
340
+ const param_r10 = i0.ɵɵnextContext().$implicit;
341
+ i0.ɵɵadvance(4);
342
+ i0.ɵɵtextInterpolate(param_r10.Entity || "Entity ID: " + param_r10.EntityID);
343
+ } }
344
+ function AIPromptFormComponentExtended_form_1_Conditional_41_Conditional_5_For_2_Conditional_20_Conditional_5_Template(rf, ctx) { if (rf & 1) {
345
+ i0.ɵɵtext(0);
346
+ } if (rf & 2) {
347
+ const param_r10 = i0.ɵɵnextContext(2).$implicit;
348
+ i0.ɵɵtextInterpolate1(" (", param_r10.LinkedParameterField, ") ");
349
+ } }
350
+ function AIPromptFormComponentExtended_form_1_Conditional_41_Conditional_5_For_2_Conditional_20_Template(rf, ctx) { if (rf & 1) {
351
+ i0.ɵɵelementStart(0, "div", 105)(1, "label", 106);
352
+ i0.ɵɵtext(2, "Linked To");
353
+ i0.ɵɵelementEnd();
354
+ i0.ɵɵelementStart(3, "span", 101);
355
+ i0.ɵɵtext(4);
356
+ i0.ɵɵtemplate(5, AIPromptFormComponentExtended_form_1_Conditional_41_Conditional_5_For_2_Conditional_20_Conditional_5_Template, 1, 1);
357
+ i0.ɵɵelementEnd()();
358
+ } if (rf & 2) {
359
+ const param_r10 = i0.ɵɵnextContext().$implicit;
360
+ i0.ɵɵadvance(4);
361
+ i0.ɵɵtextInterpolate1(" ", param_r10.LinkedParameterName, " ");
362
+ i0.ɵɵadvance();
363
+ i0.ɵɵconditional(param_r10.LinkedParameterField ? 5 : -1);
364
+ } }
365
+ function AIPromptFormComponentExtended_form_1_Conditional_41_Conditional_5_For_2_Conditional_21_Template(rf, ctx) { if (rf & 1) {
366
+ i0.ɵɵelementStart(0, "div", 105)(1, "label", 106);
367
+ i0.ɵɵtext(2, "Filter");
368
+ i0.ɵɵelementEnd();
369
+ i0.ɵɵelementStart(3, "code", 108);
370
+ i0.ɵɵtext(4);
371
+ i0.ɵɵelementEnd()();
372
+ } if (rf & 2) {
373
+ const param_r10 = i0.ɵɵnextContext().$implicit;
374
+ i0.ɵɵadvance(4);
375
+ i0.ɵɵtextInterpolate(param_r10.ExtraFilter);
376
+ } }
377
+ function AIPromptFormComponentExtended_form_1_Conditional_41_Conditional_5_For_2_Conditional_22_Template(rf, ctx) { if (rf & 1) {
378
+ i0.ɵɵelementStart(0, "div", 105)(1, "label", 106);
379
+ i0.ɵɵtext(2, "Record ID");
380
+ i0.ɵɵelementEnd();
381
+ i0.ɵɵelementStart(3, "code", 101);
382
+ i0.ɵɵtext(4);
383
+ i0.ɵɵelementEnd()();
384
+ } if (rf & 2) {
385
+ const param_r10 = i0.ɵɵnextContext().$implicit;
386
+ i0.ɵɵadvance(4);
387
+ i0.ɵɵtextInterpolate(param_r10.RecordID);
388
+ } }
389
+ function AIPromptFormComponentExtended_form_1_Conditional_41_Conditional_5_For_2_Template(rf, ctx) { if (rf & 1) {
390
+ i0.ɵɵelementStart(0, "div", 91)(1, "div", 92)(2, "div", 93);
391
+ i0.ɵɵelement(3, "i", 94);
392
+ i0.ɵɵelementStart(4, "h6", 95);
393
+ i0.ɵɵtext(5);
394
+ i0.ɵɵtemplate(6, AIPromptFormComponentExtended_form_1_Conditional_41_Conditional_5_For_2_Conditional_6_Template, 2, 0, "span", 96);
395
+ i0.ɵɵelementEnd()();
396
+ i0.ɵɵelementStart(7, "div", 93)(8, "span", 97);
397
+ i0.ɵɵtext(9);
398
+ i0.ɵɵelementEnd();
399
+ i0.ɵɵtemplate(10, AIPromptFormComponentExtended_form_1_Conditional_41_Conditional_5_For_2_Conditional_10_Template, 2, 0, "span", 98)(11, AIPromptFormComponentExtended_form_1_Conditional_41_Conditional_5_For_2_Conditional_11_Template, 2, 0, "span", 99);
400
+ i0.ɵɵelementEnd()();
401
+ i0.ɵɵtemplate(12, AIPromptFormComponentExtended_form_1_Conditional_41_Conditional_5_For_2_Conditional_12_Template, 2, 1, "p", 100);
402
+ i0.ɵɵelementStart(13, "div", 101)(14, "span", 102);
403
+ i0.ɵɵelement(15, "i", 103);
404
+ i0.ɵɵtext(16);
405
+ i0.ɵɵelementEnd()();
406
+ i0.ɵɵelementStart(17, "div", 104);
407
+ i0.ɵɵtemplate(18, AIPromptFormComponentExtended_form_1_Conditional_41_Conditional_5_For_2_Conditional_18_Template, 5, 1, "div", 105)(19, AIPromptFormComponentExtended_form_1_Conditional_41_Conditional_5_For_2_Conditional_19_Template, 5, 1, "div", 105)(20, AIPromptFormComponentExtended_form_1_Conditional_41_Conditional_5_For_2_Conditional_20_Template, 6, 2, "div", 105)(21, AIPromptFormComponentExtended_form_1_Conditional_41_Conditional_5_For_2_Conditional_21_Template, 5, 1, "div", 105)(22, AIPromptFormComponentExtended_form_1_Conditional_41_Conditional_5_For_2_Conditional_22_Template, 5, 1, "div", 105);
408
+ i0.ɵɵelementEnd()();
409
+ } if (rf & 2) {
410
+ const param_r10 = ctx.$implicit;
411
+ const ctx_r1 = i0.ɵɵnextContext(4);
412
+ i0.ɵɵstyleProp("border-left", "4px solid " + ctx_r1.getParamTypeColor(param_r10.Type));
413
+ i0.ɵɵadvance(3);
414
+ i0.ɵɵclassMap("fa-solid " + ctx_r1.getParamTypeIcon(param_r10.Type));
415
+ i0.ɵɵstyleProp("color", ctx_r1.getParamTypeColor(param_r10.Type));
416
+ i0.ɵɵadvance(2);
417
+ i0.ɵɵtextInterpolate1(" ", param_r10.Name, " ");
418
+ i0.ɵɵadvance();
419
+ i0.ɵɵconditional(param_r10.IsRequired ? 6 : -1);
420
+ i0.ɵɵadvance(2);
421
+ i0.ɵɵstyleProp("background-color", ctx_r1.getParamTypeColor(param_r10.Type));
422
+ i0.ɵɵadvance();
423
+ i0.ɵɵtextInterpolate1(" ", param_r10.Type, " ");
424
+ i0.ɵɵadvance();
425
+ i0.ɵɵconditional(param_r10.IsRequired ? 10 : 11);
426
+ i0.ɵɵadvance(2);
427
+ i0.ɵɵconditional(param_r10.Description ? 12 : -1);
428
+ i0.ɵɵadvance(4);
429
+ i0.ɵɵtextInterpolate1(" ", ctx_r1.getParamTypeDescription(param_r10), " ");
430
+ i0.ɵɵadvance(2);
431
+ i0.ɵɵconditional(param_r10.DefaultValue ? 18 : -1);
432
+ i0.ɵɵadvance();
433
+ i0.ɵɵconditional(param_r10.EntityID ? 19 : -1);
434
+ i0.ɵɵadvance();
435
+ i0.ɵɵconditional(param_r10.LinkedParameterName ? 20 : -1);
436
+ i0.ɵɵadvance();
437
+ i0.ɵɵconditional(param_r10.ExtraFilter ? 21 : -1);
438
+ i0.ɵɵadvance();
439
+ i0.ɵɵconditional(param_r10.RecordID ? 22 : -1);
440
+ } }
441
+ function AIPromptFormComponentExtended_form_1_Conditional_41_Conditional_5_Template(rf, ctx) { if (rf & 1) {
442
+ i0.ɵɵelementStart(0, "div", 85);
443
+ i0.ɵɵrepeaterCreate(1, AIPromptFormComponentExtended_form_1_Conditional_41_Conditional_5_For_2_Template, 23, 19, "div", 86, _forTrack0);
444
+ i0.ɵɵelementEnd();
445
+ i0.ɵɵelementStart(3, "div", 87)(4, "div", 88);
446
+ i0.ɵɵelement(5, "i", 89);
447
+ i0.ɵɵelementStart(6, "div", 90)(7, "strong");
448
+ i0.ɵɵtext(8, "Using Template Parameters:");
449
+ i0.ɵɵelementEnd();
450
+ i0.ɵɵtext(9, " When executing this prompt, you'll be prompted to provide values for all required parameters. Parameters can be simple values (text, numbers) or complex data structures (JSON objects, database records, or entire entity collections). The template will use these parameters to generate dynamic content based on the values provided at execution time. ");
451
+ i0.ɵɵelementEnd()()();
452
+ } if (rf & 2) {
453
+ const ctx_r1 = i0.ɵɵnextContext(3);
454
+ i0.ɵɵadvance();
455
+ i0.ɵɵrepeater(ctx_r1.templateParams);
456
+ } }
457
+ function AIPromptFormComponentExtended_form_1_Conditional_41_Template(rf, ctx) { if (rf & 1) {
458
+ i0.ɵɵelementStart(0, "kendo-expansionpanel", 29);
459
+ i0.ɵɵtemplate(1, AIPromptFormComponentExtended_form_1_Conditional_41_ng_template_1_Template, 8, 1, "ng-template", 30);
460
+ i0.ɵɵelementStart(2, "div", 36);
461
+ i0.ɵɵtemplate(3, AIPromptFormComponentExtended_form_1_Conditional_41_Conditional_3_Template, 3, 0, "div", 78)(4, AIPromptFormComponentExtended_form_1_Conditional_41_Conditional_4_Template, 3, 0, "div", 79)(5, AIPromptFormComponentExtended_form_1_Conditional_41_Conditional_5_Template, 10, 0);
462
+ i0.ɵɵelementEnd()();
463
+ } if (rf & 2) {
464
+ const ctx_r1 = i0.ɵɵnextContext(2);
465
+ i0.ɵɵproperty("expanded", true);
466
+ i0.ɵɵadvance(3);
467
+ i0.ɵɵconditional(ctx_r1.isLoadingTemplateParams ? 3 : ctx_r1.templateParams.length === 0 ? 4 : 5);
468
+ } }
469
+ function AIPromptFormComponentExtended_form_1_Conditional_42_ng_template_1_Conditional_3_Template(rf, ctx) { if (rf & 1) {
470
+ i0.ɵɵelementStart(0, "span", 111);
260
471
  i0.ɵɵtext(1);
261
472
  i0.ɵɵelementEnd();
262
473
  } if (rf & 2) {
@@ -264,13 +475,13 @@ function AIPromptFormComponentExtended_form_1_Conditional_41_ng_template_1_Condi
264
475
  i0.ɵɵadvance();
265
476
  i0.ɵɵtextInterpolate1(" ", ctx_r1.promptModels.length, " ");
266
477
  } }
267
- function AIPromptFormComponentExtended_form_1_Conditional_41_ng_template_1_Template(rf, ctx) { if (rf & 1) {
268
- i0.ɵɵelementStart(0, "span", 63);
269
- i0.ɵɵelement(1, "i", 81);
478
+ function AIPromptFormComponentExtended_form_1_Conditional_42_ng_template_1_Template(rf, ctx) { if (rf & 1) {
479
+ i0.ɵɵelementStart(0, "span", 62);
480
+ i0.ɵɵelement(1, "i", 110);
270
481
  i0.ɵɵtext(2, " Models ");
271
- i0.ɵɵtemplate(3, AIPromptFormComponentExtended_form_1_Conditional_41_ng_template_1_Conditional_3_Template, 2, 1, "span", 82);
272
- i0.ɵɵelementStart(4, "span", 83);
273
- i0.ɵɵelement(5, "i", 84);
482
+ i0.ɵɵtemplate(3, AIPromptFormComponentExtended_form_1_Conditional_42_ng_template_1_Conditional_3_Template, 2, 1, "span", 111);
483
+ i0.ɵɵelementStart(4, "span", 82);
484
+ i0.ɵɵelement(5, "i", 112);
274
485
  i0.ɵɵtext(6, " Priority order (first available model will be used) ");
275
486
  i0.ɵɵelementEnd()();
276
487
  } if (rf & 2) {
@@ -278,412 +489,412 @@ function AIPromptFormComponentExtended_form_1_Conditional_41_ng_template_1_Templ
278
489
  i0.ɵɵadvance(3);
279
490
  i0.ɵɵconditional(ctx_r1.promptModels.length > 0 ? 3 : -1);
280
491
  } }
281
- function AIPromptFormComponentExtended_form_1_Conditional_41_Conditional_4_Template(rf, ctx) { if (rf & 1) {
282
- i0.ɵɵelementStart(0, "div", 80);
283
- i0.ɵɵelement(1, "i", 55);
492
+ function AIPromptFormComponentExtended_form_1_Conditional_42_Conditional_4_Template(rf, ctx) { if (rf & 1) {
493
+ i0.ɵɵelementStart(0, "div", 78);
494
+ i0.ɵɵelement(1, "i", 54);
284
495
  i0.ɵɵtext(2, " Loading models... ");
285
496
  i0.ɵɵelementEnd();
286
497
  } }
287
- function AIPromptFormComponentExtended_form_1_Conditional_41_Conditional_5_Conditional_0_Conditional_3_Template(rf, ctx) { if (rf & 1) {
288
- const _r10 = i0.ɵɵgetCurrentView();
289
- i0.ɵɵelementStart(0, "div", 87)(1, "kendo-button", 88);
290
- i0.ɵɵlistener("click", function AIPromptFormComponentExtended_form_1_Conditional_41_Conditional_5_Conditional_0_Conditional_3_Template_kendo_button_click_1_listener() { i0.ɵɵrestoreView(_r10); const ctx_r1 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r1.addNewModel()); });
291
- i0.ɵɵelement(2, "i", 71);
498
+ function AIPromptFormComponentExtended_form_1_Conditional_42_Conditional_5_Conditional_0_Conditional_3_Template(rf, ctx) { if (rf & 1) {
499
+ const _r11 = i0.ɵɵgetCurrentView();
500
+ i0.ɵɵelementStart(0, "div", 113)(1, "button", 114);
501
+ i0.ɵɵlistener("click", function AIPromptFormComponentExtended_form_1_Conditional_42_Conditional_5_Conditional_0_Conditional_3_Template_button_click_1_listener() { i0.ɵɵrestoreView(_r11); const ctx_r1 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r1.addNewModel()); });
502
+ i0.ɵɵelement(2, "i", 70);
292
503
  i0.ɵɵtext(3, " Add Model ");
293
504
  i0.ɵɵelementEnd()();
294
505
  } }
295
- function AIPromptFormComponentExtended_form_1_Conditional_41_Conditional_5_Conditional_0_Template(rf, ctx) { if (rf & 1) {
296
- i0.ɵɵelementStart(0, "div", 85);
297
- i0.ɵɵelement(1, "i", 86);
506
+ function AIPromptFormComponentExtended_form_1_Conditional_42_Conditional_5_Conditional_0_Template(rf, ctx) { if (rf & 1) {
507
+ i0.ɵɵelementStart(0, "div", 79);
508
+ i0.ɵɵelement(1, "i", 84);
298
509
  i0.ɵɵtext(2, " No models configured ");
299
- i0.ɵɵtemplate(3, AIPromptFormComponentExtended_form_1_Conditional_41_Conditional_5_Conditional_0_Conditional_3_Template, 4, 0, "div", 87);
510
+ i0.ɵɵtemplate(3, AIPromptFormComponentExtended_form_1_Conditional_42_Conditional_5_Conditional_0_Conditional_3_Template, 4, 0, "div", 113);
300
511
  i0.ɵɵelementEnd();
301
512
  } if (rf & 2) {
302
513
  const ctx_r1 = i0.ɵɵnextContext(4);
303
514
  i0.ɵɵadvance(3);
304
515
  i0.ɵɵconditional(ctx_r1.EditMode ? 3 : -1);
305
516
  } }
306
- function AIPromptFormComponentExtended_form_1_Conditional_41_Conditional_5_Conditional_1_Conditional_0_Template(rf, ctx) { if (rf & 1) {
307
- i0.ɵɵelementStart(0, "div", 89);
308
- i0.ɵɵelement(1, "i", 94);
517
+ function AIPromptFormComponentExtended_form_1_Conditional_42_Conditional_5_Conditional_1_Conditional_0_Template(rf, ctx) { if (rf & 1) {
518
+ i0.ɵɵelementStart(0, "div", 115);
519
+ i0.ɵɵelement(1, "i", 120);
309
520
  i0.ɵɵtext(2, " Models are tried in priority order (1, 2, 3...). The first available model that meets requirements will be used for execution. ");
310
521
  i0.ɵɵelementEnd();
311
522
  } }
312
- function AIPromptFormComponentExtended_form_1_Conditional_41_Conditional_5_Conditional_1_For_15_Conditional_2_Template(rf, ctx) { if (rf & 1) {
313
- i0.ɵɵelement(0, "i", 108);
314
- i0.ɵɵelementStart(1, "span", 109);
523
+ function AIPromptFormComponentExtended_form_1_Conditional_42_Conditional_5_Conditional_1_For_15_Conditional_2_Template(rf, ctx) { if (rf & 1) {
524
+ i0.ɵɵelement(0, "i", 134);
525
+ i0.ɵɵelementStart(1, "span", 135);
315
526
  i0.ɵɵtext(2);
316
527
  i0.ɵɵelementEnd();
317
528
  } if (rf & 2) {
318
- const ɵ$index_279_r12 = i0.ɵɵnextContext().$index;
529
+ const ɵ$index_415_r13 = i0.ɵɵnextContext().$index;
319
530
  i0.ɵɵadvance(2);
320
- i0.ɵɵtextInterpolate1("#", ɵ$index_279_r12 + 1, "");
531
+ i0.ɵɵtextInterpolate1("#", ɵ$index_415_r13 + 1, "");
321
532
  } }
322
- function AIPromptFormComponentExtended_form_1_Conditional_41_Conditional_5_Conditional_1_For_15_Conditional_3_Template(rf, ctx) { if (rf & 1) {
323
- i0.ɵɵelementStart(0, "span", 97);
533
+ function AIPromptFormComponentExtended_form_1_Conditional_42_Conditional_5_Conditional_1_For_15_Conditional_3_Template(rf, ctx) { if (rf & 1) {
534
+ i0.ɵɵelementStart(0, "span", 123);
324
535
  i0.ɵɵtext(1);
325
536
  i0.ɵɵelementEnd();
326
537
  } if (rf & 2) {
327
- const ɵ$index_279_r12 = i0.ɵɵnextContext().$index;
328
- i0.ɵɵpropertyInterpolate1("title", "Priority ", ɵ$index_279_r12 + 1, " - Lower numbers are tried first");
538
+ const ɵ$index_415_r13 = i0.ɵɵnextContext().$index;
539
+ i0.ɵɵpropertyInterpolate1("title", "Priority ", ɵ$index_415_r13 + 1, " - Lower numbers are tried first");
329
540
  i0.ɵɵadvance();
330
- i0.ɵɵtextInterpolate1("#", ɵ$index_279_r12 + 1, "");
541
+ i0.ɵɵtextInterpolate1("#", ɵ$index_415_r13 + 1, "");
331
542
  } }
332
- function AIPromptFormComponentExtended_form_1_Conditional_41_Conditional_5_Conditional_1_For_15_Conditional_5_Template(rf, ctx) { if (rf & 1) {
333
- const _r13 = i0.ɵɵgetCurrentView();
334
- i0.ɵɵelementStart(0, "kendo-dropdownlist", 110);
335
- i0.ɵɵtwoWayListener("ngModelChange", function AIPromptFormComponentExtended_form_1_Conditional_41_Conditional_5_Conditional_1_For_15_Conditional_5_Template_kendo_dropdownlist_ngModelChange_0_listener($event) { i0.ɵɵrestoreView(_r13); const model_r14 = i0.ɵɵnextContext().$implicit; i0.ɵɵtwoWayBindingSet(model_r14.ModelID, $event) || (model_r14.ModelID = $event); return i0.ɵɵresetView($event); });
336
- i0.ɵɵlistener("valueChange", function AIPromptFormComponentExtended_form_1_Conditional_41_Conditional_5_Conditional_1_For_15_Conditional_5_Template_kendo_dropdownlist_valueChange_0_listener($event) { i0.ɵɵrestoreView(_r13); const ɵ$index_279_r12 = i0.ɵɵnextContext().$index; const ctx_r1 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r1.onModelChange($event, ɵ$index_279_r12)); });
543
+ function AIPromptFormComponentExtended_form_1_Conditional_42_Conditional_5_Conditional_1_For_15_Conditional_5_Template(rf, ctx) { if (rf & 1) {
544
+ const _r14 = i0.ɵɵgetCurrentView();
545
+ i0.ɵɵelementStart(0, "kendo-dropdownlist", 136);
546
+ i0.ɵɵtwoWayListener("ngModelChange", function AIPromptFormComponentExtended_form_1_Conditional_42_Conditional_5_Conditional_1_For_15_Conditional_5_Template_kendo_dropdownlist_ngModelChange_0_listener($event) { i0.ɵɵrestoreView(_r14); const model_r15 = i0.ɵɵnextContext().$implicit; i0.ɵɵtwoWayBindingSet(model_r15.ModelID, $event) || (model_r15.ModelID = $event); return i0.ɵɵresetView($event); });
547
+ i0.ɵɵlistener("valueChange", function AIPromptFormComponentExtended_form_1_Conditional_42_Conditional_5_Conditional_1_For_15_Conditional_5_Template_kendo_dropdownlist_valueChange_0_listener($event) { i0.ɵɵrestoreView(_r14); const ɵ$index_415_r13 = i0.ɵɵnextContext().$index; const ctx_r1 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r1.onModelChange($event, ɵ$index_415_r13)); });
337
548
  i0.ɵɵelementEnd();
338
549
  } if (rf & 2) {
339
- const ctx_r14 = i0.ɵɵnextContext();
340
- const model_r14 = ctx_r14.$implicit;
341
- const ɵ$index_279_r12 = ctx_r14.$index;
550
+ const ctx_r15 = i0.ɵɵnextContext();
551
+ const model_r15 = ctx_r15.$implicit;
552
+ const ɵ$index_415_r13 = ctx_r15.$index;
342
553
  const ctx_r1 = i0.ɵɵnextContext(5);
343
- i0.ɵɵtwoWayProperty("ngModel", model_r14.ModelID);
344
- i0.ɵɵproperty("name", "modelId_" + ɵ$index_279_r12)("data", ctx_r1.availableModels)("valuePrimitive", true)("filterable", true);
554
+ i0.ɵɵtwoWayProperty("ngModel", model_r15.ModelID);
555
+ i0.ɵɵproperty("name", "modelId_" + ɵ$index_415_r13)("data", ctx_r1.availableModels)("valuePrimitive", true)("filterable", true);
345
556
  } }
346
- function AIPromptFormComponentExtended_form_1_Conditional_41_Conditional_5_Conditional_1_For_15_Conditional_6_Template(rf, ctx) { if (rf & 1) {
347
- i0.ɵɵelementStart(0, "span", 24);
557
+ function AIPromptFormComponentExtended_form_1_Conditional_42_Conditional_5_Conditional_1_For_15_Conditional_6_Template(rf, ctx) { if (rf & 1) {
558
+ i0.ɵɵelementStart(0, "span", 23);
348
559
  i0.ɵɵtext(1);
349
560
  i0.ɵɵelementEnd();
350
561
  } if (rf & 2) {
351
- const model_r14 = i0.ɵɵnextContext().$implicit;
562
+ const model_r15 = i0.ɵɵnextContext().$implicit;
352
563
  const ctx_r1 = i0.ɵɵnextContext(5);
353
564
  i0.ɵɵadvance();
354
- i0.ɵɵtextInterpolate(ctx_r1.getModelDisplayName(model_r14.ModelID));
565
+ i0.ɵɵtextInterpolate(ctx_r1.getModelDisplayName(model_r15.ModelID));
355
566
  } }
356
- function AIPromptFormComponentExtended_form_1_Conditional_41_Conditional_5_Conditional_1_For_15_Conditional_8_Conditional_0_Conditional_0_ng_template_1_Conditional_2_Template(rf, ctx) { if (rf & 1) {
357
- i0.ɵɵelementStart(0, "span", 115);
567
+ function AIPromptFormComponentExtended_form_1_Conditional_42_Conditional_5_Conditional_1_For_15_Conditional_8_Conditional_0_Conditional_0_ng_template_1_Conditional_2_Template(rf, ctx) { if (rf & 1) {
568
+ i0.ɵɵelementStart(0, "span", 141);
358
569
  i0.ɵɵtext(1);
359
570
  i0.ɵɵelementEnd();
360
571
  } if (rf & 2) {
361
- const dataItem_r17 = i0.ɵɵnextContext().$implicit;
362
- const model_r14 = i0.ɵɵnextContext(4).$implicit;
572
+ const dataItem_r18 = i0.ɵɵnextContext().$implicit;
573
+ const model_r15 = i0.ɵɵnextContext(4).$implicit;
363
574
  const ctx_r1 = i0.ɵɵnextContext(5);
364
575
  i0.ɵɵadvance();
365
- i0.ɵɵtextInterpolate1("(", ctx_r1.getModelVendorStatus(model_r14.ModelID, dataItem_r17.ID), ")");
576
+ i0.ɵɵtextInterpolate1("(", ctx_r1.getModelVendorStatus(model_r15.ModelID, dataItem_r18.ID), ")");
366
577
  } }
367
- function AIPromptFormComponentExtended_form_1_Conditional_41_Conditional_5_Conditional_1_For_15_Conditional_8_Conditional_0_Conditional_0_ng_template_1_Template(rf, ctx) { if (rf & 1) {
578
+ function AIPromptFormComponentExtended_form_1_Conditional_42_Conditional_5_Conditional_1_For_15_Conditional_8_Conditional_0_Conditional_0_ng_template_1_Template(rf, ctx) { if (rf & 1) {
368
579
  i0.ɵɵelementStart(0, "span");
369
580
  i0.ɵɵtext(1);
370
- i0.ɵɵtemplate(2, AIPromptFormComponentExtended_form_1_Conditional_41_Conditional_5_Conditional_1_For_15_Conditional_8_Conditional_0_Conditional_0_ng_template_1_Conditional_2_Template, 2, 1, "span", 115);
581
+ i0.ɵɵtemplate(2, AIPromptFormComponentExtended_form_1_Conditional_42_Conditional_5_Conditional_1_For_15_Conditional_8_Conditional_0_Conditional_0_ng_template_1_Conditional_2_Template, 2, 1, "span", 141);
371
582
  i0.ɵɵelementEnd();
372
583
  } if (rf & 2) {
373
- const dataItem_r17 = ctx.$implicit;
374
- const model_r14 = i0.ɵɵnextContext(4).$implicit;
584
+ const dataItem_r18 = ctx.$implicit;
585
+ const model_r15 = i0.ɵɵnextContext(4).$implicit;
375
586
  const ctx_r1 = i0.ɵɵnextContext(5);
376
- i0.ɵɵstyleProp("color", ctx_r1.getVendorStatusColor(model_r14.ModelID, dataItem_r17.ID));
587
+ i0.ɵɵstyleProp("color", ctx_r1.getVendorStatusColor(model_r15.ModelID, dataItem_r18.ID));
377
588
  i0.ɵɵadvance();
378
- i0.ɵɵtextInterpolate1(" ", dataItem_r17.Name, " ");
589
+ i0.ɵɵtextInterpolate1(" ", dataItem_r18.Name, " ");
379
590
  i0.ɵɵadvance();
380
- i0.ɵɵconditional(ctx_r1.getModelVendorStatus(model_r14.ModelID, dataItem_r17.ID) !== "Active" ? 2 : -1);
591
+ i0.ɵɵconditional(ctx_r1.getModelVendorStatus(model_r15.ModelID, dataItem_r18.ID) !== "Active" ? 2 : -1);
381
592
  } }
382
- function AIPromptFormComponentExtended_form_1_Conditional_41_Conditional_5_Conditional_1_For_15_Conditional_8_Conditional_0_Conditional_0_Template(rf, ctx) { if (rf & 1) {
383
- const _r16 = i0.ɵɵgetCurrentView();
384
- i0.ɵɵelementStart(0, "kendo-dropdownlist", 113);
385
- i0.ɵɵtwoWayListener("ngModelChange", function AIPromptFormComponentExtended_form_1_Conditional_41_Conditional_5_Conditional_1_For_15_Conditional_8_Conditional_0_Conditional_0_Template_kendo_dropdownlist_ngModelChange_0_listener($event) { i0.ɵɵrestoreView(_r16); const model_r14 = i0.ɵɵnextContext(3).$implicit; i0.ɵɵtwoWayBindingSet(model_r14.VendorID, $event) || (model_r14.VendorID = $event); return i0.ɵɵresetView($event); });
386
- i0.ɵɵtemplate(1, AIPromptFormComponentExtended_form_1_Conditional_41_Conditional_5_Conditional_1_For_15_Conditional_8_Conditional_0_Conditional_0_ng_template_1_Template, 3, 4, "ng-template", 114);
593
+ function AIPromptFormComponentExtended_form_1_Conditional_42_Conditional_5_Conditional_1_For_15_Conditional_8_Conditional_0_Conditional_0_Template(rf, ctx) { if (rf & 1) {
594
+ const _r17 = i0.ɵɵgetCurrentView();
595
+ i0.ɵɵelementStart(0, "kendo-dropdownlist", 139);
596
+ i0.ɵɵtwoWayListener("ngModelChange", function AIPromptFormComponentExtended_form_1_Conditional_42_Conditional_5_Conditional_1_For_15_Conditional_8_Conditional_0_Conditional_0_Template_kendo_dropdownlist_ngModelChange_0_listener($event) { i0.ɵɵrestoreView(_r17); const model_r15 = i0.ɵɵnextContext(3).$implicit; i0.ɵɵtwoWayBindingSet(model_r15.VendorID, $event) || (model_r15.VendorID = $event); return i0.ɵɵresetView($event); });
597
+ i0.ɵɵtemplate(1, AIPromptFormComponentExtended_form_1_Conditional_42_Conditional_5_Conditional_1_For_15_Conditional_8_Conditional_0_Conditional_0_ng_template_1_Template, 3, 4, "ng-template", 140);
387
598
  i0.ɵɵelementEnd();
388
599
  } if (rf & 2) {
389
- const ctx_r14 = i0.ɵɵnextContext(3);
390
- const model_r14 = ctx_r14.$implicit;
391
- const ɵ$index_279_r12 = ctx_r14.$index;
600
+ const ctx_r15 = i0.ɵɵnextContext(3);
601
+ const model_r15 = ctx_r15.$implicit;
602
+ const ɵ$index_415_r13 = ctx_r15.$index;
392
603
  const ctx_r1 = i0.ɵɵnextContext(5);
393
- i0.ɵɵtwoWayProperty("ngModel", model_r14.VendorID);
394
- i0.ɵɵproperty("name", "vendorId_" + ɵ$index_279_r12)("data", ctx_r1.getVendorsForModelSync(model_r14.ModelID))("valuePrimitive", true)("filterable", true);
604
+ i0.ɵɵtwoWayProperty("ngModel", model_r15.VendorID);
605
+ i0.ɵɵproperty("name", "vendorId_" + ɵ$index_415_r13)("data", ctx_r1.getVendorsForModelSync(model_r15.ModelID))("valuePrimitive", true)("filterable", true);
395
606
  } }
396
- function AIPromptFormComponentExtended_form_1_Conditional_41_Conditional_5_Conditional_1_For_15_Conditional_8_Conditional_0_Conditional_1_Conditional_0_Conditional_2_Template(rf, ctx) { if (rf & 1) {
397
- i0.ɵɵelementStart(0, "span", 115);
607
+ function AIPromptFormComponentExtended_form_1_Conditional_42_Conditional_5_Conditional_1_For_15_Conditional_8_Conditional_0_Conditional_1_Conditional_0_Conditional_2_Template(rf, ctx) { if (rf & 1) {
608
+ i0.ɵɵelementStart(0, "span", 141);
398
609
  i0.ɵɵtext(1);
399
610
  i0.ɵɵelementEnd();
400
611
  } if (rf & 2) {
401
- const model_r14 = i0.ɵɵnextContext(5).$implicit;
612
+ const model_r15 = i0.ɵɵnextContext(5).$implicit;
402
613
  const ctx_r1 = i0.ɵɵnextContext(5);
403
614
  i0.ɵɵadvance();
404
- i0.ɵɵtextInterpolate1("(", ctx_r1.getModelVendorStatus(model_r14.ModelID, ctx_r1.getVendorsForModelSync(model_r14.ModelID)[0].ID), ")");
615
+ i0.ɵɵtextInterpolate1("(", ctx_r1.getModelVendorStatus(model_r15.ModelID, ctx_r1.getVendorsForModelSync(model_r15.ModelID)[0].ID), ")");
405
616
  } }
406
- function AIPromptFormComponentExtended_form_1_Conditional_41_Conditional_5_Conditional_1_For_15_Conditional_8_Conditional_0_Conditional_1_Conditional_0_Template(rf, ctx) { if (rf & 1) {
407
- i0.ɵɵelementStart(0, "span", 117);
617
+ function AIPromptFormComponentExtended_form_1_Conditional_42_Conditional_5_Conditional_1_For_15_Conditional_8_Conditional_0_Conditional_1_Conditional_0_Template(rf, ctx) { if (rf & 1) {
618
+ i0.ɵɵelementStart(0, "span", 143);
408
619
  i0.ɵɵtext(1);
409
- i0.ɵɵtemplate(2, AIPromptFormComponentExtended_form_1_Conditional_41_Conditional_5_Conditional_1_For_15_Conditional_8_Conditional_0_Conditional_1_Conditional_0_Conditional_2_Template, 2, 1, "span", 115);
620
+ i0.ɵɵtemplate(2, AIPromptFormComponentExtended_form_1_Conditional_42_Conditional_5_Conditional_1_For_15_Conditional_8_Conditional_0_Conditional_1_Conditional_0_Conditional_2_Template, 2, 1, "span", 141);
410
621
  i0.ɵɵelementEnd();
411
622
  } if (rf & 2) {
412
- const model_r14 = i0.ɵɵnextContext(4).$implicit;
623
+ const model_r15 = i0.ɵɵnextContext(4).$implicit;
413
624
  const ctx_r1 = i0.ɵɵnextContext(5);
414
- i0.ɵɵstyleProp("color", ctx_r1.getVendorStatusColor(model_r14.ModelID, ctx_r1.getVendorsForModelSync(model_r14.ModelID)[0].ID));
625
+ i0.ɵɵstyleProp("color", ctx_r1.getVendorStatusColor(model_r15.ModelID, ctx_r1.getVendorsForModelSync(model_r15.ModelID)[0].ID));
415
626
  i0.ɵɵadvance();
416
- i0.ɵɵtextInterpolate1(" ", ctx_r1.getVendorsForModelSync(model_r14.ModelID)[0].Name, " ");
627
+ i0.ɵɵtextInterpolate1(" ", ctx_r1.getVendorsForModelSync(model_r15.ModelID)[0].Name, " ");
417
628
  i0.ɵɵadvance();
418
- i0.ɵɵconditional(ctx_r1.getModelVendorStatus(model_r14.ModelID, ctx_r1.getVendorsForModelSync(model_r14.ModelID)[0].ID) !== "Active" ? 2 : -1);
629
+ i0.ɵɵconditional(ctx_r1.getModelVendorStatus(model_r15.ModelID, ctx_r1.getVendorsForModelSync(model_r15.ModelID)[0].ID) !== "Active" ? 2 : -1);
419
630
  } }
420
- function AIPromptFormComponentExtended_form_1_Conditional_41_Conditional_5_Conditional_1_For_15_Conditional_8_Conditional_0_Conditional_1_Conditional_1_Template(rf, ctx) { if (rf & 1) {
421
- i0.ɵɵelementStart(0, "span", 111);
631
+ function AIPromptFormComponentExtended_form_1_Conditional_42_Conditional_5_Conditional_1_For_15_Conditional_8_Conditional_0_Conditional_1_Conditional_1_Template(rf, ctx) { if (rf & 1) {
632
+ i0.ɵɵelementStart(0, "span", 137);
422
633
  i0.ɵɵtext(1, "No vendors available");
423
634
  i0.ɵɵelementEnd();
424
635
  } }
425
- function AIPromptFormComponentExtended_form_1_Conditional_41_Conditional_5_Conditional_1_For_15_Conditional_8_Conditional_0_Conditional_1_Template(rf, ctx) { if (rf & 1) {
426
- i0.ɵɵtemplate(0, AIPromptFormComponentExtended_form_1_Conditional_41_Conditional_5_Conditional_1_For_15_Conditional_8_Conditional_0_Conditional_1_Conditional_0_Template, 3, 4, "span", 116)(1, AIPromptFormComponentExtended_form_1_Conditional_41_Conditional_5_Conditional_1_For_15_Conditional_8_Conditional_0_Conditional_1_Conditional_1_Template, 2, 0, "span", 111);
636
+ function AIPromptFormComponentExtended_form_1_Conditional_42_Conditional_5_Conditional_1_For_15_Conditional_8_Conditional_0_Conditional_1_Template(rf, ctx) { if (rf & 1) {
637
+ i0.ɵɵtemplate(0, AIPromptFormComponentExtended_form_1_Conditional_42_Conditional_5_Conditional_1_For_15_Conditional_8_Conditional_0_Conditional_1_Conditional_0_Template, 3, 4, "span", 142)(1, AIPromptFormComponentExtended_form_1_Conditional_42_Conditional_5_Conditional_1_For_15_Conditional_8_Conditional_0_Conditional_1_Conditional_1_Template, 2, 0, "span", 137);
427
638
  } if (rf & 2) {
428
- const model_r14 = i0.ɵɵnextContext(3).$implicit;
639
+ const model_r15 = i0.ɵɵnextContext(3).$implicit;
429
640
  const ctx_r1 = i0.ɵɵnextContext(5);
430
- i0.ɵɵconditional(ctx_r1.getVendorsForModelSync(model_r14.ModelID).length === 1 ? 0 : 1);
641
+ i0.ɵɵconditional(ctx_r1.getVendorsForModelSync(model_r15.ModelID).length === 1 ? 0 : 1);
431
642
  } }
432
- function AIPromptFormComponentExtended_form_1_Conditional_41_Conditional_5_Conditional_1_For_15_Conditional_8_Conditional_0_Template(rf, ctx) { if (rf & 1) {
433
- i0.ɵɵtemplate(0, AIPromptFormComponentExtended_form_1_Conditional_41_Conditional_5_Conditional_1_For_15_Conditional_8_Conditional_0_Conditional_0_Template, 2, 5, "kendo-dropdownlist", 112)(1, AIPromptFormComponentExtended_form_1_Conditional_41_Conditional_5_Conditional_1_For_15_Conditional_8_Conditional_0_Conditional_1_Template, 2, 1);
643
+ function AIPromptFormComponentExtended_form_1_Conditional_42_Conditional_5_Conditional_1_For_15_Conditional_8_Conditional_0_Template(rf, ctx) { if (rf & 1) {
644
+ i0.ɵɵtemplate(0, AIPromptFormComponentExtended_form_1_Conditional_42_Conditional_5_Conditional_1_For_15_Conditional_8_Conditional_0_Conditional_0_Template, 2, 5, "kendo-dropdownlist", 138)(1, AIPromptFormComponentExtended_form_1_Conditional_42_Conditional_5_Conditional_1_For_15_Conditional_8_Conditional_0_Conditional_1_Template, 2, 1);
434
645
  } if (rf & 2) {
435
- const model_r14 = i0.ɵɵnextContext(2).$implicit;
646
+ const model_r15 = i0.ɵɵnextContext(2).$implicit;
436
647
  const ctx_r1 = i0.ɵɵnextContext(5);
437
- i0.ɵɵconditional(ctx_r1.shouldShowVendorDropdown(model_r14.ModelID) ? 0 : 1);
648
+ i0.ɵɵconditional(ctx_r1.shouldShowVendorDropdown(model_r15.ModelID) ? 0 : 1);
438
649
  } }
439
- function AIPromptFormComponentExtended_form_1_Conditional_41_Conditional_5_Conditional_1_For_15_Conditional_8_Conditional_1_Template(rf, ctx) { if (rf & 1) {
440
- i0.ɵɵelementStart(0, "span", 111);
650
+ function AIPromptFormComponentExtended_form_1_Conditional_42_Conditional_5_Conditional_1_For_15_Conditional_8_Conditional_1_Template(rf, ctx) { if (rf & 1) {
651
+ i0.ɵɵelementStart(0, "span", 137);
441
652
  i0.ɵɵtext(1, "Select model first");
442
653
  i0.ɵɵelementEnd();
443
654
  } }
444
- function AIPromptFormComponentExtended_form_1_Conditional_41_Conditional_5_Conditional_1_For_15_Conditional_8_Template(rf, ctx) { if (rf & 1) {
445
- i0.ɵɵtemplate(0, AIPromptFormComponentExtended_form_1_Conditional_41_Conditional_5_Conditional_1_For_15_Conditional_8_Conditional_0_Template, 2, 1)(1, AIPromptFormComponentExtended_form_1_Conditional_41_Conditional_5_Conditional_1_For_15_Conditional_8_Conditional_1_Template, 2, 0, "span", 111);
655
+ function AIPromptFormComponentExtended_form_1_Conditional_42_Conditional_5_Conditional_1_For_15_Conditional_8_Template(rf, ctx) { if (rf & 1) {
656
+ i0.ɵɵtemplate(0, AIPromptFormComponentExtended_form_1_Conditional_42_Conditional_5_Conditional_1_For_15_Conditional_8_Conditional_0_Template, 2, 1)(1, AIPromptFormComponentExtended_form_1_Conditional_42_Conditional_5_Conditional_1_For_15_Conditional_8_Conditional_1_Template, 2, 0, "span", 137);
446
657
  } if (rf & 2) {
447
- const model_r14 = i0.ɵɵnextContext().$implicit;
448
- i0.ɵɵconditional(model_r14.ModelID ? 0 : 1);
658
+ const model_r15 = i0.ɵɵnextContext().$implicit;
659
+ i0.ɵɵconditional(model_r15.ModelID ? 0 : 1);
449
660
  } }
450
- function AIPromptFormComponentExtended_form_1_Conditional_41_Conditional_5_Conditional_1_For_15_Conditional_9_Conditional_0_Conditional_2_Template(rf, ctx) { if (rf & 1) {
451
- i0.ɵɵelementStart(0, "span", 115);
661
+ function AIPromptFormComponentExtended_form_1_Conditional_42_Conditional_5_Conditional_1_For_15_Conditional_9_Conditional_0_Conditional_2_Template(rf, ctx) { if (rf & 1) {
662
+ i0.ɵɵelementStart(0, "span", 141);
452
663
  i0.ɵɵtext(1);
453
664
  i0.ɵɵelementEnd();
454
665
  } if (rf & 2) {
455
- const model_r14 = i0.ɵɵnextContext(3).$implicit;
666
+ const model_r15 = i0.ɵɵnextContext(3).$implicit;
456
667
  const ctx_r1 = i0.ɵɵnextContext(5);
457
668
  i0.ɵɵadvance();
458
- i0.ɵɵtextInterpolate1("(", ctx_r1.getModelVendorStatus(model_r14.ModelID, model_r14.VendorID), ")");
669
+ i0.ɵɵtextInterpolate1("(", ctx_r1.getModelVendorStatus(model_r15.ModelID, model_r15.VendorID), ")");
459
670
  } }
460
- function AIPromptFormComponentExtended_form_1_Conditional_41_Conditional_5_Conditional_1_For_15_Conditional_9_Conditional_0_Template(rf, ctx) { if (rf & 1) {
461
- i0.ɵɵelementStart(0, "span", 120);
671
+ function AIPromptFormComponentExtended_form_1_Conditional_42_Conditional_5_Conditional_1_For_15_Conditional_9_Conditional_0_Template(rf, ctx) { if (rf & 1) {
672
+ i0.ɵɵelementStart(0, "span", 146);
462
673
  i0.ɵɵtext(1);
463
- i0.ɵɵtemplate(2, AIPromptFormComponentExtended_form_1_Conditional_41_Conditional_5_Conditional_1_For_15_Conditional_9_Conditional_0_Conditional_2_Template, 2, 1, "span", 115);
674
+ i0.ɵɵtemplate(2, AIPromptFormComponentExtended_form_1_Conditional_42_Conditional_5_Conditional_1_For_15_Conditional_9_Conditional_0_Conditional_2_Template, 2, 1, "span", 141);
464
675
  i0.ɵɵelementEnd();
465
676
  } if (rf & 2) {
466
- const model_r14 = i0.ɵɵnextContext(2).$implicit;
677
+ const model_r15 = i0.ɵɵnextContext(2).$implicit;
467
678
  const ctx_r1 = i0.ɵɵnextContext(5);
468
- i0.ɵɵstyleProp("color", ctx_r1.getVendorStatusColor(model_r14.ModelID, model_r14.VendorID));
679
+ i0.ɵɵstyleProp("color", ctx_r1.getVendorStatusColor(model_r15.ModelID, model_r15.VendorID));
469
680
  i0.ɵɵadvance();
470
- i0.ɵɵtextInterpolate1(" ", ctx_r1.getVendorDisplayName(model_r14.VendorID), " ");
681
+ i0.ɵɵtextInterpolate1(" ", ctx_r1.getVendorDisplayName(model_r15.VendorID), " ");
471
682
  i0.ɵɵadvance();
472
- i0.ɵɵconditional(ctx_r1.getModelVendorStatus(model_r14.ModelID, model_r14.VendorID) !== "Active" ? 2 : -1);
683
+ i0.ɵɵconditional(ctx_r1.getModelVendorStatus(model_r15.ModelID, model_r15.VendorID) !== "Active" ? 2 : -1);
473
684
  } }
474
- function AIPromptFormComponentExtended_form_1_Conditional_41_Conditional_5_Conditional_1_For_15_Conditional_9_Conditional_1_Template(rf, ctx) { if (rf & 1) {
475
- i0.ɵɵelementStart(0, "span", 119);
685
+ function AIPromptFormComponentExtended_form_1_Conditional_42_Conditional_5_Conditional_1_For_15_Conditional_9_Conditional_1_Template(rf, ctx) { if (rf & 1) {
686
+ i0.ɵɵelementStart(0, "span", 145);
476
687
  i0.ɵɵtext(1, "-");
477
688
  i0.ɵɵelementEnd();
478
689
  } }
479
- function AIPromptFormComponentExtended_form_1_Conditional_41_Conditional_5_Conditional_1_For_15_Conditional_9_Template(rf, ctx) { if (rf & 1) {
480
- i0.ɵɵtemplate(0, AIPromptFormComponentExtended_form_1_Conditional_41_Conditional_5_Conditional_1_For_15_Conditional_9_Conditional_0_Template, 3, 4, "span", 118)(1, AIPromptFormComponentExtended_form_1_Conditional_41_Conditional_5_Conditional_1_For_15_Conditional_9_Conditional_1_Template, 2, 0, "span", 119);
690
+ function AIPromptFormComponentExtended_form_1_Conditional_42_Conditional_5_Conditional_1_For_15_Conditional_9_Template(rf, ctx) { if (rf & 1) {
691
+ i0.ɵɵtemplate(0, AIPromptFormComponentExtended_form_1_Conditional_42_Conditional_5_Conditional_1_For_15_Conditional_9_Conditional_0_Template, 3, 4, "span", 144)(1, AIPromptFormComponentExtended_form_1_Conditional_42_Conditional_5_Conditional_1_For_15_Conditional_9_Conditional_1_Template, 2, 0, "span", 145);
481
692
  } if (rf & 2) {
482
- const model_r14 = i0.ɵɵnextContext().$implicit;
483
- i0.ɵɵconditional(model_r14.VendorID && model_r14.ModelID ? 0 : 1);
693
+ const model_r15 = i0.ɵɵnextContext().$implicit;
694
+ i0.ɵɵconditional(model_r15.VendorID && model_r15.ModelID ? 0 : 1);
484
695
  } }
485
- function AIPromptFormComponentExtended_form_1_Conditional_41_Conditional_5_Conditional_1_For_15_Conditional_11_Template(rf, ctx) { if (rf & 1) {
486
- i0.ɵɵelementStart(0, "span", 102);
696
+ function AIPromptFormComponentExtended_form_1_Conditional_42_Conditional_5_Conditional_1_For_15_Conditional_11_Template(rf, ctx) { if (rf & 1) {
697
+ i0.ɵɵelementStart(0, "span", 128);
487
698
  i0.ɵɵtext(1);
488
699
  i0.ɵɵpipe(2, "date");
489
700
  i0.ɵɵelementEnd();
490
701
  } if (rf & 2) {
491
- const model_r14 = i0.ɵɵnextContext().$implicit;
702
+ const model_r15 = i0.ɵɵnextContext().$implicit;
492
703
  i0.ɵɵadvance();
493
- i0.ɵɵtextInterpolate(i0.ɵɵpipeBind2(2, 1, model_r14.__mj_CreatedAt, "short"));
704
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind2(2, 1, model_r15.__mj_CreatedAt, "short"));
494
705
  } }
495
- function AIPromptFormComponentExtended_form_1_Conditional_41_Conditional_5_Conditional_1_For_15_Conditional_12_Template(rf, ctx) { if (rf & 1) {
496
- i0.ɵɵelementStart(0, "span", 103);
706
+ function AIPromptFormComponentExtended_form_1_Conditional_42_Conditional_5_Conditional_1_For_15_Conditional_12_Template(rf, ctx) { if (rf & 1) {
707
+ i0.ɵɵelementStart(0, "span", 129);
497
708
  i0.ɵɵtext(1, "New");
498
709
  i0.ɵɵelementEnd();
499
710
  } }
500
- function AIPromptFormComponentExtended_form_1_Conditional_41_Conditional_5_Conditional_1_For_15_Conditional_14_Template(rf, ctx) { if (rf & 1) {
501
- const _r18 = i0.ɵɵgetCurrentView();
502
- i0.ɵɵelementStart(0, "div", 121)(1, "kendo-button", 122);
503
- i0.ɵɵlistener("click", function AIPromptFormComponentExtended_form_1_Conditional_41_Conditional_5_Conditional_1_For_15_Conditional_14_Template_kendo_button_click_1_listener() { i0.ɵɵrestoreView(_r18); const ɵ$index_279_r12 = i0.ɵɵnextContext().$index; const ctx_r1 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r1.moveModelUp(ɵ$index_279_r12)); });
504
- i0.ɵɵelement(2, "i", 123);
711
+ function AIPromptFormComponentExtended_form_1_Conditional_42_Conditional_5_Conditional_1_For_15_Conditional_14_Template(rf, ctx) { if (rf & 1) {
712
+ const _r19 = i0.ɵɵgetCurrentView();
713
+ i0.ɵɵelementStart(0, "div", 147)(1, "button", 148);
714
+ i0.ɵɵlistener("click", function AIPromptFormComponentExtended_form_1_Conditional_42_Conditional_5_Conditional_1_For_15_Conditional_14_Template_button_click_1_listener() { i0.ɵɵrestoreView(_r19); const ɵ$index_415_r13 = i0.ɵɵnextContext().$index; const ctx_r1 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r1.moveModelUp(ɵ$index_415_r13)); });
715
+ i0.ɵɵelement(2, "i", 149);
505
716
  i0.ɵɵelementEnd();
506
- i0.ɵɵelementStart(3, "kendo-button", 124);
507
- i0.ɵɵlistener("click", function AIPromptFormComponentExtended_form_1_Conditional_41_Conditional_5_Conditional_1_For_15_Conditional_14_Template_kendo_button_click_3_listener() { i0.ɵɵrestoreView(_r18); const ɵ$index_279_r12 = i0.ɵɵnextContext().$index; const ctx_r1 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r1.moveModelDown(ɵ$index_279_r12)); });
508
- i0.ɵɵelement(4, "i", 125);
717
+ i0.ɵɵelementStart(3, "button", 150);
718
+ i0.ɵɵlistener("click", function AIPromptFormComponentExtended_form_1_Conditional_42_Conditional_5_Conditional_1_For_15_Conditional_14_Template_button_click_3_listener() { i0.ɵɵrestoreView(_r19); const ɵ$index_415_r13 = i0.ɵɵnextContext().$index; const ctx_r1 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r1.moveModelDown(ɵ$index_415_r13)); });
719
+ i0.ɵɵelement(4, "i", 151);
509
720
  i0.ɵɵelementEnd()();
510
- i0.ɵɵelementStart(5, "kendo-button", 126);
511
- i0.ɵɵlistener("click", function AIPromptFormComponentExtended_form_1_Conditional_41_Conditional_5_Conditional_1_For_15_Conditional_14_Template_kendo_button_click_5_listener() { i0.ɵɵrestoreView(_r18); const ɵ$index_279_r12 = i0.ɵɵnextContext().$index; const ctx_r1 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r1.removePromptModel(ɵ$index_279_r12)); });
512
- i0.ɵɵelement(6, "i", 127);
721
+ i0.ɵɵelementStart(5, "button", 152);
722
+ i0.ɵɵlistener("click", function AIPromptFormComponentExtended_form_1_Conditional_42_Conditional_5_Conditional_1_For_15_Conditional_14_Template_button_click_5_listener() { i0.ɵɵrestoreView(_r19); const ɵ$index_415_r13 = i0.ɵɵnextContext().$index; const ctx_r1 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r1.removePromptModel(ɵ$index_415_r13)); });
723
+ i0.ɵɵelement(6, "i", 153);
513
724
  i0.ɵɵelementEnd();
514
725
  } if (rf & 2) {
515
- const ɵ$index_279_r12 = i0.ɵɵnextContext().$index;
726
+ const ɵ$index_415_r13 = i0.ɵɵnextContext().$index;
516
727
  const ctx_r1 = i0.ɵɵnextContext(5);
517
728
  i0.ɵɵadvance();
518
- i0.ɵɵproperty("disabled", ɵ$index_279_r12 === 0);
729
+ i0.ɵɵproperty("disabled", ɵ$index_415_r13 === 0);
519
730
  i0.ɵɵadvance(2);
520
- i0.ɵɵproperty("disabled", ɵ$index_279_r12 === ctx_r1.promptModels.length - 1);
731
+ i0.ɵɵproperty("disabled", ɵ$index_415_r13 === ctx_r1.promptModels.length - 1);
521
732
  } }
522
- function AIPromptFormComponentExtended_form_1_Conditional_41_Conditional_5_Conditional_1_For_15_Conditional_19_Template(rf, ctx) { if (rf & 1) {
733
+ function AIPromptFormComponentExtended_form_1_Conditional_42_Conditional_5_Conditional_1_For_15_Conditional_19_Template(rf, ctx) { if (rf & 1) {
523
734
  i0.ɵɵelementStart(0, "span")(1, "strong");
524
735
  i0.ɵɵtext(2, "Status:");
525
736
  i0.ɵɵelementEnd();
526
737
  i0.ɵɵtext(3);
527
738
  i0.ɵɵelementEnd();
528
739
  } if (rf & 2) {
529
- const model_r14 = i0.ɵɵnextContext().$implicit;
740
+ const model_r15 = i0.ɵɵnextContext().$implicit;
530
741
  i0.ɵɵadvance(3);
531
- i0.ɵɵtextInterpolate1(" ", model_r14.Status, "");
742
+ i0.ɵɵtextInterpolate1(" ", model_r15.Status, "");
532
743
  } }
533
- function AIPromptFormComponentExtended_form_1_Conditional_41_Conditional_5_Conditional_1_For_15_Conditional_20_Template(rf, ctx) { if (rf & 1) {
744
+ function AIPromptFormComponentExtended_form_1_Conditional_42_Conditional_5_Conditional_1_For_15_Conditional_20_Template(rf, ctx) { if (rf & 1) {
534
745
  i0.ɵɵelementStart(0, "span")(1, "strong");
535
746
  i0.ɵɵtext(2, "Configuration:");
536
747
  i0.ɵɵelementEnd();
537
748
  i0.ɵɵtext(3);
538
749
  i0.ɵɵelementEnd();
539
750
  } if (rf & 2) {
540
- const model_r14 = i0.ɵɵnextContext().$implicit;
751
+ const model_r15 = i0.ɵɵnextContext().$implicit;
541
752
  i0.ɵɵadvance(3);
542
- i0.ɵɵtextInterpolate1(" ", model_r14.ConfigurationID, "");
753
+ i0.ɵɵtextInterpolate1(" ", model_r15.ConfigurationID, "");
543
754
  } }
544
- function AIPromptFormComponentExtended_form_1_Conditional_41_Conditional_5_Conditional_1_For_15_Conditional_21_Conditional_4_Conditional_5_Template(rf, ctx) { if (rf & 1) {
545
- const _r20 = i0.ɵɵgetCurrentView();
546
- i0.ɵɵelementStart(0, "div")(1, "label", 132);
755
+ function AIPromptFormComponentExtended_form_1_Conditional_42_Conditional_5_Conditional_1_For_15_Conditional_21_Conditional_4_Conditional_5_Template(rf, ctx) { if (rf & 1) {
756
+ const _r21 = i0.ɵɵgetCurrentView();
757
+ i0.ɵɵelementStart(0, "div")(1, "label", 158);
547
758
  i0.ɵɵtext(2, "Parallel Count");
548
759
  i0.ɵɵelementEnd();
549
- i0.ɵɵelementStart(3, "kendo-numerictextbox", 134);
550
- i0.ɵɵtwoWayListener("ngModelChange", function AIPromptFormComponentExtended_form_1_Conditional_41_Conditional_5_Conditional_1_For_15_Conditional_21_Conditional_4_Conditional_5_Template_kendo_numerictextbox_ngModelChange_3_listener($event) { i0.ɵɵrestoreView(_r20); const model_r14 = i0.ɵɵnextContext(3).$implicit; i0.ɵɵtwoWayBindingSet(model_r14.ParallelCount, $event) || (model_r14.ParallelCount = $event); return i0.ɵɵresetView($event); });
760
+ i0.ɵɵelementStart(3, "kendo-numerictextbox", 160);
761
+ i0.ɵɵtwoWayListener("ngModelChange", function AIPromptFormComponentExtended_form_1_Conditional_42_Conditional_5_Conditional_1_For_15_Conditional_21_Conditional_4_Conditional_5_Template_kendo_numerictextbox_ngModelChange_3_listener($event) { i0.ɵɵrestoreView(_r21); const model_r15 = i0.ɵɵnextContext(3).$implicit; i0.ɵɵtwoWayBindingSet(model_r15.ParallelCount, $event) || (model_r15.ParallelCount = $event); return i0.ɵɵresetView($event); });
551
762
  i0.ɵɵelementEnd()();
552
763
  } if (rf & 2) {
553
- const ctx_r14 = i0.ɵɵnextContext(3);
554
- const model_r14 = ctx_r14.$implicit;
555
- const ɵ$index_279_r12 = ctx_r14.$index;
764
+ const ctx_r15 = i0.ɵɵnextContext(3);
765
+ const model_r15 = ctx_r15.$implicit;
766
+ const ɵ$index_415_r13 = ctx_r15.$index;
556
767
  i0.ɵɵadvance(3);
557
- i0.ɵɵtwoWayProperty("ngModel", model_r14.ParallelCount);
558
- i0.ɵɵproperty("name", "parallelCount_" + ɵ$index_279_r12)("min", 1)("step", 1)("format", "n0");
768
+ i0.ɵɵtwoWayProperty("ngModel", model_r15.ParallelCount);
769
+ i0.ɵɵproperty("name", "parallelCount_" + ɵ$index_415_r13)("min", 1)("step", 1)("format", "n0");
559
770
  } }
560
- function AIPromptFormComponentExtended_form_1_Conditional_41_Conditional_5_Conditional_1_For_15_Conditional_21_Conditional_4_Conditional_6_Template(rf, ctx) { if (rf & 1) {
561
- const _r21 = i0.ɵɵgetCurrentView();
562
- i0.ɵɵelementStart(0, "div")(1, "label", 132);
771
+ function AIPromptFormComponentExtended_form_1_Conditional_42_Conditional_5_Conditional_1_For_15_Conditional_21_Conditional_4_Conditional_6_Template(rf, ctx) { if (rf & 1) {
772
+ const _r22 = i0.ɵɵgetCurrentView();
773
+ i0.ɵɵelementStart(0, "div")(1, "label", 158);
563
774
  i0.ɵɵtext(2, "Config Parameter");
564
775
  i0.ɵɵelementEnd();
565
- i0.ɵɵelementStart(3, "kendo-textbox", 135);
566
- i0.ɵɵtwoWayListener("ngModelChange", function AIPromptFormComponentExtended_form_1_Conditional_41_Conditional_5_Conditional_1_For_15_Conditional_21_Conditional_4_Conditional_6_Template_kendo_textbox_ngModelChange_3_listener($event) { i0.ɵɵrestoreView(_r21); const model_r14 = i0.ɵɵnextContext(3).$implicit; i0.ɵɵtwoWayBindingSet(model_r14.ParallelConfigParam, $event) || (model_r14.ParallelConfigParam = $event); return i0.ɵɵresetView($event); });
776
+ i0.ɵɵelementStart(3, "kendo-textbox", 161);
777
+ i0.ɵɵtwoWayListener("ngModelChange", function AIPromptFormComponentExtended_form_1_Conditional_42_Conditional_5_Conditional_1_For_15_Conditional_21_Conditional_4_Conditional_6_Template_kendo_textbox_ngModelChange_3_listener($event) { i0.ɵɵrestoreView(_r22); const model_r15 = i0.ɵɵnextContext(3).$implicit; i0.ɵɵtwoWayBindingSet(model_r15.ParallelConfigParam, $event) || (model_r15.ParallelConfigParam = $event); return i0.ɵɵresetView($event); });
567
778
  i0.ɵɵelementEnd()();
568
779
  } if (rf & 2) {
569
- const ctx_r14 = i0.ɵɵnextContext(3);
570
- const model_r14 = ctx_r14.$implicit;
571
- const ɵ$index_279_r12 = ctx_r14.$index;
780
+ const ctx_r15 = i0.ɵɵnextContext(3);
781
+ const model_r15 = ctx_r15.$implicit;
782
+ const ɵ$index_415_r13 = ctx_r15.$index;
572
783
  i0.ɵɵadvance(3);
573
- i0.ɵɵtwoWayProperty("ngModel", model_r14.ParallelConfigParam);
574
- i0.ɵɵproperty("name", "parallelConfigParam_" + ɵ$index_279_r12);
784
+ i0.ɵɵtwoWayProperty("ngModel", model_r15.ParallelConfigParam);
785
+ i0.ɵɵproperty("name", "parallelConfigParam_" + ɵ$index_415_r13);
575
786
  } }
576
- function AIPromptFormComponentExtended_form_1_Conditional_41_Conditional_5_Conditional_1_For_15_Conditional_21_Conditional_4_Template(rf, ctx) { if (rf & 1) {
577
- const _r19 = i0.ɵɵgetCurrentView();
578
- i0.ɵɵelementStart(0, "div", 130)(1, "div")(2, "label", 132);
787
+ function AIPromptFormComponentExtended_form_1_Conditional_42_Conditional_5_Conditional_1_For_15_Conditional_21_Conditional_4_Template(rf, ctx) { if (rf & 1) {
788
+ const _r20 = i0.ɵɵgetCurrentView();
789
+ i0.ɵɵelementStart(0, "div", 156)(1, "div")(2, "label", 158);
579
790
  i0.ɵɵtext(3, "Parallel Mode");
580
791
  i0.ɵɵelementEnd();
581
- i0.ɵɵelementStart(4, "kendo-dropdownlist", 133);
582
- i0.ɵɵtwoWayListener("ngModelChange", function AIPromptFormComponentExtended_form_1_Conditional_41_Conditional_5_Conditional_1_For_15_Conditional_21_Conditional_4_Template_kendo_dropdownlist_ngModelChange_4_listener($event) { i0.ɵɵrestoreView(_r19); const model_r14 = i0.ɵɵnextContext(2).$implicit; i0.ɵɵtwoWayBindingSet(model_r14.ParallelizationMode, $event) || (model_r14.ParallelizationMode = $event); return i0.ɵɵresetView($event); });
792
+ i0.ɵɵelementStart(4, "kendo-dropdownlist", 159);
793
+ i0.ɵɵtwoWayListener("ngModelChange", function AIPromptFormComponentExtended_form_1_Conditional_42_Conditional_5_Conditional_1_For_15_Conditional_21_Conditional_4_Template_kendo_dropdownlist_ngModelChange_4_listener($event) { i0.ɵɵrestoreView(_r20); const model_r15 = i0.ɵɵnextContext(2).$implicit; i0.ɵɵtwoWayBindingSet(model_r15.ParallelizationMode, $event) || (model_r15.ParallelizationMode = $event); return i0.ɵɵresetView($event); });
583
794
  i0.ɵɵelementEnd()();
584
- i0.ɵɵtemplate(5, AIPromptFormComponentExtended_form_1_Conditional_41_Conditional_5_Conditional_1_For_15_Conditional_21_Conditional_4_Conditional_5_Template, 4, 5, "div")(6, AIPromptFormComponentExtended_form_1_Conditional_41_Conditional_5_Conditional_1_For_15_Conditional_21_Conditional_4_Conditional_6_Template, 4, 2, "div");
795
+ i0.ɵɵtemplate(5, AIPromptFormComponentExtended_form_1_Conditional_42_Conditional_5_Conditional_1_For_15_Conditional_21_Conditional_4_Conditional_5_Template, 4, 5, "div")(6, AIPromptFormComponentExtended_form_1_Conditional_42_Conditional_5_Conditional_1_For_15_Conditional_21_Conditional_4_Conditional_6_Template, 4, 2, "div");
585
796
  i0.ɵɵelementEnd();
586
797
  } if (rf & 2) {
587
- const ctx_r14 = i0.ɵɵnextContext(2);
588
- const model_r14 = ctx_r14.$implicit;
589
- const ɵ$index_279_r12 = ctx_r14.$index;
798
+ const ctx_r15 = i0.ɵɵnextContext(2);
799
+ const model_r15 = ctx_r15.$implicit;
800
+ const ɵ$index_415_r13 = ctx_r15.$index;
590
801
  i0.ɵɵadvance(4);
591
- i0.ɵɵtwoWayProperty("ngModel", model_r14.ParallelizationMode);
592
- i0.ɵɵproperty("name", "parallelMode_" + ɵ$index_279_r12)("data", i0.ɵɵpureFunction3(9, _c4, i0.ɵɵpureFunction0(6, _c5), i0.ɵɵpureFunction0(7, _c6), i0.ɵɵpureFunction0(8, _c7)))("valuePrimitive", true);
802
+ i0.ɵɵtwoWayProperty("ngModel", model_r15.ParallelizationMode);
803
+ i0.ɵɵproperty("name", "parallelMode_" + ɵ$index_415_r13)("data", i0.ɵɵpureFunction3(9, _c4, i0.ɵɵpureFunction0(6, _c5), i0.ɵɵpureFunction0(7, _c6), i0.ɵɵpureFunction0(8, _c7)))("valuePrimitive", true);
593
804
  i0.ɵɵadvance();
594
- i0.ɵɵconditional(model_r14.ParallelizationMode === "StaticCount" ? 5 : -1);
805
+ i0.ɵɵconditional(model_r15.ParallelizationMode === "StaticCount" ? 5 : -1);
595
806
  i0.ɵɵadvance();
596
- i0.ɵɵconditional(model_r14.ParallelizationMode === "ConfigParam" ? 6 : -1);
807
+ i0.ɵɵconditional(model_r15.ParallelizationMode === "ConfigParam" ? 6 : -1);
597
808
  } }
598
- function AIPromptFormComponentExtended_form_1_Conditional_41_Conditional_5_Conditional_1_For_15_Conditional_21_Conditional_5_Conditional_1_Template(rf, ctx) { if (rf & 1) {
809
+ function AIPromptFormComponentExtended_form_1_Conditional_42_Conditional_5_Conditional_1_For_15_Conditional_21_Conditional_5_Conditional_1_Template(rf, ctx) { if (rf & 1) {
599
810
  i0.ɵɵelementStart(0, "span")(1, "strong");
600
811
  i0.ɵɵtext(2, "Parallel Mode:");
601
812
  i0.ɵɵelementEnd();
602
813
  i0.ɵɵtext(3);
603
814
  i0.ɵɵelementEnd();
604
815
  } if (rf & 2) {
605
- const model_r14 = i0.ɵɵnextContext(3).$implicit;
816
+ const model_r15 = i0.ɵɵnextContext(3).$implicit;
606
817
  i0.ɵɵadvance(3);
607
- i0.ɵɵtextInterpolate1(" ", model_r14.ParallelizationMode, "");
818
+ i0.ɵɵtextInterpolate1(" ", model_r15.ParallelizationMode, "");
608
819
  } }
609
- function AIPromptFormComponentExtended_form_1_Conditional_41_Conditional_5_Conditional_1_For_15_Conditional_21_Conditional_5_Conditional_2_Template(rf, ctx) { if (rf & 1) {
820
+ function AIPromptFormComponentExtended_form_1_Conditional_42_Conditional_5_Conditional_1_For_15_Conditional_21_Conditional_5_Conditional_2_Template(rf, ctx) { if (rf & 1) {
610
821
  i0.ɵɵelementStart(0, "span")(1, "strong");
611
822
  i0.ɵɵtext(2, "Parallel Count:");
612
823
  i0.ɵɵelementEnd();
613
824
  i0.ɵɵtext(3);
614
825
  i0.ɵɵelementEnd();
615
826
  } if (rf & 2) {
616
- const model_r14 = i0.ɵɵnextContext(3).$implicit;
827
+ const model_r15 = i0.ɵɵnextContext(3).$implicit;
617
828
  i0.ɵɵadvance(3);
618
- i0.ɵɵtextInterpolate1(" ", model_r14.ParallelCount, "");
829
+ i0.ɵɵtextInterpolate1(" ", model_r15.ParallelCount, "");
619
830
  } }
620
- function AIPromptFormComponentExtended_form_1_Conditional_41_Conditional_5_Conditional_1_For_15_Conditional_21_Conditional_5_Conditional_3_Template(rf, ctx) { if (rf & 1) {
831
+ function AIPromptFormComponentExtended_form_1_Conditional_42_Conditional_5_Conditional_1_For_15_Conditional_21_Conditional_5_Conditional_3_Template(rf, ctx) { if (rf & 1) {
621
832
  i0.ɵɵelementStart(0, "span")(1, "strong");
622
833
  i0.ɵɵtext(2, "Config Param:");
623
834
  i0.ɵɵelementEnd();
624
835
  i0.ɵɵtext(3);
625
836
  i0.ɵɵelementEnd();
626
837
  } if (rf & 2) {
627
- const model_r14 = i0.ɵɵnextContext(3).$implicit;
838
+ const model_r15 = i0.ɵɵnextContext(3).$implicit;
628
839
  i0.ɵɵadvance(3);
629
- i0.ɵɵtextInterpolate1(" ", model_r14.ParallelConfigParam, "");
840
+ i0.ɵɵtextInterpolate1(" ", model_r15.ParallelConfigParam, "");
630
841
  } }
631
- function AIPromptFormComponentExtended_form_1_Conditional_41_Conditional_5_Conditional_1_For_15_Conditional_21_Conditional_5_Template(rf, ctx) { if (rf & 1) {
632
- i0.ɵɵelementStart(0, "div", 131);
633
- i0.ɵɵtemplate(1, AIPromptFormComponentExtended_form_1_Conditional_41_Conditional_5_Conditional_1_For_15_Conditional_21_Conditional_5_Conditional_1_Template, 4, 1, "span")(2, AIPromptFormComponentExtended_form_1_Conditional_41_Conditional_5_Conditional_1_For_15_Conditional_21_Conditional_5_Conditional_2_Template, 4, 1, "span")(3, AIPromptFormComponentExtended_form_1_Conditional_41_Conditional_5_Conditional_1_For_15_Conditional_21_Conditional_5_Conditional_3_Template, 4, 1, "span");
842
+ function AIPromptFormComponentExtended_form_1_Conditional_42_Conditional_5_Conditional_1_For_15_Conditional_21_Conditional_5_Template(rf, ctx) { if (rf & 1) {
843
+ i0.ɵɵelementStart(0, "div", 157);
844
+ i0.ɵɵtemplate(1, AIPromptFormComponentExtended_form_1_Conditional_42_Conditional_5_Conditional_1_For_15_Conditional_21_Conditional_5_Conditional_1_Template, 4, 1, "span")(2, AIPromptFormComponentExtended_form_1_Conditional_42_Conditional_5_Conditional_1_For_15_Conditional_21_Conditional_5_Conditional_2_Template, 4, 1, "span")(3, AIPromptFormComponentExtended_form_1_Conditional_42_Conditional_5_Conditional_1_For_15_Conditional_21_Conditional_5_Conditional_3_Template, 4, 1, "span");
634
845
  i0.ɵɵelementEnd();
635
846
  } if (rf & 2) {
636
- const model_r14 = i0.ɵɵnextContext(2).$implicit;
847
+ const model_r15 = i0.ɵɵnextContext(2).$implicit;
637
848
  i0.ɵɵadvance();
638
- i0.ɵɵconditional(model_r14.ParallelizationMode ? 1 : -1);
849
+ i0.ɵɵconditional(model_r15.ParallelizationMode ? 1 : -1);
639
850
  i0.ɵɵadvance();
640
- i0.ɵɵconditional(model_r14.ParallelCount ? 2 : -1);
851
+ i0.ɵɵconditional(model_r15.ParallelCount ? 2 : -1);
641
852
  i0.ɵɵadvance();
642
- i0.ɵɵconditional(model_r14.ParallelConfigParam ? 3 : -1);
853
+ i0.ɵɵconditional(model_r15.ParallelConfigParam ? 3 : -1);
643
854
  } }
644
- function AIPromptFormComponentExtended_form_1_Conditional_41_Conditional_5_Conditional_1_For_15_Conditional_21_Template(rf, ctx) { if (rf & 1) {
645
- i0.ɵɵelementStart(0, "div", 107)(1, "div", 128);
646
- i0.ɵɵelement(2, "i", 129);
855
+ function AIPromptFormComponentExtended_form_1_Conditional_42_Conditional_5_Conditional_1_For_15_Conditional_21_Template(rf, ctx) { if (rf & 1) {
856
+ i0.ɵɵelementStart(0, "div", 133)(1, "div", 154);
857
+ i0.ɵɵelement(2, "i", 155);
647
858
  i0.ɵɵtext(3, " Model-Specific Parallel Execution ");
648
859
  i0.ɵɵelementEnd();
649
- i0.ɵɵtemplate(4, AIPromptFormComponentExtended_form_1_Conditional_41_Conditional_5_Conditional_1_For_15_Conditional_21_Conditional_4_Template, 7, 13, "div", 130)(5, AIPromptFormComponentExtended_form_1_Conditional_41_Conditional_5_Conditional_1_For_15_Conditional_21_Conditional_5_Template, 4, 3, "div", 131);
860
+ i0.ɵɵtemplate(4, AIPromptFormComponentExtended_form_1_Conditional_42_Conditional_5_Conditional_1_For_15_Conditional_21_Conditional_4_Template, 7, 13, "div", 156)(5, AIPromptFormComponentExtended_form_1_Conditional_42_Conditional_5_Conditional_1_For_15_Conditional_21_Conditional_5_Template, 4, 3, "div", 157);
650
861
  i0.ɵɵelementEnd();
651
862
  } if (rf & 2) {
652
863
  const ctx_r1 = i0.ɵɵnextContext(6);
653
864
  i0.ɵɵadvance(4);
654
865
  i0.ɵɵconditional(ctx_r1.EditMode ? 4 : 5);
655
866
  } }
656
- function AIPromptFormComponentExtended_form_1_Conditional_41_Conditional_5_Conditional_1_For_15_Template(rf, ctx) { if (rf & 1) {
657
- const _r11 = i0.ɵɵgetCurrentView();
658
- i0.ɵɵelementStart(0, "div", 95);
659
- i0.ɵɵlistener("dragstart", function AIPromptFormComponentExtended_form_1_Conditional_41_Conditional_5_Conditional_1_For_15_Template_div_dragstart_0_listener($event) { const ɵ$index_279_r12 = i0.ɵɵrestoreView(_r11).$index; const ctx_r1 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r1.onDragStart($event, ɵ$index_279_r12)); })("dragover", function AIPromptFormComponentExtended_form_1_Conditional_41_Conditional_5_Conditional_1_For_15_Template_div_dragover_0_listener($event) { i0.ɵɵrestoreView(_r11); const ctx_r1 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r1.onDragOver($event)); })("drop", function AIPromptFormComponentExtended_form_1_Conditional_41_Conditional_5_Conditional_1_For_15_Template_div_drop_0_listener($event) { const ɵ$index_279_r12 = i0.ɵɵrestoreView(_r11).$index; const ctx_r1 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r1.onDrop($event, ɵ$index_279_r12)); })("dragend", function AIPromptFormComponentExtended_form_1_Conditional_41_Conditional_5_Conditional_1_For_15_Template_div_dragend_0_listener($event) { i0.ɵɵrestoreView(_r11); const ctx_r1 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r1.onDragEnd($event)); });
660
- i0.ɵɵelementStart(1, "div", 96);
661
- i0.ɵɵtemplate(2, AIPromptFormComponentExtended_form_1_Conditional_41_Conditional_5_Conditional_1_For_15_Conditional_2_Template, 3, 1)(3, AIPromptFormComponentExtended_form_1_Conditional_41_Conditional_5_Conditional_1_For_15_Conditional_3_Template, 2, 3, "span", 97);
867
+ function AIPromptFormComponentExtended_form_1_Conditional_42_Conditional_5_Conditional_1_For_15_Template(rf, ctx) { if (rf & 1) {
868
+ const _r12 = i0.ɵɵgetCurrentView();
869
+ i0.ɵɵelementStart(0, "div", 121);
870
+ i0.ɵɵlistener("dragstart", function AIPromptFormComponentExtended_form_1_Conditional_42_Conditional_5_Conditional_1_For_15_Template_div_dragstart_0_listener($event) { const ɵ$index_415_r13 = i0.ɵɵrestoreView(_r12).$index; const ctx_r1 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r1.onDragStart($event, ɵ$index_415_r13)); })("dragover", function AIPromptFormComponentExtended_form_1_Conditional_42_Conditional_5_Conditional_1_For_15_Template_div_dragover_0_listener($event) { i0.ɵɵrestoreView(_r12); const ctx_r1 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r1.onDragOver($event)); })("drop", function AIPromptFormComponentExtended_form_1_Conditional_42_Conditional_5_Conditional_1_For_15_Template_div_drop_0_listener($event) { const ɵ$index_415_r13 = i0.ɵɵrestoreView(_r12).$index; const ctx_r1 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r1.onDrop($event, ɵ$index_415_r13)); })("dragend", function AIPromptFormComponentExtended_form_1_Conditional_42_Conditional_5_Conditional_1_For_15_Template_div_dragend_0_listener($event) { i0.ɵɵrestoreView(_r12); const ctx_r1 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r1.onDragEnd($event)); });
871
+ i0.ɵɵelementStart(1, "div", 122);
872
+ i0.ɵɵtemplate(2, AIPromptFormComponentExtended_form_1_Conditional_42_Conditional_5_Conditional_1_For_15_Conditional_2_Template, 3, 1)(3, AIPromptFormComponentExtended_form_1_Conditional_42_Conditional_5_Conditional_1_For_15_Conditional_3_Template, 2, 3, "span", 123);
662
873
  i0.ɵɵelementEnd();
663
- i0.ɵɵelementStart(4, "div", 98);
664
- i0.ɵɵtemplate(5, AIPromptFormComponentExtended_form_1_Conditional_41_Conditional_5_Conditional_1_For_15_Conditional_5_Template, 1, 5, "kendo-dropdownlist", 99)(6, AIPromptFormComponentExtended_form_1_Conditional_41_Conditional_5_Conditional_1_For_15_Conditional_6_Template, 2, 1, "span", 24);
874
+ i0.ɵɵelementStart(4, "div", 124);
875
+ i0.ɵɵtemplate(5, AIPromptFormComponentExtended_form_1_Conditional_42_Conditional_5_Conditional_1_For_15_Conditional_5_Template, 1, 5, "kendo-dropdownlist", 125)(6, AIPromptFormComponentExtended_form_1_Conditional_42_Conditional_5_Conditional_1_For_15_Conditional_6_Template, 2, 1, "span", 23);
665
876
  i0.ɵɵelementEnd();
666
- i0.ɵɵelementStart(7, "div", 100);
667
- i0.ɵɵtemplate(8, AIPromptFormComponentExtended_form_1_Conditional_41_Conditional_5_Conditional_1_For_15_Conditional_8_Template, 2, 1)(9, AIPromptFormComponentExtended_form_1_Conditional_41_Conditional_5_Conditional_1_For_15_Conditional_9_Template, 2, 1);
877
+ i0.ɵɵelementStart(7, "div", 126);
878
+ i0.ɵɵtemplate(8, AIPromptFormComponentExtended_form_1_Conditional_42_Conditional_5_Conditional_1_For_15_Conditional_8_Template, 2, 1)(9, AIPromptFormComponentExtended_form_1_Conditional_42_Conditional_5_Conditional_1_For_15_Conditional_9_Template, 2, 1);
668
879
  i0.ɵɵelementEnd();
669
- i0.ɵɵelementStart(10, "div", 101);
670
- i0.ɵɵtemplate(11, AIPromptFormComponentExtended_form_1_Conditional_41_Conditional_5_Conditional_1_For_15_Conditional_11_Template, 3, 4, "span", 102)(12, AIPromptFormComponentExtended_form_1_Conditional_41_Conditional_5_Conditional_1_For_15_Conditional_12_Template, 2, 0, "span", 103);
880
+ i0.ɵɵelementStart(10, "div", 127);
881
+ i0.ɵɵtemplate(11, AIPromptFormComponentExtended_form_1_Conditional_42_Conditional_5_Conditional_1_For_15_Conditional_11_Template, 3, 4, "span", 128)(12, AIPromptFormComponentExtended_form_1_Conditional_42_Conditional_5_Conditional_1_For_15_Conditional_12_Template, 2, 0, "span", 129);
671
882
  i0.ɵɵelementEnd();
672
- i0.ɵɵelementStart(13, "div", 104);
673
- i0.ɵɵtemplate(14, AIPromptFormComponentExtended_form_1_Conditional_41_Conditional_5_Conditional_1_For_15_Conditional_14_Template, 7, 2);
883
+ i0.ɵɵelementStart(13, "div", 130);
884
+ i0.ɵɵtemplate(14, AIPromptFormComponentExtended_form_1_Conditional_42_Conditional_5_Conditional_1_For_15_Conditional_14_Template, 7, 2);
674
885
  i0.ɵɵelementEnd()();
675
- i0.ɵɵelementStart(15, "div", 105);
886
+ i0.ɵɵelementStart(15, "div", 131);
676
887
  i0.ɵɵelement(16, "div");
677
- i0.ɵɵelementStart(17, "div")(18, "div", 106);
678
- i0.ɵɵtemplate(19, AIPromptFormComponentExtended_form_1_Conditional_41_Conditional_5_Conditional_1_For_15_Conditional_19_Template, 4, 1, "span")(20, AIPromptFormComponentExtended_form_1_Conditional_41_Conditional_5_Conditional_1_For_15_Conditional_20_Template, 4, 1, "span");
888
+ i0.ɵɵelementStart(17, "div")(18, "div", 132);
889
+ i0.ɵɵtemplate(19, AIPromptFormComponentExtended_form_1_Conditional_42_Conditional_5_Conditional_1_For_15_Conditional_19_Template, 4, 1, "span")(20, AIPromptFormComponentExtended_form_1_Conditional_42_Conditional_5_Conditional_1_For_15_Conditional_20_Template, 4, 1, "span");
679
890
  i0.ɵɵelementEnd();
680
- i0.ɵɵtemplate(21, AIPromptFormComponentExtended_form_1_Conditional_41_Conditional_5_Conditional_1_For_15_Conditional_21_Template, 6, 1, "div", 107);
891
+ i0.ɵɵtemplate(21, AIPromptFormComponentExtended_form_1_Conditional_42_Conditional_5_Conditional_1_For_15_Conditional_21_Template, 6, 1, "div", 133);
681
892
  i0.ɵɵelementEnd()();
682
893
  } if (rf & 2) {
683
- const model_r14 = ctx.$implicit;
684
- const ɵ$index_279_r12 = ctx.$index;
894
+ const model_r15 = ctx.$implicit;
895
+ const ɵ$index_415_r13 = ctx.$index;
685
896
  const ctx_r1 = i0.ɵɵnextContext(5);
686
- i0.ɵɵstyleProp("background", !model_r14.ModelID ? "#fff3cd" : ctx_r1.draggedIndex === ɵ$index_279_r12 ? "#e3f2fd" : "white")("border-left", !model_r14.ModelID ? "3px solid #ffc107" : "none")("opacity", ctx_r1.draggedIndex === ɵ$index_279_r12 ? "0.5" : "1");
897
+ i0.ɵɵstyleProp("background", !model_r15.ModelID ? "#fff3cd" : ctx_r1.draggedIndex === ɵ$index_415_r13 ? "#e3f2fd" : "white")("border-left", !model_r15.ModelID ? "3px solid #ffc107" : "none")("opacity", ctx_r1.draggedIndex === ɵ$index_415_r13 ? "0.5" : "1");
687
898
  i0.ɵɵproperty("draggable", ctx_r1.EditMode);
688
899
  i0.ɵɵadvance(2);
689
900
  i0.ɵɵconditional(ctx_r1.EditMode ? 2 : 3);
@@ -692,32 +903,32 @@ function AIPromptFormComponentExtended_form_1_Conditional_41_Conditional_5_Condi
692
903
  i0.ɵɵadvance(3);
693
904
  i0.ɵɵconditional(ctx_r1.EditMode ? 8 : 9);
694
905
  i0.ɵɵadvance(3);
695
- i0.ɵɵconditional(model_r14.ID ? 11 : 12);
906
+ i0.ɵɵconditional(model_r15.ID ? 11 : 12);
696
907
  i0.ɵɵadvance(3);
697
908
  i0.ɵɵconditional(ctx_r1.EditMode ? 14 : -1);
698
909
  i0.ɵɵadvance(5);
699
- i0.ɵɵconditional(model_r14.Status ? 19 : -1);
910
+ i0.ɵɵconditional(model_r15.Status ? 19 : -1);
700
911
  i0.ɵɵadvance();
701
- i0.ɵɵconditional(model_r14.ConfigurationID ? 20 : -1);
912
+ i0.ɵɵconditional(model_r15.ConfigurationID ? 20 : -1);
702
913
  i0.ɵɵadvance();
703
914
  i0.ɵɵconditional(ctx_r1.record.ParallelizationMode === "ModelSpecific" ? 21 : -1);
704
915
  } }
705
- function AIPromptFormComponentExtended_form_1_Conditional_41_Conditional_5_Conditional_1_Conditional_16_Template(rf, ctx) { if (rf & 1) {
706
- const _r22 = i0.ɵɵgetCurrentView();
707
- i0.ɵɵelementStart(0, "div", 93)(1, "kendo-button", 136);
708
- i0.ɵɵlistener("click", function AIPromptFormComponentExtended_form_1_Conditional_41_Conditional_5_Conditional_1_Conditional_16_Template_kendo_button_click_1_listener() { i0.ɵɵrestoreView(_r22); const ctx_r1 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r1.addNewModel()); });
709
- i0.ɵɵelement(2, "i", 71);
916
+ function AIPromptFormComponentExtended_form_1_Conditional_42_Conditional_5_Conditional_1_Conditional_16_Template(rf, ctx) { if (rf & 1) {
917
+ const _r23 = i0.ɵɵgetCurrentView();
918
+ i0.ɵɵelementStart(0, "div", 119)(1, "button", 162);
919
+ i0.ɵɵlistener("click", function AIPromptFormComponentExtended_form_1_Conditional_42_Conditional_5_Conditional_1_Conditional_16_Template_button_click_1_listener() { i0.ɵɵrestoreView(_r23); const ctx_r1 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r1.addNewModel()); });
920
+ i0.ɵɵelement(2, "i", 70);
710
921
  i0.ɵɵtext(3, " Add Model ");
711
922
  i0.ɵɵelementEnd()();
712
923
  } }
713
- function AIPromptFormComponentExtended_form_1_Conditional_41_Conditional_5_Conditional_1_Template(rf, ctx) { if (rf & 1) {
714
- i0.ɵɵtemplate(0, AIPromptFormComponentExtended_form_1_Conditional_41_Conditional_5_Conditional_1_Conditional_0_Template, 3, 0, "div", 89);
715
- i0.ɵɵelementStart(1, "div", 90)(2, "div", 91);
716
- i0.ɵɵelement(3, "i", 92);
924
+ function AIPromptFormComponentExtended_form_1_Conditional_42_Conditional_5_Conditional_1_Template(rf, ctx) { if (rf & 1) {
925
+ i0.ɵɵtemplate(0, AIPromptFormComponentExtended_form_1_Conditional_42_Conditional_5_Conditional_1_Conditional_0_Template, 3, 0, "div", 115);
926
+ i0.ɵɵelementStart(1, "div", 116)(2, "div", 117);
927
+ i0.ɵɵelement(3, "i", 118);
717
928
  i0.ɵɵelementEnd();
718
929
  i0.ɵɵelementStart(4, "div");
719
930
  i0.ɵɵtext(5, "AI Model ");
720
- i0.ɵɵelementStart(6, "span", 52);
931
+ i0.ɵɵelementStart(6, "span", 51);
721
932
  i0.ɵɵtext(7, "*");
722
933
  i0.ɵɵelementEnd()();
723
934
  i0.ɵɵelementStart(8, "div");
@@ -729,8 +940,8 @@ function AIPromptFormComponentExtended_form_1_Conditional_41_Conditional_5_Condi
729
940
  i0.ɵɵelementStart(12, "div");
730
941
  i0.ɵɵtext(13, "Actions");
731
942
  i0.ɵɵelementEnd()();
732
- i0.ɵɵrepeaterCreate(14, AIPromptFormComponentExtended_form_1_Conditional_41_Conditional_5_Conditional_1_For_15_Template, 22, 15, null, null, _forTrack0);
733
- i0.ɵɵtemplate(16, AIPromptFormComponentExtended_form_1_Conditional_41_Conditional_5_Conditional_1_Conditional_16_Template, 4, 0, "div", 93);
943
+ i0.ɵɵrepeaterCreate(14, AIPromptFormComponentExtended_form_1_Conditional_42_Conditional_5_Conditional_1_For_15_Template, 22, 15, null, null, _forTrack1);
944
+ i0.ɵɵtemplate(16, AIPromptFormComponentExtended_form_1_Conditional_42_Conditional_5_Conditional_1_Conditional_16_Template, 4, 0, "div", 119);
734
945
  } if (rf & 2) {
735
946
  const ctx_r1 = i0.ɵɵnextContext(4);
736
947
  i0.ɵɵconditional(ctx_r1.promptModels.length > 1 ? 0 : -1);
@@ -739,17 +950,17 @@ function AIPromptFormComponentExtended_form_1_Conditional_41_Conditional_5_Condi
739
950
  i0.ɵɵadvance(2);
740
951
  i0.ɵɵconditional(ctx_r1.EditMode ? 16 : -1);
741
952
  } }
742
- function AIPromptFormComponentExtended_form_1_Conditional_41_Conditional_5_Template(rf, ctx) { if (rf & 1) {
743
- i0.ɵɵtemplate(0, AIPromptFormComponentExtended_form_1_Conditional_41_Conditional_5_Conditional_0_Template, 4, 1, "div", 85)(1, AIPromptFormComponentExtended_form_1_Conditional_41_Conditional_5_Conditional_1_Template, 17, 2);
953
+ function AIPromptFormComponentExtended_form_1_Conditional_42_Conditional_5_Template(rf, ctx) { if (rf & 1) {
954
+ i0.ɵɵtemplate(0, AIPromptFormComponentExtended_form_1_Conditional_42_Conditional_5_Conditional_0_Template, 4, 1, "div", 79)(1, AIPromptFormComponentExtended_form_1_Conditional_42_Conditional_5_Conditional_1_Template, 17, 2);
744
955
  } if (rf & 2) {
745
956
  const ctx_r1 = i0.ɵɵnextContext(3);
746
957
  i0.ɵɵconditional(ctx_r1.promptModels.length === 0 ? 0 : 1);
747
958
  } }
748
- function AIPromptFormComponentExtended_form_1_Conditional_41_Template(rf, ctx) { if (rf & 1) {
749
- i0.ɵɵelementStart(0, "kendo-expansionpanel", 30);
750
- i0.ɵɵtemplate(1, AIPromptFormComponentExtended_form_1_Conditional_41_ng_template_1_Template, 7, 1, "ng-template", 31);
751
- i0.ɵɵelementStart(2, "div", 37)(3, "div", 79);
752
- i0.ɵɵtemplate(4, AIPromptFormComponentExtended_form_1_Conditional_41_Conditional_4_Template, 3, 0, "div", 80)(5, AIPromptFormComponentExtended_form_1_Conditional_41_Conditional_5_Template, 2, 1);
959
+ function AIPromptFormComponentExtended_form_1_Conditional_42_Template(rf, ctx) { if (rf & 1) {
960
+ i0.ɵɵelementStart(0, "kendo-expansionpanel", 29);
961
+ i0.ɵɵtemplate(1, AIPromptFormComponentExtended_form_1_Conditional_42_ng_template_1_Template, 7, 1, "ng-template", 30);
962
+ i0.ɵɵelementStart(2, "div", 36)(3, "div", 109);
963
+ i0.ɵɵtemplate(4, AIPromptFormComponentExtended_form_1_Conditional_42_Conditional_4_Template, 3, 0, "div", 78)(5, AIPromptFormComponentExtended_form_1_Conditional_42_Conditional_5_Template, 2, 1);
753
964
  i0.ɵɵelementEnd()()();
754
965
  } if (rf & 2) {
755
966
  const ctx_r1 = i0.ɵɵnextContext(2);
@@ -757,49 +968,49 @@ function AIPromptFormComponentExtended_form_1_Conditional_41_Template(rf, ctx) {
757
968
  i0.ɵɵadvance(4);
758
969
  i0.ɵɵconditional(ctx_r1.isLoadingModels ? 4 : 5);
759
970
  } }
760
- function AIPromptFormComponentExtended_form_1_ng_template_43_Template(rf, ctx) { if (rf & 1) {
761
- i0.ɵɵelementStart(0, "span", 63);
762
- i0.ɵɵelement(1, "i", 137);
971
+ function AIPromptFormComponentExtended_form_1_ng_template_44_Template(rf, ctx) { if (rf & 1) {
972
+ i0.ɵɵelementStart(0, "span", 62);
973
+ i0.ɵɵelement(1, "i", 163);
763
974
  i0.ɵɵtext(2, " Advanced Configuration ");
764
975
  i0.ɵɵelementEnd();
765
976
  } }
766
- function AIPromptFormComponentExtended_form_1_Conditional_48_Template(rf, ctx) { if (rf & 1) {
767
- i0.ɵɵelement(0, "mj-form-field", 40);
977
+ function AIPromptFormComponentExtended_form_1_Conditional_49_Template(rf, ctx) { if (rf & 1) {
978
+ i0.ɵɵelement(0, "mj-form-field", 39);
768
979
  } if (rf & 2) {
769
980
  const ctx_r1 = i0.ɵɵnextContext(2);
770
981
  i0.ɵɵproperty("record", ctx_r1.record)("ShowLabel", true)("EditMode", ctx_r1.EditMode);
771
982
  } }
772
- function AIPromptFormComponentExtended_form_1_Conditional_49_Template(rf, ctx) { if (rf & 1) {
773
- i0.ɵɵelement(0, "mj-form-field", 41);
983
+ function AIPromptFormComponentExtended_form_1_Conditional_50_Template(rf, ctx) { if (rf & 1) {
984
+ i0.ɵɵelement(0, "mj-form-field", 40);
774
985
  } if (rf & 2) {
775
986
  const ctx_r1 = i0.ɵɵnextContext(2);
776
987
  i0.ɵɵproperty("record", ctx_r1.record)("ShowLabel", true)("EditMode", ctx_r1.EditMode);
777
988
  } }
778
- function AIPromptFormComponentExtended_form_1_Conditional_57_Conditional_0_Template(rf, ctx) { if (rf & 1) {
779
- i0.ɵɵelementStart(0, "div", 138);
780
- i0.ɵɵelement(1, "i", 55);
989
+ function AIPromptFormComponentExtended_form_1_Conditional_58_Conditional_0_Template(rf, ctx) { if (rf & 1) {
990
+ i0.ɵɵelementStart(0, "div", 164);
991
+ i0.ɵɵelement(1, "i", 54);
781
992
  i0.ɵɵtext(2, " Loading prompts... ");
782
993
  i0.ɵɵelementEnd();
783
994
  } }
784
- function AIPromptFormComponentExtended_form_1_Conditional_57_Conditional_1_Template(rf, ctx) { if (rf & 1) {
785
- const _r23 = i0.ɵɵgetCurrentView();
786
- i0.ɵɵelementStart(0, "kendo-dropdowntree", 140);
787
- i0.ɵɵtwoWayListener("ngModelChange", function AIPromptFormComponentExtended_form_1_Conditional_57_Conditional_1_Template_kendo_dropdowntree_ngModelChange_0_listener($event) { i0.ɵɵrestoreView(_r23); const ctx_r1 = i0.ɵɵnextContext(3); i0.ɵɵtwoWayBindingSet(ctx_r1.record.ResultSelectorPromptID, $event) || (ctx_r1.record.ResultSelectorPromptID = $event); return i0.ɵɵresetView($event); });
788
- i0.ɵɵlistener("valueChange", function AIPromptFormComponentExtended_form_1_Conditional_57_Conditional_1_Template_kendo_dropdowntree_valueChange_0_listener($event) { i0.ɵɵrestoreView(_r23); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.onResultSelectorChange($event)); });
995
+ function AIPromptFormComponentExtended_form_1_Conditional_58_Conditional_1_Template(rf, ctx) { if (rf & 1) {
996
+ const _r24 = i0.ɵɵgetCurrentView();
997
+ i0.ɵɵelementStart(0, "kendo-dropdowntree", 166);
998
+ i0.ɵɵtwoWayListener("ngModelChange", function AIPromptFormComponentExtended_form_1_Conditional_58_Conditional_1_Template_kendo_dropdowntree_ngModelChange_0_listener($event) { i0.ɵɵrestoreView(_r24); const ctx_r1 = i0.ɵɵnextContext(3); i0.ɵɵtwoWayBindingSet(ctx_r1.record.ResultSelectorPromptID, $event) || (ctx_r1.record.ResultSelectorPromptID = $event); return i0.ɵɵresetView($event); });
999
+ i0.ɵɵlistener("valueChange", function AIPromptFormComponentExtended_form_1_Conditional_58_Conditional_1_Template_kendo_dropdowntree_valueChange_0_listener($event) { i0.ɵɵrestoreView(_r24); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.onResultSelectorChange($event)); });
789
1000
  i0.ɵɵelementEnd();
790
1001
  } if (rf & 2) {
791
1002
  const ctx_r1 = i0.ɵɵnextContext(3);
792
1003
  i0.ɵɵtwoWayProperty("ngModel", ctx_r1.record.ResultSelectorPromptID);
793
1004
  i0.ɵɵproperty("data", ctx_r1.resultSelectorTreeData)("valuePrimitive", true)("filterable", true);
794
1005
  } }
795
- function AIPromptFormComponentExtended_form_1_Conditional_57_Template(rf, ctx) { if (rf & 1) {
796
- i0.ɵɵtemplate(0, AIPromptFormComponentExtended_form_1_Conditional_57_Conditional_0_Template, 3, 0, "div", 138)(1, AIPromptFormComponentExtended_form_1_Conditional_57_Conditional_1_Template, 1, 4, "kendo-dropdowntree", 139);
1006
+ function AIPromptFormComponentExtended_form_1_Conditional_58_Template(rf, ctx) { if (rf & 1) {
1007
+ i0.ɵɵtemplate(0, AIPromptFormComponentExtended_form_1_Conditional_58_Conditional_0_Template, 3, 0, "div", 164)(1, AIPromptFormComponentExtended_form_1_Conditional_58_Conditional_1_Template, 1, 4, "kendo-dropdowntree", 165);
797
1008
  } if (rf & 2) {
798
1009
  const ctx_r1 = i0.ɵɵnextContext(2);
799
1010
  i0.ɵɵconditional(ctx_r1.isLoadingResultSelectorData ? 0 : 1);
800
1011
  } }
801
- function AIPromptFormComponentExtended_form_1_Conditional_58_Template(rf, ctx) { if (rf & 1) {
802
- i0.ɵɵelementStart(0, "span", 47);
1012
+ function AIPromptFormComponentExtended_form_1_Conditional_59_Template(rf, ctx) { if (rf & 1) {
1013
+ i0.ɵɵelementStart(0, "span", 46);
803
1014
  i0.ɵɵtext(1);
804
1015
  i0.ɵɵelementEnd();
805
1016
  } if (rf & 2) {
@@ -807,29 +1018,29 @@ function AIPromptFormComponentExtended_form_1_Conditional_58_Template(rf, ctx) {
807
1018
  i0.ɵɵadvance();
808
1019
  i0.ɵɵtextInterpolate(ctx_r1.getPromptDisplayName(ctx_r1.record.ResultSelectorPromptID || "") || "None selected");
809
1020
  } }
810
- function AIPromptFormComponentExtended_form_1_Conditional_59_ng_template_1_Template(rf, ctx) { if (rf & 1) {
811
- i0.ɵɵelementStart(0, "span", 63);
812
- i0.ɵɵelement(1, "i", 23);
1021
+ function AIPromptFormComponentExtended_form_1_Conditional_60_ng_template_1_Template(rf, ctx) { if (rf & 1) {
1022
+ i0.ɵɵelementStart(0, "span", 62);
1023
+ i0.ɵɵelement(1, "i", 22);
813
1024
  i0.ɵɵtext(2, " Output Example (JSON) ");
814
- i0.ɵɵelementStart(3, "span", 144);
1025
+ i0.ɵɵelementStart(3, "span", 170);
815
1026
  i0.ɵɵtext(4, "\u2022 Required for object output type");
816
1027
  i0.ɵɵelementEnd()();
817
1028
  } }
818
- function AIPromptFormComponentExtended_form_1_Conditional_59_Conditional_3_Template(rf, ctx) { if (rf & 1) {
819
- const _r24 = i0.ɵɵgetCurrentView();
820
- i0.ɵɵelementStart(0, "mj-code-editor", 145);
821
- i0.ɵɵtwoWayListener("ngModelChange", function AIPromptFormComponentExtended_form_1_Conditional_59_Conditional_3_Template_mj_code_editor_ngModelChange_0_listener($event) { i0.ɵɵrestoreView(_r24); const ctx_r1 = i0.ɵɵnextContext(3); i0.ɵɵtwoWayBindingSet(ctx_r1.record.OutputExample, $event) || (ctx_r1.record.OutputExample = $event); return i0.ɵɵresetView($event); });
1029
+ function AIPromptFormComponentExtended_form_1_Conditional_60_Conditional_3_Template(rf, ctx) { if (rf & 1) {
1030
+ const _r25 = i0.ɵɵgetCurrentView();
1031
+ i0.ɵɵelementStart(0, "mj-code-editor", 171);
1032
+ i0.ɵɵtwoWayListener("ngModelChange", function AIPromptFormComponentExtended_form_1_Conditional_60_Conditional_3_Template_mj_code_editor_ngModelChange_0_listener($event) { i0.ɵɵrestoreView(_r25); const ctx_r1 = i0.ɵɵnextContext(3); i0.ɵɵtwoWayBindingSet(ctx_r1.record.OutputExample, $event) || (ctx_r1.record.OutputExample = $event); return i0.ɵɵresetView($event); });
822
1033
  i0.ɵɵelementEnd();
823
- i0.ɵɵelementStart(1, "div", 146);
824
- i0.ɵɵelement(2, "i", 86);
1034
+ i0.ɵɵelementStart(1, "div", 172);
1035
+ i0.ɵɵelement(2, "i", 84);
825
1036
  i0.ɵɵtext(3, " Provide a JSON example that defines the expected structure for object output validation. ");
826
1037
  i0.ɵɵelementEnd();
827
1038
  } if (rf & 2) {
828
1039
  const ctx_r1 = i0.ɵɵnextContext(3);
829
1040
  i0.ɵɵtwoWayProperty("ngModel", ctx_r1.record.OutputExample);
830
1041
  } }
831
- function AIPromptFormComponentExtended_form_1_Conditional_59_Conditional_4_Template(rf, ctx) { if (rf & 1) {
832
- i0.ɵɵelementStart(0, "div", 142);
1042
+ function AIPromptFormComponentExtended_form_1_Conditional_60_Conditional_4_Template(rf, ctx) { if (rf & 1) {
1043
+ i0.ɵɵelementStart(0, "div", 168);
833
1044
  i0.ɵɵtext(1);
834
1045
  i0.ɵɵelementEnd();
835
1046
  } if (rf & 2) {
@@ -837,17 +1048,17 @@ function AIPromptFormComponentExtended_form_1_Conditional_59_Conditional_4_Templ
837
1048
  i0.ɵɵadvance();
838
1049
  i0.ɵɵtextInterpolate(ctx_r1.record.OutputExample);
839
1050
  } }
840
- function AIPromptFormComponentExtended_form_1_Conditional_59_Conditional_5_Template(rf, ctx) { if (rf & 1) {
841
- i0.ɵɵelementStart(0, "div", 143);
842
- i0.ɵɵelement(1, "i", 147);
1051
+ function AIPromptFormComponentExtended_form_1_Conditional_60_Conditional_5_Template(rf, ctx) { if (rf & 1) {
1052
+ i0.ɵɵelementStart(0, "div", 169);
1053
+ i0.ɵɵelement(1, "i", 173);
843
1054
  i0.ɵɵtext(2, " Output example is required when output type is 'object' ");
844
1055
  i0.ɵɵelementEnd();
845
1056
  } }
846
- function AIPromptFormComponentExtended_form_1_Conditional_59_Template(rf, ctx) { if (rf & 1) {
847
- i0.ɵɵelementStart(0, "kendo-expansionpanel", 30);
848
- i0.ɵɵtemplate(1, AIPromptFormComponentExtended_form_1_Conditional_59_ng_template_1_Template, 5, 0, "ng-template", 31);
849
- i0.ɵɵelementStart(2, "div", 141);
850
- i0.ɵɵtemplate(3, AIPromptFormComponentExtended_form_1_Conditional_59_Conditional_3_Template, 4, 1)(4, AIPromptFormComponentExtended_form_1_Conditional_59_Conditional_4_Template, 2, 1, "div", 142)(5, AIPromptFormComponentExtended_form_1_Conditional_59_Conditional_5_Template, 3, 0, "div", 143);
1057
+ function AIPromptFormComponentExtended_form_1_Conditional_60_Template(rf, ctx) { if (rf & 1) {
1058
+ i0.ɵɵelementStart(0, "kendo-expansionpanel", 29);
1059
+ i0.ɵɵtemplate(1, AIPromptFormComponentExtended_form_1_Conditional_60_ng_template_1_Template, 5, 0, "ng-template", 30);
1060
+ i0.ɵɵelementStart(2, "div", 167);
1061
+ i0.ɵɵtemplate(3, AIPromptFormComponentExtended_form_1_Conditional_60_Conditional_3_Template, 4, 1)(4, AIPromptFormComponentExtended_form_1_Conditional_60_Conditional_4_Template, 2, 1, "div", 168)(5, AIPromptFormComponentExtended_form_1_Conditional_60_Conditional_5_Template, 3, 0, "div", 169);
851
1062
  i0.ɵɵelementEnd()();
852
1063
  } if (rf & 2) {
853
1064
  const ctx_r1 = i0.ɵɵnextContext(2);
@@ -855,8 +1066,8 @@ function AIPromptFormComponentExtended_form_1_Conditional_59_Template(rf, ctx) {
855
1066
  i0.ɵɵadvance(3);
856
1067
  i0.ɵɵconditional(ctx_r1.EditMode ? 3 : ctx_r1.record.OutputExample ? 4 : 5);
857
1068
  } }
858
- function AIPromptFormComponentExtended_form_1_Conditional_60_ng_template_1_Conditional_3_Template(rf, ctx) { if (rf & 1) {
859
- i0.ɵɵelementStart(0, "span", 150);
1069
+ function AIPromptFormComponentExtended_form_1_Conditional_61_ng_template_1_Conditional_3_Template(rf, ctx) { if (rf & 1) {
1070
+ i0.ɵɵelementStart(0, "span", 176);
860
1071
  i0.ɵɵtext(1);
861
1072
  i0.ɵɵelementEnd();
862
1073
  } if (rf & 2) {
@@ -864,177 +1075,177 @@ function AIPromptFormComponentExtended_form_1_Conditional_60_ng_template_1_Condi
864
1075
  i0.ɵɵadvance();
865
1076
  i0.ɵɵtextInterpolate1("(", ctx_r1.executionHistory.length, ")");
866
1077
  } }
867
- function AIPromptFormComponentExtended_form_1_Conditional_60_ng_template_1_Template(rf, ctx) { if (rf & 1) {
868
- i0.ɵɵelementStart(0, "span", 63);
869
- i0.ɵɵelement(1, "i", 149);
1078
+ function AIPromptFormComponentExtended_form_1_Conditional_61_ng_template_1_Template(rf, ctx) { if (rf & 1) {
1079
+ i0.ɵɵelementStart(0, "span", 62);
1080
+ i0.ɵɵelement(1, "i", 175);
870
1081
  i0.ɵɵtext(2, " Execution History ");
871
- i0.ɵɵtemplate(3, AIPromptFormComponentExtended_form_1_Conditional_60_ng_template_1_Conditional_3_Template, 2, 1, "span", 150);
1082
+ i0.ɵɵtemplate(3, AIPromptFormComponentExtended_form_1_Conditional_61_ng_template_1_Conditional_3_Template, 2, 1, "span", 176);
872
1083
  i0.ɵɵelementEnd();
873
1084
  } if (rf & 2) {
874
1085
  const ctx_r1 = i0.ɵɵnextContext(3);
875
1086
  i0.ɵɵadvance(3);
876
1087
  i0.ɵɵconditional(ctx_r1.executionHistory.length > 0 ? 3 : -1);
877
1088
  } }
878
- function AIPromptFormComponentExtended_form_1_Conditional_60_Conditional_3_Template(rf, ctx) { if (rf & 1) {
879
- i0.ɵɵelementStart(0, "div", 148);
880
- i0.ɵɵelement(1, "i", 151);
1089
+ function AIPromptFormComponentExtended_form_1_Conditional_61_Conditional_3_Template(rf, ctx) { if (rf & 1) {
1090
+ i0.ɵɵelementStart(0, "div", 174);
1091
+ i0.ɵɵelement(1, "i", 177);
881
1092
  i0.ɵɵelementStart(2, "p");
882
1093
  i0.ɵɵtext(3, "Loading execution history...");
883
1094
  i0.ɵɵelementEnd()();
884
1095
  } }
885
- function AIPromptFormComponentExtended_form_1_Conditional_60_Conditional_4_Template(rf, ctx) { if (rf & 1) {
886
- i0.ɵɵelementStart(0, "div", 148);
887
- i0.ɵɵelement(1, "i", 152);
1096
+ function AIPromptFormComponentExtended_form_1_Conditional_61_Conditional_4_Template(rf, ctx) { if (rf & 1) {
1097
+ i0.ɵɵelementStart(0, "div", 174);
1098
+ i0.ɵɵelement(1, "i", 178);
888
1099
  i0.ɵɵelementStart(2, "p");
889
1100
  i0.ɵɵtext(3, "No execution history yet");
890
1101
  i0.ɵɵelementEnd();
891
- i0.ɵɵelementStart(4, "p", 120);
1102
+ i0.ɵɵelementStart(4, "p", 146);
892
1103
  i0.ɵɵtext(5, "Run this prompt to see execution history here");
893
1104
  i0.ɵɵelementEnd()();
894
1105
  } }
895
- function AIPromptFormComponentExtended_form_1_Conditional_60_Conditional_5_Conditional_9_Template(rf, ctx) { if (rf & 1) {
896
- i0.ɵɵelement(0, "i", 166);
1106
+ function AIPromptFormComponentExtended_form_1_Conditional_61_Conditional_5_Conditional_9_Template(rf, ctx) { if (rf & 1) {
1107
+ i0.ɵɵelement(0, "i", 191);
897
1108
  } if (rf & 2) {
898
1109
  const ctx_r1 = i0.ɵɵnextContext(4);
899
1110
  i0.ɵɵclassMap("fa-solid fa-sort-" + (ctx_r1.historySortDirection === "asc" ? "up" : "down"));
900
1111
  } }
901
- function AIPromptFormComponentExtended_form_1_Conditional_60_Conditional_5_Conditional_12_Template(rf, ctx) { if (rf & 1) {
902
- i0.ɵɵelement(0, "i", 166);
1112
+ function AIPromptFormComponentExtended_form_1_Conditional_61_Conditional_5_Conditional_12_Template(rf, ctx) { if (rf & 1) {
1113
+ i0.ɵɵelement(0, "i", 191);
903
1114
  } if (rf & 2) {
904
1115
  const ctx_r1 = i0.ɵɵnextContext(4);
905
1116
  i0.ɵɵclassMap("fa-solid fa-sort-" + (ctx_r1.historySortDirection === "asc" ? "up" : "down"));
906
1117
  } }
907
- function AIPromptFormComponentExtended_form_1_Conditional_60_Conditional_5_Conditional_15_Template(rf, ctx) { if (rf & 1) {
908
- i0.ɵɵelement(0, "i", 166);
1118
+ function AIPromptFormComponentExtended_form_1_Conditional_61_Conditional_5_Conditional_15_Template(rf, ctx) { if (rf & 1) {
1119
+ i0.ɵɵelement(0, "i", 191);
909
1120
  } if (rf & 2) {
910
1121
  const ctx_r1 = i0.ɵɵnextContext(4);
911
1122
  i0.ɵɵclassMap("fa-solid fa-sort-" + (ctx_r1.historySortDirection === "asc" ? "up" : "down"));
912
1123
  } }
913
- function AIPromptFormComponentExtended_form_1_Conditional_60_Conditional_5_Conditional_18_Template(rf, ctx) { if (rf & 1) {
914
- i0.ɵɵelement(0, "i", 166);
1124
+ function AIPromptFormComponentExtended_form_1_Conditional_61_Conditional_5_Conditional_18_Template(rf, ctx) { if (rf & 1) {
1125
+ i0.ɵɵelement(0, "i", 191);
915
1126
  } if (rf & 2) {
916
1127
  const ctx_r1 = i0.ɵɵnextContext(4);
917
1128
  i0.ɵɵclassMap("fa-solid fa-sort-" + (ctx_r1.historySortDirection === "asc" ? "up" : "down"));
918
1129
  } }
919
- function AIPromptFormComponentExtended_form_1_Conditional_60_Conditional_5_For_41_Conditional_20_Template(rf, ctx) { if (rf & 1) {
920
- i0.ɵɵelementStart(0, "span", 173);
1130
+ function AIPromptFormComponentExtended_form_1_Conditional_61_Conditional_5_For_41_Conditional_20_Template(rf, ctx) { if (rf & 1) {
1131
+ i0.ɵɵelementStart(0, "span", 198);
921
1132
  i0.ɵɵtext(1);
922
1133
  i0.ɵɵelementEnd();
923
1134
  } if (rf & 2) {
924
- const run_r27 = i0.ɵɵnextContext().$implicit;
1135
+ const run_r28 = i0.ɵɵnextContext().$implicit;
925
1136
  i0.ɵɵadvance();
926
- i0.ɵɵtextInterpolate1(" ", run_r27.RunType, " ");
1137
+ i0.ɵɵtextInterpolate1(" ", run_r28.RunType, " ");
927
1138
  } }
928
- function AIPromptFormComponentExtended_form_1_Conditional_60_Conditional_5_For_41_Template(rf, ctx) { if (rf & 1) {
929
- const _r26 = i0.ɵɵgetCurrentView();
930
- i0.ɵɵelementStart(0, "tr", 167)(1, "td", 168)(2, "span", 169);
1139
+ function AIPromptFormComponentExtended_form_1_Conditional_61_Conditional_5_For_41_Template(rf, ctx) { if (rf & 1) {
1140
+ const _r27 = i0.ɵɵgetCurrentView();
1141
+ i0.ɵɵelementStart(0, "tr", 192)(1, "td", 193)(2, "span", 194);
931
1142
  i0.ɵɵelement(3, "i");
932
- i0.ɵɵelementStart(4, "span", 24);
1143
+ i0.ɵɵelementStart(4, "span", 23);
933
1144
  i0.ɵɵtext(5);
934
1145
  i0.ɵɵelementEnd()()();
935
- i0.ɵɵelementStart(6, "td", 170);
1146
+ i0.ɵɵelementStart(6, "td", 195);
936
1147
  i0.ɵɵtext(7);
937
1148
  i0.ɵɵpipe(8, "date");
938
1149
  i0.ɵɵelementEnd();
939
- i0.ɵɵelementStart(9, "td", 170)(10, "span", 169);
940
- i0.ɵɵelement(11, "i", 81);
1150
+ i0.ɵɵelementStart(9, "td", 195)(10, "span", 194);
1151
+ i0.ɵɵelement(11, "i", 110);
941
1152
  i0.ɵɵtext(12);
942
1153
  i0.ɵɵelementEnd()();
943
- i0.ɵɵelementStart(13, "td", 170);
1154
+ i0.ɵɵelementStart(13, "td", 195);
944
1155
  i0.ɵɵtext(14);
945
1156
  i0.ɵɵelementEnd();
946
- i0.ɵɵelementStart(15, "td", 171);
1157
+ i0.ɵɵelementStart(15, "td", 196);
947
1158
  i0.ɵɵtext(16);
948
1159
  i0.ɵɵelementEnd();
949
- i0.ɵɵelementStart(17, "td", 171);
1160
+ i0.ɵɵelementStart(17, "td", 196);
950
1161
  i0.ɵɵtext(18);
951
1162
  i0.ɵɵelementEnd();
952
- i0.ɵɵelementStart(19, "td", 172);
953
- i0.ɵɵtemplate(20, AIPromptFormComponentExtended_form_1_Conditional_60_Conditional_5_For_41_Conditional_20_Template, 2, 1, "span", 173);
1163
+ i0.ɵɵelementStart(19, "td", 197);
1164
+ i0.ɵɵtemplate(20, AIPromptFormComponentExtended_form_1_Conditional_61_Conditional_5_For_41_Conditional_20_Template, 2, 1, "span", 198);
954
1165
  i0.ɵɵelementEnd();
955
- i0.ɵɵelementStart(21, "td", 172)(22, "kendo-button", 174);
956
- i0.ɵɵlistener("click", function AIPromptFormComponentExtended_form_1_Conditional_60_Conditional_5_For_41_Template_kendo_button_click_22_listener() { const run_r27 = i0.ɵɵrestoreView(_r26).$implicit; const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.navigateToPromptRun(run_r27.ID)); });
957
- i0.ɵɵelement(23, "i", 175);
1166
+ i0.ɵɵelementStart(21, "td", 197)(22, "button", 199);
1167
+ i0.ɵɵlistener("click", function AIPromptFormComponentExtended_form_1_Conditional_61_Conditional_5_For_41_Template_button_click_22_listener() { const run_r28 = i0.ɵɵrestoreView(_r27).$implicit; const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.navigateToPromptRun(run_r28.ID)); });
1168
+ i0.ɵɵelement(23, "i", 200);
958
1169
  i0.ɵɵelementEnd()()();
959
1170
  } if (rf & 2) {
960
- const run_r27 = ctx.$implicit;
961
- const ɵ$index_654_r28 = ctx.$index;
1171
+ const run_r28 = ctx.$implicit;
1172
+ const ɵ$index_790_r29 = ctx.$index;
962
1173
  const ctx_r1 = i0.ɵɵnextContext(4);
963
- i0.ɵɵclassProp("even-row", ɵ$index_654_r28 % 2 === 0);
1174
+ i0.ɵɵclassProp("even-row", ɵ$index_790_r29 % 2 === 0);
964
1175
  i0.ɵɵadvance(3);
965
- i0.ɵɵclassMap("fa-solid " + ctx_r1.getExecutionStatusIcon(run_r27.Success));
966
- i0.ɵɵstyleProp("color", ctx_r1.getExecutionStatusColor(run_r27.Success));
1176
+ i0.ɵɵclassMap("fa-solid " + ctx_r1.getExecutionStatusIcon(run_r28.Success));
1177
+ i0.ɵɵstyleProp("color", ctx_r1.getExecutionStatusColor(run_r28.Success));
967
1178
  i0.ɵɵadvance();
968
- i0.ɵɵstyleProp("color", ctx_r1.getExecutionStatusColor(run_r27.Success));
1179
+ i0.ɵɵstyleProp("color", ctx_r1.getExecutionStatusColor(run_r28.Success));
969
1180
  i0.ɵɵadvance();
970
- i0.ɵɵtextInterpolate1(" ", run_r27.Success === true ? "Success" : run_r27.Success === false ? "Failed" : "Running", " ");
1181
+ i0.ɵɵtextInterpolate1(" ", run_r28.Success === true ? "Success" : run_r28.Success === false ? "Failed" : "Running", " ");
971
1182
  i0.ɵɵadvance(2);
972
- i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind2(8, 15, run_r27.RunAt, "short"), " ");
1183
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind2(8, 15, run_r28.RunAt, "short"), " ");
973
1184
  i0.ɵɵadvance(5);
974
- i0.ɵɵtextInterpolate1(" ", run_r27.Model || "Unknown", " ");
1185
+ i0.ɵɵtextInterpolate1(" ", run_r28.Model || "Unknown", " ");
975
1186
  i0.ɵɵadvance(2);
976
- i0.ɵɵtextInterpolate1(" ", ctx_r1.formatDuration(run_r27.ExecutionTimeMS), " ");
1187
+ i0.ɵɵtextInterpolate1(" ", ctx_r1.formatDuration(run_r28.ExecutionTimeMS), " ");
977
1188
  i0.ɵɵadvance(2);
978
- i0.ɵɵtextInterpolate1(" ", ctx_r1.formatTokens(run_r27.TokensUsed), " ");
1189
+ i0.ɵɵtextInterpolate1(" ", ctx_r1.formatTokens(run_r28.TokensUsed), " ");
979
1190
  i0.ɵɵadvance(2);
980
- i0.ɵɵtextInterpolate1(" ", ctx_r1.formatCost(run_r27.TotalCost || run_r27.Cost), " ");
1191
+ i0.ɵɵtextInterpolate1(" ", ctx_r1.formatCost(run_r28.TotalCost || run_r28.Cost), " ");
981
1192
  i0.ɵɵadvance(2);
982
- i0.ɵɵconditional(run_r27.RunType ? 20 : -1);
1193
+ i0.ɵɵconditional(run_r28.RunType ? 20 : -1);
983
1194
  } }
984
- function AIPromptFormComponentExtended_form_1_Conditional_60_Conditional_5_Template(rf, ctx) { if (rf & 1) {
985
- const _r25 = i0.ɵɵgetCurrentView();
986
- i0.ɵɵelementStart(0, "div", 153)(1, "div", 119);
1195
+ function AIPromptFormComponentExtended_form_1_Conditional_61_Conditional_5_Template(rf, ctx) { if (rf & 1) {
1196
+ const _r26 = i0.ɵɵgetCurrentView();
1197
+ i0.ɵɵelementStart(0, "div", 179)(1, "div", 145);
987
1198
  i0.ɵɵtext(2);
988
1199
  i0.ɵɵelementEnd();
989
- i0.ɵɵelementStart(3, "div", 154)(4, "span", 155);
1200
+ i0.ɵɵelementStart(3, "div", 180)(4, "span", 99);
990
1201
  i0.ɵɵtext(5, "Sort by:");
991
1202
  i0.ɵɵelementEnd();
992
- i0.ɵɵelementStart(6, "kendo-buttongroup", 156)(7, "button", 157);
993
- i0.ɵɵlistener("click", function AIPromptFormComponentExtended_form_1_Conditional_60_Conditional_5_Template_button_click_7_listener() { i0.ɵɵrestoreView(_r25); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.changeHistorySort("runAt")); });
1203
+ i0.ɵɵelementStart(6, "kendo-buttongroup", 181)(7, "button", 182);
1204
+ i0.ɵɵlistener("click", function AIPromptFormComponentExtended_form_1_Conditional_61_Conditional_5_Template_button_click_7_listener() { i0.ɵɵrestoreView(_r26); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.changeHistorySort("runAt")); });
994
1205
  i0.ɵɵtext(8, " Date ");
995
- i0.ɵɵtemplate(9, AIPromptFormComponentExtended_form_1_Conditional_60_Conditional_5_Conditional_9_Template, 1, 2, "i", 158);
1206
+ i0.ɵɵtemplate(9, AIPromptFormComponentExtended_form_1_Conditional_61_Conditional_5_Conditional_9_Template, 1, 2, "i", 183);
996
1207
  i0.ɵɵelementEnd();
997
- i0.ɵɵelementStart(10, "button", 157);
998
- i0.ɵɵlistener("click", function AIPromptFormComponentExtended_form_1_Conditional_60_Conditional_5_Template_button_click_10_listener() { i0.ɵɵrestoreView(_r25); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.changeHistorySort("executionTime")); });
1208
+ i0.ɵɵelementStart(10, "button", 182);
1209
+ i0.ɵɵlistener("click", function AIPromptFormComponentExtended_form_1_Conditional_61_Conditional_5_Template_button_click_10_listener() { i0.ɵɵrestoreView(_r26); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.changeHistorySort("executionTime")); });
999
1210
  i0.ɵɵtext(11, " Duration ");
1000
- i0.ɵɵtemplate(12, AIPromptFormComponentExtended_form_1_Conditional_60_Conditional_5_Conditional_12_Template, 1, 2, "i", 158);
1211
+ i0.ɵɵtemplate(12, AIPromptFormComponentExtended_form_1_Conditional_61_Conditional_5_Conditional_12_Template, 1, 2, "i", 183);
1001
1212
  i0.ɵɵelementEnd();
1002
- i0.ɵɵelementStart(13, "button", 157);
1003
- i0.ɵɵlistener("click", function AIPromptFormComponentExtended_form_1_Conditional_60_Conditional_5_Template_button_click_13_listener() { i0.ɵɵrestoreView(_r25); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.changeHistorySort("tokens")); });
1213
+ i0.ɵɵelementStart(13, "button", 182);
1214
+ i0.ɵɵlistener("click", function AIPromptFormComponentExtended_form_1_Conditional_61_Conditional_5_Template_button_click_13_listener() { i0.ɵɵrestoreView(_r26); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.changeHistorySort("tokens")); });
1004
1215
  i0.ɵɵtext(14, " Tokens ");
1005
- i0.ɵɵtemplate(15, AIPromptFormComponentExtended_form_1_Conditional_60_Conditional_5_Conditional_15_Template, 1, 2, "i", 158);
1216
+ i0.ɵɵtemplate(15, AIPromptFormComponentExtended_form_1_Conditional_61_Conditional_5_Conditional_15_Template, 1, 2, "i", 183);
1006
1217
  i0.ɵɵelementEnd();
1007
- i0.ɵɵelementStart(16, "button", 157);
1008
- i0.ɵɵlistener("click", function AIPromptFormComponentExtended_form_1_Conditional_60_Conditional_5_Template_button_click_16_listener() { i0.ɵɵrestoreView(_r25); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.changeHistorySort("cost")); });
1218
+ i0.ɵɵelementStart(16, "button", 182);
1219
+ i0.ɵɵlistener("click", function AIPromptFormComponentExtended_form_1_Conditional_61_Conditional_5_Template_button_click_16_listener() { i0.ɵɵrestoreView(_r26); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.changeHistorySort("cost")); });
1009
1220
  i0.ɵɵtext(17, " Cost ");
1010
- i0.ɵɵtemplate(18, AIPromptFormComponentExtended_form_1_Conditional_60_Conditional_5_Conditional_18_Template, 1, 2, "i", 158);
1221
+ i0.ɵɵtemplate(18, AIPromptFormComponentExtended_form_1_Conditional_61_Conditional_5_Conditional_18_Template, 1, 2, "i", 183);
1011
1222
  i0.ɵɵelementEnd()()()();
1012
- i0.ɵɵelementStart(19, "div", 159)(20, "table", 160)(21, "thead")(22, "tr", 161)(23, "th", 162);
1223
+ i0.ɵɵelementStart(19, "div", 184)(20, "table", 185)(21, "thead")(22, "tr", 186)(23, "th", 187);
1013
1224
  i0.ɵɵtext(24, "Status");
1014
1225
  i0.ɵɵelementEnd();
1015
- i0.ɵɵelementStart(25, "th", 162);
1226
+ i0.ɵɵelementStart(25, "th", 187);
1016
1227
  i0.ɵɵtext(26, "Date & Time");
1017
1228
  i0.ɵɵelementEnd();
1018
- i0.ɵɵelementStart(27, "th", 162);
1229
+ i0.ɵɵelementStart(27, "th", 187);
1019
1230
  i0.ɵɵtext(28, "Model");
1020
1231
  i0.ɵɵelementEnd();
1021
- i0.ɵɵelementStart(29, "th", 162);
1232
+ i0.ɵɵelementStart(29, "th", 187);
1022
1233
  i0.ɵɵtext(30, "Duration");
1023
1234
  i0.ɵɵelementEnd();
1024
- i0.ɵɵelementStart(31, "th", 163);
1235
+ i0.ɵɵelementStart(31, "th", 188);
1025
1236
  i0.ɵɵtext(32, "Tokens");
1026
1237
  i0.ɵɵelementEnd();
1027
- i0.ɵɵelementStart(33, "th", 163);
1238
+ i0.ɵɵelementStart(33, "th", 188);
1028
1239
  i0.ɵɵtext(34, "Cost");
1029
1240
  i0.ɵɵelementEnd();
1030
- i0.ɵɵelementStart(35, "th", 164);
1241
+ i0.ɵɵelementStart(35, "th", 189);
1031
1242
  i0.ɵɵtext(36, "Type");
1032
1243
  i0.ɵɵelementEnd();
1033
- i0.ɵɵelementStart(37, "th", 164);
1244
+ i0.ɵɵelementStart(37, "th", 189);
1034
1245
  i0.ɵɵtext(38, "Actions");
1035
1246
  i0.ɵɵelementEnd()()();
1036
1247
  i0.ɵɵelementStart(39, "tbody");
1037
- i0.ɵɵrepeaterCreate(40, AIPromptFormComponentExtended_form_1_Conditional_60_Conditional_5_For_41_Template, 24, 18, "tr", 165, _forTrack1);
1248
+ i0.ɵɵrepeaterCreate(40, AIPromptFormComponentExtended_form_1_Conditional_61_Conditional_5_For_41_Template, 24, 18, "tr", 190, _forTrack0);
1038
1249
  i0.ɵɵelementEnd()()();
1039
1250
  } if (rf & 2) {
1040
1251
  const ctx_r1 = i0.ɵɵnextContext(3);
@@ -1059,11 +1270,11 @@ function AIPromptFormComponentExtended_form_1_Conditional_60_Conditional_5_Templ
1059
1270
  i0.ɵɵadvance(22);
1060
1271
  i0.ɵɵrepeater(ctx_r1.executionHistory);
1061
1272
  } }
1062
- function AIPromptFormComponentExtended_form_1_Conditional_60_Template(rf, ctx) { if (rf & 1) {
1063
- i0.ɵɵelementStart(0, "kendo-expansionpanel", 30);
1064
- i0.ɵɵtemplate(1, AIPromptFormComponentExtended_form_1_Conditional_60_ng_template_1_Template, 4, 1, "ng-template", 31);
1065
- i0.ɵɵelementStart(2, "div", 141);
1066
- i0.ɵɵtemplate(3, AIPromptFormComponentExtended_form_1_Conditional_60_Conditional_3_Template, 4, 0, "div", 148)(4, AIPromptFormComponentExtended_form_1_Conditional_60_Conditional_4_Template, 6, 0, "div", 148)(5, AIPromptFormComponentExtended_form_1_Conditional_60_Conditional_5_Template, 42, 9);
1273
+ function AIPromptFormComponentExtended_form_1_Conditional_61_Template(rf, ctx) { if (rf & 1) {
1274
+ i0.ɵɵelementStart(0, "kendo-expansionpanel", 29);
1275
+ i0.ɵɵtemplate(1, AIPromptFormComponentExtended_form_1_Conditional_61_ng_template_1_Template, 4, 1, "ng-template", 30);
1276
+ i0.ɵɵelementStart(2, "div", 167);
1277
+ i0.ɵɵtemplate(3, AIPromptFormComponentExtended_form_1_Conditional_61_Conditional_3_Template, 4, 0, "div", 174)(4, AIPromptFormComponentExtended_form_1_Conditional_61_Conditional_4_Template, 6, 0, "div", 174)(5, AIPromptFormComponentExtended_form_1_Conditional_61_Conditional_5_Template, 42, 9);
1067
1278
  i0.ɵɵelementEnd()();
1068
1279
  } if (rf & 2) {
1069
1280
  const ctx_r1 = i0.ɵɵnextContext(2);
@@ -1071,105 +1282,105 @@ function AIPromptFormComponentExtended_form_1_Conditional_60_Template(rf, ctx) {
1071
1282
  i0.ɵɵadvance(3);
1072
1283
  i0.ɵɵconditional(ctx_r1.isLoadingHistory ? 3 : ctx_r1.executionHistory.length === 0 ? 4 : 5);
1073
1284
  } }
1074
- function AIPromptFormComponentExtended_form_1_Conditional_61_ng_template_1_Template(rf, ctx) { if (rf & 1) {
1075
- i0.ɵɵelementStart(0, "span", 63);
1076
- i0.ɵɵelement(1, "i", 177);
1285
+ function AIPromptFormComponentExtended_form_1_Conditional_62_ng_template_1_Template(rf, ctx) { if (rf & 1) {
1286
+ i0.ɵɵelementStart(0, "span", 62);
1287
+ i0.ɵɵelement(1, "i", 202);
1077
1288
  i0.ɵɵtext(2, " Result Cache ");
1078
1289
  i0.ɵɵelementEnd();
1079
1290
  } }
1080
- function AIPromptFormComponentExtended_form_1_Conditional_61_Template(rf, ctx) { if (rf & 1) {
1081
- i0.ɵɵelementStart(0, "kendo-expansionpanel", 30);
1082
- i0.ɵɵtemplate(1, AIPromptFormComponentExtended_form_1_Conditional_61_ng_template_1_Template, 3, 0, "ng-template", 31);
1083
- i0.ɵɵelementStart(2, "div", 37);
1084
- i0.ɵɵelement(3, "mj-user-view-grid", 176);
1291
+ function AIPromptFormComponentExtended_form_1_Conditional_62_Template(rf, ctx) { if (rf & 1) {
1292
+ i0.ɵɵelementStart(0, "kendo-expansionpanel", 29);
1293
+ i0.ɵɵtemplate(1, AIPromptFormComponentExtended_form_1_Conditional_62_ng_template_1_Template, 3, 0, "ng-template", 30);
1294
+ i0.ɵɵelementStart(2, "div", 36);
1295
+ i0.ɵɵelement(3, "mj-user-view-grid", 201);
1085
1296
  i0.ɵɵelementEnd()();
1086
1297
  } if (rf & 2) {
1087
1298
  const ctx_r1 = i0.ɵɵnextContext(2);
1088
1299
  i0.ɵɵproperty("expanded", false);
1089
1300
  i0.ɵɵadvance(3);
1090
- i0.ɵɵproperty("Params", ctx_r1.BuildRelationshipViewParamsByEntityName("AI Result Cache", "AIPromptID"))("NewRecordValues", ctx_r1.NewRecordValues("AI Result Cache"))("AllowLoad", true)("EditMode", ctx_r1.GridEditMode())("BottomMargin", 0);
1301
+ i0.ɵɵproperty("Params", ctx_r1.BuildRelationshipViewParamsByEntityName("AI Result Cache", "AIPromptID"))("NewRecordValues", ctx_r1.NewRecordValues("AI Result Cache"))("AllowLoad", true)("EditMode", ctx_r1.GridEditMode());
1091
1302
  } }
1092
- function AIPromptFormComponentExtended_form_1_Conditional_62_ng_template_1_Template(rf, ctx) { if (rf & 1) {
1093
- i0.ɵɵelementStart(0, "span", 63);
1094
- i0.ɵɵelement(1, "i", 180);
1303
+ function AIPromptFormComponentExtended_form_1_Conditional_63_ng_template_1_Template(rf, ctx) { if (rf & 1) {
1304
+ i0.ɵɵelementStart(0, "span", 62);
1305
+ i0.ɵɵelement(1, "i", 205);
1095
1306
  i0.ɵɵtext(2, " Related Items ");
1096
1307
  i0.ɵɵelementEnd();
1097
1308
  } }
1098
- function AIPromptFormComponentExtended_form_1_Conditional_62_Template(rf, ctx) { if (rf & 1) {
1099
- i0.ɵɵelementStart(0, "kendo-expansionpanel", 30);
1100
- i0.ɵɵtemplate(1, AIPromptFormComponentExtended_form_1_Conditional_62_ng_template_1_Template, 3, 0, "ng-template", 31);
1101
- i0.ɵɵelementStart(2, "div", 37)(3, "div", 38)(4, "div")(5, "h6", 178);
1309
+ function AIPromptFormComponentExtended_form_1_Conditional_63_Template(rf, ctx) { if (rf & 1) {
1310
+ i0.ɵɵelementStart(0, "kendo-expansionpanel", 29);
1311
+ i0.ɵɵtemplate(1, AIPromptFormComponentExtended_form_1_Conditional_63_ng_template_1_Template, 3, 0, "ng-template", 30);
1312
+ i0.ɵɵelementStart(2, "div", 36)(3, "div", 37)(4, "div")(5, "h6", 203);
1102
1313
  i0.ɵɵtext(6, "AI Agents Using This Prompt");
1103
1314
  i0.ɵɵelementEnd();
1104
- i0.ɵɵelement(7, "mj-user-view-grid", 179);
1315
+ i0.ɵɵelement(7, "mj-user-view-grid", 204);
1105
1316
  i0.ɵɵelementEnd();
1106
- i0.ɵɵelementStart(8, "div")(9, "h6", 178);
1317
+ i0.ɵɵelementStart(8, "div")(9, "h6", 203);
1107
1318
  i0.ɵɵtext(10, "Prompts Using This as Result Selector");
1108
1319
  i0.ɵɵelementEnd();
1109
- i0.ɵɵelement(11, "mj-user-view-grid", 179);
1320
+ i0.ɵɵelement(11, "mj-user-view-grid", 204);
1110
1321
  i0.ɵɵelementEnd()()()();
1111
1322
  } if (rf & 2) {
1112
1323
  const ctx_r1 = i0.ɵɵnextContext(2);
1113
1324
  i0.ɵɵproperty("expanded", false);
1114
1325
  i0.ɵɵadvance(7);
1115
- i0.ɵɵproperty("Params", ctx_r1.BuildRelationshipViewParamsByEntityName("MJ: AI Agent Prompts", "PromptID"))("NewRecordValues", ctx_r1.NewRecordValues("MJ: AI Agent Prompts"))("AllowLoad", true)("EditMode", ctx_r1.GridEditMode())("BottomMargin", 0);
1326
+ i0.ɵɵproperty("Params", ctx_r1.BuildRelationshipViewParamsByEntityName("MJ: AI Agent Prompts", "PromptID"))("NewRecordValues", ctx_r1.NewRecordValues("MJ: AI Agent Prompts"))("AllowLoad", true)("EditMode", ctx_r1.GridEditMode());
1116
1327
  i0.ɵɵadvance(4);
1117
- i0.ɵɵproperty("Params", ctx_r1.BuildRelationshipViewParamsByEntityName("AI Prompts", "ResultSelectorPromptID"))("NewRecordValues", ctx_r1.NewRecordValues("AI Prompts"))("AllowLoad", true)("EditMode", ctx_r1.GridEditMode())("BottomMargin", 0);
1328
+ i0.ɵɵproperty("Params", ctx_r1.BuildRelationshipViewParamsByEntityName("AI Prompts", "ResultSelectorPromptID"))("NewRecordValues", ctx_r1.NewRecordValues("AI Prompts"))("AllowLoad", true)("EditMode", ctx_r1.GridEditMode());
1118
1329
  } }
1119
1330
  function AIPromptFormComponentExtended_form_1_Template(rf, ctx) { if (rf & 1) {
1120
- i0.ɵɵelementStart(0, "form", 6, 0);
1121
- i0.ɵɵelement(2, "mj-form-toolbar", 7);
1122
- i0.ɵɵelementStart(3, "div", 8)(4, "div", 9)(5, "div", 10)(6, "div", 11)(7, "div", 12);
1123
- i0.ɵɵelement(8, "i", 13);
1124
- i0.ɵɵtemplate(9, AIPromptFormComponentExtended_form_1_Conditional_9_Template, 1, 1, "kendo-textbox", 14)(10, AIPromptFormComponentExtended_form_1_Conditional_10_Template, 4, 4);
1125
- i0.ɵɵelementEnd();
1126
- i0.ɵɵtemplate(11, AIPromptFormComponentExtended_form_1_Conditional_11_Template, 12, 11, "div", 15)(12, AIPromptFormComponentExtended_form_1_Conditional_12_Template, 1, 2, "kendo-textarea", 16)(13, AIPromptFormComponentExtended_form_1_Conditional_13_Template, 2, 1, "p", 17);
1127
- i0.ɵɵelementStart(14, "div", 18);
1128
- i0.ɵɵtemplate(15, AIPromptFormComponentExtended_form_1_Conditional_15_Template, 6, 1, "div", 19);
1129
- i0.ɵɵelementStart(16, "div", 19);
1130
- i0.ɵɵelement(17, "i", 20);
1131
- i0.ɵɵelementStart(18, "span", 21);
1331
+ i0.ɵɵelementStart(0, "form", 5, 0);
1332
+ i0.ɵɵelement(2, "mj-form-toolbar", 6);
1333
+ i0.ɵɵelementStart(3, "div", 7)(4, "div", 8)(5, "div", 9)(6, "div", 10)(7, "div", 11);
1334
+ i0.ɵɵelement(8, "i", 12);
1335
+ i0.ɵɵtemplate(9, AIPromptFormComponentExtended_form_1_Conditional_9_Template, 1, 1, "kendo-textbox", 13)(10, AIPromptFormComponentExtended_form_1_Conditional_10_Template, 4, 4);
1336
+ i0.ɵɵelementEnd();
1337
+ i0.ɵɵtemplate(11, AIPromptFormComponentExtended_form_1_Conditional_11_Template, 12, 11, "div", 14)(12, AIPromptFormComponentExtended_form_1_Conditional_12_Template, 1, 2, "kendo-textarea", 15)(13, AIPromptFormComponentExtended_form_1_Conditional_13_Template, 2, 1, "p", 16);
1338
+ i0.ɵɵelementStart(14, "div", 17);
1339
+ i0.ɵɵtemplate(15, AIPromptFormComponentExtended_form_1_Conditional_15_Template, 6, 1, "div", 18);
1340
+ i0.ɵɵelementStart(16, "div", 18);
1341
+ i0.ɵɵelement(17, "i", 19);
1342
+ i0.ɵɵelementStart(18, "span", 20);
1132
1343
  i0.ɵɵtext(19, "Parallelization:");
1133
1344
  i0.ɵɵelementEnd();
1134
- i0.ɵɵelementStart(20, "span", 22);
1345
+ i0.ɵɵelementStart(20, "span", 21);
1135
1346
  i0.ɵɵtext(21);
1136
1347
  i0.ɵɵelementEnd()();
1137
- i0.ɵɵelementStart(22, "div", 19);
1138
- i0.ɵɵelement(23, "i", 23);
1139
- i0.ɵɵelementStart(24, "span", 21);
1348
+ i0.ɵɵelementStart(22, "div", 18);
1349
+ i0.ɵɵelement(23, "i", 22);
1350
+ i0.ɵɵelementStart(24, "span", 20);
1140
1351
  i0.ɵɵtext(25, "Output:");
1141
1352
  i0.ɵɵelementEnd();
1142
- i0.ɵɵelementStart(26, "span", 24);
1353
+ i0.ɵɵelementStart(26, "span", 23);
1143
1354
  i0.ɵɵtext(27);
1144
1355
  i0.ɵɵelementEnd()();
1145
- i0.ɵɵtemplate(28, AIPromptFormComponentExtended_form_1_Conditional_28_Template, 4, 0, "div", 19);
1356
+ i0.ɵɵtemplate(28, AIPromptFormComponentExtended_form_1_Conditional_28_Template, 4, 0, "div", 18);
1146
1357
  i0.ɵɵelementEnd()();
1147
- i0.ɵɵelementStart(29, "div", 25)(30, "div", 26);
1148
- i0.ɵɵtemplate(31, AIPromptFormComponentExtended_form_1_Conditional_31_Template, 3, 0, "kendo-button", 27);
1358
+ i0.ɵɵelementStart(29, "div", 24)(30, "div", 25);
1359
+ i0.ɵɵtemplate(31, AIPromptFormComponentExtended_form_1_Conditional_31_Template, 3, 2, "button", 26);
1149
1360
  i0.ɵɵelementEnd();
1150
- i0.ɵɵtemplate(32, AIPromptFormComponentExtended_form_1_Conditional_32_Template, 4, 3, "div", 28);
1361
+ i0.ɵɵtemplate(32, AIPromptFormComponentExtended_form_1_Conditional_32_Template, 4, 3, "div", 27);
1151
1362
  i0.ɵɵelementEnd()()();
1152
- i0.ɵɵelementStart(33, "div", 29)(34, "kendo-expansionpanel", 30);
1153
- i0.ɵɵtemplate(35, AIPromptFormComponentExtended_form_1_ng_template_35_Template, 4, 1, "ng-template", 31);
1154
- i0.ɵɵelementStart(36, "div", 32);
1155
- i0.ɵɵtemplate(37, AIPromptFormComponentExtended_form_1_Conditional_37_Template, 3, 0, "div", 33)(38, AIPromptFormComponentExtended_form_1_Conditional_38_Template, 13, 0, "div", 34)(39, AIPromptFormComponentExtended_form_1_Conditional_39_Template, 13, 0, "div", 35)(40, AIPromptFormComponentExtended_form_1_Conditional_40_Template, 4, 2, "div", 36);
1363
+ i0.ɵɵelementStart(33, "div", 28)(34, "kendo-expansionpanel", 29);
1364
+ i0.ɵɵtemplate(35, AIPromptFormComponentExtended_form_1_ng_template_35_Template, 4, 1, "ng-template", 30);
1365
+ i0.ɵɵelementStart(36, "div", 31);
1366
+ i0.ɵɵtemplate(37, AIPromptFormComponentExtended_form_1_Conditional_37_Template, 3, 0, "div", 32)(38, AIPromptFormComponentExtended_form_1_Conditional_38_Template, 13, 2, "div", 33)(39, AIPromptFormComponentExtended_form_1_Conditional_39_Template, 13, 2, "div", 34)(40, AIPromptFormComponentExtended_form_1_Conditional_40_Template, 4, 2, "div", 35);
1156
1367
  i0.ɵɵelementEnd()();
1157
- i0.ɵɵtemplate(41, AIPromptFormComponentExtended_form_1_Conditional_41_Template, 6, 2, "kendo-expansionpanel", 30);
1158
- i0.ɵɵelementStart(42, "kendo-expansionpanel", 30);
1159
- i0.ɵɵtemplate(43, AIPromptFormComponentExtended_form_1_ng_template_43_Template, 3, 0, "ng-template", 31);
1160
- i0.ɵɵelementStart(44, "div", 37)(45, "div", 38)(46, "div");
1161
- i0.ɵɵelement(47, "mj-form-field", 39);
1162
- i0.ɵɵtemplate(48, AIPromptFormComponentExtended_form_1_Conditional_48_Template, 1, 3, "mj-form-field", 40)(49, AIPromptFormComponentExtended_form_1_Conditional_49_Template, 1, 3, "mj-form-field", 41);
1163
- i0.ɵɵelement(50, "mj-form-field", 42);
1164
- i0.ɵɵelementEnd();
1165
- i0.ɵɵelementStart(51, "div");
1166
- i0.ɵɵelement(52, "mj-form-field", 43)(53, "mj-form-field", 44);
1167
- i0.ɵɵelementStart(54, "div", 45)(55, "label", 46);
1168
- i0.ɵɵtext(56, " Result Selector Prompt ");
1169
- i0.ɵɵelementEnd();
1170
- i0.ɵɵtemplate(57, AIPromptFormComponentExtended_form_1_Conditional_57_Template, 2, 1)(58, AIPromptFormComponentExtended_form_1_Conditional_58_Template, 2, 1, "span", 47);
1368
+ i0.ɵɵtemplate(41, AIPromptFormComponentExtended_form_1_Conditional_41_Template, 6, 2, "kendo-expansionpanel", 29)(42, AIPromptFormComponentExtended_form_1_Conditional_42_Template, 6, 2, "kendo-expansionpanel", 29);
1369
+ i0.ɵɵelementStart(43, "kendo-expansionpanel", 29);
1370
+ i0.ɵɵtemplate(44, AIPromptFormComponentExtended_form_1_ng_template_44_Template, 3, 0, "ng-template", 30);
1371
+ i0.ɵɵelementStart(45, "div", 36)(46, "div", 37)(47, "div");
1372
+ i0.ɵɵelement(48, "mj-form-field", 38);
1373
+ i0.ɵɵtemplate(49, AIPromptFormComponentExtended_form_1_Conditional_49_Template, 1, 3, "mj-form-field", 39)(50, AIPromptFormComponentExtended_form_1_Conditional_50_Template, 1, 3, "mj-form-field", 40);
1374
+ i0.ɵɵelement(51, "mj-form-field", 41);
1375
+ i0.ɵɵelementEnd();
1376
+ i0.ɵɵelementStart(52, "div");
1377
+ i0.ɵɵelement(53, "mj-form-field", 42)(54, "mj-form-field", 43);
1378
+ i0.ɵɵelementStart(55, "div", 44)(56, "label", 45);
1379
+ i0.ɵɵtext(57, " Result Selector Prompt ");
1380
+ i0.ɵɵelementEnd();
1381
+ i0.ɵɵtemplate(58, AIPromptFormComponentExtended_form_1_Conditional_58_Template, 2, 1)(59, AIPromptFormComponentExtended_form_1_Conditional_59_Template, 2, 1, "span", 46);
1171
1382
  i0.ɵɵelementEnd()()()()();
1172
- i0.ɵɵtemplate(59, AIPromptFormComponentExtended_form_1_Conditional_59_Template, 6, 2, "kendo-expansionpanel", 30)(60, AIPromptFormComponentExtended_form_1_Conditional_60_Template, 6, 2, "kendo-expansionpanel", 30)(61, AIPromptFormComponentExtended_form_1_Conditional_61_Template, 4, 6, "kendo-expansionpanel", 30)(62, AIPromptFormComponentExtended_form_1_Conditional_62_Template, 12, 11, "kendo-expansionpanel", 30);
1383
+ i0.ɵɵtemplate(60, AIPromptFormComponentExtended_form_1_Conditional_60_Template, 6, 2, "kendo-expansionpanel", 29)(61, AIPromptFormComponentExtended_form_1_Conditional_61_Template, 6, 2, "kendo-expansionpanel", 29)(62, AIPromptFormComponentExtended_form_1_Conditional_62_Template, 4, 5, "kendo-expansionpanel", 29)(63, AIPromptFormComponentExtended_form_1_Conditional_63_Template, 12, 9, "kendo-expansionpanel", 29);
1173
1384
  i0.ɵɵelementEnd()()();
1174
1385
  } if (rf & 2) {
1175
1386
  const ctx_r1 = i0.ɵɵnextContext();
@@ -1200,15 +1411,17 @@ function AIPromptFormComponentExtended_form_1_Template(rf, ctx) { if (rf & 1) {
1200
1411
  i0.ɵɵadvance(3);
1201
1412
  i0.ɵɵconditional(ctx_r1.isLoadingTemplate ? 37 : !ctx_r1.record.TemplateID ? 38 : ctx_r1.templateNotFoundInDatabase ? 39 : 40);
1202
1413
  i0.ɵɵadvance(4);
1203
- i0.ɵɵconditional(ctx_r1.record.IsSaved ? 41 : -1);
1414
+ i0.ɵɵconditional(ctx_r1.template && ctx_r1.templateParams.length > 0 ? 41 : -1);
1415
+ i0.ɵɵadvance();
1416
+ i0.ɵɵconditional(ctx_r1.record.IsSaved ? 42 : -1);
1204
1417
  i0.ɵɵadvance();
1205
1418
  i0.ɵɵproperty("expanded", false);
1206
1419
  i0.ɵɵadvance(5);
1207
1420
  i0.ɵɵproperty("record", ctx_r1.record)("ShowLabel", true)("EditMode", ctx_r1.EditMode);
1208
1421
  i0.ɵɵadvance();
1209
- i0.ɵɵconditional(ctx_r1.showParallelCount ? 48 : -1);
1422
+ i0.ɵɵconditional(ctx_r1.showParallelCount ? 49 : -1);
1210
1423
  i0.ɵɵadvance();
1211
- i0.ɵɵconditional(ctx_r1.showParallelConfigParam ? 49 : -1);
1424
+ i0.ɵɵconditional(ctx_r1.showParallelConfigParam ? 50 : -1);
1212
1425
  i0.ɵɵadvance();
1213
1426
  i0.ɵɵproperty("record", ctx_r1.record)("ShowLabel", true)("EditMode", ctx_r1.EditMode);
1214
1427
  i0.ɵɵadvance(2);
@@ -1216,22 +1429,22 @@ function AIPromptFormComponentExtended_form_1_Template(rf, ctx) { if (rf & 1) {
1216
1429
  i0.ɵɵadvance();
1217
1430
  i0.ɵɵproperty("record", ctx_r1.record)("ShowLabel", true)("EditMode", ctx_r1.EditMode);
1218
1431
  i0.ɵɵadvance(4);
1219
- i0.ɵɵconditional(ctx_r1.EditMode ? 57 : 58);
1432
+ i0.ɵɵconditional(ctx_r1.EditMode ? 58 : 59);
1220
1433
  i0.ɵɵadvance(2);
1221
- i0.ɵɵconditional(ctx_r1.showOutputExample ? 59 : -1);
1434
+ i0.ɵɵconditional(ctx_r1.showOutputExample ? 60 : -1);
1222
1435
  i0.ɵɵadvance();
1223
- i0.ɵɵconditional(ctx_r1.record.IsSaved ? 60 : -1);
1436
+ i0.ɵɵconditional(ctx_r1.record.IsSaved ? 61 : -1);
1224
1437
  i0.ɵɵadvance();
1225
- i0.ɵɵconditional(ctx_r1.record.IsSaved && ctx_r1.record.EnableCaching ? 61 : -1);
1438
+ i0.ɵɵconditional(ctx_r1.record.IsSaved && ctx_r1.record.EnableCaching ? 62 : -1);
1226
1439
  i0.ɵɵadvance();
1227
- i0.ɵɵconditional(ctx_r1.record.IsSaved ? 62 : -1);
1228
- } }
1229
- function AIPromptFormComponentExtended_Conditional_3_Template(rf, ctx) { if (rf & 1) {
1230
- const _r29 = i0.ɵɵgetCurrentView();
1231
- i0.ɵɵelementStart(0, "kendo-window", 181);
1232
- i0.ɵɵlistener("close", function AIPromptFormComponentExtended_Conditional_3_Template_kendo_window_close_0_listener() { i0.ɵɵrestoreView(_r29); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onTestHarnessVisibilityChanged(false)); });
1233
- i0.ɵɵelementStart(1, "mj-ai-test-harness", 182);
1234
- i0.ɵɵlistener("visibilityChange", function AIPromptFormComponentExtended_Conditional_3_Template_mj_ai_test_harness_visibilityChange_1_listener($event) { i0.ɵɵrestoreView(_r29); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onTestHarnessVisibilityChanged($event)); });
1440
+ i0.ɵɵconditional(ctx_r1.record.IsSaved ? 63 : -1);
1441
+ } }
1442
+ function AIPromptFormComponentExtended_Conditional_2_Template(rf, ctx) { if (rf & 1) {
1443
+ const _r30 = i0.ɵɵgetCurrentView();
1444
+ i0.ɵɵelementStart(0, "kendo-window", 206);
1445
+ i0.ɵɵlistener("close", function AIPromptFormComponentExtended_Conditional_2_Template_kendo_window_close_0_listener() { i0.ɵɵrestoreView(_r30); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onTestHarnessVisibilityChanged(false)); });
1446
+ i0.ɵɵelementStart(1, "mj-ai-test-harness", 207);
1447
+ i0.ɵɵlistener("visibilityChange", function AIPromptFormComponentExtended_Conditional_2_Template_mj_ai_test_harness_visibilityChange_1_listener($event) { i0.ɵɵrestoreView(_r30); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onTestHarnessVisibilityChanged($event)); });
1235
1448
  i0.ɵɵelementEnd()();
1236
1449
  } if (rf & 2) {
1237
1450
  const ctx_r1 = i0.ɵɵnextContext();
@@ -1254,9 +1467,10 @@ let AIPromptFormComponentExtended = class AIPromptFormComponentExtended extends
1254
1467
  this.cdr = cdr;
1255
1468
  this.template = null;
1256
1469
  this.templateContent = null;
1470
+ this.templateParams = [];
1257
1471
  this.isLoadingTemplate = true; // Default to loading state
1472
+ this.isLoadingTemplateParams = false;
1258
1473
  this.templateNotFoundInDatabase = false;
1259
- this.showExecutionDialog = false;
1260
1474
  this.showTestHarness = false;
1261
1475
  // Model management
1262
1476
  this.promptModels = [];
@@ -1345,8 +1559,11 @@ let AIPromptFormComponentExtended = class AIPromptFormComponentExtended extends
1345
1559
  console.warn(`Template with ID ${this.record.TemplateID} not found`);
1346
1560
  }
1347
1561
  else {
1348
- // Load template content
1349
- await this.loadTemplateContent();
1562
+ // Load template content and parameters
1563
+ await Promise.all([
1564
+ this.loadTemplateContent(),
1565
+ this.loadTemplateParams()
1566
+ ]);
1350
1567
  }
1351
1568
  }
1352
1569
  catch (error) {
@@ -1368,6 +1585,7 @@ let AIPromptFormComponentExtended = class AIPromptFormComponentExtended extends
1368
1585
  }
1369
1586
  else {
1370
1587
  this.template = null;
1588
+ this.templateParams = [];
1371
1589
  }
1372
1590
  }
1373
1591
  /**
@@ -1439,6 +1657,33 @@ let AIPromptFormComponentExtended = class AIPromptFormComponentExtended extends
1439
1657
  this.templateContent = null;
1440
1658
  }
1441
1659
  }
1660
+ /**
1661
+ * Loads template parameters for the current template
1662
+ */
1663
+ async loadTemplateParams() {
1664
+ if (!this.template?.ID) {
1665
+ this.templateParams = [];
1666
+ return;
1667
+ }
1668
+ this.isLoadingTemplateParams = true;
1669
+ try {
1670
+ const rv = new RunView();
1671
+ const results = await rv.RunView({
1672
+ EntityName: 'Template Params',
1673
+ ExtraFilter: `TemplateID = '${this.template.ID}'`,
1674
+ OrderBy: 'Name ASC',
1675
+ ResultType: 'entity_object'
1676
+ });
1677
+ this.templateParams = results.Results || [];
1678
+ }
1679
+ catch (error) {
1680
+ console.error('Error loading template params:', error);
1681
+ this.templateParams = [];
1682
+ }
1683
+ finally {
1684
+ this.isLoadingTemplateParams = false;
1685
+ }
1686
+ }
1442
1687
  /**
1443
1688
  * Opens the AI prompt execution dialog
1444
1689
  */
@@ -1451,7 +1696,8 @@ let AIPromptFormComponentExtended = class AIPromptFormComponentExtended extends
1451
1696
  MJNotificationService.Instance.CreateSimpleNotification('AI prompt must be Active to execute', 'warning', 4000);
1452
1697
  return;
1453
1698
  }
1454
- this.showExecutionDialog = true;
1699
+ // Use test harness instead
1700
+ this.openTestHarness();
1455
1701
  }
1456
1702
  /**
1457
1703
  * Opens the test harness
@@ -2252,30 +2498,73 @@ let AIPromptFormComponentExtended = class AIPromptFormComponentExtended extends
2252
2498
  return 'fa-times-circle';
2253
2499
  return 'fa-spinner fa-spin';
2254
2500
  }
2501
+ /**
2502
+ * Gets the icon for a template parameter type
2503
+ */
2504
+ getParamTypeIcon(type) {
2505
+ switch (type) {
2506
+ case 'Scalar': return 'fa-font';
2507
+ case 'Array': return 'fa-list';
2508
+ case 'Object': return 'fa-cube';
2509
+ case 'Record': return 'fa-file-alt';
2510
+ case 'Entity': return 'fa-table';
2511
+ default: return 'fa-question';
2512
+ }
2513
+ }
2514
+ /**
2515
+ * Gets the color for a template parameter type
2516
+ */
2517
+ getParamTypeColor(type) {
2518
+ switch (type) {
2519
+ case 'Scalar': return '#17a2b8';
2520
+ case 'Array': return '#28a745';
2521
+ case 'Object': return '#6f42c1';
2522
+ case 'Record': return '#fd7e14';
2523
+ case 'Entity': return '#dc3545';
2524
+ default: return '#6c757d';
2525
+ }
2526
+ }
2527
+ /**
2528
+ * Gets a friendly description of the parameter type
2529
+ */
2530
+ getParamTypeDescription(param) {
2531
+ switch (param.Type) {
2532
+ case 'Scalar':
2533
+ return 'Single value (text, number, date, etc.)';
2534
+ case 'Array':
2535
+ return 'List of values';
2536
+ case 'Object':
2537
+ return 'JSON object with multiple properties';
2538
+ case 'Record':
2539
+ if (param.EntityID) {
2540
+ return `Single record from entity`;
2541
+ }
2542
+ return 'Single database record';
2543
+ case 'Entity':
2544
+ if (param.EntityID) {
2545
+ return `Multiple records from entity`;
2546
+ }
2547
+ return 'Entity data collection';
2548
+ default:
2549
+ return 'Unknown type';
2550
+ }
2551
+ }
2255
2552
  static { this.ɵfac = function AIPromptFormComponentExtended_Factory(t) { return new (t || AIPromptFormComponentExtended)(i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i1.SharedService), i0.ɵɵdirectiveInject(i2.Router), i0.ɵɵdirectiveInject(i2.ActivatedRoute), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef)); }; }
2256
2553
  static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: AIPromptFormComponentExtended, selectors: [["mj-ai-prompt-form"]], viewQuery: function AIPromptFormComponentExtended_Query(rf, ctx) { if (rf & 1) {
2257
2554
  i0.ɵɵviewQuery(_c0, 5);
2258
2555
  } if (rf & 2) {
2259
2556
  let _t;
2260
2557
  i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.templateEditor = _t.first);
2261
- } }, features: [i0.ɵɵInheritDefinitionFeature], decls: 4, vars: 6, consts: [["form", "ngForm"], ["templateEditor", ""], ["mjFillContainer", "", 1, "record-form-container", 3, "bottomMargin", "rightMargin"], ["class", "record-form", "mjFillContainer", "", 4, "ngIf"], [3, "isVisibleChange", "aiPrompt", "isVisible"], [3, "width", "height", "minWidth", "minHeight", "draggable", "resizable", "state", "title"], ["mjFillContainer", "", 1, "record-form"], [3, "form"], [1, "prompt-main-area", 2, "display", "flex", "flex-direction", "column", "height", "100%", "overflow-y", "auto"], [1, "prompt-header", 2, "flex-shrink", "0", "padding", "20px", "background", "#f8f9fa", "border-bottom", "2px solid #e9ecef"], [2, "display", "flex", "justify-content", "space-between", "align-items", "flex-start", "gap", "20px"], [2, "flex", "1", "min-width", "0"], [2, "display", "flex", "align-items", "center", "gap", "12px", "margin-bottom", "8px"], [1, "fa-solid", "fa-robot", 2, "color", "#6f42c1", "font-size", "1.4em"], ["name", "promptName", "placeholder", "Enter prompt name...", 2, "font-size", "1.2em", "font-weight", "600", "min-width", "300px", "flex", "1", 3, "ngModel"], [2, "display", "flex", "gap", "16px", "margin-bottom", "12px", "flex-wrap", "wrap"], ["name", "promptDescription", "placeholder", "Enter prompt description...", 2, "width", "100%", "max-width", "600px", "margin-bottom", "12px", 3, "ngModel", "rows"], [2, "margin", "0 0 12px 0", "color", "#6c757d", "font-size", "0.9em", "line-height", "1.4"], [1, "quick-config", 2, "display", "flex", "align-items", "center", "gap", "16px", "flex-wrap", "wrap"], [1, "config-item", 2, "display", "flex", "align-items", "center", "gap", "6px", "font-size", "0.85em"], [1, "fa-solid", "fa-layer-group", 2, "color", "#6c757d"], [2, "color", "#6c757d"], [2, "color", "#495057", "font-weight", "500"], [1, "fa-solid", "fa-code", 2, "color", "#6c757d"], [2, "font-weight", "500"], [1, "action-buttons", 2, "display", "flex", "flex-direction", "column", "gap", "8px", "align-items", "flex-end"], [2, "display", "flex", "gap", "8px"], ["themeColor", "primary", "size", "large", "title", "Run AI Prompt Test Harness"], [2, "font-size", "0.75em", "color", "#dc3545", "text-align", "right", "max-width", "200px"], [1, "configuration-sections", 2, "flex", "1", "background", "white", "border-top", "2px solid #e9ecef", "padding", "16px", "min-height", "0"], [2, "margin-bottom", "12px", 3, "expanded"], ["kendoExpansionPanelTitleDirective", ""], [1, "template-section", 2, "display", "flex", "flex-direction", "column", "min-height", "400px", "padding", "8px"], [1, "loading-state", 2, "flex", "1", "display", "flex", "align-items", "center", "justify-content", "center", "color", "#6c757d"], [1, "no-template-state", 2, "flex", "1", "display", "flex", "flex-direction", "column", "align-items", "center", "justify-content", "center", "padding", "40px", "color", "#6c757d"], [1, "invalid-template-state", 2, "flex", "1", "display", "flex", "flex-direction", "column", "align-items", "center", "justify-content", "center", "padding", "40px", "color", "#dc3545"], [1, "template-editor-container", 2, "flex", "1", "display", "flex", "flex-direction", "column", "min-height", "350px"], [2, "padding", "16px 0"], [2, "display", "grid", "grid-template-columns", "1fr 1fr", "gap", "20px"], ["FieldName", "ParallelizationMode", "Type", "dropdownlist", 3, "record", "ShowLabel", "EditMode"], ["FieldName", "ParallelCount", "Type", "numerictextbox", 3, "record", "ShowLabel", "EditMode"], ["FieldName", "ParallelConfigParam", "Type", "textbox", 3, "record", "ShowLabel", "EditMode"], ["FieldName", "OutputType", "Type", "dropdownlist", 3, "record", "ShowLabel", "EditMode"], ["FieldName", "ValidationBehavior", "Type", "dropdownlist", 3, "record", "ShowLabel", "EditMode"], ["FieldName", "EnableCaching", "Type", "checkbox", 3, "record", "ShowLabel", "EditMode"], [2, "margin-bottom", "16px"], [2, "display", "block", "margin-bottom", "4px", "font-weight", "600", "color", "#495057", "font-size", "0.9em"], [2, "color", "#495057"], ["name", "promptName", "placeholder", "Enter prompt name...", 2, "font-size", "1.2em", "font-weight", "600", "min-width", "300px", "flex", "1", 3, "ngModelChange", "ngModel"], [2, "margin", "0", "color", "#495057", "font-weight", "600", "flex", "1"], [1, "status-badge", 2, "color", "white", "padding", "4px 10px", "border-radius", "12px", "font-size", "0.75em", "font-weight", "500"], ["name", "promptStatus", "textField", "text", "valueField", "value", 2, "width", "150px", 3, "ngModelChange", "ngModel", "data", "valuePrimitive"], [2, "color", "#dc3545"], [2, "padding", "8px", "color", "#6c757d", "font-style", "italic", "width", "200px"], ["name", "promptTypeID", "textField", "Name", "valueField", "ID", "placeholder", "Select prompt type...", 2, "width", "200px", 3, "ngModel", "data", "valuePrimitive", "filterable"], [1, "fa-solid", "fa-spinner", "fa-spin"], ["name", "promptTypeID", "textField", "Name", "valueField", "ID", "placeholder", "Select prompt type...", 2, "width", "200px", 3, "ngModelChange", "ngModel", "data", "valuePrimitive", "filterable"], ["name", "promptDescription", "placeholder", "Enter prompt description...", 2, "width", "100%", "max-width", "600px", "margin-bottom", "12px", 3, "ngModelChange", "ngModel", "rows"], [1, "fa-solid", "fa-tag", 2, "color", "#6c757d"], [1, "fa-solid", "fa-database", 2, "color", "#28a745"], [2, "color", "#28a745", "font-weight", "500"], ["themeColor", "primary", "size", "large", "title", "Run AI Prompt Test Harness", 3, "click"], [1, "fa-solid", "fa-play"], [2, "display", "flex", "align-items", "center", "gap", "8px", "font-weight", "600"], [2, "color", "#6c757d", "font-size", "0.9em", "font-weight", "normal"], [1, "fa-solid", "fa-spinner", "fa-spin", 2, "font-size", "24px", "margin-right", "12px"], [1, "fa-solid", "fa-code", 2, "font-size", "64px", "margin-bottom", "20px", "opacity", "0.3"], [2, "margin-bottom", "12px", "color", "#495057"], [2, "margin-bottom", "24px", "text-align", "center", "max-width", "400px"], [2, "display", "flex", "gap", "12px"], ["themeColor", "primary", 3, "click"], [1, "fa-solid", "fa-plus"], ["fillMode", "outline", 3, "click"], [1, "fa-solid", "fa-link"], [1, "fa-solid", "fa-exclamation-triangle", 2, "font-size", "64px", "margin-bottom", "20px", "opacity", "0.7"], [2, "margin-bottom", "12px"], [1, "fa-solid", "fa-refresh"], [2, "flex", "1", "background", "white", "border-radius", "6px", "border", "1px solid #e9ecef"], [2, "display", "block", "min-height", "300px", 3, "contentChange", "runTemplate", "template", "config"], [1, "model-management", 2, "border", "1px solid #dee2e6", "border-radius", "6px", "background", "#f8f9fa"], [1, "loading-state", 2, "padding", "20px", "text-align", "center", "color", "#6c757d"], [1, "fa-solid", "fa-microchip", 2, "color", "#6c757d"], [1, "badge", 2, "background", "#17a2b8", "color", "white", "padding", "2px 6px", "border-radius", "10px", "font-size", "0.7em"], [2, "color", "#6c757d", "font-size", "0.8em", "font-weight", "normal", "margin-left", "8px"], ["title", "Models are tried in order from top to bottom. The first available model will be used.", 1, "fa-solid", "fa-info-circle"], [1, "empty-state", 2, "padding", "20px", "text-align", "center", "color", "#6c757d"], [1, "fa-solid", "fa-info-circle"], [2, "margin-top", "10px"], ["fillMode", "outline", "themeColor", "primary", "size", "small", 3, "click"], [2, "padding", "12px 16px", "background", "#e3f2fd", "border-bottom", "1px solid #bbdefb", "color", "#1565c0", "font-size", "0.85em"], [1, "model-header", 2, "display", "grid", "grid-template-columns", "40px 2fr 1fr 1fr 60px", "gap", "12px", "padding", "12px 16px", "background", "#e9ecef", "font-weight", "600", "font-size", "0.85em", "color", "#495057", "border-bottom", "1px solid #dee2e6"], ["title", "Priority order - models are tried from top to bottom"], [1, "fa-solid", "fa-sort", 2, "color", "#6c757d"], [1, "add-model-row", 2, "padding", "12px 16px", "text-align", "center", "background", "#f8f9fa", "border-top", "1px solid #dee2e6"], [1, "fa-solid", "fa-info-circle", 2, "margin-right", "6px"], [1, "model-row", 2, "display", "grid", "grid-template-columns", "40px 2fr 1fr 1fr 60px", "gap", "12px", "padding", "12px 16px", "border-bottom", "1px solid #e9ecef", "align-items", "start", "transition", "background 0.2s, opacity 0.2s", 3, "dragstart", "dragover", "drop", "dragend", "draggable"], [1, "drag-handle", 2, "display", "flex", "flex-direction", "column", "align-items", "center", "justify-content", "center", "color", "#6c757d"], [2, "font-size", "0.9em", "font-weight", "600", 3, "title"], [1, "model-select"], ["textField", "Name", "valueField", "ID", "placeholder", "Select a model...", 2, "width", "100%", 3, "ngModel", "name", "data", "valuePrimitive", "filterable"], [1, "model-vendor"], [1, "model-created"], [2, "color", "#6c757d", "font-size", "0.8em"], [2, "color", "#28a745", "font-size", "0.8em", "font-style", "italic"], [1, "model-actions", 2, "display", "flex", "gap", "2px", "flex-direction", "column"], [2, "display", "grid", "grid-template-columns", "40px 1fr", "gap", "12px", "padding", "8px 16px", "border-bottom", "1px solid #e9ecef", "background", "#f8f9fa", "font-size", "0.85em", "color", "#6c757d"], [2, "display", "flex", "gap", "16px", "flex-wrap", "wrap", "align-items", "center", "margin-bottom", "8px"], [2, "padding", "8px", "background", "#fff", "border", "1px solid #dee2e6", "border-radius", "4px", "margin-top", "8px"], ["title", "Drag to reorder priority", 1, "fa-solid", "fa-grip-vertical", 2, "cursor", "move"], [2, "font-size", "0.7em", "margin-top", "2px"], ["textField", "Name", "valueField", "ID", "placeholder", "Select a model...", 2, "width", "100%", 3, "ngModelChange", "valueChange", "ngModel", "name", "data", "valuePrimitive", "filterable"], [2, "color", "#6c757d", "font-style", "italic", "font-size", "0.9em"], ["textField", "Name", "valueField", "ID", "placeholder", "Select vendor...", 2, "width", "100%", 3, "ngModel", "name", "data", "valuePrimitive", "filterable"], ["textField", "Name", "valueField", "ID", "placeholder", "Select vendor...", 2, "width", "100%", 3, "ngModelChange", "ngModel", "name", "data", "valuePrimitive", "filterable"], ["kendoDropDownListItemTemplate", ""], [2, "font-size", "0.8em", "margin-left", "4px"], [2, "font-size", "0.9em", "font-weight", "500", 3, "color"], [2, "font-size", "0.9em", "font-weight", "500"], [2, "font-size", "0.9em", 3, "color"], [2, "color", "#6c757d", "font-size", "0.9em"], [2, "font-size", "0.9em"], [2, "display", "flex", "gap", "2px", "margin-bottom", "4px"], ["fillMode", "flat", "size", "small", "title", "Move up", 3, "click", "disabled"], [1, "fa-solid", "fa-chevron-up"], ["fillMode", "flat", "size", "small", "title", "Move down", 3, "click", "disabled"], [1, "fa-solid", "fa-chevron-down"], ["fillMode", "flat", "themeColor", "error", "size", "small", "title", "Remove model", 3, "click"], [1, "fa-solid", "fa-times"], [2, "margin-bottom", "6px", "font-weight", "600", "color", "#495057", "font-size", "0.9em"], [1, "fa-solid", "fa-layer-group"], [2, "display", "grid", "grid-template-columns", "1fr 1fr 1fr", "gap", "12px", "align-items", "center"], [2, "display", "flex", "gap", "16px", "flex-wrap", "wrap", "align-items", "center"], [2, "display", "block", "margin-bottom", "2px", "font-size", "0.8em", "font-weight", "600", "color", "#495057"], ["textField", "text", "valueField", "value", "placeholder", "Select mode...", 2, "width", "100%", "font-size", "0.85em", 3, "ngModelChange", "ngModel", "name", "data", "valuePrimitive"], ["placeholder", "Count...", 2, "width", "100%", "font-size", "0.85em", 3, "ngModelChange", "ngModel", "name", "min", "step", "format"], ["placeholder", "Parameter name...", 2, "width", "100%", "font-size", "0.85em", 3, "ngModelChange", "ngModel", "name"], ["fillMode", "outline", "themeColor", "success", "size", "small", 3, "click"], [1, "fa-solid", "fa-cogs", 2, "color", "#6c757d"], [2, "padding", "8px", "color", "#6c757d", "font-style", "italic"], ["name", "resultSelectorPromptID", "textField", "text", "valueField", "value", "placeholder", "Select a result selector prompt...", 2, "width", "100%", 3, "ngModel", "data", "valuePrimitive", "filterable"], ["name", "resultSelectorPromptID", "textField", "text", "valueField", "value", "placeholder", "Select a result selector prompt...", 2, "width", "100%", 3, "ngModelChange", "valueChange", "ngModel", "data", "valuePrimitive", "filterable"], [2, "padding", "16px"], [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", "250px"], [2, "background", "#fff3cd", "border", "1px solid #ffeaa7", "border-radius", "4px", "padding", "12px", "color", "#856404", "text-align", "center"], [2, "color", "#dc3545", "font-size", "0.8em", "font-weight", "normal"], ["name", "outputExample", "language", "json", "placeholder", "Enter JSON example structure...", 2, "width", "100%", "height", "200px", "border", "1px solid #dee2e6", "border-radius", "4px", 3, "ngModelChange", "ngModel"], [2, "margin-top", "8px", "color", "#6c757d", "font-size", "0.85em"], [1, "fa-solid", "fa-exclamation-triangle"], [2, "text-align", "center", "padding", "40px", "color", "#6c757d"], [1, "fa-solid", "fa-history", 2, "color", "#6c757d"], [2, "color", "#6c757d", "font-weight", "normal"], [1, "fa-solid", "fa-spinner", "fa-spin", 2, "font-size", "2em", "margin-bottom", "12px"], [1, "fa-solid", "fa-history", 2, "font-size", "3em", "margin-bottom", "12px", "opacity", "0.3"], [2, "display", "flex", "justify-content", "space-between", "align-items", "center", "margin-bottom", "16px"], [2, "display", "flex", "gap", "8px", "align-items", "center"], [2, "color", "#6c757d", "font-size", "0.85em"], ["selection", "single"], ["kendoButton", "", "size", "small", 3, "click", "selected"], [2, "margin-left", "4px", "font-size", "0.8em", 3, "class"], [2, "border", "1px solid #e9ecef", "border-radius", "8px", "overflow", "hidden"], [2, "width", "100%", "border-collapse", "collapse"], [2, "background", "#f8f9fa", "border-bottom", "2px solid #e9ecef"], [2, "padding", "12px", "text-align", "left", "font-weight", "600", "color", "#495057"], [2, "padding", "12px", "text-align", "right", "font-weight", "600", "color", "#495057"], [2, "padding", "12px", "text-align", "center", "font-weight", "600", "color", "#495057"], [1, "history-row", 2, "border-bottom", "1px solid #f1f3f5", 3, "even-row"], [2, "margin-left", "4px", "font-size", "0.8em"], [1, "history-row", 2, "border-bottom", "1px solid #f1f3f5"], [2, "padding", "12px"], [2, "display", "flex", "align-items", "center", "gap", "6px"], [2, "padding", "12px", "color", "#495057"], [2, "padding", "12px", "text-align", "right", "color", "#495057"], [2, "padding", "12px", "text-align", "center"], [2, "padding", "4px 8px", "border-radius", "12px", "background", "#e9ecef", "color", "#495057", "font-size", "0.85em", "font-weight", "500"], ["fillMode", "flat", "size", "small", "title", "View details", 3, "click"], [1, "fa-solid", "fa-external-link"], [2, "height", "300px", 3, "Params", "NewRecordValues", "AllowLoad", "EditMode", "BottomMargin"], [1, "fa-solid", "fa-database", 2, "color", "#6c757d"], [2, "margin", "0 0 12px 0", "color", "#495057"], [2, "height", "200px", 3, "Params", "NewRecordValues", "AllowLoad", "EditMode", "BottomMargin"], [1, "fa-solid", "fa-link", 2, "color", "#6c757d"], [3, "close", "width", "height", "minWidth", "minHeight", "draggable", "resizable", "state", "title"], [3, "visibilityChange", "entity", "mode", "isVisible"]], template: function AIPromptFormComponentExtended_Template(rf, ctx) { if (rf & 1) {
2558
+ } }, features: [i0.ɵɵInheritDefinitionFeature], decls: 3, vars: 2, consts: [["form", "ngForm"], ["templateEditor", ""], [1, "record-form-container"], ["class", "record-form", 4, "ngIf"], [3, "width", "height", "minWidth", "minHeight", "draggable", "resizable", "state", "title"], [1, "record-form"], [3, "form"], [1, "prompt-main-area", 2, "display", "flex", "flex-direction", "column", "height", "100%", "overflow-y", "auto"], [1, "prompt-header", 2, "flex-shrink", "0", "padding", "20px", "background", "#f8f9fa", "border-bottom", "2px solid #e9ecef"], [2, "display", "flex", "justify-content", "space-between", "align-items", "flex-start", "gap", "20px"], [2, "flex", "1", "min-width", "0"], [2, "display", "flex", "align-items", "center", "gap", "12px", "margin-bottom", "8px"], [1, "fa-solid", "fa-robot", 2, "color", "#6f42c1", "font-size", "1.4em"], ["name", "promptName", "placeholder", "Enter prompt name...", 2, "font-size", "1.2em", "font-weight", "600", "min-width", "300px", "flex", "1", 3, "ngModel"], [2, "display", "flex", "gap", "16px", "margin-bottom", "12px", "flex-wrap", "wrap"], ["name", "promptDescription", "placeholder", "Enter prompt description...", 2, "width", "100%", "max-width", "600px", "margin-bottom", "12px", 3, "ngModel", "rows"], [2, "margin", "0 0 12px 0", "color", "#6c757d", "font-size", "0.9em", "line-height", "1.4"], [1, "quick-config", 2, "display", "flex", "align-items", "center", "gap", "16px", "flex-wrap", "wrap"], [1, "config-item", 2, "display", "flex", "align-items", "center", "gap", "6px", "font-size", "0.85em"], [1, "fa-solid", "fa-layer-group", 2, "color", "#6c757d"], [2, "color", "#6c757d"], [2, "color", "#495057", "font-weight", "500"], [1, "fa-solid", "fa-code", 2, "color", "#6c757d"], [2, "font-weight", "500"], [1, "action-buttons", 2, "display", "flex", "flex-direction", "column", "gap", "8px", "align-items", "flex-end"], [2, "display", "flex", "gap", "8px"], ["kendoButton", "", "title", "Run AI Prompt Test Harness", 3, "themeColor", "size"], [2, "font-size", "0.75em", "color", "#dc3545", "text-align", "right", "max-width", "200px"], [1, "configuration-sections", 2, "flex", "1", "background", "white", "border-top", "2px solid #e9ecef", "padding", "16px", "min-height", "0"], [2, "margin-bottom", "12px", 3, "expanded"], ["kendoExpansionPanelTitleDirective", ""], [1, "template-section", 2, "display", "flex", "flex-direction", "column", "min-height", "400px", "padding", "8px"], [1, "loading-state", 2, "flex", "1", "display", "flex", "align-items", "center", "justify-content", "center", "color", "#6c757d"], [1, "no-template-state", 2, "flex", "1", "display", "flex", "flex-direction", "column", "align-items", "center", "justify-content", "center", "padding", "40px", "color", "#6c757d"], [1, "invalid-template-state", 2, "flex", "1", "display", "flex", "flex-direction", "column", "align-items", "center", "justify-content", "center", "padding", "40px", "color", "#dc3545"], [1, "template-editor-container", 2, "flex", "1", "display", "flex", "flex-direction", "column", "min-height", "350px"], [2, "padding", "16px 0"], [2, "display", "grid", "grid-template-columns", "1fr 1fr", "gap", "20px"], ["FieldName", "ParallelizationMode", "Type", "dropdownlist", 3, "record", "ShowLabel", "EditMode"], ["FieldName", "ParallelCount", "Type", "numerictextbox", 3, "record", "ShowLabel", "EditMode"], ["FieldName", "ParallelConfigParam", "Type", "textbox", 3, "record", "ShowLabel", "EditMode"], ["FieldName", "OutputType", "Type", "dropdownlist", 3, "record", "ShowLabel", "EditMode"], ["FieldName", "ValidationBehavior", "Type", "dropdownlist", 3, "record", "ShowLabel", "EditMode"], ["FieldName", "EnableCaching", "Type", "checkbox", 3, "record", "ShowLabel", "EditMode"], [2, "margin-bottom", "16px"], [2, "display", "block", "margin-bottom", "4px", "font-weight", "600", "color", "#495057", "font-size", "0.9em"], [2, "color", "#495057"], ["name", "promptName", "placeholder", "Enter prompt name...", 2, "font-size", "1.2em", "font-weight", "600", "min-width", "300px", "flex", "1", 3, "ngModelChange", "ngModel"], [2, "margin", "0", "color", "#495057", "font-weight", "600", "flex", "1"], [1, "status-badge", 2, "color", "white", "padding", "4px 10px", "border-radius", "12px", "font-size", "0.75em", "font-weight", "500"], ["name", "promptStatus", "textField", "text", "valueField", "value", 2, "width", "150px", 3, "ngModelChange", "ngModel", "data", "valuePrimitive"], [2, "color", "#dc3545"], [2, "padding", "8px", "color", "#6c757d", "font-style", "italic", "width", "200px"], ["name", "promptTypeID", "textField", "Name", "valueField", "ID", "placeholder", "Select prompt type...", 2, "width", "200px", 3, "ngModel", "data", "valuePrimitive", "filterable"], [1, "fa-solid", "fa-spinner", "fa-spin"], ["name", "promptTypeID", "textField", "Name", "valueField", "ID", "placeholder", "Select prompt type...", 2, "width", "200px", 3, "ngModelChange", "ngModel", "data", "valuePrimitive", "filterable"], ["name", "promptDescription", "placeholder", "Enter prompt description...", 2, "width", "100%", "max-width", "600px", "margin-bottom", "12px", 3, "ngModelChange", "ngModel", "rows"], [1, "fa-solid", "fa-tag", 2, "color", "#6c757d"], [1, "fa-solid", "fa-database", 2, "color", "#28a745"], [2, "color", "#28a745", "font-weight", "500"], ["kendoButton", "", "title", "Run AI Prompt Test Harness", 3, "click", "themeColor", "size"], [1, "fa-solid", "fa-play"], [2, "display", "flex", "align-items", "center", "gap", "8px", "font-weight", "600"], [2, "color", "#6c757d", "font-size", "0.9em", "font-weight", "normal"], [1, "fa-solid", "fa-spinner", "fa-spin", 2, "font-size", "24px", "margin-right", "12px"], [1, "fa-solid", "fa-code", 2, "font-size", "64px", "margin-bottom", "20px", "opacity", "0.3"], [2, "margin-bottom", "12px", "color", "#495057"], [2, "margin-bottom", "24px", "text-align", "center", "max-width", "400px"], [2, "display", "flex", "gap", "12px"], ["kendoButton", "", 3, "click", "themeColor"], [1, "fa-solid", "fa-plus"], ["kendoButton", "", 3, "click", "fillMode"], [1, "fa-solid", "fa-link"], [1, "fa-solid", "fa-exclamation-triangle", 2, "font-size", "64px", "margin-bottom", "20px", "opacity", "0.7"], [2, "margin-bottom", "12px"], [1, "fa-solid", "fa-refresh"], [2, "flex", "1", "background", "white", "border-radius", "6px", "border", "1px solid #e9ecef"], [2, "display", "block", "min-height", "300px", 3, "contentChange", "runTemplate", "template", "config"], [1, "loading-state", 2, "padding", "20px", "text-align", "center", "color", "#6c757d"], [1, "empty-state", 2, "padding", "20px", "text-align", "center", "color", "#6c757d"], [1, "fa-solid", "fa-sliders", 2, "color", "#6c757d"], [1, "badge", 2, "background", "#6f42c1", "color", "white", "padding", "2px 6px", "border-radius", "10px", "font-size", "0.7em"], [2, "color", "#6c757d", "font-size", "0.8em", "font-weight", "normal", "margin-left", "8px"], ["title", "These parameters are defined in the template and will be available when executing this prompt", 1, "fa-solid", "fa-info-circle"], [1, "fa-solid", "fa-info-circle"], [2, "display", "grid", "gap", "12px"], [1, "parameter-card", 2, "border", "1px solid #e9ecef", "border-radius", "8px", "padding", "16px", "background", "#f8f9fa", "transition", "all 0.2s", 3, "border-left"], [2, "margin-top", "16px", "padding", "12px", "background", "#e3f2fd", "border-radius", "6px", "border", "1px solid #bbdefb"], [2, "display", "flex", "align-items", "flex-start", "gap", "8px"], [1, "fa-solid", "fa-lightbulb", 2, "color", "#1976d2", "margin-top", "2px"], [2, "flex", "1", "font-size", "0.85em", "color", "#1565c0", "line-height", "1.5"], [1, "parameter-card", 2, "border", "1px solid #e9ecef", "border-radius", "8px", "padding", "16px", "background", "#f8f9fa", "transition", "all 0.2s"], [2, "display", "flex", "justify-content", "space-between", "align-items", "flex-start", "margin-bottom", "8px"], [2, "display", "flex", "align-items", "center", "gap", "8px"], [2, "font-size", "1.2em"], [2, "margin", "0", "color", "#495057", "font-weight", "600"], [2, "color", "#dc3545", "font-size", "0.9em", "margin-left", "4px"], [1, "type-badge", 2, "color", "white", "padding", "4px 8px", "border-radius", "12px", "font-size", "0.75em", "font-weight", "500"], [2, "color", "#dc3545", "font-size", "0.85em", "font-weight", "500"], [2, "color", "#6c757d", "font-size", "0.85em"], [2, "margin", "0 0 8px 0", "color", "#6c757d", "font-size", "0.9em", "line-height", "1.4"], [2, "font-size", "0.85em", "color", "#495057"], [2, "display", "flex", "align-items", "center", "gap", "4px", "margin-bottom", "4px"], [1, "fa-solid", "fa-info-circle", 2, "color", "#6c757d"], [2, "display", "grid", "grid-template-columns", "repeat(auto-fit, minmax(200px, 1fr))", "gap", "12px", "margin-top", "12px"], [2, "background", "white", "padding", "8px 12px", "border-radius", "4px", "border", "1px solid #dee2e6"], [2, "display", "block", "font-size", "0.8em", "color", "#6c757d", "margin-bottom", "2px"], [2, "font-size", "0.85em", "color", "#495057", "word-break", "break-all"], [2, "font-size", "0.8em", "color", "#495057", "word-break", "break-all"], [1, "model-management", 2, "border", "1px solid #dee2e6", "border-radius", "6px", "background", "#f8f9fa"], [1, "fa-solid", "fa-microchip", 2, "color", "#6c757d"], [1, "badge", 2, "background", "#17a2b8", "color", "white", "padding", "2px 6px", "border-radius", "10px", "font-size", "0.7em"], ["title", "Models are tried in order from top to bottom. The first available model will be used.", 1, "fa-solid", "fa-info-circle"], [2, "margin-top", "10px"], ["kendoButton", "", "fillMode", "outline", "themeColor", "primary", "size", "small", 3, "click"], [2, "padding", "12px 16px", "background", "#e3f2fd", "border-bottom", "1px solid #bbdefb", "color", "#1565c0", "font-size", "0.85em"], [1, "model-header", 2, "display", "grid", "grid-template-columns", "40px 2fr 1fr 1fr 60px", "gap", "12px", "padding", "12px 16px", "background", "#e9ecef", "font-weight", "600", "font-size", "0.85em", "color", "#495057", "border-bottom", "1px solid #dee2e6"], ["title", "Priority order - models are tried from top to bottom"], [1, "fa-solid", "fa-sort", 2, "color", "#6c757d"], [1, "add-model-row", 2, "padding", "12px 16px", "text-align", "center", "background", "#f8f9fa", "border-top", "1px solid #dee2e6"], [1, "fa-solid", "fa-info-circle", 2, "margin-right", "6px"], [1, "model-row", 2, "display", "grid", "grid-template-columns", "40px 2fr 1fr 1fr 60px", "gap", "12px", "padding", "12px 16px", "border-bottom", "1px solid #e9ecef", "align-items", "start", "transition", "background 0.2s, opacity 0.2s", 3, "dragstart", "dragover", "drop", "dragend", "draggable"], [1, "drag-handle", 2, "display", "flex", "flex-direction", "column", "align-items", "center", "justify-content", "center", "color", "#6c757d"], [2, "font-size", "0.9em", "font-weight", "600", 3, "title"], [1, "model-select"], ["textField", "Name", "valueField", "ID", "placeholder", "Select a model...", 2, "width", "100%", 3, "ngModel", "name", "data", "valuePrimitive", "filterable"], [1, "model-vendor"], [1, "model-created"], [2, "color", "#6c757d", "font-size", "0.8em"], [2, "color", "#28a745", "font-size", "0.8em", "font-style", "italic"], [1, "model-actions", 2, "display", "flex", "gap", "2px", "flex-direction", "column"], [2, "display", "grid", "grid-template-columns", "40px 1fr", "gap", "12px", "padding", "8px 16px", "border-bottom", "1px solid #e9ecef", "background", "#f8f9fa", "font-size", "0.85em", "color", "#6c757d"], [2, "display", "flex", "gap", "16px", "flex-wrap", "wrap", "align-items", "center", "margin-bottom", "8px"], [2, "padding", "8px", "background", "#fff", "border", "1px solid #dee2e6", "border-radius", "4px", "margin-top", "8px"], ["title", "Drag to reorder priority", 1, "fa-solid", "fa-grip-vertical", 2, "cursor", "move"], [2, "font-size", "0.7em", "margin-top", "2px"], ["textField", "Name", "valueField", "ID", "placeholder", "Select a model...", 2, "width", "100%", 3, "ngModelChange", "valueChange", "ngModel", "name", "data", "valuePrimitive", "filterable"], [2, "color", "#6c757d", "font-style", "italic", "font-size", "0.9em"], ["textField", "Name", "valueField", "ID", "placeholder", "Select vendor...", 2, "width", "100%", 3, "ngModel", "name", "data", "valuePrimitive", "filterable"], ["textField", "Name", "valueField", "ID", "placeholder", "Select vendor...", 2, "width", "100%", 3, "ngModelChange", "ngModel", "name", "data", "valuePrimitive", "filterable"], ["kendoDropDownListItemTemplate", ""], [2, "font-size", "0.8em", "margin-left", "4px"], [2, "font-size", "0.9em", "font-weight", "500", 3, "color"], [2, "font-size", "0.9em", "font-weight", "500"], [2, "font-size", "0.9em", 3, "color"], [2, "color", "#6c757d", "font-size", "0.9em"], [2, "font-size", "0.9em"], [2, "display", "flex", "gap", "2px", "margin-bottom", "4px"], ["kendoButton", "", "fillMode", "flat", "size", "small", "title", "Move up", 3, "click", "disabled"], [1, "fa-solid", "fa-chevron-up"], ["kendoButton", "", "fillMode", "flat", "size", "small", "title", "Move down", 3, "click", "disabled"], [1, "fa-solid", "fa-chevron-down"], ["kendoButton", "", "fillMode", "flat", "themeColor", "error", "size", "small", "title", "Remove model", 3, "click"], [1, "fa-solid", "fa-times"], [2, "margin-bottom", "6px", "font-weight", "600", "color", "#495057", "font-size", "0.9em"], [1, "fa-solid", "fa-layer-group"], [2, "display", "grid", "grid-template-columns", "1fr 1fr 1fr", "gap", "12px", "align-items", "center"], [2, "display", "flex", "gap", "16px", "flex-wrap", "wrap", "align-items", "center"], [2, "display", "block", "margin-bottom", "2px", "font-size", "0.8em", "font-weight", "600", "color", "#495057"], ["textField", "text", "valueField", "value", "placeholder", "Select mode...", 2, "width", "100%", "font-size", "0.85em", 3, "ngModelChange", "ngModel", "name", "data", "valuePrimitive"], ["placeholder", "Count...", 2, "width", "100%", "font-size", "0.85em", 3, "ngModelChange", "ngModel", "name", "min", "step", "format"], ["placeholder", "Parameter name...", 2, "width", "100%", "font-size", "0.85em", 3, "ngModelChange", "ngModel", "name"], ["kendoButton", "", "fillMode", "outline", "themeColor", "success", "size", "small", 3, "click"], [1, "fa-solid", "fa-cogs", 2, "color", "#6c757d"], [2, "padding", "8px", "color", "#6c757d", "font-style", "italic"], ["name", "resultSelectorPromptID", "textField", "text", "valueField", "value", "placeholder", "Select a result selector prompt...", 2, "width", "100%", 3, "ngModel", "data", "valuePrimitive", "filterable"], ["name", "resultSelectorPromptID", "textField", "text", "valueField", "value", "placeholder", "Select a result selector prompt...", 2, "width", "100%", 3, "ngModelChange", "valueChange", "ngModel", "data", "valuePrimitive", "filterable"], [2, "padding", "16px"], [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", "250px"], [2, "background", "#fff3cd", "border", "1px solid #ffeaa7", "border-radius", "4px", "padding", "12px", "color", "#856404", "text-align", "center"], [2, "color", "#dc3545", "font-size", "0.8em", "font-weight", "normal"], ["name", "outputExample", "language", "json", "placeholder", "Enter JSON example structure...", 2, "width", "100%", "height", "200px", "border", "1px solid #dee2e6", "border-radius", "4px", 3, "ngModelChange", "ngModel"], [2, "margin-top", "8px", "color", "#6c757d", "font-size", "0.85em"], [1, "fa-solid", "fa-exclamation-triangle"], [2, "text-align", "center", "padding", "40px", "color", "#6c757d"], [1, "fa-solid", "fa-history", 2, "color", "#6c757d"], [2, "color", "#6c757d", "font-weight", "normal"], [1, "fa-solid", "fa-spinner", "fa-spin", 2, "font-size", "2em", "margin-bottom", "12px"], [1, "fa-solid", "fa-history", 2, "font-size", "3em", "margin-bottom", "12px", "opacity", "0.3"], [2, "display", "flex", "justify-content", "space-between", "align-items", "center", "margin-bottom", "16px"], [2, "display", "flex", "gap", "8px", "align-items", "center"], ["selection", "single"], ["kendoButton", "", "size", "small", 3, "click", "selected"], [2, "margin-left", "4px", "font-size", "0.8em", 3, "class"], [2, "border", "1px solid #e9ecef", "border-radius", "8px", "overflow", "hidden"], [2, "width", "100%", "border-collapse", "collapse"], [2, "background", "#f8f9fa", "border-bottom", "2px solid #e9ecef"], [2, "padding", "12px", "text-align", "left", "font-weight", "600", "color", "#495057"], [2, "padding", "12px", "text-align", "right", "font-weight", "600", "color", "#495057"], [2, "padding", "12px", "text-align", "center", "font-weight", "600", "color", "#495057"], [1, "history-row", 2, "border-bottom", "1px solid #f1f3f5", 3, "even-row"], [2, "margin-left", "4px", "font-size", "0.8em"], [1, "history-row", 2, "border-bottom", "1px solid #f1f3f5"], [2, "padding", "12px"], [2, "display", "flex", "align-items", "center", "gap", "6px"], [2, "padding", "12px", "color", "#495057"], [2, "padding", "12px", "text-align", "right", "color", "#495057"], [2, "padding", "12px", "text-align", "center"], [2, "padding", "4px 8px", "border-radius", "12px", "background", "#e9ecef", "color", "#495057", "font-size", "0.85em", "font-weight", "500"], ["kendoButton", "", "fillMode", "flat", "size", "small", "title", "View details", 3, "click"], [1, "fa-solid", "fa-external-link"], [2, "height", "300px", 3, "Params", "NewRecordValues", "AllowLoad", "EditMode"], [1, "fa-solid", "fa-database", 2, "color", "#6c757d"], [2, "margin", "0 0 12px 0", "color", "#495057"], [2, "height", "200px", 3, "Params", "NewRecordValues", "AllowLoad", "EditMode"], [1, "fa-solid", "fa-link", 2, "color", "#6c757d"], [3, "close", "width", "height", "minWidth", "minHeight", "draggable", "resizable", "state", "title"], [3, "visibilityChange", "entity", "mode", "isVisible"]], template: function AIPromptFormComponentExtended_Template(rf, ctx) { if (rf & 1) {
2262
2559
  i0.ɵɵelementStart(0, "div", 2);
2263
- i0.ɵɵtemplate(1, AIPromptFormComponentExtended_form_1_Template, 63, 35, "form", 3);
2264
- i0.ɵɵelementStart(2, "mj-ai-prompt-execution-dialog", 4);
2265
- i0.ɵɵtwoWayListener("isVisibleChange", function AIPromptFormComponentExtended_Template_mj_ai_prompt_execution_dialog_isVisibleChange_2_listener($event) { i0.ɵɵtwoWayBindingSet(ctx.showExecutionDialog, $event) || (ctx.showExecutionDialog = $event); return $event; });
2266
- i0.ɵɵelementEnd();
2267
- i0.ɵɵtemplate(3, AIPromptFormComponentExtended_Conditional_3_Template, 2, 12, "kendo-window", 5);
2560
+ i0.ɵɵtemplate(1, AIPromptFormComponentExtended_form_1_Template, 64, 36, "form", 3)(2, AIPromptFormComponentExtended_Conditional_2_Template, 2, 12, "kendo-window", 4);
2268
2561
  i0.ɵɵelementEnd();
2269
2562
  } if (rf & 2) {
2270
- i0.ɵɵproperty("bottomMargin", 20)("rightMargin", 5);
2271
2563
  i0.ɵɵadvance();
2272
2564
  i0.ɵɵproperty("ngIf", ctx.record);
2273
2565
  i0.ɵɵadvance();
2274
- i0.ɵɵproperty("aiPrompt", ctx.record);
2275
- i0.ɵɵtwoWayProperty("isVisible", ctx.showExecutionDialog);
2276
- i0.ɵɵadvance();
2277
- i0.ɵɵconditional(ctx.showTestHarness ? 3 : -1);
2278
- } }, dependencies: [i3.NgIf, i4.ɵNgNoValidate, i4.NgControlStatus, i4.NgControlStatusGroup, i4.NgModel, i4.NgForm, i5.ExpansionPanelComponent, i5.ExpansionPanelTitleDirective, i6.WindowComponent, i7.TextAreaComponent, i7.TextBoxComponent, i7.NumericTextBoxComponent, i8.ItemTemplateDirective, i8.DropDownListComponent, i8.DropDownTreeComponent, i9.ButtonGroupComponent, i9.ButtonComponent, i10.UserViewGridComponent, i11.MJFormField, i12.FormToolbarComponent, i13.FillContainer, i14.CodeEditorComponent, i15.TemplateEditorComponent, i16.AIPromptExecutionDialogComponent, i17.AITestHarnessComponent, i3.DatePipe], styles: [".record-form-container[_ngcontent-%COMP%] {\n font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;\n padding: 10px;\n}\n\n.custom-toolbar-actions[_ngcontent-%COMP%] {\n margin-left: auto;\n}\n\n.status-badge[_ngcontent-%COMP%] {\n font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;\n font-weight: 500;\n letter-spacing: 0.02em;\n}\n\n.config-summary[_ngcontent-%COMP%] {\n position: sticky;\n top: 0;\n max-height: 600px;\n overflow-y: auto;\n}\n\n.config-item[_ngcontent-%COMP%] {\n padding: 8px 0;\n border-bottom: 1px solid #e9ecef;\n}\n\n.config-item[_ngcontent-%COMP%]:last-child {\n border-bottom: none;\n}\n\n.template-tab-content[_ngcontent-%COMP%] {\n background: #fff;\n}\n\n.template-header[_ngcontent-%COMP%] h5[_ngcontent-%COMP%] {\n font-size: 1.1em;\n}\n\n.loading-state[_ngcontent-%COMP%], \n.no-template-state[_ngcontent-%COMP%], \n.invalid-template-state[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n}\n\n.no-template-state[_ngcontent-%COMP%] i[_ngcontent-%COMP%], \n.invalid-template-state[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n opacity: 0.6;\n}\n\n.template-editor-container[_ngcontent-%COMP%] {\n background: #fff;\n border-radius: 6px;\n}\n\n\n\n@media (max-width: 1200px) {\n .record-form-container[_ngcontent-%COMP%] .mj-tab-body[_ngcontent-%COMP%] > div[_ngcontent-%COMP%] {\n grid-template-columns: 1fr !important;\n gap: 20px;\n }\n \n .config-summary[_ngcontent-%COMP%] {\n order: -1;\n position: static;\n max-height: none;\n }\n}\n\n\n\n@media (max-width: 768px) {\n .custom-toolbar-actions[_ngcontent-%COMP%] {\n flex-direction: column;\n gap: 4px !important;\n }\n \n .status-badge[_ngcontent-%COMP%] {\n align-self: flex-start;\n }\n}\n\n\n\n.record-form-container[_ngcontent-%COMP%] mj-form-section[_ngcontent-%COMP%] {\n padding: 16px;\n}\n\n\n\n.status-badge[_ngcontent-%COMP%], \n.config-item[_ngcontent-%COMP%], \n.template-header[_ngcontent-%COMP%] {\n transition: all 0.2s ease;\n}\n\n.config-item[_ngcontent-%COMP%]:hover {\n background-color: rgba(0,0,0,0.02);\n border-radius: 4px;\n margin: 0 -8px;\n padding: 8px;\n}\n\n\n\n.history-row[_ngcontent-%COMP%] {\n transition: background 0.2s;\n}\n\n.history-row[_ngcontent-%COMP%]:not(.even-row) {\n background: #f8f9fa;\n}\n\n.history-row.even-row[_ngcontent-%COMP%] {\n background: white;\n}\n\n.history-row[_ngcontent-%COMP%]:hover {\n background: #e9ecef !important;\n}"] }); }
2566
+ i0.ɵɵconditional(ctx.showTestHarness ? 2 : -1);
2567
+ } }, dependencies: [i3.NgIf, i4.ɵNgNoValidate, i4.NgControlStatus, i4.NgControlStatusGroup, i4.NgModel, i4.NgForm, i5.ExpansionPanelComponent, i5.ExpansionPanelTitleDirective, i6.WindowComponent, i7.TextAreaComponent, i7.TextBoxComponent, i7.NumericTextBoxComponent, i8.ItemTemplateDirective, i8.DropDownListComponent, i8.DropDownTreeComponent, i9.ButtonGroupComponent, i9.ButtonComponent, i10.UserViewGridComponent, i11.MJFormField, i12.FormToolbarComponent, i13.CodeEditorComponent, i14.TemplateEditorComponent, i15.AITestHarnessComponent, i3.DatePipe], styles: [".record-form-container[_ngcontent-%COMP%] {\n font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;\n padding: 10px;\n}\n\n.custom-toolbar-actions[_ngcontent-%COMP%] {\n margin-left: auto;\n}\n\n.status-badge[_ngcontent-%COMP%] {\n font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;\n font-weight: 500;\n letter-spacing: 0.02em;\n}\n\n.config-summary[_ngcontent-%COMP%] {\n position: sticky;\n top: 0;\n max-height: 600px;\n overflow-y: auto;\n}\n\n.config-item[_ngcontent-%COMP%] {\n padding: 8px 0;\n border-bottom: 1px solid #e9ecef;\n}\n\n.config-item[_ngcontent-%COMP%]:last-child {\n border-bottom: none;\n}\n\n.template-tab-content[_ngcontent-%COMP%] {\n background: #fff;\n}\n\n.template-header[_ngcontent-%COMP%] h5[_ngcontent-%COMP%] {\n font-size: 1.1em;\n}\n\n.loading-state[_ngcontent-%COMP%], \n.no-template-state[_ngcontent-%COMP%], \n.invalid-template-state[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n}\n\n.no-template-state[_ngcontent-%COMP%] i[_ngcontent-%COMP%], \n.invalid-template-state[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n opacity: 0.6;\n}\n\n.template-editor-container[_ngcontent-%COMP%] {\n background: #fff;\n border-radius: 6px;\n}\n\n\n\n@media (max-width: 1200px) {\n .record-form-container[_ngcontent-%COMP%] .mj-tab-body[_ngcontent-%COMP%] > div[_ngcontent-%COMP%] {\n grid-template-columns: 1fr !important;\n gap: 20px;\n }\n \n .config-summary[_ngcontent-%COMP%] {\n order: -1;\n position: static;\n max-height: none;\n }\n}\n\n\n\n@media (max-width: 768px) {\n .custom-toolbar-actions[_ngcontent-%COMP%] {\n flex-direction: column;\n gap: 4px !important;\n }\n \n .status-badge[_ngcontent-%COMP%] {\n align-self: flex-start;\n }\n}\n\n\n\n.record-form-container[_ngcontent-%COMP%] mj-form-section[_ngcontent-%COMP%] {\n padding: 16px;\n}\n\n\n\n.status-badge[_ngcontent-%COMP%], \n.config-item[_ngcontent-%COMP%], \n.template-header[_ngcontent-%COMP%] {\n transition: all 0.2s ease;\n}\n\n.config-item[_ngcontent-%COMP%]:hover {\n background-color: rgba(0,0,0,0.02);\n border-radius: 4px;\n margin: 0 -8px;\n padding: 8px;\n}\n\n\n\n.history-row[_ngcontent-%COMP%] {\n transition: background 0.2s;\n}\n\n.history-row[_ngcontent-%COMP%]:not(.even-row) {\n background: #f8f9fa;\n}\n\n.history-row.even-row[_ngcontent-%COMP%] {\n background: white;\n}\n\n.history-row[_ngcontent-%COMP%]:hover {\n background: #e9ecef !important;\n}\n\n\n\n.parameter-card[_ngcontent-%COMP%] {\n position: relative;\n overflow: hidden;\n}\n\n.parameter-card[_ngcontent-%COMP%]::before {\n content: '';\n position: absolute;\n top: 0;\n left: 0;\n bottom: 0;\n width: 4px;\n background: inherit;\n transition: width 0.2s;\n}\n\n.parameter-card[_ngcontent-%COMP%]:hover {\n transform: translateY(-2px);\n box-shadow: 0 4px 12px rgba(0,0,0,0.1);\n}\n\n.parameter-card[_ngcontent-%COMP%]:hover::before {\n width: 6px;\n}\n\n.type-badge[_ngcontent-%COMP%] {\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.03em;\n transition: transform 0.2s;\n}\n\n.parameter-card[_ngcontent-%COMP%]:hover .type-badge[_ngcontent-%COMP%] {\n transform: scale(1.05);\n}\n\n\n\n.parameter-card[_ngcontent-%COMP%] i.fa-solid[_ngcontent-%COMP%] {\n transition: transform 0.3s;\n}\n\n.parameter-card[_ngcontent-%COMP%]:hover i.fa-solid[_ngcontent-%COMP%] {\n transform: rotate(360deg);\n}\n\n\n\n@media (max-width: 768px) {\n .parameter-card[_ngcontent-%COMP%] {\n margin-bottom: 8px;\n }\n \n .parameter-card[_ngcontent-%COMP%] h6[_ngcontent-%COMP%] {\n font-size: 0.95em;\n }\n \n .type-badge[_ngcontent-%COMP%] {\n font-size: 0.7em !important;\n }\n}"] }); }
2279
2568
  };
2280
2569
  AIPromptFormComponentExtended = __decorate([
2281
2570
  RegisterClass(BaseFormComponent, 'AI Prompts')
@@ -2283,7 +2572,7 @@ AIPromptFormComponentExtended = __decorate([
2283
2572
  export { AIPromptFormComponentExtended };
2284
2573
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(AIPromptFormComponentExtended, [{
2285
2574
  type: Component,
2286
- args: [{ selector: 'mj-ai-prompt-form', template: "<div class=\"record-form-container\" mjFillContainer [bottomMargin]=\"20\" [rightMargin]=\"5\">\n <form *ngIf=\"record\" class=\"record-form\" #form=\"ngForm\" mjFillContainer>\n <mj-form-toolbar [form]=\"this\"></mj-form-toolbar>\n\n <!-- Main Content Area - Template Editor and Configuration -->\n <div class=\"prompt-main-area\" style=\"display: flex; flex-direction: column; height: 100%; overflow-y: auto;\">\n \n <!-- Header Section -->\n <div class=\"prompt-header\" style=\"flex-shrink: 0; padding: 20px; background: #f8f9fa; border-bottom: 2px solid #e9ecef;\">\n <div style=\"display: flex; justify-content: space-between; align-items: flex-start; gap: 20px;\">\n \n <!-- Left: Prompt Info -->\n <div style=\"flex: 1; min-width: 0;\">\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.4em;\"></i>\n @if (EditMode) {\n <kendo-textbox [(ngModel)]=\"record.Name\" \n name=\"promptName\"\n placeholder=\"Enter prompt name...\"\n style=\"font-size: 1.2em; font-weight: 600; min-width: 300px; flex: 1;\">\n </kendo-textbox>\n } @else {\n <h4 style=\"margin: 0; color: #495057; font-weight: 600; flex: 1;\">{{ record.Name || 'Untitled AI Prompt' }}</h4>\n <span class=\"status-badge\" [style.background-color]=\"getStatusBadgeColor()\" \n style=\"color: white; padding: 4px 10px; border-radius: 12px; font-size: 0.75em; font-weight: 500;\">\n {{ record.Status }}\n </span>\n }\n </div>\n \n <!-- Status and Type Editors when in edit mode -->\n @if (EditMode) {\n <div style=\"display: flex; gap: 16px; margin-bottom: 12px; flex-wrap: wrap;\">\n <div>\n <label style=\"display: block; margin-bottom: 4px; font-weight: 600; color: #495057; font-size: 0.9em;\">Status</label>\n <kendo-dropdownlist [(ngModel)]=\"record.Status\"\n name=\"promptStatus\"\n [data]=\"[{text: 'Active', value: 'Active'}, {text: 'Pending', value: 'Pending'}, {text: 'Disabled', value: 'Disabled'}]\"\n textField=\"text\"\n valueField=\"value\"\n [valuePrimitive]=\"true\"\n style=\"width: 150px;\">\n </kendo-dropdownlist>\n </div>\n <div>\n <label style=\"display: block; margin-bottom: 4px; font-weight: 600; color: #495057; font-size: 0.9em;\">\n Type <span style=\"color: #dc3545;\">*</span>\n </label>\n @if (isLoadingPromptTypes) {\n <div style=\"padding: 8px; color: #6c757d; font-style: italic; width: 200px;\">\n <i class=\"fa-solid fa-spinner fa-spin\"></i> Loading types...\n </div>\n } @else {\n <kendo-dropdownlist [(ngModel)]=\"record.TypeID\"\n name=\"promptTypeID\"\n [data]=\"availablePromptTypes\"\n textField=\"Name\"\n valueField=\"ID\"\n [valuePrimitive]=\"true\"\n [filterable]=\"true\"\n placeholder=\"Select prompt type...\"\n style=\"width: 200px;\">\n </kendo-dropdownlist>\n }\n </div>\n </div>\n }\n \n @if (EditMode) {\n <kendo-textarea [(ngModel)]=\"record.Description\" \n name=\"promptDescription\"\n [rows]=\"2\"\n placeholder=\"Enter prompt description...\"\n style=\"width: 100%; max-width: 600px; margin-bottom: 12px;\">\n </kendo-textarea>\n } @else if (record.Description) {\n <p style=\"margin: 0 0 12px 0; color: #6c757d; font-size: 0.9em; line-height: 1.4;\">{{ record.Description }}</p>\n }\n \n <!-- Quick Config Row -->\n <div class=\"quick-config\" style=\"display: flex; align-items: center; gap: 16px; flex-wrap: wrap;\">\n @if (record.TypeID) {\n <div class=\"config-item\" style=\"display: flex; align-items: center; gap: 6px; font-size: 0.85em;\">\n <i class=\"fa-solid fa-tag\" style=\"color: #6c757d;\"></i>\n <span style=\"color: #6c757d;\">Type:</span>\n <span style=\"color: #495057; font-weight: 500;\">{{ getPromptTypeDisplayName(record.TypeID) }}</span>\n </div>\n }\n \n <div class=\"config-item\" style=\"display: flex; align-items: center; gap: 6px; font-size: 0.85em;\">\n <i class=\"fa-solid fa-layer-group\" style=\"color: #6c757d;\"></i>\n <span style=\"color: #6c757d;\">Parallelization:</span>\n <span style=\"color: #495057; font-weight: 500;\">{{ getParallelizationModeDisplay() }}</span>\n </div>\n \n <div class=\"config-item\" style=\"display: flex; align-items: center; gap: 6px; font-size: 0.85em;\">\n <i class=\"fa-solid fa-code\" style=\"color: #6c757d;\"></i>\n <span style=\"color: #6c757d;\">Output:</span>\n <span [style.color]=\"getValidationColor()\" style=\"font-weight: 500;\">{{ getOutputTypeDisplay() }}</span>\n </div>\n \n @if (record.EnableCaching) {\n <div class=\"config-item\" style=\"display: flex; align-items: center; gap: 6px; font-size: 0.85em;\">\n <i class=\"fa-solid fa-database\" style=\"color: #28a745;\"></i>\n <span style=\"color: #28a745; font-weight: 500;\">Caching Enabled</span>\n </div>\n }\n </div>\n </div>\n \n <!-- Right: Action Buttons -->\n <div class=\"action-buttons\" style=\"display: flex; flex-direction: column; gap: 8px; align-items: flex-end;\">\n <div style=\"display: flex; gap: 8px;\">\n @if (record.ID) {\n <kendo-button themeColor=\"primary\" size=\"large\"\n (click)=\"openTestHarness()\"\n title=\"Run AI Prompt Test Harness\">\n <i class=\"fa-solid fa-play\"></i> Run\n </kendo-button>\n }\n </div>\n \n @if (!canExecute && record.ID) {\n <div style=\"font-size: 0.75em; color: #dc3545; text-align: right; max-width: 200px;\">\n @if (record.Status !== 'Active') {\n \u2022 Prompt must be Active<br>\n }\n @if (!record.TemplateID) {\n \u2022 Template is required<br>\n }\n @if (!template && record.TemplateID) {\n \u2022 Template not found<br>\n }\n </div>\n }\n </div>\n </div>\n </div>\n\n <!-- Configuration Sections with Expansion Panels -->\n <div class=\"configuration-sections\" style=\"flex: 1; background: white; border-top: 2px solid #e9ecef; padding: 16px; min-height: 0;\">\n <!-- Template Editor Section -->\n <kendo-expansionpanel \n [expanded]=\"true\"\n style=\"margin-bottom: 12px;\">\n <ng-template kendoExpansionPanelTitleDirective>\n <span style=\"display: flex; align-items: center; gap: 8px; font-weight: 600;\">\n <i class=\"fa-solid fa-code\" style=\"color: #6c757d;\"></i>\n Template Editor\n @if (template) {\n <span style=\"color: #6c757d; font-size: 0.9em; font-weight: normal;\">\u2022 {{ template.Name }}</span>\n }\n </span>\n </ng-template>\n \n <!-- Direct Content Projection -->\n <div class=\"template-section\" style=\"display: flex; flex-direction: column; min-height: 400px; padding: 8px;\">\n @if (isLoadingTemplate) {\n <div class=\"loading-state\" style=\"flex: 1; display: flex; align-items: center; justify-content: center; color: #6c757d;\">\n <i class=\"fa-solid fa-spinner fa-spin\" style=\"font-size: 24px; margin-right: 12px;\"></i>\n Loading template...\n </div>\n } @else if (!record.TemplateID) {\n <div class=\"no-template-state\" style=\"flex: 1; display: flex; flex-direction: column; align-items: center; justify-content: center; padding: 40px; color: #6c757d;\">\n <i class=\"fa-solid fa-code\" style=\"font-size: 64px; margin-bottom: 20px; opacity: 0.3;\"></i>\n <h5 style=\"margin-bottom: 12px; color: #495057;\">No Template Associated</h5>\n <p style=\"margin-bottom: 24px; text-align: center; max-width: 400px;\">\n This AI prompt needs a template to define its structure and parameters. \n Create a new template or link to an existing one.\n </p>\n <div style=\"display: flex; gap: 12px;\">\n <kendo-button themeColor=\"primary\" (click)=\"createNewTemplate()\">\n <i class=\"fa-solid fa-plus\"></i> Create New Template\n </kendo-button>\n <kendo-button fillMode=\"outline\" (click)=\"linkExistingTemplate()\">\n <i class=\"fa-solid fa-link\"></i> Link Existing Template\n </kendo-button>\n </div>\n </div>\n } @else if (templateNotFoundInDatabase) {\n <div class=\"invalid-template-state\" style=\"flex: 1; display: flex; flex-direction: column; align-items: center; justify-content: center; padding: 40px; color: #dc3545;\">\n <i class=\"fa-solid fa-exclamation-triangle\" style=\"font-size: 64px; margin-bottom: 20px; opacity: 0.7;\"></i>\n <h5 style=\"margin-bottom: 12px;\">Template Not Found</h5>\n <p style=\"margin-bottom: 24px; text-align: center; max-width: 400px;\">\n The referenced template could not be loaded. It may have been deleted or moved.\n </p>\n <div style=\"display: flex; gap: 12px;\">\n <kendo-button fillMode=\"outline\" (click)=\"loadTemplate()\">\n <i class=\"fa-solid fa-refresh\"></i> Retry Loading\n </kendo-button>\n <kendo-button themeColor=\"primary\" (click)=\"createNewTemplate()\">\n <i class=\"fa-solid fa-plus\"></i> Create New Template\n </kendo-button>\n </div>\n </div>\n } @else {\n <!-- Active Template Editor -->\n <div class=\"template-editor-container\" style=\"flex: 1; display: flex; flex-direction: column; min-height: 350px;\">\n <!-- Template Editor -->\n <div style=\"flex: 1; background: white; border-radius: 6px; border: 1px solid #e9ecef;\">\n <mj-template-editor \n #templateEditor\n [template]=\"template\"\n [config]=\"templateEditorConfig\"\n (contentChange)=\"onTemplateContentChange($event)\"\n (runTemplate)=\"onTemplateRun($event)\"\n style=\"display: block; min-height: 300px;\">\n </mj-template-editor>\n </div>\n </div>\n }\n </div>\n </kendo-expansionpanel> \n\n <!-- Model Configuration Expansion Panel -->\n @if (record.IsSaved) {\n <kendo-expansionpanel \n [expanded]=\"false\"\n style=\"margin-bottom: 12px;\">\n <ng-template kendoExpansionPanelTitleDirective>\n <span style=\"display: flex; align-items: center; gap: 8px; font-weight: 600;\">\n <i class=\"fa-solid fa-microchip\" style=\"color: #6c757d;\"></i>\n Models\n @if (promptModels.length > 0) {\n <span class=\"badge\" style=\"background: #17a2b8; color: white; padding: 2px 6px; border-radius: 10px; font-size: 0.7em;\">\n {{ promptModels.length }}\n </span>\n }\n <span style=\"color: #6c757d; font-size: 0.8em; font-weight: normal; margin-left: 8px;\">\n <i class=\"fa-solid fa-info-circle\" title=\"Models are tried in order from top to bottom. The first available model will be used.\"></i>\n Priority order (first available model will be used)\n </span>\n </span>\n </ng-template>\n \n <!-- Direct Content Projection -->\n <div style=\"padding: 16px 0;\">\n <!-- Model Management Interface -->\n <div class=\"model-management\" style=\"border: 1px solid #dee2e6; border-radius: 6px; background: #f8f9fa;\">\n @if (isLoadingModels) {\n <div class=\"loading-state\" style=\"padding: 20px; text-align: center; color: #6c757d;\">\n <i class=\"fa-solid fa-spinner fa-spin\"></i> Loading models...\n </div>\n } @else {\n @if (promptModels.length === 0) {\n <div class=\"empty-state\" style=\"padding: 20px; text-align: center; color: #6c757d;\">\n <i class=\"fa-solid fa-info-circle\"></i> No models configured\n @if (EditMode) {\n <div style=\"margin-top: 10px;\">\n <kendo-button fillMode=\"outline\" themeColor=\"primary\" size=\"small\"\n (click)=\"addNewModel()\">\n <i class=\"fa-solid fa-plus\"></i> Add Model\n </kendo-button>\n </div>\n }\n </div>\n } @else {\n <!-- Priority explanation for multiple models -->\n @if (promptModels.length > 1) {\n <div style=\"padding: 12px 16px; background: #e3f2fd; border-bottom: 1px solid #bbdefb; color: #1565c0; font-size: 0.85em;\">\n <i class=\"fa-solid fa-info-circle\" style=\"margin-right: 6px;\"></i>\n Models are tried in priority order (1, 2, 3...). The first available model that meets requirements will be used for execution.\n </div>\n }\n <!-- Column Headers -->\n <div class=\"model-header\" style=\"display: grid; grid-template-columns: 40px 2fr 1fr 1fr 60px; gap: 12px; padding: 12px 16px; background: #e9ecef; font-weight: 600; font-size: 0.85em; color: #495057; border-bottom: 1px solid #dee2e6;\">\n <div title=\"Priority order - models are tried from top to bottom\">\n <i class=\"fa-solid fa-sort\" style=\"color: #6c757d;\"></i>\n </div>\n <div>AI Model <span style=\"color: #dc3545;\">*</span></div>\n <div>Vendor</div>\n <div>Created</div>\n <div>Actions</div>\n </div>\n \n @for (model of promptModels; track model.ID || $index; let i = $index) {\n <div class=\"model-row\" \n [draggable]=\"EditMode\"\n (dragstart)=\"onDragStart($event, i)\"\n (dragover)=\"onDragOver($event)\"\n (drop)=\"onDrop($event, i)\"\n (dragend)=\"onDragEnd($event)\"\n [style.background]=\"!model.ModelID ? '#fff3cd' : (draggedIndex === i ? '#e3f2fd' : 'white')\"\n [style.border-left]=\"!model.ModelID ? '3px solid #ffc107' : 'none'\"\n [style.opacity]=\"draggedIndex === i ? '0.5' : '1'\"\n style=\"display: grid; grid-template-columns: 40px 2fr 1fr 1fr 60px; gap: 12px; padding: 12px 16px; border-bottom: 1px solid #e9ecef; align-items: start; transition: background 0.2s, opacity 0.2s;\">\n \n <!-- Drag Handle / Priority -->\n <div class=\"drag-handle\" style=\"display: flex; flex-direction: column; align-items: center; justify-content: center; color: #6c757d;\">\n @if (EditMode) {\n <i class=\"fa-solid fa-grip-vertical\" title=\"Drag to reorder priority\" style=\"cursor: move;\"></i>\n <span style=\"font-size: 0.7em; margin-top: 2px;\">#{{ i + 1 }}</span>\n } @else {\n <span style=\"font-size: 0.9em; font-weight: 600;\" title=\"Priority {{ i + 1 }} - Lower numbers are tried first\">#{{ i + 1 }}</span>\n }\n </div>\n \n <!-- Model Selection -->\n <div class=\"model-select\">\n @if (EditMode) {\n <kendo-dropdownlist [(ngModel)]=\"model.ModelID\"\n [name]=\"'modelId_' + i\"\n [data]=\"availableModels\"\n textField=\"Name\"\n valueField=\"ID\"\n [valuePrimitive]=\"true\"\n [filterable]=\"true\"\n placeholder=\"Select a model...\"\n (valueChange)=\"onModelChange($event, i)\"\n style=\"width: 100%;\">\n </kendo-dropdownlist>\n } @else {\n <span style=\"font-weight: 500;\">{{ getModelDisplayName(model.ModelID) }}</span>\n }\n </div>\n \n <!-- Vendor -->\n <div class=\"model-vendor\">\n @if (EditMode) {\n @if (model.ModelID) {\n @if (shouldShowVendorDropdown(model.ModelID)) {\n <kendo-dropdownlist [(ngModel)]=\"model.VendorID\"\n [name]=\"'vendorId_' + i\"\n [data]=\"getVendorsForModelSync(model.ModelID)\"\n textField=\"Name\"\n valueField=\"ID\"\n [valuePrimitive]=\"true\"\n [filterable]=\"true\"\n placeholder=\"Select vendor...\"\n style=\"width: 100%;\">\n <ng-template kendoDropDownListItemTemplate let-dataItem>\n <span [style.color]=\"getVendorStatusColor(model.ModelID, dataItem.ID)\">\n {{ dataItem.Name }}\n @if (getModelVendorStatus(model.ModelID, dataItem.ID) !== 'Active') {\n <span style=\"font-size: 0.8em; margin-left: 4px;\">({{ getModelVendorStatus(model.ModelID, dataItem.ID) }})</span>\n }\n </span>\n </ng-template>\n </kendo-dropdownlist>\n } @else {\n <!-- Single vendor - just show the name -->\n @if (getVendorsForModelSync(model.ModelID).length === 1) {\n <span [style.color]=\"getVendorStatusColor(model.ModelID, getVendorsForModelSync(model.ModelID)[0].ID)\" style=\"font-size: 0.9em; font-weight: 500;\">\n {{ getVendorsForModelSync(model.ModelID)[0].Name }}\n @if (getModelVendorStatus(model.ModelID, getVendorsForModelSync(model.ModelID)[0].ID) !== 'Active') {\n <span style=\"font-size: 0.8em; margin-left: 4px;\">({{ getModelVendorStatus(model.ModelID, getVendorsForModelSync(model.ModelID)[0].ID) }})</span>\n }\n </span>\n } @else {\n <span style=\"color: #6c757d; font-style: italic; font-size: 0.9em;\">No vendors available</span>\n }\n }\n } @else {\n <span style=\"color: #6c757d; font-style: italic; font-size: 0.9em;\">Select model first</span>\n }\n } @else {\n @if (model.VendorID && model.ModelID) {\n <span [style.color]=\"getVendorStatusColor(model.ModelID, model.VendorID)\" style=\"font-size: 0.9em;\">\n {{ getVendorDisplayName(model.VendorID) }}\n @if (getModelVendorStatus(model.ModelID, model.VendorID) !== 'Active') {\n <span style=\"font-size: 0.8em; margin-left: 4px;\">({{ getModelVendorStatus(model.ModelID, model.VendorID) }})</span>\n }\n </span>\n } @else {\n <span style=\"color: #6c757d; font-size: 0.9em;\">-</span>\n }\n }\n </div>\n \n \n <!-- Created Date -->\n <div class=\"model-created\">\n @if (model.ID) {\n <span style=\"color: #6c757d; font-size: 0.8em;\">{{ model.__mj_CreatedAt | date:'short' }}</span>\n } @else {\n <span style=\"color: #28a745; font-size: 0.8em; font-style: italic;\">New</span>\n }\n </div>\n \n <!-- Actions -->\n <div class=\"model-actions\" style=\"display: flex; gap: 2px; flex-direction: column;\">\n @if (EditMode) {\n <div style=\"display: flex; gap: 2px; margin-bottom: 4px;\">\n <kendo-button fillMode=\"flat\" size=\"small\"\n (click)=\"moveModelUp(i)\"\n [disabled]=\"i === 0\"\n title=\"Move up\">\n <i class=\"fa-solid fa-chevron-up\"></i>\n </kendo-button>\n <kendo-button fillMode=\"flat\" size=\"small\"\n (click)=\"moveModelDown(i)\"\n [disabled]=\"i === promptModels.length - 1\"\n title=\"Move down\">\n <i class=\"fa-solid fa-chevron-down\"></i>\n </kendo-button>\n </div>\n <kendo-button fillMode=\"flat\" themeColor=\"error\" size=\"small\"\n (click)=\"removePromptModel(i)\"\n title=\"Remove model\">\n <i class=\"fa-solid fa-times\"></i>\n </kendo-button>\n }\n </div>\n </div>\n \n <!-- Second row with additional details -->\n <div style=\"display: grid; grid-template-columns: 40px 1fr; gap: 12px; padding: 8px 16px; border-bottom: 1px solid #e9ecef; background: #f8f9fa; font-size: 0.85em; color: #6c757d;\">\n <div></div>\n <div>\n <!-- Basic model details -->\n <div style=\"display: flex; gap: 16px; flex-wrap: wrap; align-items: center; margin-bottom: 8px;\">\n @if (model.Status) {\n <span><strong>Status:</strong> {{ model.Status }}</span>\n }\n @if (model.ConfigurationID) {\n <span><strong>Configuration:</strong> {{ model.ConfigurationID }}</span>\n }\n </div>\n \n <!-- Parallel execution fields when prompt is ModelSpecific -->\n @if (record.ParallelizationMode === 'ModelSpecific') {\n <div style=\"padding: 8px; background: #fff; border: 1px solid #dee2e6; border-radius: 4px; margin-top: 8px;\">\n <div style=\"margin-bottom: 6px; font-weight: 600; color: #495057; font-size: 0.9em;\">\n <i class=\"fa-solid fa-layer-group\"></i> Model-Specific Parallel Execution\n </div>\n \n @if (EditMode) {\n <div style=\"display: grid; grid-template-columns: 1fr 1fr 1fr; gap: 12px; align-items: center;\">\n <!-- Parallel Mode -->\n <div>\n <label style=\"display: block; margin-bottom: 2px; font-size: 0.8em; font-weight: 600; color: #495057;\">Parallel Mode</label>\n <kendo-dropdownlist [(ngModel)]=\"model.ParallelizationMode\"\n [name]=\"'parallelMode_' + i\"\n [data]=\"[{text: 'None', value: 'None'}, {text: 'Static Count', value: 'StaticCount'}, {text: 'Config Param', value: 'ConfigParam'}]\"\n textField=\"text\"\n valueField=\"value\"\n [valuePrimitive]=\"true\"\n placeholder=\"Select mode...\"\n style=\"width: 100%; font-size: 0.85em;\">\n </kendo-dropdownlist>\n </div>\n \n <!-- Parallel Count (when StaticCount) -->\n @if (model.ParallelizationMode === 'StaticCount') {\n <div>\n <label style=\"display: block; margin-bottom: 2px; font-size: 0.8em; font-weight: 600; color: #495057;\">Parallel Count</label>\n <kendo-numerictextbox [(ngModel)]=\"model.ParallelCount\"\n [name]=\"'parallelCount_' + i\"\n [min]=\"1\"\n [step]=\"1\"\n [format]=\"'n0'\"\n placeholder=\"Count...\"\n style=\"width: 100%; font-size: 0.85em;\">\n </kendo-numerictextbox>\n </div>\n }\n \n <!-- Config Param (when ConfigParam) -->\n @if (model.ParallelizationMode === 'ConfigParam') {\n <div>\n <label style=\"display: block; margin-bottom: 2px; font-size: 0.8em; font-weight: 600; color: #495057;\">Config Parameter</label>\n <kendo-textbox [(ngModel)]=\"model.ParallelConfigParam\"\n [name]=\"'parallelConfigParam_' + i\"\n placeholder=\"Parameter name...\"\n style=\"width: 100%; font-size: 0.85em;\">\n </kendo-textbox>\n </div>\n }\n </div>\n } @else {\n <!-- Read-only display -->\n <div style=\"display: flex; gap: 16px; flex-wrap: wrap; align-items: center;\">\n @if (model.ParallelizationMode) {\n <span><strong>Parallel Mode:</strong> {{ model.ParallelizationMode }}</span>\n }\n @if (model.ParallelCount) {\n <span><strong>Parallel Count:</strong> {{ model.ParallelCount }}</span>\n }\n @if (model.ParallelConfigParam) {\n <span><strong>Config Param:</strong> {{ model.ParallelConfigParam }}</span>\n }\n </div>\n }\n </div>\n }\n </div>\n </div>\n }\n \n @if (EditMode) {\n <div class=\"add-model-row\" style=\"padding: 12px 16px; text-align: center; background: #f8f9fa; border-top: 1px solid #dee2e6;\">\n <kendo-button fillMode=\"outline\" themeColor=\"success\" size=\"small\"\n (click)=\"addNewModel()\">\n <i class=\"fa-solid fa-plus\"></i> Add Model\n </kendo-button>\n </div>\n }\n }\n }\n </div>\n </div>\n </kendo-expansionpanel>\n }\n\n <!-- Advanced Configuration Expansion Panel -->\n <kendo-expansionpanel \n [expanded]=\"false\"\n style=\"margin-bottom: 12px;\">\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 Advanced Configuration\n </span>\n </ng-template>\n \n <!-- Direct Content Projection -->\n <div style=\"padding: 16px 0;\">\n <div style=\"display: grid; grid-template-columns: 1fr 1fr; gap: 20px;\">\n \n <!-- Left Column -->\n <div>\n <mj-form-field \n [record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"ParallelizationMode\"\n Type=\"dropdownlist\"\n [EditMode]=\"EditMode\">\n </mj-form-field>\n \n @if (showParallelCount) {\n <mj-form-field \n [record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"ParallelCount\"\n Type=\"numerictextbox\"\n [EditMode]=\"EditMode\">\n </mj-form-field>\n }\n \n @if (showParallelConfigParam) {\n <mj-form-field \n [record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"ParallelConfigParam\"\n Type=\"textbox\"\n [EditMode]=\"EditMode\">\n </mj-form-field>\n }\n \n <mj-form-field \n [record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"OutputType\"\n Type=\"dropdownlist\"\n [EditMode]=\"EditMode\">\n </mj-form-field>\n \n </div>\n \n <!-- Right Column -->\n <div>\n <mj-form-field \n [record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"ValidationBehavior\"\n Type=\"dropdownlist\"\n [EditMode]=\"EditMode\">\n </mj-form-field>\n \n <mj-form-field \n [record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"EnableCaching\"\n Type=\"checkbox\"\n [EditMode]=\"EditMode\">\n </mj-form-field>\n \n <!-- Result Selector Prompt with Tree Selector -->\n <div style=\"margin-bottom: 16px;\">\n <label style=\"display: block; margin-bottom: 4px; font-weight: 600; color: #495057; font-size: 0.9em;\">\n Result Selector Prompt\n </label>\n @if (EditMode) {\n @if (isLoadingResultSelectorData) {\n <div style=\"padding: 8px; color: #6c757d; font-style: italic;\">\n <i class=\"fa-solid fa-spinner fa-spin\"></i> Loading prompts...\n </div>\n } @else {\n <kendo-dropdowntree \n [(ngModel)]=\"record.ResultSelectorPromptID\"\n name=\"resultSelectorPromptID\"\n [data]=\"resultSelectorTreeData\"\n textField=\"text\"\n valueField=\"value\"\n [valuePrimitive]=\"true\"\n [filterable]=\"true\"\n placeholder=\"Select a result selector prompt...\"\n style=\"width: 100%;\"\n (valueChange)=\"onResultSelectorChange($event)\">\n </kendo-dropdowntree>\n }\n } @else {\n <span style=\"color: #495057;\">{{ getPromptDisplayName(record.ResultSelectorPromptID || '') || 'None selected' }}</span>\n }\n </div>\n </div>\n </div>\n </div>\n </kendo-expansionpanel>\n\n <!-- Output Example Expansion Panel (when OutputType = object) -->\n @if (showOutputExample) {\n <kendo-expansionpanel \n [expanded]=\"true\"\n style=\"margin-bottom: 12px;\">\n <ng-template kendoExpansionPanelTitleDirective>\n <span style=\"display: flex; align-items: center; gap: 8px; font-weight: 600;\">\n <i class=\"fa-solid fa-code\" style=\"color: #6c757d;\"></i>\n Output Example (JSON)\n <span style=\"color: #dc3545; font-size: 0.8em; font-weight: normal;\">\u2022 Required for object output type</span>\n </span>\n </ng-template>\n \n <!-- Direct Content Projection -->\n <div style=\"padding: 16px;\">\n @if (EditMode) {\n <mj-code-editor \n [(ngModel)]=\"record.OutputExample\"\n name=\"outputExample\"\n language=\"json\"\n placeholder=\"Enter JSON example structure...\"\n style=\"width: 100%; height: 200px; border: 1px solid #dee2e6; border-radius: 4px;\">\n </mj-code-editor>\n <div style=\"margin-top: 8px; color: #6c757d; font-size: 0.85em;\">\n <i class=\"fa-solid fa-info-circle\"></i> Provide a JSON example that defines the expected structure for object output validation.\n </div>\n } @else if (record.OutputExample) {\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: 250px;\">{{ record.OutputExample }}</div>\n } @else {\n <div style=\"background: #fff3cd; border: 1px solid #ffeaa7; border-radius: 4px; padding: 12px; color: #856404; text-align: center;\">\n <i class=\"fa-solid fa-exclamation-triangle\"></i> Output example is required when output type is 'object'\n </div>\n }\n </div>\n </kendo-expansionpanel>\n }\n\n <!-- Execution History Expansion Panel -->\n @if (record.IsSaved) {\n <kendo-expansionpanel \n [expanded]=\"false\"\n style=\"margin-bottom: 12px;\">\n <ng-template kendoExpansionPanelTitleDirective>\n <span style=\"display: flex; align-items: center; gap: 8px; font-weight: 600;\">\n <i class=\"fa-solid fa-history\" style=\"color: #6c757d;\"></i>\n Execution History\n @if (executionHistory.length > 0) {\n <span style=\"color: #6c757d; font-weight: normal;\">({{ executionHistory.length }})</span>\n }\n </span>\n </ng-template>\n \n <!-- Custom Execution History Viewer -->\n <div style=\"padding: 16px;\">\n @if (isLoadingHistory) {\n <div style=\"text-align: center; padding: 40px; color: #6c757d;\">\n <i class=\"fa-solid fa-spinner fa-spin\" style=\"font-size: 2em; margin-bottom: 12px;\"></i>\n <p>Loading execution history...</p>\n </div>\n } @else if (executionHistory.length === 0) {\n <div style=\"text-align: center; padding: 40px; color: #6c757d;\">\n <i class=\"fa-solid fa-history\" style=\"font-size: 3em; margin-bottom: 12px; opacity: 0.3;\"></i>\n <p>No execution history yet</p>\n <p style=\"font-size: 0.9em;\">Run this prompt to see execution history here</p>\n </div>\n } @else {\n <!-- Sort Controls -->\n <div style=\"display: flex; justify-content: space-between; align-items: center; margin-bottom: 16px;\">\n <div style=\"color: #6c757d; font-size: 0.9em;\">\n Showing {{ executionHistory.length }} executions\n </div>\n <div style=\"display: flex; gap: 8px; align-items: center;\">\n <span style=\"color: #6c757d; font-size: 0.85em;\">Sort by:</span>\n <kendo-buttongroup selection=\"single\">\n <button kendoButton \n [selected]=\"historySortField === 'runAt'\"\n (click)=\"changeHistorySort('runAt')\"\n size=\"small\">\n Date\n @if (historySortField === 'runAt') {\n <i [class]=\"'fa-solid fa-sort-' + (historySortDirection === 'asc' ? 'up' : 'down')\" \n style=\"margin-left: 4px; font-size: 0.8em;\"></i>\n }\n </button>\n <button kendoButton \n [selected]=\"historySortField === 'executionTime'\"\n (click)=\"changeHistorySort('executionTime')\"\n size=\"small\">\n Duration\n @if (historySortField === 'executionTime') {\n <i [class]=\"'fa-solid fa-sort-' + (historySortDirection === 'asc' ? 'up' : 'down')\" \n style=\"margin-left: 4px; font-size: 0.8em;\"></i>\n }\n </button>\n <button kendoButton \n [selected]=\"historySortField === 'tokens'\"\n (click)=\"changeHistorySort('tokens')\"\n size=\"small\">\n Tokens\n @if (historySortField === 'tokens') {\n <i [class]=\"'fa-solid fa-sort-' + (historySortDirection === 'asc' ? 'up' : 'down')\" \n style=\"margin-left: 4px; font-size: 0.8em;\"></i>\n }\n </button>\n <button kendoButton \n [selected]=\"historySortField === 'cost'\"\n (click)=\"changeHistorySort('cost')\"\n size=\"small\">\n Cost\n @if (historySortField === 'cost') {\n <i [class]=\"'fa-solid fa-sort-' + (historySortDirection === 'asc' ? 'up' : 'down')\" \n style=\"margin-left: 4px; font-size: 0.8em;\"></i>\n }\n </button>\n </kendo-buttongroup>\n </div>\n </div>\n \n <!-- Execution History Table -->\n <div style=\"border: 1px solid #e9ecef; border-radius: 8px; overflow: hidden;\">\n <table style=\"width: 100%; border-collapse: collapse;\">\n <thead>\n <tr style=\"background: #f8f9fa; border-bottom: 2px solid #e9ecef;\">\n <th style=\"padding: 12px; text-align: left; font-weight: 600; color: #495057;\">Status</th>\n <th style=\"padding: 12px; text-align: left; font-weight: 600; color: #495057;\">Date & Time</th>\n <th style=\"padding: 12px; text-align: left; font-weight: 600; color: #495057;\">Model</th>\n <th style=\"padding: 12px; text-align: left; font-weight: 600; color: #495057;\">Duration</th>\n <th style=\"padding: 12px; text-align: right; font-weight: 600; color: #495057;\">Tokens</th>\n <th style=\"padding: 12px; text-align: right; font-weight: 600; color: #495057;\">Cost</th>\n <th style=\"padding: 12px; text-align: center; font-weight: 600; color: #495057;\">Type</th>\n <th style=\"padding: 12px; text-align: center; font-weight: 600; color: #495057;\">Actions</th>\n </tr>\n </thead>\n <tbody>\n @for (run of executionHistory; track run.ID; let i = $index) {\n <tr class=\"history-row\"\n [class.even-row]=\"i % 2 === 0\"\n style=\"border-bottom: 1px solid #f1f3f5;\">\n <td style=\"padding: 12px;\">\n <span style=\"display: flex; align-items: center; gap: 6px;\">\n <i [class]=\"'fa-solid ' + getExecutionStatusIcon(run.Success)\" \n [style.color]=\"getExecutionStatusColor(run.Success)\"></i>\n <span [style.color]=\"getExecutionStatusColor(run.Success)\" style=\"font-weight: 500;\">\n {{ run.Success === true ? 'Success' : run.Success === false ? 'Failed' : 'Running' }}\n </span>\n </span>\n </td>\n <td style=\"padding: 12px; color: #495057;\">\n {{ run.RunAt | date:'short' }}\n </td>\n <td style=\"padding: 12px; color: #495057;\">\n <span style=\"display: flex; align-items: center; gap: 6px;\">\n <i class=\"fa-solid fa-microchip\" style=\"color: #6c757d;\"></i>\n {{ run.Model || 'Unknown' }}\n </span>\n </td>\n <td style=\"padding: 12px; color: #495057;\">\n {{ formatDuration(run.ExecutionTimeMS) }}\n </td>\n <td style=\"padding: 12px; text-align: right; color: #495057;\">\n {{ formatTokens(run.TokensUsed) }}\n </td>\n <td style=\"padding: 12px; text-align: right; color: #495057;\">\n {{ formatCost(run.TotalCost || run.Cost) }}\n </td>\n <td style=\"padding: 12px; text-align: center;\">\n @if (run.RunType) {\n <span style=\"padding: 4px 8px; border-radius: 12px; background: #e9ecef; \n color: #495057; font-size: 0.85em; font-weight: 500;\">\n {{ run.RunType }}\n </span>\n }\n </td>\n <td style=\"padding: 12px; text-align: center;\">\n <kendo-button \n fillMode=\"flat\"\n size=\"small\"\n (click)=\"navigateToPromptRun(run.ID)\"\n title=\"View details\">\n <i class=\"fa-solid fa-external-link\"></i>\n </kendo-button>\n </td>\n </tr>\n }\n </tbody>\n </table>\n </div>\n }\n </div>\n </kendo-expansionpanel>\n }\n\n <!-- Cache Expansion Panel -->\n @if (record.IsSaved && record.EnableCaching) {\n <kendo-expansionpanel \n [expanded]=\"false\"\n style=\"margin-bottom: 12px;\">\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 Result Cache\n </span>\n </ng-template>\n \n <!-- Direct Content Projection -->\n <div style=\"padding: 16px 0;\">\n <mj-user-view-grid \n [Params]=\"BuildRelationshipViewParamsByEntityName('AI Result Cache','AIPromptID')\" \n [NewRecordValues]=\"NewRecordValues('AI Result Cache')\"\n [AllowLoad]=\"true\"\n [EditMode]=\"GridEditMode()\" \n [BottomMargin]=\"0\"\n style=\"height: 300px;\">\n </mj-user-view-grid>\n </div>\n </kendo-expansionpanel>\n }\n\n <!-- Related Items Expansion Panel -->\n @if (record.IsSaved) {\n <kendo-expansionpanel \n [expanded]=\"false\"\n style=\"margin-bottom: 12px;\">\n <ng-template kendoExpansionPanelTitleDirective>\n <span style=\"display: flex; align-items: center; gap: 8px; font-weight: 600;\">\n <i class=\"fa-solid fa-link\" style=\"color: #6c757d;\"></i>\n Related Items\n </span>\n </ng-template>\n \n <!-- Direct Content Projection -->\n <div style=\"padding: 16px 0;\">\n <div style=\"display: grid; grid-template-columns: 1fr 1fr; gap: 20px;\">\n <!-- AI Agents -->\n <div>\n <h6 style=\"margin: 0 0 12px 0; color: #495057;\">AI Agents Using This Prompt</h6>\n <mj-user-view-grid \n [Params]=\"BuildRelationshipViewParamsByEntityName('MJ: AI Agent Prompts','PromptID')\" \n [NewRecordValues]=\"NewRecordValues('MJ: AI Agent Prompts')\"\n [AllowLoad]=\"true\"\n [EditMode]=\"GridEditMode()\" \n [BottomMargin]=\"0\"\n style=\"height: 200px;\">\n </mj-user-view-grid>\n </div>\n \n <!-- Result Selector References -->\n <div>\n <h6 style=\"margin: 0 0 12px 0; color: #495057;\">Prompts Using This as Result Selector</h6>\n <mj-user-view-grid \n [Params]=\"BuildRelationshipViewParamsByEntityName('AI Prompts','ResultSelectorPromptID')\" \n [NewRecordValues]=\"NewRecordValues('AI Prompts')\"\n [AllowLoad]=\"true\"\n [EditMode]=\"GridEditMode()\" \n [BottomMargin]=\"0\"\n style=\"height: 200px;\">\n </mj-user-view-grid>\n </div>\n </div>\n </div>\n </kendo-expansionpanel>\n }\n </div>\n </div>\n </form>\n\n <!-- AI Prompt Execution Dialog -->\n <mj-ai-prompt-execution-dialog\n [aiPrompt]=\"record\"\n [(isVisible)]=\"showExecutionDialog\">\n </mj-ai-prompt-execution-dialog>\n \n <!-- AI Prompt Test Harness -->\n @if (showTestHarness) {\n <kendo-window \n [width]=\"1200\" \n [height]=\"800\" \n [minWidth]=\"800\"\n [minHeight]=\"600\"\n [draggable]=\"true\"\n [resizable]=\"true\"\n [state]=\"'default'\"\n (close)=\"onTestHarnessVisibilityChanged(false)\"\n title=\"Run AI Prompt - {{ record.Name || 'Untitled' }}\">\n <mj-ai-test-harness\n [entity]=\"record\"\n [mode]=\"'prompt'\"\n [isVisible]=\"showTestHarness\"\n (visibilityChange)=\"onTestHarnessVisibilityChanged($event)\">\n </mj-ai-test-harness>\n </kendo-window>\n }\n</div>", styles: [".record-form-container {\n font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;\n padding: 10px;\n}\n\n.custom-toolbar-actions {\n margin-left: auto;\n}\n\n.status-badge {\n font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;\n font-weight: 500;\n letter-spacing: 0.02em;\n}\n\n.config-summary {\n position: sticky;\n top: 0;\n max-height: 600px;\n overflow-y: auto;\n}\n\n.config-item {\n padding: 8px 0;\n border-bottom: 1px solid #e9ecef;\n}\n\n.config-item:last-child {\n border-bottom: none;\n}\n\n.template-tab-content {\n background: #fff;\n}\n\n.template-header h5 {\n font-size: 1.1em;\n}\n\n.loading-state,\n.no-template-state,\n.invalid-template-state {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n}\n\n.no-template-state i,\n.invalid-template-state i {\n opacity: 0.6;\n}\n\n.template-editor-container {\n background: #fff;\n border-radius: 6px;\n}\n\n/* Grid layout adjustments */\n@media (max-width: 1200px) {\n .record-form-container .mj-tab-body > div {\n grid-template-columns: 1fr !important;\n gap: 20px;\n }\n \n .config-summary {\n order: -1;\n position: static;\n max-height: none;\n }\n}\n\n/* Responsive toolbar */\n@media (max-width: 768px) {\n .custom-toolbar-actions {\n flex-direction: column;\n gap: 4px !important;\n }\n \n .status-badge {\n align-self: flex-start;\n }\n}\n\n/* Ensure proper spacing in form sections */\n.record-form-container mj-form-section {\n padding: 16px;\n}\n\n/* Smooth transitions for better UX */\n.status-badge,\n.config-item,\n.template-header {\n transition: all 0.2s ease;\n}\n\n.config-item:hover {\n background-color: rgba(0,0,0,0.02);\n border-radius: 4px;\n margin: 0 -8px;\n padding: 8px;\n}\n\n/* Execution History Table Styles */\n.history-row {\n transition: background 0.2s;\n}\n\n.history-row:not(.even-row) {\n background: #f8f9fa;\n}\n\n.history-row.even-row {\n background: white;\n}\n\n.history-row:hover {\n background: #e9ecef !important;\n}"] }]
2575
+ args: [{ selector: 'mj-ai-prompt-form', template: "<div class=\"record-form-container\">\n <form *ngIf=\"record\" class=\"record-form\" #form=\"ngForm\" >\n <mj-form-toolbar [form]=\"this\"></mj-form-toolbar>\n\n <!-- Main Content Area - Template Editor and Configuration -->\n <div class=\"prompt-main-area\" style=\"display: flex; flex-direction: column; height: 100%; overflow-y: auto;\">\n \n <!-- Header Section -->\n <div class=\"prompt-header\" style=\"flex-shrink: 0; padding: 20px; background: #f8f9fa; border-bottom: 2px solid #e9ecef;\">\n <div style=\"display: flex; justify-content: space-between; align-items: flex-start; gap: 20px;\">\n \n <!-- Left: Prompt Info -->\n <div style=\"flex: 1; min-width: 0;\">\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.4em;\"></i>\n @if (EditMode) {\n <kendo-textbox [(ngModel)]=\"record.Name\" \n name=\"promptName\"\n placeholder=\"Enter prompt name...\"\n style=\"font-size: 1.2em; font-weight: 600; min-width: 300px; flex: 1;\">\n </kendo-textbox>\n } @else {\n <h4 style=\"margin: 0; color: #495057; font-weight: 600; flex: 1;\">{{ record.Name || 'Untitled AI Prompt' }}</h4>\n <span class=\"status-badge\" [style.background-color]=\"getStatusBadgeColor()\" \n style=\"color: white; padding: 4px 10px; border-radius: 12px; font-size: 0.75em; font-weight: 500;\">\n {{ record.Status }}\n </span>\n }\n </div>\n \n <!-- Status and Type Editors when in edit mode -->\n @if (EditMode) {\n <div style=\"display: flex; gap: 16px; margin-bottom: 12px; flex-wrap: wrap;\">\n <div>\n <label style=\"display: block; margin-bottom: 4px; font-weight: 600; color: #495057; font-size: 0.9em;\">Status</label>\n <kendo-dropdownlist [(ngModel)]=\"record.Status\"\n name=\"promptStatus\"\n [data]=\"[{text: 'Active', value: 'Active'}, {text: 'Pending', value: 'Pending'}, {text: 'Disabled', value: 'Disabled'}]\"\n textField=\"text\"\n valueField=\"value\"\n [valuePrimitive]=\"true\"\n style=\"width: 150px;\">\n </kendo-dropdownlist>\n </div>\n <div>\n <label style=\"display: block; margin-bottom: 4px; font-weight: 600; color: #495057; font-size: 0.9em;\">\n Type <span style=\"color: #dc3545;\">*</span>\n </label>\n @if (isLoadingPromptTypes) {\n <div style=\"padding: 8px; color: #6c757d; font-style: italic; width: 200px;\">\n <i class=\"fa-solid fa-spinner fa-spin\"></i> Loading types...\n </div>\n } @else {\n <kendo-dropdownlist [(ngModel)]=\"record.TypeID\"\n name=\"promptTypeID\"\n [data]=\"availablePromptTypes\"\n textField=\"Name\"\n valueField=\"ID\"\n [valuePrimitive]=\"true\"\n [filterable]=\"true\"\n placeholder=\"Select prompt type...\"\n style=\"width: 200px;\">\n </kendo-dropdownlist>\n }\n </div>\n </div>\n }\n \n @if (EditMode) {\n <kendo-textarea [(ngModel)]=\"record.Description\" \n name=\"promptDescription\"\n [rows]=\"2\"\n placeholder=\"Enter prompt description...\"\n style=\"width: 100%; max-width: 600px; margin-bottom: 12px;\">\n </kendo-textarea>\n } @else if (record.Description) {\n <p style=\"margin: 0 0 12px 0; color: #6c757d; font-size: 0.9em; line-height: 1.4;\">{{ record.Description }}</p>\n }\n \n <!-- Quick Config Row -->\n <div class=\"quick-config\" style=\"display: flex; align-items: center; gap: 16px; flex-wrap: wrap;\">\n @if (record.TypeID) {\n <div class=\"config-item\" style=\"display: flex; align-items: center; gap: 6px; font-size: 0.85em;\">\n <i class=\"fa-solid fa-tag\" style=\"color: #6c757d;\"></i>\n <span style=\"color: #6c757d;\">Type:</span>\n <span style=\"color: #495057; font-weight: 500;\">{{ getPromptTypeDisplayName(record.TypeID) }}</span>\n </div>\n }\n \n <div class=\"config-item\" style=\"display: flex; align-items: center; gap: 6px; font-size: 0.85em;\">\n <i class=\"fa-solid fa-layer-group\" style=\"color: #6c757d;\"></i>\n <span style=\"color: #6c757d;\">Parallelization:</span>\n <span style=\"color: #495057; font-weight: 500;\">{{ getParallelizationModeDisplay() }}</span>\n </div>\n \n <div class=\"config-item\" style=\"display: flex; align-items: center; gap: 6px; font-size: 0.85em;\">\n <i class=\"fa-solid fa-code\" style=\"color: #6c757d;\"></i>\n <span style=\"color: #6c757d;\">Output:</span>\n <span [style.color]=\"getValidationColor()\" style=\"font-weight: 500;\">{{ getOutputTypeDisplay() }}</span>\n </div>\n \n @if (record.EnableCaching) {\n <div class=\"config-item\" style=\"display: flex; align-items: center; gap: 6px; font-size: 0.85em;\">\n <i class=\"fa-solid fa-database\" style=\"color: #28a745;\"></i>\n <span style=\"color: #28a745; font-weight: 500;\">Caching Enabled</span>\n </div>\n }\n </div>\n </div>\n \n <!-- Right: Action Buttons -->\n <div class=\"action-buttons\" style=\"display: flex; flex-direction: column; gap: 8px; align-items: flex-end;\">\n <div style=\"display: flex; gap: 8px;\">\n @if (record.ID) {\n <button kendoButton [themeColor]=\"'primary'\" [size]=\"'large'\"\n (click)=\"openTestHarness()\"\n title=\"Run AI Prompt Test Harness\">\n <i class=\"fa-solid fa-play\"></i> Run\n </button>\n }\n </div>\n \n @if (!canExecute && record.ID) {\n <div style=\"font-size: 0.75em; color: #dc3545; text-align: right; max-width: 200px;\">\n @if (record.Status !== 'Active') {\n \u2022 Prompt must be Active<br>\n }\n @if (!record.TemplateID) {\n \u2022 Template is required<br>\n }\n @if (!template && record.TemplateID) {\n \u2022 Template not found<br>\n }\n </div>\n }\n </div>\n </div>\n </div>\n\n <!-- Configuration Sections with Expansion Panels -->\n <div class=\"configuration-sections\" style=\"flex: 1; background: white; border-top: 2px solid #e9ecef; padding: 16px; min-height: 0;\">\n <!-- Template Editor Section -->\n <kendo-expansionpanel \n [expanded]=\"true\"\n style=\"margin-bottom: 12px;\">\n <ng-template kendoExpansionPanelTitleDirective>\n <span style=\"display: flex; align-items: center; gap: 8px; font-weight: 600;\">\n <i class=\"fa-solid fa-code\" style=\"color: #6c757d;\"></i>\n Template Editor\n @if (template) {\n <span style=\"color: #6c757d; font-size: 0.9em; font-weight: normal;\">\u2022 {{ template.Name }}</span>\n }\n </span>\n </ng-template>\n \n <!-- Direct Content Projection -->\n <div class=\"template-section\" style=\"display: flex; flex-direction: column; min-height: 400px; padding: 8px;\">\n @if (isLoadingTemplate) {\n <div class=\"loading-state\" style=\"flex: 1; display: flex; align-items: center; justify-content: center; color: #6c757d;\">\n <i class=\"fa-solid fa-spinner fa-spin\" style=\"font-size: 24px; margin-right: 12px;\"></i>\n Loading template...\n </div>\n } @else if (!record.TemplateID) {\n <div class=\"no-template-state\" style=\"flex: 1; display: flex; flex-direction: column; align-items: center; justify-content: center; padding: 40px; color: #6c757d;\">\n <i class=\"fa-solid fa-code\" style=\"font-size: 64px; margin-bottom: 20px; opacity: 0.3;\"></i>\n <h5 style=\"margin-bottom: 12px; color: #495057;\">No Template Associated</h5>\n <p style=\"margin-bottom: 24px; text-align: center; max-width: 400px;\">\n This AI prompt needs a template to define its structure and parameters. \n Create a new template or link to an existing one.\n </p>\n <div style=\"display: flex; gap: 12px;\">\n <button kendoButton [themeColor]=\"'primary'\" (click)=\"createNewTemplate()\">\n <i class=\"fa-solid fa-plus\"></i> Create New Template\n </button>\n <button kendoButton [fillMode]=\"'outline'\" (click)=\"linkExistingTemplate()\">\n <i class=\"fa-solid fa-link\"></i> Link Existing Template\n </button>\n </div>\n </div>\n } @else if (templateNotFoundInDatabase) {\n <div class=\"invalid-template-state\" style=\"flex: 1; display: flex; flex-direction: column; align-items: center; justify-content: center; padding: 40px; color: #dc3545;\">\n <i class=\"fa-solid fa-exclamation-triangle\" style=\"font-size: 64px; margin-bottom: 20px; opacity: 0.7;\"></i>\n <h5 style=\"margin-bottom: 12px;\">Template Not Found</h5>\n <p style=\"margin-bottom: 24px; text-align: center; max-width: 400px;\">\n The referenced template could not be loaded. It may have been deleted or moved.\n </p>\n <div style=\"display: flex; gap: 12px;\">\n <button kendoButton [fillMode]=\"'outline'\" (click)=\"loadTemplate()\">\n <i class=\"fa-solid fa-refresh\"></i> Retry Loading\n </button>\n <button kendoButton [themeColor]=\"'primary'\" (click)=\"createNewTemplate()\">\n <i class=\"fa-solid fa-plus\"></i> Create New Template\n </button>\n </div>\n </div>\n } @else {\n <!-- Active Template Editor -->\n <div class=\"template-editor-container\" style=\"flex: 1; display: flex; flex-direction: column; min-height: 350px;\">\n <!-- Template Editor -->\n <div style=\"flex: 1; background: white; border-radius: 6px; border: 1px solid #e9ecef;\">\n <mj-template-editor \n #templateEditor\n [template]=\"template\"\n [config]=\"templateEditorConfig\"\n (contentChange)=\"onTemplateContentChange($event)\"\n (runTemplate)=\"onTemplateRun($event)\"\n style=\"display: block; min-height: 300px;\">\n </mj-template-editor>\n </div>\n </div>\n }\n </div>\n </kendo-expansionpanel> \n\n <!-- Template Parameters Expansion Panel -->\n @if (template && templateParams.length > 0) {\n <kendo-expansionpanel \n [expanded]=\"true\"\n style=\"margin-bottom: 12px;\">\n <ng-template kendoExpansionPanelTitleDirective>\n <span style=\"display: flex; align-items: center; gap: 8px; font-weight: 600;\">\n <i class=\"fa-solid fa-sliders\" style=\"color: #6c757d;\"></i>\n Template Parameters\n <span class=\"badge\" style=\"background: #6f42c1; color: white; padding: 2px 6px; border-radius: 10px; font-size: 0.7em;\">\n {{ templateParams.length }}\n </span>\n <span style=\"color: #6c757d; font-size: 0.8em; font-weight: normal; margin-left: 8px;\">\n <i class=\"fa-solid fa-info-circle\" title=\"These parameters are defined in the template and will be available when executing this prompt\"></i>\n Parameters defined in the template\n </span>\n </span>\n </ng-template>\n \n <!-- Template Parameters Display -->\n <div style=\"padding: 16px 0;\">\n @if (isLoadingTemplateParams) {\n <div class=\"loading-state\" style=\"padding: 20px; text-align: center; color: #6c757d;\">\n <i class=\"fa-solid fa-spinner fa-spin\"></i> Loading template parameters...\n </div>\n } @else if (templateParams.length === 0) {\n <div class=\"empty-state\" style=\"padding: 20px; text-align: center; color: #6c757d;\">\n <i class=\"fa-solid fa-info-circle\"></i> This template has no parameters defined\n </div>\n } @else {\n <!-- Parameters Grid -->\n <div style=\"display: grid; gap: 12px;\">\n @for (param of templateParams; track param.ID) {\n <div class=\"parameter-card\" \n style=\"border: 1px solid #e9ecef; border-radius: 8px; padding: 16px; background: #f8f9fa; transition: all 0.2s;\"\n [style.border-left]=\"'4px solid ' + getParamTypeColor(param.Type)\">\n \n <!-- Parameter Header -->\n <div style=\"display: flex; justify-content: space-between; align-items: flex-start; margin-bottom: 8px;\">\n <div style=\"display: flex; align-items: center; gap: 8px;\">\n <i [class]=\"'fa-solid ' + getParamTypeIcon(param.Type)\" \n [style.color]=\"getParamTypeColor(param.Type)\"\n style=\"font-size: 1.2em;\"></i>\n <h6 style=\"margin: 0; color: #495057; font-weight: 600;\">\n {{ param.Name }}\n @if (param.IsRequired) {\n <span style=\"color: #dc3545; font-size: 0.9em; margin-left: 4px;\">*</span>\n }\n </h6>\n </div>\n <div style=\"display: flex; align-items: center; gap: 8px;\">\n <span class=\"type-badge\" \n [style.background-color]=\"getParamTypeColor(param.Type)\"\n style=\"color: white; padding: 4px 8px; border-radius: 12px; font-size: 0.75em; font-weight: 500;\">\n {{ param.Type }}\n </span>\n @if (param.IsRequired) {\n <span style=\"color: #dc3545; font-size: 0.85em; font-weight: 500;\">Required</span>\n } @else {\n <span style=\"color: #6c757d; font-size: 0.85em;\">Optional</span>\n }\n </div>\n </div>\n \n <!-- Parameter Description -->\n @if (param.Description) {\n <p style=\"margin: 0 0 8px 0; color: #6c757d; font-size: 0.9em; line-height: 1.4;\">\n {{ param.Description }}\n </p>\n }\n \n <!-- Type-specific Information -->\n <div style=\"font-size: 0.85em; color: #495057;\">\n <span style=\"display: flex; align-items: center; gap: 4px; margin-bottom: 4px;\">\n <i class=\"fa-solid fa-info-circle\" style=\"color: #6c757d;\"></i>\n {{ getParamTypeDescription(param) }}\n </span>\n </div>\n \n <!-- Additional Parameter Details -->\n <div style=\"display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 12px; margin-top: 12px;\">\n @if (param.DefaultValue) {\n <div style=\"background: white; padding: 8px 12px; border-radius: 4px; border: 1px solid #dee2e6;\">\n <label style=\"display: block; font-size: 0.8em; color: #6c757d; margin-bottom: 2px;\">Default Value</label>\n <code style=\"font-size: 0.85em; color: #495057; word-break: break-all;\">{{ param.DefaultValue }}</code>\n </div>\n }\n \n @if (param.EntityID) {\n <div style=\"background: white; padding: 8px 12px; border-radius: 4px; border: 1px solid #dee2e6;\">\n <label style=\"display: block; font-size: 0.8em; color: #6c757d; margin-bottom: 2px;\">Entity</label>\n <span style=\"font-size: 0.85em; color: #495057;\">{{ param.Entity || 'Entity ID: ' + param.EntityID }}</span>\n </div>\n }\n \n @if (param.LinkedParameterName) {\n <div style=\"background: white; padding: 8px 12px; border-radius: 4px; border: 1px solid #dee2e6;\">\n <label style=\"display: block; font-size: 0.8em; color: #6c757d; margin-bottom: 2px;\">Linked To</label>\n <span style=\"font-size: 0.85em; color: #495057;\">\n {{ param.LinkedParameterName }}\n @if (param.LinkedParameterField) {\n ({{ param.LinkedParameterField }})\n }\n </span>\n </div>\n }\n \n @if (param.ExtraFilter) {\n <div style=\"background: white; padding: 8px 12px; border-radius: 4px; border: 1px solid #dee2e6;\">\n <label style=\"display: block; font-size: 0.8em; color: #6c757d; margin-bottom: 2px;\">Filter</label>\n <code style=\"font-size: 0.8em; color: #495057; word-break: break-all;\">{{ param.ExtraFilter }}</code>\n </div>\n }\n \n @if (param.RecordID) {\n <div style=\"background: white; padding: 8px 12px; border-radius: 4px; border: 1px solid #dee2e6;\">\n <label style=\"display: block; font-size: 0.8em; color: #6c757d; margin-bottom: 2px;\">Record ID</label>\n <code style=\"font-size: 0.85em; color: #495057;\">{{ param.RecordID }}</code>\n </div>\n }\n </div>\n </div>\n }\n </div>\n \n <!-- Help Text -->\n <div style=\"margin-top: 16px; padding: 12px; background: #e3f2fd; border-radius: 6px; border: 1px solid #bbdefb;\">\n <div style=\"display: flex; align-items: flex-start; gap: 8px;\">\n <i class=\"fa-solid fa-lightbulb\" style=\"color: #1976d2; margin-top: 2px;\"></i>\n <div style=\"flex: 1; font-size: 0.85em; color: #1565c0; line-height: 1.5;\">\n <strong>Using Template Parameters:</strong> When executing this prompt, you'll be prompted to provide values for all required parameters. \n Parameters can be simple values (text, numbers) or complex data structures (JSON objects, database records, or entire entity collections).\n The template will use these parameters to generate dynamic content based on the values provided at execution time.\n </div>\n </div>\n </div>\n }\n </div>\n </kendo-expansionpanel>\n }\n\n <!-- Model Configuration Expansion Panel -->\n @if (record.IsSaved) {\n <kendo-expansionpanel \n [expanded]=\"false\"\n style=\"margin-bottom: 12px;\">\n <ng-template kendoExpansionPanelTitleDirective>\n <span style=\"display: flex; align-items: center; gap: 8px; font-weight: 600;\">\n <i class=\"fa-solid fa-microchip\" style=\"color: #6c757d;\"></i>\n Models\n @if (promptModels.length > 0) {\n <span class=\"badge\" style=\"background: #17a2b8; color: white; padding: 2px 6px; border-radius: 10px; font-size: 0.7em;\">\n {{ promptModels.length }}\n </span>\n }\n <span style=\"color: #6c757d; font-size: 0.8em; font-weight: normal; margin-left: 8px;\">\n <i class=\"fa-solid fa-info-circle\" title=\"Models are tried in order from top to bottom. The first available model will be used.\"></i>\n Priority order (first available model will be used)\n </span>\n </span>\n </ng-template>\n \n <!-- Direct Content Projection -->\n <div style=\"padding: 16px 0;\">\n <!-- Model Management Interface -->\n <div class=\"model-management\" style=\"border: 1px solid #dee2e6; border-radius: 6px; background: #f8f9fa;\">\n @if (isLoadingModels) {\n <div class=\"loading-state\" style=\"padding: 20px; text-align: center; color: #6c757d;\">\n <i class=\"fa-solid fa-spinner fa-spin\"></i> Loading models...\n </div>\n } @else {\n @if (promptModels.length === 0) {\n <div class=\"empty-state\" style=\"padding: 20px; text-align: center; color: #6c757d;\">\n <i class=\"fa-solid fa-info-circle\"></i> No models configured\n @if (EditMode) {\n <div style=\"margin-top: 10px;\">\n <button kendoButton fillMode=\"outline\" themeColor=\"primary\" size=\"small\"\n (click)=\"addNewModel()\">\n <i class=\"fa-solid fa-plus\"></i> Add Model\n </button>\n </div>\n }\n </div>\n } @else {\n <!-- Priority explanation for multiple models -->\n @if (promptModels.length > 1) {\n <div style=\"padding: 12px 16px; background: #e3f2fd; border-bottom: 1px solid #bbdefb; color: #1565c0; font-size: 0.85em;\">\n <i class=\"fa-solid fa-info-circle\" style=\"margin-right: 6px;\"></i>\n Models are tried in priority order (1, 2, 3...). The first available model that meets requirements will be used for execution.\n </div>\n }\n <!-- Column Headers -->\n <div class=\"model-header\" style=\"display: grid; grid-template-columns: 40px 2fr 1fr 1fr 60px; gap: 12px; padding: 12px 16px; background: #e9ecef; font-weight: 600; font-size: 0.85em; color: #495057; border-bottom: 1px solid #dee2e6;\">\n <div title=\"Priority order - models are tried from top to bottom\">\n <i class=\"fa-solid fa-sort\" style=\"color: #6c757d;\"></i>\n </div>\n <div>AI Model <span style=\"color: #dc3545;\">*</span></div>\n <div>Vendor</div>\n <div>Created</div>\n <div>Actions</div>\n </div>\n \n @for (model of promptModels; track model.ID || $index; let i = $index) {\n <div class=\"model-row\" \n [draggable]=\"EditMode\"\n (dragstart)=\"onDragStart($event, i)\"\n (dragover)=\"onDragOver($event)\"\n (drop)=\"onDrop($event, i)\"\n (dragend)=\"onDragEnd($event)\"\n [style.background]=\"!model.ModelID ? '#fff3cd' : (draggedIndex === i ? '#e3f2fd' : 'white')\"\n [style.border-left]=\"!model.ModelID ? '3px solid #ffc107' : 'none'\"\n [style.opacity]=\"draggedIndex === i ? '0.5' : '1'\"\n style=\"display: grid; grid-template-columns: 40px 2fr 1fr 1fr 60px; gap: 12px; padding: 12px 16px; border-bottom: 1px solid #e9ecef; align-items: start; transition: background 0.2s, opacity 0.2s;\">\n \n <!-- Drag Handle / Priority -->\n <div class=\"drag-handle\" style=\"display: flex; flex-direction: column; align-items: center; justify-content: center; color: #6c757d;\">\n @if (EditMode) {\n <i class=\"fa-solid fa-grip-vertical\" title=\"Drag to reorder priority\" style=\"cursor: move;\"></i>\n <span style=\"font-size: 0.7em; margin-top: 2px;\">#{{ i + 1 }}</span>\n } @else {\n <span style=\"font-size: 0.9em; font-weight: 600;\" title=\"Priority {{ i + 1 }} - Lower numbers are tried first\">#{{ i + 1 }}</span>\n }\n </div>\n \n <!-- Model Selection -->\n <div class=\"model-select\">\n @if (EditMode) {\n <kendo-dropdownlist [(ngModel)]=\"model.ModelID\"\n [name]=\"'modelId_' + i\"\n [data]=\"availableModels\"\n textField=\"Name\"\n valueField=\"ID\"\n [valuePrimitive]=\"true\"\n [filterable]=\"true\"\n placeholder=\"Select a model...\"\n (valueChange)=\"onModelChange($event, i)\"\n style=\"width: 100%;\">\n </kendo-dropdownlist>\n } @else {\n <span style=\"font-weight: 500;\">{{ getModelDisplayName(model.ModelID) }}</span>\n }\n </div>\n \n <!-- Vendor -->\n <div class=\"model-vendor\">\n @if (EditMode) {\n @if (model.ModelID) {\n @if (shouldShowVendorDropdown(model.ModelID)) {\n <kendo-dropdownlist [(ngModel)]=\"model.VendorID\"\n [name]=\"'vendorId_' + i\"\n [data]=\"getVendorsForModelSync(model.ModelID)\"\n textField=\"Name\"\n valueField=\"ID\"\n [valuePrimitive]=\"true\"\n [filterable]=\"true\"\n placeholder=\"Select vendor...\"\n style=\"width: 100%;\">\n <ng-template kendoDropDownListItemTemplate let-dataItem>\n <span [style.color]=\"getVendorStatusColor(model.ModelID, dataItem.ID)\">\n {{ dataItem.Name }}\n @if (getModelVendorStatus(model.ModelID, dataItem.ID) !== 'Active') {\n <span style=\"font-size: 0.8em; margin-left: 4px;\">({{ getModelVendorStatus(model.ModelID, dataItem.ID) }})</span>\n }\n </span>\n </ng-template>\n </kendo-dropdownlist>\n } @else {\n <!-- Single vendor - just show the name -->\n @if (getVendorsForModelSync(model.ModelID).length === 1) {\n <span [style.color]=\"getVendorStatusColor(model.ModelID, getVendorsForModelSync(model.ModelID)[0].ID)\" style=\"font-size: 0.9em; font-weight: 500;\">\n {{ getVendorsForModelSync(model.ModelID)[0].Name }}\n @if (getModelVendorStatus(model.ModelID, getVendorsForModelSync(model.ModelID)[0].ID) !== 'Active') {\n <span style=\"font-size: 0.8em; margin-left: 4px;\">({{ getModelVendorStatus(model.ModelID, getVendorsForModelSync(model.ModelID)[0].ID) }})</span>\n }\n </span>\n } @else {\n <span style=\"color: #6c757d; font-style: italic; font-size: 0.9em;\">No vendors available</span>\n }\n }\n } @else {\n <span style=\"color: #6c757d; font-style: italic; font-size: 0.9em;\">Select model first</span>\n }\n } @else {\n @if (model.VendorID && model.ModelID) {\n <span [style.color]=\"getVendorStatusColor(model.ModelID, model.VendorID)\" style=\"font-size: 0.9em;\">\n {{ getVendorDisplayName(model.VendorID) }}\n @if (getModelVendorStatus(model.ModelID, model.VendorID) !== 'Active') {\n <span style=\"font-size: 0.8em; margin-left: 4px;\">({{ getModelVendorStatus(model.ModelID, model.VendorID) }})</span>\n }\n </span>\n } @else {\n <span style=\"color: #6c757d; font-size: 0.9em;\">-</span>\n }\n }\n </div>\n \n \n <!-- Created Date -->\n <div class=\"model-created\">\n @if (model.ID) {\n <span style=\"color: #6c757d; font-size: 0.8em;\">{{ model.__mj_CreatedAt | date:'short' }}</span>\n } @else {\n <span style=\"color: #28a745; font-size: 0.8em; font-style: italic;\">New</span>\n }\n </div>\n \n <!-- Actions -->\n <div class=\"model-actions\" style=\"display: flex; gap: 2px; flex-direction: column;\">\n @if (EditMode) {\n <div style=\"display: flex; gap: 2px; margin-bottom: 4px;\">\n <button kendoButton fillMode=\"flat\" size=\"small\"\n (click)=\"moveModelUp(i)\"\n [disabled]=\"i === 0\"\n title=\"Move up\">\n <i class=\"fa-solid fa-chevron-up\"></i>\n </button>\n <button kendoButton fillMode=\"flat\" size=\"small\"\n (click)=\"moveModelDown(i)\"\n [disabled]=\"i === promptModels.length - 1\"\n title=\"Move down\">\n <i class=\"fa-solid fa-chevron-down\"></i>\n </button>\n </div>\n <button kendoButton fillMode=\"flat\" themeColor=\"error\" size=\"small\"\n (click)=\"removePromptModel(i)\"\n title=\"Remove model\">\n <i class=\"fa-solid fa-times\"></i>\n </button>\n }\n </div>\n </div>\n \n <!-- Second row with additional details -->\n <div style=\"display: grid; grid-template-columns: 40px 1fr; gap: 12px; padding: 8px 16px; border-bottom: 1px solid #e9ecef; background: #f8f9fa; font-size: 0.85em; color: #6c757d;\">\n <div></div>\n <div>\n <!-- Basic model details -->\n <div style=\"display: flex; gap: 16px; flex-wrap: wrap; align-items: center; margin-bottom: 8px;\">\n @if (model.Status) {\n <span><strong>Status:</strong> {{ model.Status }}</span>\n }\n @if (model.ConfigurationID) {\n <span><strong>Configuration:</strong> {{ model.ConfigurationID }}</span>\n }\n </div>\n \n <!-- Parallel execution fields when prompt is ModelSpecific -->\n @if (record.ParallelizationMode === 'ModelSpecific') {\n <div style=\"padding: 8px; background: #fff; border: 1px solid #dee2e6; border-radius: 4px; margin-top: 8px;\">\n <div style=\"margin-bottom: 6px; font-weight: 600; color: #495057; font-size: 0.9em;\">\n <i class=\"fa-solid fa-layer-group\"></i> Model-Specific Parallel Execution\n </div>\n \n @if (EditMode) {\n <div style=\"display: grid; grid-template-columns: 1fr 1fr 1fr; gap: 12px; align-items: center;\">\n <!-- Parallel Mode -->\n <div>\n <label style=\"display: block; margin-bottom: 2px; font-size: 0.8em; font-weight: 600; color: #495057;\">Parallel Mode</label>\n <kendo-dropdownlist [(ngModel)]=\"model.ParallelizationMode\"\n [name]=\"'parallelMode_' + i\"\n [data]=\"[{text: 'None', value: 'None'}, {text: 'Static Count', value: 'StaticCount'}, {text: 'Config Param', value: 'ConfigParam'}]\"\n textField=\"text\"\n valueField=\"value\"\n [valuePrimitive]=\"true\"\n placeholder=\"Select mode...\"\n style=\"width: 100%; font-size: 0.85em;\">\n </kendo-dropdownlist>\n </div>\n \n <!-- Parallel Count (when StaticCount) -->\n @if (model.ParallelizationMode === 'StaticCount') {\n <div>\n <label style=\"display: block; margin-bottom: 2px; font-size: 0.8em; font-weight: 600; color: #495057;\">Parallel Count</label>\n <kendo-numerictextbox [(ngModel)]=\"model.ParallelCount\"\n [name]=\"'parallelCount_' + i\"\n [min]=\"1\"\n [step]=\"1\"\n [format]=\"'n0'\"\n placeholder=\"Count...\"\n style=\"width: 100%; font-size: 0.85em;\">\n </kendo-numerictextbox>\n </div>\n }\n \n <!-- Config Param (when ConfigParam) -->\n @if (model.ParallelizationMode === 'ConfigParam') {\n <div>\n <label style=\"display: block; margin-bottom: 2px; font-size: 0.8em; font-weight: 600; color: #495057;\">Config Parameter</label>\n <kendo-textbox [(ngModel)]=\"model.ParallelConfigParam\"\n [name]=\"'parallelConfigParam_' + i\"\n placeholder=\"Parameter name...\"\n style=\"width: 100%; font-size: 0.85em;\">\n </kendo-textbox>\n </div>\n }\n </div>\n } @else {\n <!-- Read-only display -->\n <div style=\"display: flex; gap: 16px; flex-wrap: wrap; align-items: center;\">\n @if (model.ParallelizationMode) {\n <span><strong>Parallel Mode:</strong> {{ model.ParallelizationMode }}</span>\n }\n @if (model.ParallelCount) {\n <span><strong>Parallel Count:</strong> {{ model.ParallelCount }}</span>\n }\n @if (model.ParallelConfigParam) {\n <span><strong>Config Param:</strong> {{ model.ParallelConfigParam }}</span>\n }\n </div>\n }\n </div>\n }\n </div>\n </div>\n }\n \n @if (EditMode) {\n <div class=\"add-model-row\" style=\"padding: 12px 16px; text-align: center; background: #f8f9fa; border-top: 1px solid #dee2e6;\">\n <button kendoButton fillMode=\"outline\" themeColor=\"success\" size=\"small\"\n (click)=\"addNewModel()\">\n <i class=\"fa-solid fa-plus\"></i> Add Model\n </button>\n </div>\n }\n }\n }\n </div>\n </div>\n </kendo-expansionpanel>\n }\n\n <!-- Advanced Configuration Expansion Panel -->\n <kendo-expansionpanel \n [expanded]=\"false\"\n style=\"margin-bottom: 12px;\">\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 Advanced Configuration\n </span>\n </ng-template>\n \n <!-- Direct Content Projection -->\n <div style=\"padding: 16px 0;\">\n <div style=\"display: grid; grid-template-columns: 1fr 1fr; gap: 20px;\">\n \n <!-- Left Column -->\n <div>\n <mj-form-field \n [record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"ParallelizationMode\"\n Type=\"dropdownlist\"\n [EditMode]=\"EditMode\">\n </mj-form-field>\n \n @if (showParallelCount) {\n <mj-form-field \n [record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"ParallelCount\"\n Type=\"numerictextbox\"\n [EditMode]=\"EditMode\">\n </mj-form-field>\n }\n \n @if (showParallelConfigParam) {\n <mj-form-field \n [record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"ParallelConfigParam\"\n Type=\"textbox\"\n [EditMode]=\"EditMode\">\n </mj-form-field>\n }\n \n <mj-form-field \n [record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"OutputType\"\n Type=\"dropdownlist\"\n [EditMode]=\"EditMode\">\n </mj-form-field>\n \n </div>\n \n <!-- Right Column -->\n <div>\n <mj-form-field \n [record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"ValidationBehavior\"\n Type=\"dropdownlist\"\n [EditMode]=\"EditMode\">\n </mj-form-field>\n \n <mj-form-field \n [record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"EnableCaching\"\n Type=\"checkbox\"\n [EditMode]=\"EditMode\">\n </mj-form-field>\n \n <!-- Result Selector Prompt with Tree Selector -->\n <div style=\"margin-bottom: 16px;\">\n <label style=\"display: block; margin-bottom: 4px; font-weight: 600; color: #495057; font-size: 0.9em;\">\n Result Selector Prompt\n </label>\n @if (EditMode) {\n @if (isLoadingResultSelectorData) {\n <div style=\"padding: 8px; color: #6c757d; font-style: italic;\">\n <i class=\"fa-solid fa-spinner fa-spin\"></i> Loading prompts...\n </div>\n } @else {\n <kendo-dropdowntree \n [(ngModel)]=\"record.ResultSelectorPromptID\"\n name=\"resultSelectorPromptID\"\n [data]=\"resultSelectorTreeData\"\n textField=\"text\"\n valueField=\"value\"\n [valuePrimitive]=\"true\"\n [filterable]=\"true\"\n placeholder=\"Select a result selector prompt...\"\n style=\"width: 100%;\"\n (valueChange)=\"onResultSelectorChange($event)\">\n </kendo-dropdowntree>\n }\n } @else {\n <span style=\"color: #495057;\">{{ getPromptDisplayName(record.ResultSelectorPromptID || '') || 'None selected' }}</span>\n }\n </div>\n </div>\n </div>\n </div>\n </kendo-expansionpanel>\n\n <!-- Output Example Expansion Panel (when OutputType = object) -->\n @if (showOutputExample) {\n <kendo-expansionpanel \n [expanded]=\"true\"\n style=\"margin-bottom: 12px;\">\n <ng-template kendoExpansionPanelTitleDirective>\n <span style=\"display: flex; align-items: center; gap: 8px; font-weight: 600;\">\n <i class=\"fa-solid fa-code\" style=\"color: #6c757d;\"></i>\n Output Example (JSON)\n <span style=\"color: #dc3545; font-size: 0.8em; font-weight: normal;\">\u2022 Required for object output type</span>\n </span>\n </ng-template>\n \n <!-- Direct Content Projection -->\n <div style=\"padding: 16px;\">\n @if (EditMode) {\n <mj-code-editor \n [(ngModel)]=\"record.OutputExample\"\n name=\"outputExample\"\n language=\"json\"\n placeholder=\"Enter JSON example structure...\"\n style=\"width: 100%; height: 200px; border: 1px solid #dee2e6; border-radius: 4px;\">\n </mj-code-editor>\n <div style=\"margin-top: 8px; color: #6c757d; font-size: 0.85em;\">\n <i class=\"fa-solid fa-info-circle\"></i> Provide a JSON example that defines the expected structure for object output validation.\n </div>\n } @else if (record.OutputExample) {\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: 250px;\">{{ record.OutputExample }}</div>\n } @else {\n <div style=\"background: #fff3cd; border: 1px solid #ffeaa7; border-radius: 4px; padding: 12px; color: #856404; text-align: center;\">\n <i class=\"fa-solid fa-exclamation-triangle\"></i> Output example is required when output type is 'object'\n </div>\n }\n </div>\n </kendo-expansionpanel>\n }\n\n <!-- Execution History Expansion Panel -->\n @if (record.IsSaved) {\n <kendo-expansionpanel \n [expanded]=\"false\"\n style=\"margin-bottom: 12px;\">\n <ng-template kendoExpansionPanelTitleDirective>\n <span style=\"display: flex; align-items: center; gap: 8px; font-weight: 600;\">\n <i class=\"fa-solid fa-history\" style=\"color: #6c757d;\"></i>\n Execution History\n @if (executionHistory.length > 0) {\n <span style=\"color: #6c757d; font-weight: normal;\">({{ executionHistory.length }})</span>\n }\n </span>\n </ng-template>\n \n <!-- Custom Execution History Viewer -->\n <div style=\"padding: 16px;\">\n @if (isLoadingHistory) {\n <div style=\"text-align: center; padding: 40px; color: #6c757d;\">\n <i class=\"fa-solid fa-spinner fa-spin\" style=\"font-size: 2em; margin-bottom: 12px;\"></i>\n <p>Loading execution history...</p>\n </div>\n } @else if (executionHistory.length === 0) {\n <div style=\"text-align: center; padding: 40px; color: #6c757d;\">\n <i class=\"fa-solid fa-history\" style=\"font-size: 3em; margin-bottom: 12px; opacity: 0.3;\"></i>\n <p>No execution history yet</p>\n <p style=\"font-size: 0.9em;\">Run this prompt to see execution history here</p>\n </div>\n } @else {\n <!-- Sort Controls -->\n <div style=\"display: flex; justify-content: space-between; align-items: center; margin-bottom: 16px;\">\n <div style=\"color: #6c757d; font-size: 0.9em;\">\n Showing {{ executionHistory.length }} executions\n </div>\n <div style=\"display: flex; gap: 8px; align-items: center;\">\n <span style=\"color: #6c757d; font-size: 0.85em;\">Sort by:</span>\n <kendo-buttongroup selection=\"single\">\n <button kendoButton \n [selected]=\"historySortField === 'runAt'\"\n (click)=\"changeHistorySort('runAt')\"\n size=\"small\">\n Date\n @if (historySortField === 'runAt') {\n <i [class]=\"'fa-solid fa-sort-' + (historySortDirection === 'asc' ? 'up' : 'down')\" \n style=\"margin-left: 4px; font-size: 0.8em;\"></i>\n }\n </button>\n <button kendoButton \n [selected]=\"historySortField === 'executionTime'\"\n (click)=\"changeHistorySort('executionTime')\"\n size=\"small\">\n Duration\n @if (historySortField === 'executionTime') {\n <i [class]=\"'fa-solid fa-sort-' + (historySortDirection === 'asc' ? 'up' : 'down')\" \n style=\"margin-left: 4px; font-size: 0.8em;\"></i>\n }\n </button>\n <button kendoButton \n [selected]=\"historySortField === 'tokens'\"\n (click)=\"changeHistorySort('tokens')\"\n size=\"small\">\n Tokens\n @if (historySortField === 'tokens') {\n <i [class]=\"'fa-solid fa-sort-' + (historySortDirection === 'asc' ? 'up' : 'down')\" \n style=\"margin-left: 4px; font-size: 0.8em;\"></i>\n }\n </button>\n <button kendoButton \n [selected]=\"historySortField === 'cost'\"\n (click)=\"changeHistorySort('cost')\"\n size=\"small\">\n Cost\n @if (historySortField === 'cost') {\n <i [class]=\"'fa-solid fa-sort-' + (historySortDirection === 'asc' ? 'up' : 'down')\" \n style=\"margin-left: 4px; font-size: 0.8em;\"></i>\n }\n </button>\n </kendo-buttongroup>\n </div>\n </div>\n \n <!-- Execution History Table -->\n <div style=\"border: 1px solid #e9ecef; border-radius: 8px; overflow: hidden;\">\n <table style=\"width: 100%; border-collapse: collapse;\">\n <thead>\n <tr style=\"background: #f8f9fa; border-bottom: 2px solid #e9ecef;\">\n <th style=\"padding: 12px; text-align: left; font-weight: 600; color: #495057;\">Status</th>\n <th style=\"padding: 12px; text-align: left; font-weight: 600; color: #495057;\">Date & Time</th>\n <th style=\"padding: 12px; text-align: left; font-weight: 600; color: #495057;\">Model</th>\n <th style=\"padding: 12px; text-align: left; font-weight: 600; color: #495057;\">Duration</th>\n <th style=\"padding: 12px; text-align: right; font-weight: 600; color: #495057;\">Tokens</th>\n <th style=\"padding: 12px; text-align: right; font-weight: 600; color: #495057;\">Cost</th>\n <th style=\"padding: 12px; text-align: center; font-weight: 600; color: #495057;\">Type</th>\n <th style=\"padding: 12px; text-align: center; font-weight: 600; color: #495057;\">Actions</th>\n </tr>\n </thead>\n <tbody>\n @for (run of executionHistory; track run.ID; let i = $index) {\n <tr class=\"history-row\"\n [class.even-row]=\"i % 2 === 0\"\n style=\"border-bottom: 1px solid #f1f3f5;\">\n <td style=\"padding: 12px;\">\n <span style=\"display: flex; align-items: center; gap: 6px;\">\n <i [class]=\"'fa-solid ' + getExecutionStatusIcon(run.Success)\" \n [style.color]=\"getExecutionStatusColor(run.Success)\"></i>\n <span [style.color]=\"getExecutionStatusColor(run.Success)\" style=\"font-weight: 500;\">\n {{ run.Success === true ? 'Success' : run.Success === false ? 'Failed' : 'Running' }}\n </span>\n </span>\n </td>\n <td style=\"padding: 12px; color: #495057;\">\n {{ run.RunAt | date:'short' }}\n </td>\n <td style=\"padding: 12px; color: #495057;\">\n <span style=\"display: flex; align-items: center; gap: 6px;\">\n <i class=\"fa-solid fa-microchip\" style=\"color: #6c757d;\"></i>\n {{ run.Model || 'Unknown' }}\n </span>\n </td>\n <td style=\"padding: 12px; color: #495057;\">\n {{ formatDuration(run.ExecutionTimeMS) }}\n </td>\n <td style=\"padding: 12px; text-align: right; color: #495057;\">\n {{ formatTokens(run.TokensUsed) }}\n </td>\n <td style=\"padding: 12px; text-align: right; color: #495057;\">\n {{ formatCost(run.TotalCost || run.Cost) }}\n </td>\n <td style=\"padding: 12px; text-align: center;\">\n @if (run.RunType) {\n <span style=\"padding: 4px 8px; border-radius: 12px; background: #e9ecef; \n color: #495057; font-size: 0.85em; font-weight: 500;\">\n {{ run.RunType }}\n </span>\n }\n </td>\n <td style=\"padding: 12px; text-align: center;\">\n <button kendoButton \n fillMode=\"flat\"\n size=\"small\"\n (click)=\"navigateToPromptRun(run.ID)\"\n title=\"View details\">\n <i class=\"fa-solid fa-external-link\"></i>\n </button>\n </td>\n </tr>\n }\n </tbody>\n </table>\n </div>\n }\n </div>\n </kendo-expansionpanel>\n }\n\n <!-- Cache Expansion Panel -->\n @if (record.IsSaved && record.EnableCaching) {\n <kendo-expansionpanel \n [expanded]=\"false\"\n style=\"margin-bottom: 12px;\">\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 Result Cache\n </span>\n </ng-template>\n \n <!-- Direct Content Projection -->\n <div style=\"padding: 16px 0;\">\n <mj-user-view-grid \n [Params]=\"BuildRelationshipViewParamsByEntityName('AI Result Cache','AIPromptID')\" \n [NewRecordValues]=\"NewRecordValues('AI Result Cache')\"\n [AllowLoad]=\"true\"\n [EditMode]=\"GridEditMode()\" \n style=\"height: 300px;\">\n </mj-user-view-grid>\n </div>\n </kendo-expansionpanel>\n }\n\n <!-- Related Items Expansion Panel -->\n @if (record.IsSaved) {\n <kendo-expansionpanel \n [expanded]=\"false\"\n style=\"margin-bottom: 12px;\">\n <ng-template kendoExpansionPanelTitleDirective>\n <span style=\"display: flex; align-items: center; gap: 8px; font-weight: 600;\">\n <i class=\"fa-solid fa-link\" style=\"color: #6c757d;\"></i>\n Related Items\n </span>\n </ng-template>\n \n <!-- Direct Content Projection -->\n <div style=\"padding: 16px 0;\">\n <div style=\"display: grid; grid-template-columns: 1fr 1fr; gap: 20px;\">\n <!-- AI Agents -->\n <div>\n <h6 style=\"margin: 0 0 12px 0; color: #495057;\">AI Agents Using This Prompt</h6>\n <mj-user-view-grid \n [Params]=\"BuildRelationshipViewParamsByEntityName('MJ: AI Agent Prompts','PromptID')\" \n [NewRecordValues]=\"NewRecordValues('MJ: AI Agent Prompts')\"\n [AllowLoad]=\"true\"\n [EditMode]=\"GridEditMode()\" \n style=\"height: 200px;\">\n </mj-user-view-grid>\n </div>\n \n <!-- Result Selector References -->\n <div>\n <h6 style=\"margin: 0 0 12px 0; color: #495057;\">Prompts Using This as Result Selector</h6>\n <mj-user-view-grid \n [Params]=\"BuildRelationshipViewParamsByEntityName('AI Prompts','ResultSelectorPromptID')\" \n [NewRecordValues]=\"NewRecordValues('AI Prompts')\"\n [AllowLoad]=\"true\"\n [EditMode]=\"GridEditMode()\" \n style=\"height: 200px;\">\n </mj-user-view-grid>\n </div>\n </div>\n </div>\n </kendo-expansionpanel>\n }\n </div>\n </div>\n </form>\n\n \n <!-- AI Prompt Test Harness -->\n @if (showTestHarness) {\n <kendo-window \n [width]=\"1200\" \n [height]=\"800\" \n [minWidth]=\"800\"\n [minHeight]=\"600\"\n [draggable]=\"true\"\n [resizable]=\"true\"\n [state]=\"'default'\"\n (close)=\"onTestHarnessVisibilityChanged(false)\"\n title=\"Run AI Prompt - {{ record.Name || 'Untitled' }}\">\n <mj-ai-test-harness\n [entity]=\"record\"\n [mode]=\"'prompt'\"\n [isVisible]=\"showTestHarness\"\n (visibilityChange)=\"onTestHarnessVisibilityChanged($event)\">\n </mj-ai-test-harness>\n </kendo-window>\n }\n</div>", styles: [".record-form-container {\n font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;\n padding: 10px;\n}\n\n.custom-toolbar-actions {\n margin-left: auto;\n}\n\n.status-badge {\n font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;\n font-weight: 500;\n letter-spacing: 0.02em;\n}\n\n.config-summary {\n position: sticky;\n top: 0;\n max-height: 600px;\n overflow-y: auto;\n}\n\n.config-item {\n padding: 8px 0;\n border-bottom: 1px solid #e9ecef;\n}\n\n.config-item:last-child {\n border-bottom: none;\n}\n\n.template-tab-content {\n background: #fff;\n}\n\n.template-header h5 {\n font-size: 1.1em;\n}\n\n.loading-state,\n.no-template-state,\n.invalid-template-state {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n}\n\n.no-template-state i,\n.invalid-template-state i {\n opacity: 0.6;\n}\n\n.template-editor-container {\n background: #fff;\n border-radius: 6px;\n}\n\n/* Grid layout adjustments */\n@media (max-width: 1200px) {\n .record-form-container .mj-tab-body > div {\n grid-template-columns: 1fr !important;\n gap: 20px;\n }\n \n .config-summary {\n order: -1;\n position: static;\n max-height: none;\n }\n}\n\n/* Responsive toolbar */\n@media (max-width: 768px) {\n .custom-toolbar-actions {\n flex-direction: column;\n gap: 4px !important;\n }\n \n .status-badge {\n align-self: flex-start;\n }\n}\n\n/* Ensure proper spacing in form sections */\n.record-form-container mj-form-section {\n padding: 16px;\n}\n\n/* Smooth transitions for better UX */\n.status-badge,\n.config-item,\n.template-header {\n transition: all 0.2s ease;\n}\n\n.config-item:hover {\n background-color: rgba(0,0,0,0.02);\n border-radius: 4px;\n margin: 0 -8px;\n padding: 8px;\n}\n\n/* Execution History Table Styles */\n.history-row {\n transition: background 0.2s;\n}\n\n.history-row:not(.even-row) {\n background: #f8f9fa;\n}\n\n.history-row.even-row {\n background: white;\n}\n\n.history-row:hover {\n background: #e9ecef !important;\n}\n\n/* Template Parameters Styles */\n.parameter-card {\n position: relative;\n overflow: hidden;\n}\n\n.parameter-card::before {\n content: '';\n position: absolute;\n top: 0;\n left: 0;\n bottom: 0;\n width: 4px;\n background: inherit;\n transition: width 0.2s;\n}\n\n.parameter-card:hover {\n transform: translateY(-2px);\n box-shadow: 0 4px 12px rgba(0,0,0,0.1);\n}\n\n.parameter-card:hover::before {\n width: 6px;\n}\n\n.type-badge {\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.03em;\n transition: transform 0.2s;\n}\n\n.parameter-card:hover .type-badge {\n transform: scale(1.05);\n}\n\n/* Parameter type icons animation */\n.parameter-card i.fa-solid {\n transition: transform 0.3s;\n}\n\n.parameter-card:hover i.fa-solid {\n transform: rotate(360deg);\n}\n\n/* Grid responsive behavior */\n@media (max-width: 768px) {\n .parameter-card {\n margin-bottom: 8px;\n }\n \n .parameter-card h6 {\n font-size: 0.95em;\n }\n \n .type-badge {\n font-size: 0.7em !important;\n }\n}"] }]
2287
2576
  }], () => [{ type: i0.ElementRef }, { type: i1.SharedService }, { type: i2.Router }, { type: i2.ActivatedRoute }, { type: i0.ChangeDetectorRef }], { templateEditor: [{
2288
2577
  type: ViewChild,
2289
2578
  args: ['templateEditor']