@memberjunction/ng-core-entity-forms 5.43.0 → 5.44.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 (259) hide show
  1. package/dist/__tests__/model-prediction.logic.test.d.ts +2 -0
  2. package/dist/__tests__/model-prediction.logic.test.d.ts.map +1 -0
  3. package/dist/__tests__/model-prediction.logic.test.js +140 -0
  4. package/dist/__tests__/model-prediction.logic.test.js.map +1 -0
  5. package/dist/lib/custom/AIAgentSessions/ai-agent-session-form.component.js +79 -105
  6. package/dist/lib/custom/AIAgentSessions/ai-agent-session-form.component.js.map +1 -1
  7. package/dist/lib/custom/AIAgents/FlowAgentType/flow-agent-form-section.component.js +7 -10
  8. package/dist/lib/custom/AIAgents/FlowAgentType/flow-agent-form-section.component.js.map +1 -1
  9. package/dist/lib/custom/AIAgents/add-action-dialog.component.d.ts.map +1 -1
  10. package/dist/lib/custom/AIAgents/add-action-dialog.component.js +46 -51
  11. package/dist/lib/custom/AIAgents/add-action-dialog.component.js.map +1 -1
  12. package/dist/lib/custom/AIAgents/ai-agent-form.component.d.ts +2 -0
  13. package/dist/lib/custom/AIAgents/ai-agent-form.component.d.ts.map +1 -1
  14. package/dist/lib/custom/AIAgents/ai-agent-form.component.js +300 -378
  15. package/dist/lib/custom/AIAgents/ai-agent-form.component.js.map +1 -1
  16. package/dist/lib/custom/AIAgents/create-sub-agent-dialog.component.js +22 -29
  17. package/dist/lib/custom/AIAgents/create-sub-agent-dialog.component.js.map +1 -1
  18. package/dist/lib/custom/AIAgents/new-agent-dialog.component.js +15 -17
  19. package/dist/lib/custom/AIAgents/new-agent-dialog.component.js.map +1 -1
  20. package/dist/lib/custom/AIAgents/prompt-selector-dialog.component.js +27 -34
  21. package/dist/lib/custom/AIAgents/prompt-selector-dialog.component.js.map +1 -1
  22. package/dist/lib/custom/AIAgents/sub-agent-selector-dialog.component.d.ts +11 -0
  23. package/dist/lib/custom/AIAgents/sub-agent-selector-dialog.component.d.ts.map +1 -1
  24. package/dist/lib/custom/AIAgents/sub-agent-selector-dialog.component.js +48 -47
  25. package/dist/lib/custom/AIAgents/sub-agent-selector-dialog.component.js.map +1 -1
  26. package/dist/lib/custom/AIPromptRuns/ai-prompt-run-form.component.js +438 -454
  27. package/dist/lib/custom/AIPromptRuns/ai-prompt-run-form.component.js.map +1 -1
  28. package/dist/lib/custom/AIPromptRuns/chat-message-viewer.component.js +48 -51
  29. package/dist/lib/custom/AIPromptRuns/chat-message-viewer.component.js.map +1 -1
  30. package/dist/lib/custom/AIPrompts/ai-prompt-form.component.js +253 -282
  31. package/dist/lib/custom/AIPrompts/ai-prompt-form.component.js.map +1 -1
  32. package/dist/lib/custom/Actions/action-execution-log-form.component.js +24 -33
  33. package/dist/lib/custom/Actions/action-execution-log-form.component.js.map +1 -1
  34. package/dist/lib/custom/Actions/action-form.component.js +263 -311
  35. package/dist/lib/custom/Actions/action-form.component.js.map +1 -1
  36. package/dist/lib/custom/Entities/entity-form.component.d.ts +6 -0
  37. package/dist/lib/custom/Entities/entity-form.component.d.ts.map +1 -1
  38. package/dist/lib/custom/Entities/entity-form.component.js +475 -493
  39. package/dist/lib/custom/Entities/entity-form.component.js.map +1 -1
  40. package/dist/lib/custom/Lists/list-form.component.js +122 -173
  41. package/dist/lib/custom/Lists/list-form.component.js.map +1 -1
  42. package/dist/lib/custom/Queries/query-form.component.js +190 -248
  43. package/dist/lib/custom/Queries/query-form.component.js.map +1 -1
  44. package/dist/lib/custom/Queries/query-run-dialog.component.js +19 -23
  45. package/dist/lib/custom/Queries/query-run-dialog.component.js.map +1 -1
  46. package/dist/lib/custom/SearchScopes/searchscopeprovider-form.component.js +23 -24
  47. package/dist/lib/custom/SearchScopes/searchscopeprovider-form.component.js.map +1 -1
  48. package/dist/lib/custom/Templates/template-param-dialog.component.js +14 -23
  49. package/dist/lib/custom/Templates/template-param-dialog.component.js.map +1 -1
  50. package/dist/lib/custom/Tests/test-form.component.js +100 -130
  51. package/dist/lib/custom/Tests/test-form.component.js.map +1 -1
  52. package/dist/lib/custom/Tests/test-run-form.component.js +187 -205
  53. package/dist/lib/custom/Tests/test-run-form.component.js.map +1 -1
  54. package/dist/lib/custom/Tests/test-suite-form.component.d.ts +8 -0
  55. package/dist/lib/custom/Tests/test-suite-form.component.d.ts.map +1 -1
  56. package/dist/lib/custom/Tests/test-suite-form.component.js +412 -489
  57. package/dist/lib/custom/Tests/test-suite-form.component.js.map +1 -1
  58. package/dist/lib/custom/Tests/test-suite-run-form.component.js +100 -126
  59. package/dist/lib/custom/Tests/test-suite-run-form.component.js.map +1 -1
  60. package/dist/lib/custom/ai-agent-run/ai-agent-run-analytics.component.js +166 -184
  61. package/dist/lib/custom/ai-agent-run/ai-agent-run-analytics.component.js.map +1 -1
  62. package/dist/lib/custom/ai-agent-run/ai-agent-run-step-detail.component.js +42 -61
  63. package/dist/lib/custom/ai-agent-run/ai-agent-run-step-detail.component.js.map +1 -1
  64. package/dist/lib/custom/ai-agent-run/ai-agent-run-timeline.component.js +8 -17
  65. package/dist/lib/custom/ai-agent-run/ai-agent-run-timeline.component.js.map +1 -1
  66. package/dist/lib/custom/ai-agent-run/ai-agent-run.component.d.ts +0 -2
  67. package/dist/lib/custom/ai-agent-run/ai-agent-run.component.d.ts.map +1 -1
  68. package/dist/lib/custom/ai-agent-run/ai-agent-run.component.js +183 -188
  69. package/dist/lib/custom/ai-agent-run/ai-agent-run.component.js.map +1 -1
  70. package/dist/lib/custom/ai-agent-run/flow/agent-run-flow.component.d.ts +108 -0
  71. package/dist/lib/custom/ai-agent-run/flow/agent-run-flow.component.d.ts.map +1 -0
  72. package/dist/lib/custom/ai-agent-run/flow/agent-run-flow.component.js +665 -0
  73. package/dist/lib/custom/ai-agent-run/flow/agent-run-flow.component.js.map +1 -0
  74. package/dist/lib/custom/ai-agent-run/flow/agent-run-flow.model.d.ts +94 -0
  75. package/dist/lib/custom/ai-agent-run/flow/agent-run-flow.model.d.ts.map +1 -0
  76. package/dist/lib/custom/ai-agent-run/flow/agent-run-flow.model.js +257 -0
  77. package/dist/lib/custom/ai-agent-run/flow/agent-run-flow.model.js.map +1 -0
  78. package/dist/lib/custom/ai-agent-run/flow/constellation.component.d.ts +38 -0
  79. package/dist/lib/custom/ai-agent-run/flow/constellation.component.d.ts.map +1 -0
  80. package/dist/lib/custom/ai-agent-run/flow/constellation.component.js +200 -0
  81. package/dist/lib/custom/ai-agent-run/flow/constellation.component.js.map +1 -0
  82. package/dist/lib/custom/ai-agent-run/flow/flame-cascade.component.d.ts +44 -0
  83. package/dist/lib/custom/ai-agent-run/flow/flame-cascade.component.d.ts.map +1 -0
  84. package/dist/lib/custom/ai-agent-run/flow/flame-cascade.component.js +180 -0
  85. package/dist/lib/custom/ai-agent-run/flow/flame-cascade.component.js.map +1 -0
  86. package/dist/lib/custom/ai-agent-run/flow/flow-svg.util.d.ts +12 -0
  87. package/dist/lib/custom/ai-agent-run/flow/flow-svg.util.d.ts.map +1 -0
  88. package/dist/lib/custom/ai-agent-run/flow/flow-svg.util.js +46 -0
  89. package/dist/lib/custom/ai-agent-run/flow/flow-svg.util.js.map +1 -0
  90. package/dist/lib/custom/ai-agent-run/flow/flowchart.component.d.ts +64 -0
  91. package/dist/lib/custom/ai-agent-run/flow/flowchart.component.d.ts.map +1 -0
  92. package/dist/lib/custom/ai-agent-run/flow/flowchart.component.js +267 -0
  93. package/dist/lib/custom/ai-agent-run/flow/flowchart.component.js.map +1 -0
  94. package/dist/lib/custom/ai-agent-run/flow/pan-zoom.d.ts +53 -0
  95. package/dist/lib/custom/ai-agent-run/flow/pan-zoom.d.ts.map +1 -0
  96. package/dist/lib/custom/ai-agent-run/flow/pan-zoom.js +111 -0
  97. package/dist/lib/custom/ai-agent-run/flow/pan-zoom.js.map +1 -0
  98. package/dist/lib/custom/ai-agent-run/flow/subway-lines.component.d.ts +42 -0
  99. package/dist/lib/custom/ai-agent-run/flow/subway-lines.component.d.ts.map +1 -0
  100. package/dist/lib/custom/ai-agent-run/flow/subway-lines.component.js +193 -0
  101. package/dist/lib/custom/ai-agent-run/flow/subway-lines.component.js.map +1 -0
  102. package/dist/lib/custom/custom-forms.module.d.ts +58 -51
  103. package/dist/lib/custom/custom-forms.module.d.ts.map +1 -1
  104. package/dist/lib/custom/custom-forms.module.js +52 -13
  105. package/dist/lib/custom/custom-forms.module.js.map +1 -1
  106. package/dist/lib/custom/shared/entity-selector-dialog.component.d.ts +2 -0
  107. package/dist/lib/custom/shared/entity-selector-dialog.component.d.ts.map +1 -1
  108. package/dist/lib/custom/shared/entity-selector-dialog.component.js +25 -25
  109. package/dist/lib/custom/shared/entity-selector-dialog.component.js.map +1 -1
  110. package/dist/lib/generated/Entities/MJAIAgent/mjaiagent.form.component.d.ts.map +1 -1
  111. package/dist/lib/generated/Entities/MJAIAgent/mjaiagent.form.component.js +280 -216
  112. package/dist/lib/generated/Entities/MJAIAgent/mjaiagent.form.component.js.map +1 -1
  113. package/dist/lib/generated/Entities/MJAIAgentChannel/mjaiagentchannel.form.component.js +25 -21
  114. package/dist/lib/generated/Entities/MJAIAgentChannel/mjaiagentchannel.form.component.js.map +1 -1
  115. package/dist/lib/generated/Entities/MJAIAgentRun/mjaiagentrun.form.component.d.ts.map +1 -1
  116. package/dist/lib/generated/Entities/MJAIAgentRun/mjaiagentrun.form.component.js +68 -14
  117. package/dist/lib/generated/Entities/MJAIAgentRun/mjaiagentrun.form.component.js.map +1 -1
  118. package/dist/lib/generated/Entities/MJAIAgentSession/mjaiagentsession.form.component.d.ts.map +1 -1
  119. package/dist/lib/generated/Entities/MJAIAgentSession/mjaiagentsession.form.component.js +44 -32
  120. package/dist/lib/generated/Entities/MJAIAgentSession/mjaiagentsession.form.component.js.map +1 -1
  121. package/dist/lib/generated/Entities/MJAIAgentSkill/mjaiagentskill.form.component.d.ts +10 -0
  122. package/dist/lib/generated/Entities/MJAIAgentSkill/mjaiagentskill.form.component.d.ts.map +1 -0
  123. package/dist/lib/generated/Entities/MJAIAgentSkill/mjaiagentskill.form.component.js +66 -0
  124. package/dist/lib/generated/Entities/MJAIAgentSkill/mjaiagentskill.form.component.js.map +1 -0
  125. package/dist/lib/generated/Entities/MJAIPrompt/mjaiprompt.form.component.d.ts.map +1 -1
  126. package/dist/lib/generated/Entities/MJAIPrompt/mjaiprompt.form.component.js +55 -19
  127. package/dist/lib/generated/Entities/MJAIPrompt/mjaiprompt.form.component.js.map +1 -1
  128. package/dist/lib/generated/Entities/MJAIPromptRun/mjaipromptrun.form.component.d.ts.map +1 -1
  129. package/dist/lib/generated/Entities/MJAIPromptRun/mjaipromptrun.form.component.js +28 -10
  130. package/dist/lib/generated/Entities/MJAIPromptRun/mjaipromptrun.form.component.js.map +1 -1
  131. package/dist/lib/generated/Entities/MJAISkill/mjaiskill.form.component.d.ts +10 -0
  132. package/dist/lib/generated/Entities/MJAISkill/mjaiskill.form.component.d.ts.map +1 -0
  133. package/dist/lib/generated/Entities/MJAISkill/mjaiskill.form.component.js +167 -0
  134. package/dist/lib/generated/Entities/MJAISkill/mjaiskill.form.component.js.map +1 -0
  135. package/dist/lib/generated/Entities/MJAISkillAction/mjaiskillaction.form.component.d.ts +10 -0
  136. package/dist/lib/generated/Entities/MJAISkillAction/mjaiskillaction.form.component.d.ts.map +1 -0
  137. package/dist/lib/generated/Entities/MJAISkillAction/mjaiskillaction.form.component.js +64 -0
  138. package/dist/lib/generated/Entities/MJAISkillAction/mjaiskillaction.form.component.js.map +1 -0
  139. package/dist/lib/generated/Entities/MJAISkillPermission/mjaiskillpermission.form.component.d.ts +10 -0
  140. package/dist/lib/generated/Entities/MJAISkillPermission/mjaiskillpermission.form.component.d.ts.map +1 -0
  141. package/dist/lib/generated/Entities/MJAISkillPermission/mjaiskillpermission.form.component.js +82 -0
  142. package/dist/lib/generated/Entities/MJAISkillPermission/mjaiskillpermission.form.component.js.map +1 -0
  143. package/dist/lib/generated/Entities/MJAISkillSubAgent/mjaiskillsubagent.form.component.d.ts +10 -0
  144. package/dist/lib/generated/Entities/MJAISkillSubAgent/mjaiskillsubagent.form.component.d.ts.map +1 -0
  145. package/dist/lib/generated/Entities/MJAISkillSubAgent/mjaiskillsubagent.form.component.js +64 -0
  146. package/dist/lib/generated/Entities/MJAISkillSubAgent/mjaiskillsubagent.form.component.js.map +1 -0
  147. package/dist/lib/generated/Entities/MJAction/mjaction.form.component.d.ts.map +1 -1
  148. package/dist/lib/generated/Entities/MJAction/mjaction.form.component.js +35 -17
  149. package/dist/lib/generated/Entities/MJAction/mjaction.form.component.js.map +1 -1
  150. package/dist/lib/generated/Entities/MJApplication/mjapplication.form.component.d.ts.map +1 -1
  151. package/dist/lib/generated/Entities/MJApplication/mjapplication.form.component.js +59 -51
  152. package/dist/lib/generated/Entities/MJApplication/mjapplication.form.component.js.map +1 -1
  153. package/dist/lib/generated/Entities/MJCollection/mjcollection.form.component.d.ts.map +1 -1
  154. package/dist/lib/generated/Entities/MJCollection/mjcollection.form.component.js +25 -7
  155. package/dist/lib/generated/Entities/MJCollection/mjcollection.form.component.js.map +1 -1
  156. package/dist/lib/generated/Entities/MJCollectionArtifact/mjcollectionartifact.form.component.js +11 -7
  157. package/dist/lib/generated/Entities/MJCollectionArtifact/mjcollectionartifact.form.component.js.map +1 -1
  158. package/dist/lib/generated/Entities/MJConversation/mjconversation.form.component.d.ts.map +1 -1
  159. package/dist/lib/generated/Entities/MJConversation/mjconversation.form.component.js +56 -46
  160. package/dist/lib/generated/Entities/MJConversation/mjconversation.form.component.js.map +1 -1
  161. package/dist/lib/generated/Entities/MJConversationDetail/mjconversationdetail.form.component.d.ts.map +1 -1
  162. package/dist/lib/generated/Entities/MJConversationDetail/mjconversationdetail.form.component.js +73 -59
  163. package/dist/lib/generated/Entities/MJConversationDetail/mjconversationdetail.form.component.js.map +1 -1
  164. package/dist/lib/generated/Entities/MJDuplicateRunDetailMatch/mjduplicaterundetailmatch.form.component.d.ts.map +1 -1
  165. package/dist/lib/generated/Entities/MJDuplicateRunDetailMatch/mjduplicaterundetailmatch.form.component.js +24 -4
  166. package/dist/lib/generated/Entities/MJDuplicateRunDetailMatch/mjduplicaterundetailmatch.form.component.js.map +1 -1
  167. package/dist/lib/generated/Entities/MJEntity/mjentity.form.component.d.ts.map +1 -1
  168. package/dist/lib/generated/Entities/MJEntity/mjentity.form.component.js +137 -87
  169. package/dist/lib/generated/Entities/MJEntity/mjentity.form.component.js.map +1 -1
  170. package/dist/lib/generated/Entities/MJEntityDocument/mjentitydocument.form.component.d.ts.map +1 -1
  171. package/dist/lib/generated/Entities/MJEntityDocument/mjentitydocument.form.component.js +47 -29
  172. package/dist/lib/generated/Entities/MJEntityDocument/mjentitydocument.form.component.js.map +1 -1
  173. package/dist/lib/generated/Entities/MJExperiment/mjexperiment.form.component.d.ts +10 -0
  174. package/dist/lib/generated/Entities/MJExperiment/mjexperiment.form.component.d.ts.map +1 -0
  175. package/dist/lib/generated/Entities/MJExperiment/mjexperiment.form.component.js +99 -0
  176. package/dist/lib/generated/Entities/MJExperiment/mjexperiment.form.component.js.map +1 -0
  177. package/dist/lib/generated/Entities/MJExperimentSession/mjexperimentsession.form.component.d.ts +10 -0
  178. package/dist/lib/generated/Entities/MJExperimentSession/mjexperimentsession.form.component.d.ts.map +1 -0
  179. package/dist/lib/generated/Entities/MJExperimentSession/mjexperimentsession.form.component.js +101 -0
  180. package/dist/lib/generated/Entities/MJExperimentSession/mjexperimentsession.form.component.js.map +1 -0
  181. package/dist/lib/generated/Entities/MJExperimentSessionIteration/mjexperimentsessioniteration.form.component.d.ts +10 -0
  182. package/dist/lib/generated/Entities/MJExperimentSessionIteration/mjexperimentsessioniteration.form.component.d.ts.map +1 -0
  183. package/dist/lib/generated/Entities/MJExperimentSessionIteration/mjexperimentsessioniteration.form.component.js +115 -0
  184. package/dist/lib/generated/Entities/MJExperimentSessionIteration/mjexperimentsessioniteration.form.component.js.map +1 -0
  185. package/dist/lib/generated/Entities/MJFile/mjfile.form.component.d.ts.map +1 -1
  186. package/dist/lib/generated/Entities/MJFile/mjfile.form.component.js +63 -9
  187. package/dist/lib/generated/Entities/MJFile/mjfile.form.component.js.map +1 -1
  188. package/dist/lib/generated/Entities/MJFileStorageProvider/mjfilestorageprovider.form.component.d.ts.map +1 -1
  189. package/dist/lib/generated/Entities/MJFileStorageProvider/mjfilestorageprovider.form.component.js +32 -14
  190. package/dist/lib/generated/Entities/MJFileStorageProvider/mjfilestorageprovider.form.component.js.map +1 -1
  191. package/dist/lib/generated/Entities/MJMLAlgorithm/mjmlalgorithm.form.component.d.ts +10 -0
  192. package/dist/lib/generated/Entities/MJMLAlgorithm/mjmlalgorithm.form.component.d.ts.map +1 -0
  193. package/dist/lib/generated/Entities/MJMLAlgorithm/mjmlalgorithm.form.component.js +161 -0
  194. package/dist/lib/generated/Entities/MJMLAlgorithm/mjmlalgorithm.form.component.js.map +1 -0
  195. package/dist/lib/generated/Entities/MJMLAlgorithmUseCase/mjmlalgorithmusecase.form.component.d.ts +10 -0
  196. package/dist/lib/generated/Entities/MJMLAlgorithmUseCase/mjmlalgorithmusecase.form.component.d.ts.map +1 -0
  197. package/dist/lib/generated/Entities/MJMLAlgorithmUseCase/mjmlalgorithmusecase.form.component.js +89 -0
  198. package/dist/lib/generated/Entities/MJMLAlgorithmUseCase/mjmlalgorithmusecase.form.component.js.map +1 -0
  199. package/dist/lib/generated/Entities/MJMLAlgorithmUseCaseRanking/mjmlalgorithmusecaseranking.form.component.d.ts +10 -0
  200. package/dist/lib/generated/Entities/MJMLAlgorithmUseCaseRanking/mjmlalgorithmusecaseranking.form.component.d.ts.map +1 -0
  201. package/dist/lib/generated/Entities/MJMLAlgorithmUseCaseRanking/mjmlalgorithmusecaseranking.form.component.js +76 -0
  202. package/dist/lib/generated/Entities/MJMLAlgorithmUseCaseRanking/mjmlalgorithmusecaseranking.form.component.js.map +1 -0
  203. package/dist/lib/generated/Entities/MJMLModel/mjmlmodel.form.component.d.ts +10 -0
  204. package/dist/lib/generated/Entities/MJMLModel/mjmlmodel.form.component.d.ts.map +1 -0
  205. package/dist/lib/generated/Entities/MJMLModel/mjmlmodel.form.component.js +141 -0
  206. package/dist/lib/generated/Entities/MJMLModel/mjmlmodel.form.component.js.map +1 -0
  207. package/dist/lib/generated/Entities/MJMLModelScoringBinding/mjmlmodelscoringbinding.form.component.d.ts +10 -0
  208. package/dist/lib/generated/Entities/MJMLModelScoringBinding/mjmlmodelscoringbinding.form.component.d.ts.map +1 -0
  209. package/dist/lib/generated/Entities/MJMLModelScoringBinding/mjmlmodelscoringbinding.form.component.js +88 -0
  210. package/dist/lib/generated/Entities/MJMLModelScoringBinding/mjmlmodelscoringbinding.form.component.js.map +1 -0
  211. package/dist/lib/generated/Entities/MJMLTrainingPipeline/mjmltrainingpipeline.form.component.d.ts +10 -0
  212. package/dist/lib/generated/Entities/MJMLTrainingPipeline/mjmltrainingpipeline.form.component.d.ts.map +1 -0
  213. package/dist/lib/generated/Entities/MJMLTrainingPipeline/mjmltrainingpipeline.form.component.js +143 -0
  214. package/dist/lib/generated/Entities/MJMLTrainingPipeline/mjmltrainingpipeline.form.component.js.map +1 -0
  215. package/dist/lib/generated/Entities/MJMLTrainingRun/mjmltrainingrun.form.component.d.ts +10 -0
  216. package/dist/lib/generated/Entities/MJMLTrainingRun/mjmltrainingrun.form.component.d.ts.map +1 -0
  217. package/dist/lib/generated/Entities/MJMLTrainingRun/mjmltrainingrun.form.component.js +110 -0
  218. package/dist/lib/generated/Entities/MJMLTrainingRun/mjmltrainingrun.form.component.js.map +1 -0
  219. package/dist/lib/generated/Entities/MJOpenApp/mjopenapp.form.component.d.ts.map +1 -1
  220. package/dist/lib/generated/Entities/MJOpenApp/mjopenapp.form.component.js +54 -24
  221. package/dist/lib/generated/Entities/MJOpenApp/mjopenapp.form.component.js.map +1 -1
  222. package/dist/lib/generated/Entities/MJRecordProcess/mjrecordprocess.form.component.d.ts.map +1 -1
  223. package/dist/lib/generated/Entities/MJRecordProcess/mjrecordprocess.form.component.js +24 -6
  224. package/dist/lib/generated/Entities/MJRecordProcess/mjrecordprocess.form.component.js.map +1 -1
  225. package/dist/lib/generated/Entities/MJRole/mjrole.form.component.d.ts.map +1 -1
  226. package/dist/lib/generated/Entities/MJRole/mjrole.form.component.js +36 -18
  227. package/dist/lib/generated/Entities/MJRole/mjrole.form.component.js.map +1 -1
  228. package/dist/lib/generated/Entities/MJSchemaInfo/mjschemainfo.form.component.js +8 -6
  229. package/dist/lib/generated/Entities/MJSchemaInfo/mjschemainfo.form.component.js.map +1 -1
  230. package/dist/lib/generated/Entities/MJScopedPromptPart/mjscopedpromptpart.form.component.d.ts +10 -0
  231. package/dist/lib/generated/Entities/MJScopedPromptPart/mjscopedpromptpart.form.component.d.ts.map +1 -0
  232. package/dist/lib/generated/Entities/MJScopedPromptPart/mjscopedpromptpart.form.component.js +78 -0
  233. package/dist/lib/generated/Entities/MJScopedPromptPart/mjscopedpromptpart.form.component.js.map +1 -0
  234. package/dist/lib/generated/Entities/MJUser/mjuser.form.component.d.ts.map +1 -1
  235. package/dist/lib/generated/Entities/MJUser/mjuser.form.component.js +145 -109
  236. package/dist/lib/generated/Entities/MJUser/mjuser.form.component.js.map +1 -1
  237. package/dist/lib/generated/generated-forms.module.d.ts +356 -335
  238. package/dist/lib/generated/generated-forms.module.d.ts.map +1 -1
  239. package/dist/lib/generated/generated-forms.module.js +304 -226
  240. package/dist/lib/generated/generated-forms.module.js.map +1 -1
  241. package/dist/lib/panels/ai-agents/agent-realtime.panel.js +44 -44
  242. package/dist/lib/panels/ai-agents/agent-realtime.panel.js.map +1 -1
  243. package/dist/lib/panels/ai-skill-sharing/ai-skill-sharing-panel.component.d.ts +43 -0
  244. package/dist/lib/panels/ai-skill-sharing/ai-skill-sharing-panel.component.d.ts.map +1 -0
  245. package/dist/lib/panels/ai-skill-sharing/ai-skill-sharing-panel.component.js +240 -0
  246. package/dist/lib/panels/ai-skill-sharing/ai-skill-sharing-panel.component.js.map +1 -0
  247. package/dist/lib/panels/model-predictions/model-prediction.logic.d.ts +69 -0
  248. package/dist/lib/panels/model-predictions/model-prediction.logic.d.ts.map +1 -0
  249. package/dist/lib/panels/model-predictions/model-prediction.logic.js +130 -0
  250. package/dist/lib/panels/model-predictions/model-prediction.logic.js.map +1 -0
  251. package/dist/lib/panels/model-predictions/model-prediction.panel.d.ts +83 -0
  252. package/dist/lib/panels/model-predictions/model-prediction.panel.d.ts.map +1 -0
  253. package/dist/lib/panels/model-predictions/model-prediction.panel.js +293 -0
  254. package/dist/lib/panels/model-predictions/model-prediction.panel.js.map +1 -0
  255. package/package.json +38 -37
  256. package/dist/lib/custom/ai-agent-run/ai-agent-run-visualization.component.d.ts +0 -82
  257. package/dist/lib/custom/ai-agent-run/ai-agent-run-visualization.component.d.ts.map +0 -1
  258. package/dist/lib/custom/ai-agent-run/ai-agent-run-visualization.component.js +0 -1033
  259. package/dist/lib/custom/ai-agent-run/ai-agent-run-visualization.component.js.map +0 -1
@@ -8,7 +8,8 @@ import { BaseAngularComponent } from '@memberjunction/ng-base-types';
8
8
  import * as i0 from "@angular/core";
9
9
  import * as i1 from "./ai-agent-management.service";
10
10
  import * as i2 from "@angular/forms";
11
- import * as i3 from "@angular/common";
11
+ import * as i3 from "@memberjunction/ng-ui-components";
12
+ import * as i4 from "@angular/common";
12
13
  const _forTrack0 = ($index, $item) => $item.ID;
13
14
  function CreateSubAgentDialogComponent_Conditional_5_Template(rf, ctx) { if (rf & 1) {
14
15
  i0.ɵɵelementStart(0, "p", 4);
@@ -40,7 +41,7 @@ function CreateSubAgentDialogComponent_Conditional_8_For_17_Template(rf, ctx) {
40
41
  i0.ɵɵtextInterpolate(type_r3.Name);
41
42
  } }
42
43
  function CreateSubAgentDialogComponent_Conditional_8_Conditional_108_For_2_Conditional_5_Template(rf, ctx) { if (rf & 1) {
43
- i0.ɵɵelementStart(0, "span", 68);
44
+ i0.ɵɵelementStart(0, "span", 69);
44
45
  i0.ɵɵtext(1);
45
46
  i0.ɵɵelementEnd();
46
47
  } if (rf & 2) {
@@ -50,14 +51,14 @@ function CreateSubAgentDialogComponent_Conditional_8_Conditional_108_For_2_Condi
50
51
  } }
51
52
  function CreateSubAgentDialogComponent_Conditional_8_Conditional_108_For_2_Template(rf, ctx) { if (rf & 1) {
52
53
  const _r4 = i0.ɵɵgetCurrentView();
53
- i0.ɵɵelementStart(0, "div", 65)(1, "div", 66);
54
+ i0.ɵɵelementStart(0, "div", 66)(1, "div", 67);
54
55
  i0.ɵɵelement(2, "i", 57);
55
- i0.ɵɵelementStart(3, "span", 67);
56
+ i0.ɵɵelementStart(3, "span", 68);
56
57
  i0.ɵɵtext(4);
57
58
  i0.ɵɵelementEnd();
58
- i0.ɵɵconditionalCreate(5, CreateSubAgentDialogComponent_Conditional_8_Conditional_108_For_2_Conditional_5_Template, 2, 1, "span", 68);
59
+ i0.ɵɵconditionalCreate(5, CreateSubAgentDialogComponent_Conditional_8_Conditional_108_For_2_Conditional_5_Template, 2, 1, "span", 69);
59
60
  i0.ɵɵelementEnd();
60
- i0.ɵɵelementStart(6, "button", 69);
61
+ i0.ɵɵelementStart(6, "button", 70);
61
62
  i0.ɵɵlistener("click", function CreateSubAgentDialogComponent_Conditional_8_Conditional_108_For_2_Template_button_click_6_listener() { const prompt_r5 = i0.ɵɵrestoreView(_r4).$implicit; const ctx_r0 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r0.removePrompt(prompt_r5)); });
62
63
  i0.ɵɵelement(7, "i", 9);
63
64
  i0.ɵɵelementEnd()();
@@ -70,7 +71,7 @@ function CreateSubAgentDialogComponent_Conditional_8_Conditional_108_For_2_Templ
70
71
  } }
71
72
  function CreateSubAgentDialogComponent_Conditional_8_Conditional_108_Template(rf, ctx) { if (rf & 1) {
72
73
  i0.ɵɵelementStart(0, "div", 62);
73
- i0.ɵɵrepeaterCreate(1, CreateSubAgentDialogComponent_Conditional_8_Conditional_108_For_2_Template, 8, 2, "div", 65, _forTrack0);
74
+ i0.ɵɵrepeaterCreate(1, CreateSubAgentDialogComponent_Conditional_8_Conditional_108_For_2_Template, 8, 2, "div", 66, _forTrack0);
74
75
  i0.ɵɵelementEnd();
75
76
  } if (rf & 2) {
76
77
  const ctx_r0 = i0.ɵɵnextContext(2);
@@ -78,14 +79,10 @@ function CreateSubAgentDialogComponent_Conditional_8_Conditional_108_Template(rf
78
79
  i0.ɵɵrepeater(ctx_r0.linkedPrompts);
79
80
  } }
80
81
  function CreateSubAgentDialogComponent_Conditional_8_Conditional_109_Template(rf, ctx) { if (rf & 1) {
81
- i0.ɵɵelementStart(0, "div", 63);
82
- i0.ɵɵelement(1, "i", 57);
83
- i0.ɵɵelementStart(2, "p");
84
- i0.ɵɵtext(3, "No prompts added yet. Click the buttons above to add prompts.");
85
- i0.ɵɵelementEnd()();
82
+ i0.ɵɵelement(0, "mj-empty-state", 63);
86
83
  } }
87
84
  function CreateSubAgentDialogComponent_Conditional_8_Conditional_118_For_2_Conditional_5_Template(rf, ctx) { if (rf & 1) {
88
- i0.ɵɵelementStart(0, "span", 68);
85
+ i0.ɵɵelementStart(0, "span", 69);
89
86
  i0.ɵɵtext(1);
90
87
  i0.ɵɵelementEnd();
91
88
  } if (rf & 2) {
@@ -95,14 +92,14 @@ function CreateSubAgentDialogComponent_Conditional_8_Conditional_118_For_2_Condi
95
92
  } }
96
93
  function CreateSubAgentDialogComponent_Conditional_8_Conditional_118_For_2_Template(rf, ctx) { if (rf & 1) {
97
94
  const _r6 = i0.ɵɵgetCurrentView();
98
- i0.ɵɵelementStart(0, "div", 70)(1, "div", 66);
95
+ i0.ɵɵelementStart(0, "div", 71)(1, "div", 67);
99
96
  i0.ɵɵelement(2, "i", 64);
100
- i0.ɵɵelementStart(3, "span", 67);
97
+ i0.ɵɵelementStart(3, "span", 68);
101
98
  i0.ɵɵtext(4);
102
99
  i0.ɵɵelementEnd();
103
- i0.ɵɵconditionalCreate(5, CreateSubAgentDialogComponent_Conditional_8_Conditional_118_For_2_Conditional_5_Template, 2, 1, "span", 68);
100
+ i0.ɵɵconditionalCreate(5, CreateSubAgentDialogComponent_Conditional_8_Conditional_118_For_2_Conditional_5_Template, 2, 1, "span", 69);
104
101
  i0.ɵɵelementEnd();
105
- i0.ɵɵelementStart(6, "button", 69);
102
+ i0.ɵɵelementStart(6, "button", 70);
106
103
  i0.ɵɵlistener("click", function CreateSubAgentDialogComponent_Conditional_8_Conditional_118_For_2_Template_button_click_6_listener() { const action_r7 = i0.ɵɵrestoreView(_r6).$implicit; const ctx_r0 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r0.removeAction(action_r7)); });
107
104
  i0.ɵɵelement(7, "i", 9);
108
105
  i0.ɵɵelementEnd()();
@@ -115,7 +112,7 @@ function CreateSubAgentDialogComponent_Conditional_8_Conditional_118_For_2_Templ
115
112
  } }
116
113
  function CreateSubAgentDialogComponent_Conditional_8_Conditional_118_Template(rf, ctx) { if (rf & 1) {
117
114
  i0.ɵɵelementStart(0, "div", 62);
118
- i0.ɵɵrepeaterCreate(1, CreateSubAgentDialogComponent_Conditional_8_Conditional_118_For_2_Template, 8, 2, "div", 70, _forTrack0);
115
+ i0.ɵɵrepeaterCreate(1, CreateSubAgentDialogComponent_Conditional_8_Conditional_118_For_2_Template, 8, 2, "div", 71, _forTrack0);
119
116
  i0.ɵɵelementEnd();
120
117
  } if (rf & 2) {
121
118
  const ctx_r0 = i0.ɵɵnextContext(2);
@@ -123,11 +120,7 @@ function CreateSubAgentDialogComponent_Conditional_8_Conditional_118_Template(rf
123
120
  i0.ɵɵrepeater(ctx_r0.linkedActions);
124
121
  } }
125
122
  function CreateSubAgentDialogComponent_Conditional_8_Conditional_119_Template(rf, ctx) { if (rf & 1) {
126
- i0.ɵɵelementStart(0, "div", 63);
127
- i0.ɵɵelement(1, "i", 64);
128
- i0.ɵɵelementStart(2, "p");
129
- i0.ɵɵtext(3, "No actions added yet. Click the button above to add actions.");
130
- i0.ɵɵelementEnd()();
123
+ i0.ɵɵelement(0, "mj-empty-state", 65);
131
124
  } }
132
125
  function CreateSubAgentDialogComponent_Conditional_8_Template(rf, ctx) { if (rf & 1) {
133
126
  const _r2 = i0.ɵɵgetCurrentView();
@@ -245,7 +238,7 @@ function CreateSubAgentDialogComponent_Conditional_8_Template(rf, ctx) { if (rf
245
238
  i0.ɵɵelement(106, "i", 60);
246
239
  i0.ɵɵtext(107, " Create New Prompt ");
247
240
  i0.ɵɵelementEnd()();
248
- i0.ɵɵconditionalCreate(108, CreateSubAgentDialogComponent_Conditional_8_Conditional_108_Template, 3, 0, "div", 62)(109, CreateSubAgentDialogComponent_Conditional_8_Conditional_109_Template, 4, 0, "div", 63);
241
+ i0.ɵɵconditionalCreate(108, CreateSubAgentDialogComponent_Conditional_8_Conditional_108_Template, 3, 0, "div", 62)(109, CreateSubAgentDialogComponent_Conditional_8_Conditional_109_Template, 1, 0, "mj-empty-state", 63);
249
242
  i0.ɵɵelementEnd();
250
243
  i0.ɵɵelementStart(110, "div", 13)(111, "h3", 14);
251
244
  i0.ɵɵelement(112, "i", 64);
@@ -256,7 +249,7 @@ function CreateSubAgentDialogComponent_Conditional_8_Template(rf, ctx) { if (rf
256
249
  i0.ɵɵelement(116, "i", 60);
257
250
  i0.ɵɵtext(117, " Add Action ");
258
251
  i0.ɵɵelementEnd()();
259
- i0.ɵɵconditionalCreate(118, CreateSubAgentDialogComponent_Conditional_8_Conditional_118_Template, 3, 0, "div", 62)(119, CreateSubAgentDialogComponent_Conditional_8_Conditional_119_Template, 4, 0, "div", 63);
252
+ i0.ɵɵconditionalCreate(118, CreateSubAgentDialogComponent_Conditional_8_Conditional_118_Template, 3, 0, "div", 62)(119, CreateSubAgentDialogComponent_Conditional_8_Conditional_119_Template, 1, 0, "mj-empty-state", 65);
260
253
  i0.ɵɵelementEnd()();
261
254
  } if (rf & 2) {
262
255
  const ctx_r0 = i0.ɵɵnextContext();
@@ -277,7 +270,7 @@ function CreateSubAgentDialogComponent_Conditional_16_Template(rf, ctx) { if (rf
277
270
  i0.ɵɵtext(1, " Creating... ");
278
271
  } }
279
272
  function CreateSubAgentDialogComponent_Conditional_18_Template(rf, ctx) { if (rf & 1) {
280
- i0.ɵɵelement(0, "i", 71);
273
+ i0.ɵɵelement(0, "i", 72);
281
274
  i0.ɵɵtext(1, " Create Sub-Agent ");
282
275
  } }
283
276
  /**
@@ -672,7 +665,7 @@ export class CreateSubAgentDialogComponent extends BaseAngularComponent {
672
665
  return this.linkedActions.length;
673
666
  }
674
667
  static { this.ɵfac = function CreateSubAgentDialogComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || CreateSubAgentDialogComponent)(i0.ɵɵdirectiveInject(i0.ChangeDetectorRef), i0.ɵɵdirectiveInject(i1.AIAgentManagementService), i0.ɵɵdirectiveInject(i0.ViewContainerRef)); }; }
675
- static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: CreateSubAgentDialogComponent, selectors: [["mj-create-sub-agent-dialog"]], outputs: { DialogClose: "DialogClose" }, standalone: false, features: [i0.ɵɵInheritDefinitionFeature], decls: 19, vars: 14, consts: [[1, "sub-agent-dialog"], [1, "sub-agent-header"], [1, "dialog-title"], [1, "fa-solid", "fa-robot"], [1, "parent-info"], [1, "loading-container"], [1, "sub-agent-form", 3, "formGroup"], [1, "dialog-actions"], ["type", "button", 1, "btn", "btn-secondary", 3, "click", "disabled"], [1, "fa-solid", "fa-times"], ["type", "button", 1, "btn", "btn-primary", 3, "click", "disabled"], [1, "fa-solid", "fa-link"], [1, "fa-solid", "fa-spinner", "fa-spin"], [1, "form-section"], [1, "section-title"], [1, "fa-solid", "fa-info-circle"], [1, "form-row"], [1, "form-group"], ["for", "name"], ["type", "text", "id", "name", "formControlName", "name", "placeholder", "Enter sub-agent name", 1, "form-control"], ["for", "typeID"], ["id", "typeID", "formControlName", "typeID", 1, "form-control"], ["value", ""], [3, "value"], ["for", "description"], ["id", "description", "formControlName", "description", "rows", "2", "placeholder", "Enter description", 1, "form-control"], ["for", "status"], ["id", "status", "formControlName", "status", 1, "form-control"], ["value", "Pending"], ["value", "Active"], ["value", "Disabled"], ["for", "executionMode"], ["id", "executionMode", "formControlName", "executionMode", 1, "form-control"], ["value", "Sequential"], ["value", "Parallel"], [1, "fa-solid", "fa-bullseye"], ["for", "purpose"], ["type", "text", "id", "purpose", "formControlName", "purpose", "placeholder", "Enter the purpose of this sub-agent", 1, "form-control"], ["for", "userMessage"], ["id", "userMessage", "formControlName", "userMessage", "rows", "3", "placeholder", "Enter user message", 1, "form-control"], [1, "fa-solid", "fa-cogs"], ["for", "modelSelectionMode"], ["id", "modelSelectionMode", "formControlName", "modelSelectionMode", 1, "form-control"], ["value", "Agent Type"], ["value", "Agent"], ["for", "temperature"], ["type", "number", "id", "temperature", "formControlName", "temperature", "min", "0", "max", "2", "step", "0.1", 1, "form-control"], ["for", "topP"], ["type", "number", "id", "topP", "formControlName", "topP", "min", "0", "max", "1", "step", "0.1", 1, "form-control"], ["for", "topK"], ["type", "number", "id", "topK", "formControlName", "topK", "min", "1", "max", "100", "step", "1", 1, "form-control"], ["for", "maxTokens"], ["type", "number", "id", "maxTokens", "formControlName", "maxTokens", "min", "1", "max", "32000", "step", "1", 1, "form-control"], ["for", "enableCaching"], ["type", "checkbox", "id", "enableCaching", "formControlName", "enableCaching"], ["for", "cacheTTL"], ["type", "number", "id", "cacheTTL", "formControlName", "cacheTTL", "min", "60", "max", "86400", "step", "60", 1, "form-control"], [1, "fa-solid", "fa-comments"], [1, "section-actions"], ["type", "button", 1, "btn", "btn-primary", "btn-sm", 3, "click"], [1, "fa-solid", "fa-plus"], ["type", "button", 1, "btn", "btn-success", "btn-sm", 3, "click"], [1, "linked-items"], [1, "empty-state"], [1, "fa-solid", "fa-bolt"], [1, "linked-item", "prompt-item"], [1, "item-info"], [1, "item-name"], [1, "item-description"], ["type", "button", 1, "btn", "btn-danger", "btn-xs", 3, "click"], [1, "linked-item", "action-item"], [1, "fa-solid", "fa-save"]], template: function CreateSubAgentDialogComponent_Template(rf, ctx) { if (rf & 1) {
668
+ static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: CreateSubAgentDialogComponent, selectors: [["mj-create-sub-agent-dialog"]], outputs: { DialogClose: "DialogClose" }, standalone: false, features: [i0.ɵɵInheritDefinitionFeature], decls: 19, vars: 14, consts: [[1, "sub-agent-dialog"], [1, "sub-agent-header"], [1, "dialog-title"], [1, "fa-solid", "fa-robot"], [1, "parent-info"], [1, "loading-container"], [1, "sub-agent-form", 3, "formGroup"], [1, "dialog-actions"], ["type", "button", 1, "btn", "btn-secondary", 3, "click", "disabled"], [1, "fa-solid", "fa-times"], ["type", "button", 1, "btn", "btn-primary", 3, "click", "disabled"], [1, "fa-solid", "fa-link"], [1, "fa-solid", "fa-spinner", "fa-spin"], [1, "form-section"], [1, "section-title"], [1, "fa-solid", "fa-info-circle"], [1, "form-row"], [1, "form-group"], ["for", "name"], ["type", "text", "id", "name", "formControlName", "name", "placeholder", "Enter sub-agent name", 1, "form-control"], ["for", "typeID"], ["id", "typeID", "formControlName", "typeID", 1, "form-control"], ["value", ""], [3, "value"], ["for", "description"], ["id", "description", "formControlName", "description", "rows", "2", "placeholder", "Enter description", 1, "form-control"], ["for", "status"], ["id", "status", "formControlName", "status", 1, "form-control"], ["value", "Pending"], ["value", "Active"], ["value", "Disabled"], ["for", "executionMode"], ["id", "executionMode", "formControlName", "executionMode", 1, "form-control"], ["value", "Sequential"], ["value", "Parallel"], [1, "fa-solid", "fa-bullseye"], ["for", "purpose"], ["type", "text", "id", "purpose", "formControlName", "purpose", "placeholder", "Enter the purpose of this sub-agent", 1, "form-control"], ["for", "userMessage"], ["id", "userMessage", "formControlName", "userMessage", "rows", "3", "placeholder", "Enter user message", 1, "form-control"], [1, "fa-solid", "fa-cogs"], ["for", "modelSelectionMode"], ["id", "modelSelectionMode", "formControlName", "modelSelectionMode", 1, "form-control"], ["value", "Agent Type"], ["value", "Agent"], ["for", "temperature"], ["type", "number", "id", "temperature", "formControlName", "temperature", "min", "0", "max", "2", "step", "0.1", 1, "form-control"], ["for", "topP"], ["type", "number", "id", "topP", "formControlName", "topP", "min", "0", "max", "1", "step", "0.1", 1, "form-control"], ["for", "topK"], ["type", "number", "id", "topK", "formControlName", "topK", "min", "1", "max", "100", "step", "1", 1, "form-control"], ["for", "maxTokens"], ["type", "number", "id", "maxTokens", "formControlName", "maxTokens", "min", "1", "max", "32000", "step", "1", 1, "form-control"], ["for", "enableCaching"], ["type", "checkbox", "id", "enableCaching", "formControlName", "enableCaching"], ["for", "cacheTTL"], ["type", "number", "id", "cacheTTL", "formControlName", "cacheTTL", "min", "60", "max", "86400", "step", "60", 1, "form-control"], [1, "fa-solid", "fa-comments"], [1, "section-actions"], ["type", "button", 1, "btn", "btn-primary", "btn-sm", 3, "click"], [1, "fa-solid", "fa-plus"], ["type", "button", 1, "btn", "btn-success", "btn-sm", 3, "click"], [1, "linked-items"], ["Icon", "fa-solid fa-comments", "Title", "No prompts added yet. Click the buttons above to add prompts.", "Size", "compact"], [1, "fa-solid", "fa-bolt"], ["Icon", "fa-solid fa-bolt", "Title", "No actions added yet. Click the button above to add actions.", "Size", "compact"], [1, "linked-item", "prompt-item"], [1, "item-info"], [1, "item-name"], [1, "item-description"], ["type", "button", 1, "btn", "btn-danger", "btn-xs", 3, "click"], [1, "linked-item", "action-item"], [1, "fa-solid", "fa-save"]], template: function CreateSubAgentDialogComponent_Template(rf, ctx) { if (rf & 1) {
676
669
  i0.ɵɵelementStart(0, "div", 0)(1, "div", 1)(2, "h2", 2);
677
670
  i0.ɵɵelement(3, "i", 3);
678
671
  i0.ɵɵtext(4);
@@ -708,11 +701,11 @@ export class CreateSubAgentDialogComponent extends BaseAngularComponent {
708
701
  i0.ɵɵproperty("disabled", i0.ɵɵpipeBind1(15, 10, ctx.isSaving$) || !ctx.subAgentForm.valid);
709
702
  i0.ɵɵadvance(2);
710
703
  i0.ɵɵconditional(i0.ɵɵpipeBind1(17, 12, ctx.isSaving$) ? 16 : 18);
711
- } }, dependencies: [i2.ɵNgNoValidate, i2.NgSelectOption, i2.ɵNgSelectMultipleOption, i2.DefaultValueAccessor, i2.NumberValueAccessor, i2.CheckboxControlValueAccessor, i2.SelectControlValueAccessor, i2.NgControlStatus, i2.NgControlStatusGroup, i2.MinValidator, i2.MaxValidator, i2.FormGroupDirective, i2.FormControlName, i3.AsyncPipe], styles: [".sub-agent-dialog[_ngcontent-%COMP%] {\n padding: 16px;\n max-width: 100%;\n max-height: 90vh;\n overflow-y: auto;\n}\n\n.sub-agent-header[_ngcontent-%COMP%] {\n margin-bottom: 20px;\n border-bottom: 1px solid var(--mj-border-default);\n padding-bottom: 15px;\n}\n\n.dialog-title[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 1.4em;\n font-weight: 600;\n color: var(--mj-text-primary);\n display: flex;\n align-items: center;\n gap: 10px;\n}\n\n.dialog-title[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n}\n\n.parent-info[_ngcontent-%COMP%] {\n margin: 8px 0 0 0;\n color: var(--mj-text-secondary);\n font-size: 0.9em;\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.parent-info[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-status-success);\n}\n\n.loading-container[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 10px;\n padding: 40px;\n color: var(--mj-text-secondary);\n}\n\n.loading-container[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 1.2em;\n color: var(--mj-brand-primary);\n}\n\n.sub-agent-form[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 25px;\n}\n\n.form-section[_ngcontent-%COMP%] {\n border: 1px solid var(--mj-bg-surface-sunken);\n border-radius: 8px;\n padding: 20px;\n background-color: var(--mj-bg-surface-card);\n}\n\n.section-title[_ngcontent-%COMP%] {\n margin: 0 0 15px 0;\n font-size: 1.1em;\n font-weight: 600;\n color: var(--mj-text-secondary);\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.section-title[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n}\n\n.form-row[_ngcontent-%COMP%] {\n display: flex;\n gap: 15px;\n margin-bottom: 15px;\n}\n\n.form-row[_ngcontent-%COMP%]:last-child {\n margin-bottom: 0;\n}\n\n.form-group[_ngcontent-%COMP%] {\n flex: 1;\n display: flex;\n flex-direction: column;\n}\n\n.form-group[_ngcontent-%COMP%] label[_ngcontent-%COMP%] {\n font-weight: 500;\n color: var(--mj-text-secondary);\n margin-bottom: 5px;\n font-size: 0.9em;\n}\n\n.form-group[_ngcontent-%COMP%] label[for=\"enableCaching\"][_ngcontent-%COMP%] {\n flex-direction: row;\n align-items: center;\n gap: 8px;\n}\n\n.form-group[_ngcontent-%COMP%] label[for=\"enableCaching\"][_ngcontent-%COMP%] input[_ngcontent-%COMP%] {\n margin: 0;\n width: auto;\n}\n\n.form-control[_ngcontent-%COMP%] {\n padding: 8px 12px;\n border: 1px solid var(--mj-border-strong);\n border-radius: 4px;\n font-size: 0.9em;\n transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n}\n\n.form-control[_ngcontent-%COMP%]:focus {\n outline: none;\n border-color: var(--mj-brand-primary);\n box-shadow: 0 0 0 0.2rem color-mix(in srgb, var(--mj-brand-primary) 25%, transparent);\n}\n\n.form-control[readonly][_ngcontent-%COMP%] {\n background-color: var(--mj-bg-surface-sunken);\n opacity: 1;\n}\n\n.section-actions[_ngcontent-%COMP%] {\n display: flex;\n gap: 10px;\n margin-bottom: 15px;\n}\n\n.linked-items[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 10px;\n}\n\n.linked-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 12px;\n background-color: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n transition: box-shadow 0.15s ease-in-out;\n}\n\n.linked-item[_ngcontent-%COMP%]:hover {\n box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);\n}\n\n.item-info[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 10px;\n flex: 1;\n}\n\n.item-info[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n width: 16px;\n text-align: center;\n}\n\n.item-name[_ngcontent-%COMP%] {\n font-weight: 500;\n color: var(--mj-text-primary);\n}\n\n.item-description[_ngcontent-%COMP%] {\n color: var(--mj-text-secondary);\n font-size: 0.85em;\n margin-left: 10px;\n}\n\n.prompt-item[_ngcontent-%COMP%] .item-info[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-status-success);\n}\n\n.action-item[_ngcontent-%COMP%] .item-info[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-status-warning);\n}\n\n.empty-state[_ngcontent-%COMP%] {\n text-align: center;\n padding: 30px;\n color: var(--mj-text-muted);\n}\n\n.empty-state[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 2em;\n color: var(--mj-border-default);\n margin-bottom: 10px;\n}\n\n.empty-state[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 0.9em;\n}\n\n.dialog-actions[_ngcontent-%COMP%] {\n display: flex;\n justify-content: flex-end;\n gap: 10px;\n margin-top: 30px;\n padding-top: 20px;\n border-top: 1px solid var(--mj-border-default);\n}\n\n.btn[_ngcontent-%COMP%] {\n padding: 8px 16px;\n border: none;\n border-radius: 4px;\n font-size: 0.9em;\n font-weight: 500;\n cursor: pointer;\n transition: background-color 0.15s ease-in-out;\n display: flex;\n align-items: center;\n gap: 6px;\n}\n\n.btn[_ngcontent-%COMP%]:disabled {\n opacity: 0.6;\n cursor: not-allowed;\n}\n\n.btn-primary[_ngcontent-%COMP%] {\n background-color: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n}\n\n.btn-primary[_ngcontent-%COMP%]:hover:not(:disabled) {\n background-color: var(--mj-brand-primary-hover);\n}\n\n.btn-secondary[_ngcontent-%COMP%] {\n background-color: var(--mj-text-muted);\n color: var(--mj-text-inverse);\n}\n\n.btn-secondary[_ngcontent-%COMP%]:hover:not(:disabled) {\n background-color: var(--mj-text-secondary);\n}\n\n.btn-success[_ngcontent-%COMP%] {\n background-color: var(--mj-status-success);\n color: var(--mj-text-inverse);\n}\n\n.btn-success[_ngcontent-%COMP%]:hover:not(:disabled) {\n background-color: var(--mj-status-success);\n}\n\n.btn-danger[_ngcontent-%COMP%] {\n background-color: var(--mj-status-error);\n color: var(--mj-text-inverse);\n}\n\n.btn-danger[_ngcontent-%COMP%]:hover:not(:disabled) {\n background-color: var(--mj-status-error);\n}\n\n.btn-sm[_ngcontent-%COMP%] {\n padding: 6px 12px;\n font-size: 0.8em;\n}\n\n.btn-xs[_ngcontent-%COMP%] {\n padding: 4px 8px;\n font-size: 0.75em;\n}\n\n\n\n@media (max-width: 768px) {\n .sub-agent-dialog[_ngcontent-%COMP%] {\n padding: 15px;\n max-width: 95vw;\n }\n\n .form-row[_ngcontent-%COMP%] {\n flex-direction: column;\n gap: 10px;\n }\n\n .section-actions[_ngcontent-%COMP%] {\n flex-direction: column;\n }\n\n .dialog-actions[_ngcontent-%COMP%] {\n flex-direction: column;\n }\n\n .linked-item[_ngcontent-%COMP%] {\n flex-direction: column;\n align-items: flex-start;\n gap: 10px;\n }\n}\n\n\n\n.form-control.ng-invalid.ng-touched[_ngcontent-%COMP%] {\n border-color: var(--mj-status-error);\n}\n\n.form-control.ng-valid.ng-touched[_ngcontent-%COMP%] {\n border-color: var(--mj-status-success);\n}\n\n\n\n.sub-agent-dialog[_ngcontent-%COMP%]::-webkit-scrollbar {\n width: 8px;\n}\n\n.sub-agent-dialog[_ngcontent-%COMP%]::-webkit-scrollbar-track {\n background: var(--mj-bg-surface-sunken);\n border-radius: 4px;\n}\n\n.sub-agent-dialog[_ngcontent-%COMP%]::-webkit-scrollbar-thumb {\n background: var(--mj-border-strong);\n border-radius: 4px;\n}\n\n.sub-agent-dialog[_ngcontent-%COMP%]::-webkit-scrollbar-thumb:hover {\n background: var(--mj-text-disabled);\n}\n\n\n\n[_nghost-%COMP%] .k-dialog, \n[_nghost-%COMP%] .k-window {\n z-index: 10000 !important;\n}\n\n[_nghost-%COMP%] .k-overlay {\n z-index: 9999 !important;\n}"] }); }
704
+ } }, dependencies: [i2.ɵNgNoValidate, i2.NgSelectOption, i2.ɵNgSelectMultipleOption, i2.DefaultValueAccessor, i2.NumberValueAccessor, i2.CheckboxControlValueAccessor, i2.SelectControlValueAccessor, i2.NgControlStatus, i2.NgControlStatusGroup, i2.MinValidator, i2.MaxValidator, i2.FormGroupDirective, i2.FormControlName, i3.MJEmptyStateComponent, i4.AsyncPipe], styles: [".sub-agent-dialog[_ngcontent-%COMP%] {\n padding: 16px;\n max-width: 100%;\n max-height: 90vh;\n overflow-y: auto;\n}\n\n.sub-agent-header[_ngcontent-%COMP%] {\n margin-bottom: 20px;\n border-bottom: 1px solid var(--mj-border-default);\n padding-bottom: 15px;\n}\n\n.dialog-title[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 1.4em;\n font-weight: 600;\n color: var(--mj-text-primary);\n display: flex;\n align-items: center;\n gap: 10px;\n}\n\n.dialog-title[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n}\n\n.parent-info[_ngcontent-%COMP%] {\n margin: 8px 0 0 0;\n color: var(--mj-text-secondary);\n font-size: 0.9em;\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.parent-info[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-status-success);\n}\n\n.loading-container[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 10px;\n padding: 40px;\n color: var(--mj-text-secondary);\n}\n\n.loading-container[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 1.2em;\n color: var(--mj-brand-primary);\n}\n\n.sub-agent-form[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 25px;\n}\n\n.form-section[_ngcontent-%COMP%] {\n border: 1px solid var(--mj-bg-surface-sunken);\n border-radius: 8px;\n padding: 20px;\n background-color: var(--mj-bg-surface-card);\n}\n\n.section-title[_ngcontent-%COMP%] {\n margin: 0 0 15px 0;\n font-size: 1.1em;\n font-weight: 600;\n color: var(--mj-text-secondary);\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.section-title[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n}\n\n.form-row[_ngcontent-%COMP%] {\n display: flex;\n gap: 15px;\n margin-bottom: 15px;\n}\n\n.form-row[_ngcontent-%COMP%]:last-child {\n margin-bottom: 0;\n}\n\n.form-group[_ngcontent-%COMP%] {\n flex: 1;\n display: flex;\n flex-direction: column;\n}\n\n.form-group[_ngcontent-%COMP%] label[_ngcontent-%COMP%] {\n font-weight: 500;\n color: var(--mj-text-secondary);\n margin-bottom: 5px;\n font-size: 0.9em;\n}\n\n.form-group[_ngcontent-%COMP%] label[for=\"enableCaching\"][_ngcontent-%COMP%] {\n flex-direction: row;\n align-items: center;\n gap: 8px;\n}\n\n.form-group[_ngcontent-%COMP%] label[for=\"enableCaching\"][_ngcontent-%COMP%] input[_ngcontent-%COMP%] {\n margin: 0;\n width: auto;\n}\n\n.form-control[_ngcontent-%COMP%] {\n padding: 8px 12px;\n border: 1px solid var(--mj-border-strong);\n border-radius: 4px;\n font-size: 0.9em;\n transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n}\n\n.form-control[_ngcontent-%COMP%]:focus {\n outline: none;\n border-color: var(--mj-brand-primary);\n box-shadow: 0 0 0 0.2rem color-mix(in srgb, var(--mj-brand-primary) 25%, transparent);\n}\n\n.form-control[readonly][_ngcontent-%COMP%] {\n background-color: var(--mj-bg-surface-sunken);\n opacity: 1;\n}\n\n.section-actions[_ngcontent-%COMP%] {\n display: flex;\n gap: 10px;\n margin-bottom: 15px;\n}\n\n.linked-items[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 10px;\n}\n\n.linked-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 12px;\n background-color: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n transition: box-shadow 0.15s ease-in-out;\n}\n\n.linked-item[_ngcontent-%COMP%]:hover {\n box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);\n}\n\n.item-info[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 10px;\n flex: 1;\n}\n\n.item-info[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n width: 16px;\n text-align: center;\n}\n\n.item-name[_ngcontent-%COMP%] {\n font-weight: 500;\n color: var(--mj-text-primary);\n}\n\n.item-description[_ngcontent-%COMP%] {\n color: var(--mj-text-secondary);\n font-size: 0.85em;\n margin-left: 10px;\n}\n\n.prompt-item[_ngcontent-%COMP%] .item-info[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-status-success);\n}\n\n.action-item[_ngcontent-%COMP%] .item-info[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-status-warning);\n}\n\n.dialog-actions[_ngcontent-%COMP%] {\n display: flex;\n justify-content: flex-end;\n gap: 10px;\n margin-top: 30px;\n padding-top: 20px;\n border-top: 1px solid var(--mj-border-default);\n}\n\n.btn[_ngcontent-%COMP%] {\n padding: 8px 16px;\n border: none;\n border-radius: 4px;\n font-size: 0.9em;\n font-weight: 500;\n cursor: pointer;\n transition: background-color 0.15s ease-in-out;\n display: flex;\n align-items: center;\n gap: 6px;\n}\n\n.btn[_ngcontent-%COMP%]:disabled {\n opacity: 0.6;\n cursor: not-allowed;\n}\n\n.btn-primary[_ngcontent-%COMP%] {\n background-color: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n}\n\n.btn-primary[_ngcontent-%COMP%]:hover:not(:disabled) {\n background-color: var(--mj-brand-primary-hover);\n}\n\n.btn-secondary[_ngcontent-%COMP%] {\n background-color: var(--mj-text-muted);\n color: var(--mj-text-inverse);\n}\n\n.btn-secondary[_ngcontent-%COMP%]:hover:not(:disabled) {\n background-color: var(--mj-text-secondary);\n}\n\n.btn-success[_ngcontent-%COMP%] {\n background-color: var(--mj-status-success);\n color: var(--mj-text-inverse);\n}\n\n.btn-success[_ngcontent-%COMP%]:hover:not(:disabled) {\n background-color: var(--mj-status-success);\n}\n\n.btn-danger[_ngcontent-%COMP%] {\n background-color: var(--mj-status-error);\n color: var(--mj-text-inverse);\n}\n\n.btn-danger[_ngcontent-%COMP%]:hover:not(:disabled) {\n background-color: var(--mj-status-error);\n}\n\n.btn-sm[_ngcontent-%COMP%] {\n padding: 6px 12px;\n font-size: 0.8em;\n}\n\n.btn-xs[_ngcontent-%COMP%] {\n padding: 4px 8px;\n font-size: 0.75em;\n}\n\n\n\n@media (max-width: 768px) {\n .sub-agent-dialog[_ngcontent-%COMP%] {\n padding: 15px;\n max-width: 95vw;\n }\n\n .form-row[_ngcontent-%COMP%] {\n flex-direction: column;\n gap: 10px;\n }\n\n .section-actions[_ngcontent-%COMP%] {\n flex-direction: column;\n }\n\n .dialog-actions[_ngcontent-%COMP%] {\n flex-direction: column;\n }\n\n .linked-item[_ngcontent-%COMP%] {\n flex-direction: column;\n align-items: flex-start;\n gap: 10px;\n }\n}\n\n\n\n.form-control.ng-invalid.ng-touched[_ngcontent-%COMP%] {\n border-color: var(--mj-status-error);\n}\n\n.form-control.ng-valid.ng-touched[_ngcontent-%COMP%] {\n border-color: var(--mj-status-success);\n}\n\n\n\n.sub-agent-dialog[_ngcontent-%COMP%]::-webkit-scrollbar {\n width: 8px;\n}\n\n.sub-agent-dialog[_ngcontent-%COMP%]::-webkit-scrollbar-track {\n background: var(--mj-bg-surface-sunken);\n border-radius: 4px;\n}\n\n.sub-agent-dialog[_ngcontent-%COMP%]::-webkit-scrollbar-thumb {\n background: var(--mj-border-strong);\n border-radius: 4px;\n}\n\n.sub-agent-dialog[_ngcontent-%COMP%]::-webkit-scrollbar-thumb:hover {\n background: var(--mj-text-disabled);\n}\n\n\n\n[_nghost-%COMP%] .k-dialog, \n[_nghost-%COMP%] .k-window {\n z-index: 10000 !important;\n}\n\n[_nghost-%COMP%] .k-overlay {\n z-index: 9999 !important;\n}"] }); }
712
705
  }
713
706
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(CreateSubAgentDialogComponent, [{
714
707
  type: Component,
715
- args: [{ standalone: false, selector: 'mj-create-sub-agent-dialog', template: "<div class=\"sub-agent-dialog\">\n <div class=\"sub-agent-header\">\n <h2 class=\"dialog-title\">\n <i class=\"fa-solid fa-robot\"></i>\n {{ config.title || 'Create New Sub-Agent' }}\n </h2>\n @if (config.parentAgentName) {\n <p class=\"parent-info\">\n <i class=\"fa-solid fa-link\"></i>\n Sub-agent of: <strong>{{ config.parentAgentName }}</strong>\n </p>\n }\n </div>\n\n @if (isLoading$ | async) {\n <div class=\"loading-container\">\n <i class=\"fa-solid fa-spinner fa-spin\"></i>\n <span>Loading sub-agent creation form...</span>\n </div>\n } @else {\n <form [formGroup]=\"subAgentForm\" class=\"sub-agent-form\">\n <!-- Basic Information Section -->\n <div class=\"form-section\">\n <h3 class=\"section-title\">\n <i class=\"fa-solid fa-info-circle\"></i>\n Basic Information\n </h3>\n \n <div class=\"form-row\">\n <div class=\"form-group\">\n <label for=\"name\">Name *</label>\n <input type=\"text\" id=\"name\" formControlName=\"name\" class=\"form-control\" placeholder=\"Enter sub-agent name\">\n </div>\n \n <div class=\"form-group\">\n <label for=\"typeID\">Type *</label>\n <select id=\"typeID\" formControlName=\"typeID\" class=\"form-control\">\n <option value=\"\">Select agent type...</option>\n @for (type of availableAgentTypes$ | async; track type.ID) {\n <option [value]=\"type.ID\">{{ type.Name }}</option>\n }\n </select>\n </div>\n </div>\n\n <div class=\"form-row\">\n <div class=\"form-group\">\n <label for=\"description\">Description</label>\n <textarea id=\"description\" formControlName=\"description\" class=\"form-control\" rows=\"2\" placeholder=\"Enter description\"></textarea>\n </div>\n </div>\n\n <div class=\"form-row\">\n <div class=\"form-group\">\n <label for=\"status\">Status</label>\n <select id=\"status\" formControlName=\"status\" class=\"form-control\">\n <option value=\"Pending\">Pending</option>\n <option value=\"Active\">Active</option>\n <option value=\"Disabled\">Disabled</option>\n </select>\n </div>\n \n <div class=\"form-group\">\n <label for=\"executionMode\">Execution Mode</label>\n <select id=\"executionMode\" formControlName=\"executionMode\" class=\"form-control\">\n <option value=\"Sequential\">Sequential</option>\n <option value=\"Parallel\">Parallel</option>\n </select>\n </div>\n </div>\n </div>\n\n <!-- Purpose & Messages Section -->\n <div class=\"form-section\">\n <h3 class=\"section-title\">\n <i class=\"fa-solid fa-bullseye\"></i>\n Purpose & Messages\n </h3>\n \n <div class=\"form-row\">\n <div class=\"form-group\">\n <label for=\"purpose\">Purpose</label>\n <input type=\"text\" id=\"purpose\" formControlName=\"purpose\" class=\"form-control\" placeholder=\"Enter the purpose of this sub-agent\">\n </div>\n </div>\n\n <div class=\"form-row\">\n <div class=\"form-group\">\n <label for=\"userMessage\">User Message</label>\n <textarea id=\"userMessage\" formControlName=\"userMessage\" class=\"form-control\" rows=\"3\" placeholder=\"Enter user message\"></textarea>\n </div>\n </div>\n\n <!-- System Message field removed - property does not exist on MJAIAgentEntity -->\n </div>\n\n <!-- Model Configuration Section -->\n <div class=\"form-section\">\n <h3 class=\"section-title\">\n <i class=\"fa-solid fa-cogs\"></i>\n Model Configuration\n </h3>\n \n <div class=\"form-row\">\n <div class=\"form-group\">\n <label for=\"modelSelectionMode\">Model Selection Mode</label>\n <select id=\"modelSelectionMode\" formControlName=\"modelSelectionMode\" class=\"form-control\">\n <option value=\"Agent Type\">Agent Type</option>\n <option value=\"Agent\">Agent</option>\n </select>\n </div>\n </div>\n\n <div class=\"form-row\">\n <div class=\"form-group\">\n <label for=\"temperature\">Temperature</label>\n <input type=\"number\" id=\"temperature\" formControlName=\"temperature\" class=\"form-control\" min=\"0\" max=\"2\" step=\"0.1\">\n </div>\n \n <div class=\"form-group\">\n <label for=\"topP\">Top P</label>\n <input type=\"number\" id=\"topP\" formControlName=\"topP\" class=\"form-control\" min=\"0\" max=\"1\" step=\"0.1\">\n </div>\n </div>\n\n <div class=\"form-row\">\n <div class=\"form-group\">\n <label for=\"topK\">Top K</label>\n <input type=\"number\" id=\"topK\" formControlName=\"topK\" class=\"form-control\" min=\"1\" max=\"100\" step=\"1\">\n </div>\n \n <div class=\"form-group\">\n <label for=\"maxTokens\">Max Tokens</label>\n <input type=\"number\" id=\"maxTokens\" formControlName=\"maxTokens\" class=\"form-control\" min=\"1\" max=\"32000\" step=\"1\">\n </div>\n </div>\n\n <div class=\"form-row\">\n <div class=\"form-group\">\n <label for=\"enableCaching\">\n <input type=\"checkbox\" id=\"enableCaching\" formControlName=\"enableCaching\">\n Enable Caching\n </label>\n </div>\n \n <div class=\"form-group\">\n <label for=\"cacheTTL\">Cache TTL (seconds)</label>\n <input type=\"number\" id=\"cacheTTL\" formControlName=\"cacheTTL\" class=\"form-control\" min=\"60\" max=\"86400\" step=\"60\">\n </div>\n </div>\n </div>\n\n <!-- Prompts Section -->\n <div class=\"form-section\">\n <h3 class=\"section-title\">\n <i class=\"fa-solid fa-comments\"></i>\n Prompts ({{ linkedPromptCount }})\n </h3>\n \n <div class=\"section-actions\">\n <button type=\"button\" class=\"btn btn-primary btn-sm\" (click)=\"addPrompt()\">\n <i class=\"fa-solid fa-plus\"></i>\n Add Existing Prompt\n </button>\n <button type=\"button\" class=\"btn btn-success btn-sm\" (click)=\"createNewPrompt()\">\n <i class=\"fa-solid fa-plus\"></i>\n Create New Prompt\n </button>\n </div>\n\n @if (linkedPrompts.length > 0) {\n <div class=\"linked-items\">\n @for (prompt of linkedPrompts; track prompt.ID) {\n <div class=\"linked-item prompt-item\">\n <div class=\"item-info\">\n <i class=\"fa-solid fa-comments\"></i>\n <span class=\"item-name\">{{ prompt.Name }}</span>\n @if (prompt.Description) {\n <span class=\"item-description\">{{ prompt.Description }}</span>\n }\n </div>\n <button type=\"button\" class=\"btn btn-danger btn-xs\" (click)=\"removePrompt(prompt)\">\n <i class=\"fa-solid fa-times\"></i>\n </button>\n </div>\n }\n </div>\n } @else {\n <div class=\"empty-state\">\n <i class=\"fa-solid fa-comments\"></i>\n <p>No prompts added yet. Click the buttons above to add prompts.</p>\n </div>\n }\n </div>\n\n <!-- Actions Section -->\n <div class=\"form-section\">\n <h3 class=\"section-title\">\n <i class=\"fa-solid fa-bolt\"></i>\n Actions ({{ linkedActionCount }})\n </h3>\n \n <div class=\"section-actions\">\n <button type=\"button\" class=\"btn btn-primary btn-sm\" (click)=\"addAction()\">\n <i class=\"fa-solid fa-plus\"></i>\n Add Action\n </button>\n </div>\n\n @if (linkedActions.length > 0) {\n <div class=\"linked-items\">\n @for (action of linkedActions; track action.ID) {\n <div class=\"linked-item action-item\">\n <div class=\"item-info\">\n <i class=\"fa-solid fa-bolt\"></i>\n <span class=\"item-name\">{{ action.Name }}</span>\n @if (action.Description) {\n <span class=\"item-description\">{{ action.Description }}</span>\n }\n </div>\n <button type=\"button\" class=\"btn btn-danger btn-xs\" (click)=\"removeAction(action)\">\n <i class=\"fa-solid fa-times\"></i>\n </button>\n </div>\n }\n </div>\n } @else {\n <div class=\"empty-state\">\n <i class=\"fa-solid fa-bolt\"></i>\n <p>No actions added yet. Click the button above to add actions.</p>\n </div>\n }\n </div>\n </form>\n }\n\n <!-- Dialog Actions -->\n <div class=\"dialog-actions\">\n <button type=\"button\" class=\"btn btn-secondary\" (click)=\"cancel()\" [disabled]=\"isSaving$ | async\">\n <i class=\"fa-solid fa-times\"></i>\n Cancel\n </button>\n <button type=\"button\" class=\"btn btn-primary\" (click)=\"save()\" [disabled]=\"(isSaving$ | async) || !subAgentForm.valid\">\n @if (isSaving$ | async) {\n <i class=\"fa-solid fa-spinner fa-spin\"></i>\n Creating...\n } @else {\n <i class=\"fa-solid fa-save\"></i>\n Create Sub-Agent\n }\n </button>\n </div>\n</div>", styles: [".sub-agent-dialog {\n padding: 16px;\n max-width: 100%;\n max-height: 90vh;\n overflow-y: auto;\n}\n\n.sub-agent-header {\n margin-bottom: 20px;\n border-bottom: 1px solid var(--mj-border-default);\n padding-bottom: 15px;\n}\n\n.dialog-title {\n margin: 0;\n font-size: 1.4em;\n font-weight: 600;\n color: var(--mj-text-primary);\n display: flex;\n align-items: center;\n gap: 10px;\n}\n\n.dialog-title i {\n color: var(--mj-brand-primary);\n}\n\n.parent-info {\n margin: 8px 0 0 0;\n color: var(--mj-text-secondary);\n font-size: 0.9em;\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.parent-info i {\n color: var(--mj-status-success);\n}\n\n.loading-container {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 10px;\n padding: 40px;\n color: var(--mj-text-secondary);\n}\n\n.loading-container i {\n font-size: 1.2em;\n color: var(--mj-brand-primary);\n}\n\n.sub-agent-form {\n display: flex;\n flex-direction: column;\n gap: 25px;\n}\n\n.form-section {\n border: 1px solid var(--mj-bg-surface-sunken);\n border-radius: 8px;\n padding: 20px;\n background-color: var(--mj-bg-surface-card);\n}\n\n.section-title {\n margin: 0 0 15px 0;\n font-size: 1.1em;\n font-weight: 600;\n color: var(--mj-text-secondary);\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.section-title i {\n color: var(--mj-brand-primary);\n}\n\n.form-row {\n display: flex;\n gap: 15px;\n margin-bottom: 15px;\n}\n\n.form-row:last-child {\n margin-bottom: 0;\n}\n\n.form-group {\n flex: 1;\n display: flex;\n flex-direction: column;\n}\n\n.form-group label {\n font-weight: 500;\n color: var(--mj-text-secondary);\n margin-bottom: 5px;\n font-size: 0.9em;\n}\n\n.form-group label[for=\"enableCaching\"] {\n flex-direction: row;\n align-items: center;\n gap: 8px;\n}\n\n.form-group label[for=\"enableCaching\"] input {\n margin: 0;\n width: auto;\n}\n\n.form-control {\n padding: 8px 12px;\n border: 1px solid var(--mj-border-strong);\n border-radius: 4px;\n font-size: 0.9em;\n transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n}\n\n.form-control:focus {\n outline: none;\n border-color: var(--mj-brand-primary);\n box-shadow: 0 0 0 0.2rem color-mix(in srgb, var(--mj-brand-primary) 25%, transparent);\n}\n\n.form-control[readonly] {\n background-color: var(--mj-bg-surface-sunken);\n opacity: 1;\n}\n\n.section-actions {\n display: flex;\n gap: 10px;\n margin-bottom: 15px;\n}\n\n.linked-items {\n display: flex;\n flex-direction: column;\n gap: 10px;\n}\n\n.linked-item {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 12px;\n background-color: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n transition: box-shadow 0.15s ease-in-out;\n}\n\n.linked-item:hover {\n box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);\n}\n\n.item-info {\n display: flex;\n align-items: center;\n gap: 10px;\n flex: 1;\n}\n\n.item-info i {\n color: var(--mj-brand-primary);\n width: 16px;\n text-align: center;\n}\n\n.item-name {\n font-weight: 500;\n color: var(--mj-text-primary);\n}\n\n.item-description {\n color: var(--mj-text-secondary);\n font-size: 0.85em;\n margin-left: 10px;\n}\n\n.prompt-item .item-info i {\n color: var(--mj-status-success);\n}\n\n.action-item .item-info i {\n color: var(--mj-status-warning);\n}\n\n.empty-state {\n text-align: center;\n padding: 30px;\n color: var(--mj-text-muted);\n}\n\n.empty-state i {\n font-size: 2em;\n color: var(--mj-border-default);\n margin-bottom: 10px;\n}\n\n.empty-state p {\n margin: 0;\n font-size: 0.9em;\n}\n\n.dialog-actions {\n display: flex;\n justify-content: flex-end;\n gap: 10px;\n margin-top: 30px;\n padding-top: 20px;\n border-top: 1px solid var(--mj-border-default);\n}\n\n.btn {\n padding: 8px 16px;\n border: none;\n border-radius: 4px;\n font-size: 0.9em;\n font-weight: 500;\n cursor: pointer;\n transition: background-color 0.15s ease-in-out;\n display: flex;\n align-items: center;\n gap: 6px;\n}\n\n.btn:disabled {\n opacity: 0.6;\n cursor: not-allowed;\n}\n\n.btn-primary {\n background-color: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n}\n\n.btn-primary:hover:not(:disabled) {\n background-color: var(--mj-brand-primary-hover);\n}\n\n.btn-secondary {\n background-color: var(--mj-text-muted);\n color: var(--mj-text-inverse);\n}\n\n.btn-secondary:hover:not(:disabled) {\n background-color: var(--mj-text-secondary);\n}\n\n.btn-success {\n background-color: var(--mj-status-success);\n color: var(--mj-text-inverse);\n}\n\n.btn-success:hover:not(:disabled) {\n background-color: var(--mj-status-success);\n}\n\n.btn-danger {\n background-color: var(--mj-status-error);\n color: var(--mj-text-inverse);\n}\n\n.btn-danger:hover:not(:disabled) {\n background-color: var(--mj-status-error);\n}\n\n.btn-sm {\n padding: 6px 12px;\n font-size: 0.8em;\n}\n\n.btn-xs {\n padding: 4px 8px;\n font-size: 0.75em;\n}\n\n/* Responsive adjustments */\n@media (max-width: 768px) {\n .sub-agent-dialog {\n padding: 15px;\n max-width: 95vw;\n }\n\n .form-row {\n flex-direction: column;\n gap: 10px;\n }\n\n .section-actions {\n flex-direction: column;\n }\n\n .dialog-actions {\n flex-direction: column;\n }\n\n .linked-item {\n flex-direction: column;\n align-items: flex-start;\n gap: 10px;\n }\n}\n\n/* Validation styles */\n.form-control.ng-invalid.ng-touched {\n border-color: var(--mj-status-error);\n}\n\n.form-control.ng-valid.ng-touched {\n border-color: var(--mj-status-success);\n}\n\n/* Custom scrollbar for dialog */\n.sub-agent-dialog::-webkit-scrollbar {\n width: 8px;\n}\n\n.sub-agent-dialog::-webkit-scrollbar-track {\n background: var(--mj-bg-surface-sunken);\n border-radius: 4px;\n}\n\n.sub-agent-dialog::-webkit-scrollbar-thumb {\n background: var(--mj-border-strong);\n border-radius: 4px;\n}\n\n.sub-agent-dialog::-webkit-scrollbar-thumb:hover {\n background: var(--mj-text-disabled);\n}\n\n/* Ensure dialog appears above banner and other elements */\n:host ::ng-deep .k-dialog,\n:host ::ng-deep .k-window {\n z-index: 10000 !important;\n}\n\n:host ::ng-deep .k-overlay {\n z-index: 9999 !important;\n}\n"] }]
708
+ args: [{ standalone: false, selector: 'mj-create-sub-agent-dialog', template: "<div class=\"sub-agent-dialog\">\n <div class=\"sub-agent-header\">\n <h2 class=\"dialog-title\">\n <i class=\"fa-solid fa-robot\"></i>\n {{ config.title || 'Create New Sub-Agent' }}\n </h2>\n @if (config.parentAgentName) {\n <p class=\"parent-info\">\n <i class=\"fa-solid fa-link\"></i>\n Sub-agent of: <strong>{{ config.parentAgentName }}</strong>\n </p>\n }\n </div>\n\n @if (isLoading$ | async) {\n <div class=\"loading-container\">\n <i class=\"fa-solid fa-spinner fa-spin\"></i>\n <span>Loading sub-agent creation form...</span>\n </div>\n } @else {\n <form [formGroup]=\"subAgentForm\" class=\"sub-agent-form\">\n <!-- Basic Information Section -->\n <div class=\"form-section\">\n <h3 class=\"section-title\">\n <i class=\"fa-solid fa-info-circle\"></i>\n Basic Information\n </h3>\n \n <div class=\"form-row\">\n <div class=\"form-group\">\n <label for=\"name\">Name *</label>\n <input type=\"text\" id=\"name\" formControlName=\"name\" class=\"form-control\" placeholder=\"Enter sub-agent name\">\n </div>\n \n <div class=\"form-group\">\n <label for=\"typeID\">Type *</label>\n <select id=\"typeID\" formControlName=\"typeID\" class=\"form-control\">\n <option value=\"\">Select agent type...</option>\n @for (type of availableAgentTypes$ | async; track type.ID) {\n <option [value]=\"type.ID\">{{ type.Name }}</option>\n }\n </select>\n </div>\n </div>\n\n <div class=\"form-row\">\n <div class=\"form-group\">\n <label for=\"description\">Description</label>\n <textarea id=\"description\" formControlName=\"description\" class=\"form-control\" rows=\"2\" placeholder=\"Enter description\"></textarea>\n </div>\n </div>\n\n <div class=\"form-row\">\n <div class=\"form-group\">\n <label for=\"status\">Status</label>\n <select id=\"status\" formControlName=\"status\" class=\"form-control\">\n <option value=\"Pending\">Pending</option>\n <option value=\"Active\">Active</option>\n <option value=\"Disabled\">Disabled</option>\n </select>\n </div>\n \n <div class=\"form-group\">\n <label for=\"executionMode\">Execution Mode</label>\n <select id=\"executionMode\" formControlName=\"executionMode\" class=\"form-control\">\n <option value=\"Sequential\">Sequential</option>\n <option value=\"Parallel\">Parallel</option>\n </select>\n </div>\n </div>\n </div>\n\n <!-- Purpose & Messages Section -->\n <div class=\"form-section\">\n <h3 class=\"section-title\">\n <i class=\"fa-solid fa-bullseye\"></i>\n Purpose & Messages\n </h3>\n \n <div class=\"form-row\">\n <div class=\"form-group\">\n <label for=\"purpose\">Purpose</label>\n <input type=\"text\" id=\"purpose\" formControlName=\"purpose\" class=\"form-control\" placeholder=\"Enter the purpose of this sub-agent\">\n </div>\n </div>\n\n <div class=\"form-row\">\n <div class=\"form-group\">\n <label for=\"userMessage\">User Message</label>\n <textarea id=\"userMessage\" formControlName=\"userMessage\" class=\"form-control\" rows=\"3\" placeholder=\"Enter user message\"></textarea>\n </div>\n </div>\n\n <!-- System Message field removed - property does not exist on MJAIAgentEntity -->\n </div>\n\n <!-- Model Configuration Section -->\n <div class=\"form-section\">\n <h3 class=\"section-title\">\n <i class=\"fa-solid fa-cogs\"></i>\n Model Configuration\n </h3>\n \n <div class=\"form-row\">\n <div class=\"form-group\">\n <label for=\"modelSelectionMode\">Model Selection Mode</label>\n <select id=\"modelSelectionMode\" formControlName=\"modelSelectionMode\" class=\"form-control\">\n <option value=\"Agent Type\">Agent Type</option>\n <option value=\"Agent\">Agent</option>\n </select>\n </div>\n </div>\n\n <div class=\"form-row\">\n <div class=\"form-group\">\n <label for=\"temperature\">Temperature</label>\n <input type=\"number\" id=\"temperature\" formControlName=\"temperature\" class=\"form-control\" min=\"0\" max=\"2\" step=\"0.1\">\n </div>\n \n <div class=\"form-group\">\n <label for=\"topP\">Top P</label>\n <input type=\"number\" id=\"topP\" formControlName=\"topP\" class=\"form-control\" min=\"0\" max=\"1\" step=\"0.1\">\n </div>\n </div>\n\n <div class=\"form-row\">\n <div class=\"form-group\">\n <label for=\"topK\">Top K</label>\n <input type=\"number\" id=\"topK\" formControlName=\"topK\" class=\"form-control\" min=\"1\" max=\"100\" step=\"1\">\n </div>\n \n <div class=\"form-group\">\n <label for=\"maxTokens\">Max Tokens</label>\n <input type=\"number\" id=\"maxTokens\" formControlName=\"maxTokens\" class=\"form-control\" min=\"1\" max=\"32000\" step=\"1\">\n </div>\n </div>\n\n <div class=\"form-row\">\n <div class=\"form-group\">\n <label for=\"enableCaching\">\n <input type=\"checkbox\" id=\"enableCaching\" formControlName=\"enableCaching\">\n Enable Caching\n </label>\n </div>\n \n <div class=\"form-group\">\n <label for=\"cacheTTL\">Cache TTL (seconds)</label>\n <input type=\"number\" id=\"cacheTTL\" formControlName=\"cacheTTL\" class=\"form-control\" min=\"60\" max=\"86400\" step=\"60\">\n </div>\n </div>\n </div>\n\n <!-- Prompts Section -->\n <div class=\"form-section\">\n <h3 class=\"section-title\">\n <i class=\"fa-solid fa-comments\"></i>\n Prompts ({{ linkedPromptCount }})\n </h3>\n \n <div class=\"section-actions\">\n <button type=\"button\" class=\"btn btn-primary btn-sm\" (click)=\"addPrompt()\">\n <i class=\"fa-solid fa-plus\"></i>\n Add Existing Prompt\n </button>\n <button type=\"button\" class=\"btn btn-success btn-sm\" (click)=\"createNewPrompt()\">\n <i class=\"fa-solid fa-plus\"></i>\n Create New Prompt\n </button>\n </div>\n\n @if (linkedPrompts.length > 0) {\n <div class=\"linked-items\">\n @for (prompt of linkedPrompts; track prompt.ID) {\n <div class=\"linked-item prompt-item\">\n <div class=\"item-info\">\n <i class=\"fa-solid fa-comments\"></i>\n <span class=\"item-name\">{{ prompt.Name }}</span>\n @if (prompt.Description) {\n <span class=\"item-description\">{{ prompt.Description }}</span>\n }\n </div>\n <button type=\"button\" class=\"btn btn-danger btn-xs\" (click)=\"removePrompt(prompt)\">\n <i class=\"fa-solid fa-times\"></i>\n </button>\n </div>\n }\n </div>\n } @else {\n <mj-empty-state\n Icon=\"fa-solid fa-comments\"\n Title=\"No prompts added yet. Click the buttons above to add prompts.\"\n Size=\"compact\" />\n }\n </div>\n\n <!-- Actions Section -->\n <div class=\"form-section\">\n <h3 class=\"section-title\">\n <i class=\"fa-solid fa-bolt\"></i>\n Actions ({{ linkedActionCount }})\n </h3>\n \n <div class=\"section-actions\">\n <button type=\"button\" class=\"btn btn-primary btn-sm\" (click)=\"addAction()\">\n <i class=\"fa-solid fa-plus\"></i>\n Add Action\n </button>\n </div>\n\n @if (linkedActions.length > 0) {\n <div class=\"linked-items\">\n @for (action of linkedActions; track action.ID) {\n <div class=\"linked-item action-item\">\n <div class=\"item-info\">\n <i class=\"fa-solid fa-bolt\"></i>\n <span class=\"item-name\">{{ action.Name }}</span>\n @if (action.Description) {\n <span class=\"item-description\">{{ action.Description }}</span>\n }\n </div>\n <button type=\"button\" class=\"btn btn-danger btn-xs\" (click)=\"removeAction(action)\">\n <i class=\"fa-solid fa-times\"></i>\n </button>\n </div>\n }\n </div>\n } @else {\n <mj-empty-state\n Icon=\"fa-solid fa-bolt\"\n Title=\"No actions added yet. Click the button above to add actions.\"\n Size=\"compact\" />\n }\n </div>\n </form>\n }\n\n <!-- Dialog Actions -->\n <div class=\"dialog-actions\">\n <button type=\"button\" class=\"btn btn-secondary\" (click)=\"cancel()\" [disabled]=\"isSaving$ | async\">\n <i class=\"fa-solid fa-times\"></i>\n Cancel\n </button>\n <button type=\"button\" class=\"btn btn-primary\" (click)=\"save()\" [disabled]=\"(isSaving$ | async) || !subAgentForm.valid\">\n @if (isSaving$ | async) {\n <i class=\"fa-solid fa-spinner fa-spin\"></i>\n Creating...\n } @else {\n <i class=\"fa-solid fa-save\"></i>\n Create Sub-Agent\n }\n </button>\n </div>\n</div>", styles: [".sub-agent-dialog {\n padding: 16px;\n max-width: 100%;\n max-height: 90vh;\n overflow-y: auto;\n}\n\n.sub-agent-header {\n margin-bottom: 20px;\n border-bottom: 1px solid var(--mj-border-default);\n padding-bottom: 15px;\n}\n\n.dialog-title {\n margin: 0;\n font-size: 1.4em;\n font-weight: 600;\n color: var(--mj-text-primary);\n display: flex;\n align-items: center;\n gap: 10px;\n}\n\n.dialog-title i {\n color: var(--mj-brand-primary);\n}\n\n.parent-info {\n margin: 8px 0 0 0;\n color: var(--mj-text-secondary);\n font-size: 0.9em;\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.parent-info i {\n color: var(--mj-status-success);\n}\n\n.loading-container {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 10px;\n padding: 40px;\n color: var(--mj-text-secondary);\n}\n\n.loading-container i {\n font-size: 1.2em;\n color: var(--mj-brand-primary);\n}\n\n.sub-agent-form {\n display: flex;\n flex-direction: column;\n gap: 25px;\n}\n\n.form-section {\n border: 1px solid var(--mj-bg-surface-sunken);\n border-radius: 8px;\n padding: 20px;\n background-color: var(--mj-bg-surface-card);\n}\n\n.section-title {\n margin: 0 0 15px 0;\n font-size: 1.1em;\n font-weight: 600;\n color: var(--mj-text-secondary);\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.section-title i {\n color: var(--mj-brand-primary);\n}\n\n.form-row {\n display: flex;\n gap: 15px;\n margin-bottom: 15px;\n}\n\n.form-row:last-child {\n margin-bottom: 0;\n}\n\n.form-group {\n flex: 1;\n display: flex;\n flex-direction: column;\n}\n\n.form-group label {\n font-weight: 500;\n color: var(--mj-text-secondary);\n margin-bottom: 5px;\n font-size: 0.9em;\n}\n\n.form-group label[for=\"enableCaching\"] {\n flex-direction: row;\n align-items: center;\n gap: 8px;\n}\n\n.form-group label[for=\"enableCaching\"] input {\n margin: 0;\n width: auto;\n}\n\n.form-control {\n padding: 8px 12px;\n border: 1px solid var(--mj-border-strong);\n border-radius: 4px;\n font-size: 0.9em;\n transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n}\n\n.form-control:focus {\n outline: none;\n border-color: var(--mj-brand-primary);\n box-shadow: 0 0 0 0.2rem color-mix(in srgb, var(--mj-brand-primary) 25%, transparent);\n}\n\n.form-control[readonly] {\n background-color: var(--mj-bg-surface-sunken);\n opacity: 1;\n}\n\n.section-actions {\n display: flex;\n gap: 10px;\n margin-bottom: 15px;\n}\n\n.linked-items {\n display: flex;\n flex-direction: column;\n gap: 10px;\n}\n\n.linked-item {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 12px;\n background-color: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n transition: box-shadow 0.15s ease-in-out;\n}\n\n.linked-item:hover {\n box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);\n}\n\n.item-info {\n display: flex;\n align-items: center;\n gap: 10px;\n flex: 1;\n}\n\n.item-info i {\n color: var(--mj-brand-primary);\n width: 16px;\n text-align: center;\n}\n\n.item-name {\n font-weight: 500;\n color: var(--mj-text-primary);\n}\n\n.item-description {\n color: var(--mj-text-secondary);\n font-size: 0.85em;\n margin-left: 10px;\n}\n\n.prompt-item .item-info i {\n color: var(--mj-status-success);\n}\n\n.action-item .item-info i {\n color: var(--mj-status-warning);\n}\n\n.dialog-actions {\n display: flex;\n justify-content: flex-end;\n gap: 10px;\n margin-top: 30px;\n padding-top: 20px;\n border-top: 1px solid var(--mj-border-default);\n}\n\n.btn {\n padding: 8px 16px;\n border: none;\n border-radius: 4px;\n font-size: 0.9em;\n font-weight: 500;\n cursor: pointer;\n transition: background-color 0.15s ease-in-out;\n display: flex;\n align-items: center;\n gap: 6px;\n}\n\n.btn:disabled {\n opacity: 0.6;\n cursor: not-allowed;\n}\n\n.btn-primary {\n background-color: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n}\n\n.btn-primary:hover:not(:disabled) {\n background-color: var(--mj-brand-primary-hover);\n}\n\n.btn-secondary {\n background-color: var(--mj-text-muted);\n color: var(--mj-text-inverse);\n}\n\n.btn-secondary:hover:not(:disabled) {\n background-color: var(--mj-text-secondary);\n}\n\n.btn-success {\n background-color: var(--mj-status-success);\n color: var(--mj-text-inverse);\n}\n\n.btn-success:hover:not(:disabled) {\n background-color: var(--mj-status-success);\n}\n\n.btn-danger {\n background-color: var(--mj-status-error);\n color: var(--mj-text-inverse);\n}\n\n.btn-danger:hover:not(:disabled) {\n background-color: var(--mj-status-error);\n}\n\n.btn-sm {\n padding: 6px 12px;\n font-size: 0.8em;\n}\n\n.btn-xs {\n padding: 4px 8px;\n font-size: 0.75em;\n}\n\n/* Responsive adjustments */\n@media (max-width: 768px) {\n .sub-agent-dialog {\n padding: 15px;\n max-width: 95vw;\n }\n\n .form-row {\n flex-direction: column;\n gap: 10px;\n }\n\n .section-actions {\n flex-direction: column;\n }\n\n .dialog-actions {\n flex-direction: column;\n }\n\n .linked-item {\n flex-direction: column;\n align-items: flex-start;\n gap: 10px;\n }\n}\n\n/* Validation styles */\n.form-control.ng-invalid.ng-touched {\n border-color: var(--mj-status-error);\n}\n\n.form-control.ng-valid.ng-touched {\n border-color: var(--mj-status-success);\n}\n\n/* Custom scrollbar for dialog */\n.sub-agent-dialog::-webkit-scrollbar {\n width: 8px;\n}\n\n.sub-agent-dialog::-webkit-scrollbar-track {\n background: var(--mj-bg-surface-sunken);\n border-radius: 4px;\n}\n\n.sub-agent-dialog::-webkit-scrollbar-thumb {\n background: var(--mj-border-strong);\n border-radius: 4px;\n}\n\n.sub-agent-dialog::-webkit-scrollbar-thumb:hover {\n background: var(--mj-text-disabled);\n}\n\n/* Ensure dialog appears above banner and other elements */\n:host ::ng-deep .k-dialog,\n:host ::ng-deep .k-window {\n z-index: 10000 !important;\n}\n\n:host ::ng-deep .k-overlay {\n z-index: 9999 !important;\n}\n"] }]
716
709
  }], () => [{ type: i0.ChangeDetectorRef }, { type: i1.AIAgentManagementService }, { type: i0.ViewContainerRef }], { DialogClose: [{
717
710
  type: Output
718
711
  }] }); })();
@@ -1 +1 @@
1
- {"version":3,"file":"create-sub-agent-dialog.component.js","sourceRoot":"","sources":["../../../../src/lib/custom/AIAgents/create-sub-agent-dialog.component.ts","../../../../src/lib/custom/AIAgents/create-sub-agent-dialog.component.html"],"names":[],"mappings":"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","sourcesContent":["import { Component, OnInit, OnDestroy, ChangeDetectorRef, ViewContainerRef, Output, EventEmitter } from '@angular/core';\nimport { FormControl, FormGroup, Validators } from '@angular/forms';\nimport { Subject, BehaviorSubject, takeUntil } from 'rxjs';\nimport { Metadata, RunView } from '@memberjunction/core';\nimport { MJAIAgentTypeEntity, MJAIAgentPromptEntity, MJAIAgentActionEntity, MJActionEntity } from '@memberjunction/core-entities';\nimport { MJNotificationService } from '@memberjunction/ng-notifications';\nimport { AIAgentManagementService } from './ai-agent-management.service';\nimport { MJAIPromptEntityExtended, MJAIAgentEntityExtended } from \"@memberjunction/ai-core-plus\";\nimport { UUIDsEqual } from '@memberjunction/global';\nimport { BaseAngularComponent } from '@memberjunction/ng-base-types';\nexport interface CreateSubAgentConfig {\n /** Title for the dialog */\n title?: string;\n /** Initial name for the sub-agent */\n initialName?: string;\n /** Pre-selected agent type ID */\n initialTypeID?: string;\n /** Parent agent ID for relationship */\n parentAgentId: string;\n /** Parent agent name for display */\n parentAgentName?: string;\n}\n\nexport interface CreateSubAgentResult {\n /** Created sub-agent entity (not saved to database) */\n subAgent: MJAIAgentEntityExtended;\n /** Agent prompt link entities (not saved to database) */\n agentPrompts?: MJAIAgentPromptEntity[];\n /** Agent action link entities (not saved to database) */\n agentActions?: MJAIAgentActionEntity[];\n /** Any new prompts created within the dialog */\n newPrompts?: MJAIPromptEntityExtended[];\n /** Any new prompt templates created within the dialog */\n newPromptTemplates?: any[];\n /** Any new template contents created within the dialog */\n newTemplateContents?: any[];\n}\n\n/**\n * Dialog for creating new AI Sub-Agents with essential fields, actions, and prompts management.\n * Creates entities but does not save them - returns entities for parent to add to PendingRecords.\n * This ensures atomicity with the parent form's save operation.\n */\n@Component({\n standalone: false,\n selector: 'mj-create-sub-agent-dialog',\n templateUrl: './create-sub-agent-dialog.component.html',\n styleUrls: ['./create-sub-agent-dialog.component.css']\n})\nexport class CreateSubAgentDialogComponent extends BaseAngularComponent implements OnInit, OnDestroy {\n \n // Configuration\n config: CreateSubAgentConfig = {} as CreateSubAgentConfig;\n \n // State management\n private destroy$ = new Subject<void>();\n public result = new Subject<CreateSubAgentResult | null>();\n \n // Form and validation\n subAgentForm: FormGroup;\n isLoading$ = new BehaviorSubject<boolean>(false);\n isSaving$ = new BehaviorSubject<boolean>(false);\n \n // Data\n availableAgentTypes$ = new BehaviorSubject<MJAIAgentTypeEntity[]>([]);\n availablePrompts$ = new BehaviorSubject<MJAIPromptEntityExtended[]>([]);\n availableActions$ = new BehaviorSubject<MJActionEntity[]>([]);\n \n // Entities (not saved to database)\n subAgentEntity: MJAIAgentEntityExtended | null = null;\n linkedPrompts: MJAIPromptEntityExtended[] = [];\n linkedActions: MJActionEntity[] = [];\n \n // Link entities for database relationships\n agentPromptLinks: MJAIAgentPromptEntity[] = [];\n agentActionLinks: MJAIAgentActionEntity[] = [];\n \n // Storage for new entities created within dialog\n newlyCreatedPrompts: MJAIPromptEntityExtended[] = [];\n newlyCreatedPromptTemplates: any[] = [];\n newlyCreatedTemplateContents: any[] = [];\n\n @Output() DialogClose = new EventEmitter<void>();\n\n constructor(\n private cdr: ChangeDetectorRef,\n private agentManagementService: AIAgentManagementService,\n private viewContainerRef: ViewContainerRef\n ) {\n super();\n this.subAgentForm = this.createForm();\n }\n\n ngOnInit() {\n this.loadInitialData();\n this.setupFormWatching();\n }\n\n ngOnDestroy() {\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n private createForm(): FormGroup {\n return new FormGroup({\n name: new FormControl(this.config.initialName || '', [Validators.required]),\n description: new FormControl(''),\n typeID: new FormControl(this.config.initialTypeID || '', [Validators.required]),\n status: new FormControl('Pending'),\n executionMode: new FormControl('Sequential'),\n purpose: new FormControl(''),\n userMessage: new FormControl(''),\n // systemMessage: new FormControl(''), // SystemMessage does not exist on MJAIAgentEntity\n modelSelectionMode: new FormControl('Agent Type'),\n temperature: new FormControl(0.1),\n topP: new FormControl(0.1),\n topK: new FormControl(40),\n maxTokens: new FormControl(4000),\n enableCaching: new FormControl(false),\n cacheTTL: new FormControl(3600)\n });\n }\n\n private setupFormWatching() {\n // Watch for form changes to update entity\n this.subAgentForm.valueChanges\n .pipe(takeUntil(this.destroy$))\n .subscribe(formValue => {\n this.updateSubAgentEntity(formValue);\n });\n }\n\n private async loadInitialData() {\n this.isLoading$.next(true);\n \n try {\n const rv = RunView.FromMetadataProvider(this.ProviderToUse);\n \n // Load all data in a single batch for better performance\n const results = await rv.RunViews([\n // Agent types (index 0)\n {\n EntityName: 'MJ: AI Agent Types',\n OrderBy: 'Name ASC',\n ResultType: 'entity_object'\n },\n // Available prompts (index 1)\n {\n EntityName: 'MJ: AI Prompts',\n ExtraFilter: `Status = 'Active'`,\n OrderBy: 'Name ASC',\n MaxRows: 1000,\n ResultType: 'entity_object'\n },\n // Available actions (index 2)\n {\n EntityName: 'MJ: Actions',\n ExtraFilter: `Status = 'Active'`,\n OrderBy: 'Name ASC',\n MaxRows: 1000,\n ResultType: 'entity_object'\n }\n ]);\n\n // Process agent types (index 0)\n if (results[0].Success && results[0].Results) {\n this.availableAgentTypes$.next(results[0].Results as MJAIAgentTypeEntity[]);\n \n // Set default type if not specified\n if (!this.config.initialTypeID && results[0].Results.length > 0) {\n this.subAgentForm.patchValue({ typeID: results[0].Results[0].ID });\n }\n }\n\n // Process available prompts (index 1)\n if (results[1].Success && results[1].Results) {\n this.availablePrompts$.next(results[1].Results as MJAIPromptEntityExtended[]);\n }\n\n // Process available actions (index 2)\n const actionsResult = results[2];\n\n if (actionsResult.Success && actionsResult.Results) {\n this.availableActions$.next(actionsResult.Results);\n }\n\n // Create the sub-agent entity\n const md = this.ProviderToUse;\n this.subAgentEntity = await md.GetEntityObject<MJAIAgentEntityExtended>('MJ: AI Agents');\n this.subAgentEntity.NewRecord();\n \n // Set default values\n this.subAgentEntity.Status = 'Pending';\n this.subAgentEntity.ExecutionMode = 'Sequential';\n this.subAgentEntity.ExposeAsAction = false; // Database constraint for sub-agents\n this.subAgentEntity.ParentID = this.config.parentAgentId;\n this.subAgentEntity.ModelSelectionMode = 'Agent Type';\n this.subAgentEntity.Set('Temperature', 0.1);\n this.subAgentEntity.Set('TopP', 0.1);\n this.subAgentEntity.Set('TopK', 40);\n this.subAgentEntity.Set('MaxTokensPerRun', 4000);\n this.subAgentEntity.Set('EnableCaching', false);\n this.subAgentEntity.Set('CacheTTLSeconds', 3600);\n\n // Update form with initial values\n this.updateSubAgentEntity(this.subAgentForm.value);\n\n } catch (error) {\n console.error('Error loading sub-agent creation data:', error);\n MJNotificationService.Instance.CreateSimpleNotification(\n 'Error loading data for sub-agent creation',\n 'error',\n 3000\n );\n } finally {\n this.isLoading$.next(false);\n }\n }\n\n private updateSubAgentEntity(formValue: any) {\n if (!this.subAgentEntity) return;\n\n // Update entity with form values\n this.subAgentEntity.Name = formValue.name;\n this.subAgentEntity.Description = formValue.description || '';\n this.subAgentEntity.TypeID = formValue.typeID;\n this.subAgentEntity.Status = formValue.status;\n this.subAgentEntity.ExecutionMode = formValue.executionMode;\n this.subAgentEntity.Set('Purpose', formValue.purpose || '');\n this.subAgentEntity.Set('UserMessage', formValue.userMessage || '');\n // Note: SystemMessage does not exist on MJAIAgentEntityExtended, removing this line\n this.subAgentEntity.ModelSelectionMode = formValue.modelSelectionMode;\n this.subAgentEntity.Set('Temperature', formValue.temperature);\n this.subAgentEntity.Set('TopP', formValue.topP);\n this.subAgentEntity.Set('TopK', formValue.topK);\n this.subAgentEntity.Set('MaxTokensPerRun', formValue.maxTokens);\n this.subAgentEntity.Set('EnableCaching', formValue.enableCaching);\n this.subAgentEntity.Set('CacheTTLSeconds', formValue.cacheTTL);\n }\n\n public async addPrompt() {\n // Get currently linked prompt IDs\n const linkedPromptIds = this.linkedPrompts.map(p => p.ID);\n \n try {\n this.agentManagementService.openPromptSelectorDialog({\n title: 'Add Prompts to Sub-Agent',\n multiSelect: true,\n selectedPromptIds: [],\n showCreateNew: true,\n linkedPromptIds: linkedPromptIds,\n viewContainerRef: this.viewContainerRef\n }).subscribe({\n next: async (result) => {\n if (result && result.selectedPrompts.length > 0) {\n // Filter out already linked prompts\n const newPrompts = result.selectedPrompts.filter(prompt =>\n !linkedPromptIds.some(id => UUIDsEqual(id, prompt.ID))\n );\n \n if (newPrompts.length > 0) {\n // Add to UI\n this.linkedPrompts.push(...newPrompts);\n \n // Create agent prompt link entities\n const md = this.ProviderToUse;\n for (const prompt of newPrompts) {\n const agentPrompt = await md.GetEntityObject<MJAIAgentPromptEntity>('MJ: AI Agent Prompts');\n agentPrompt.NewRecord();\n agentPrompt.AgentID = this.subAgentEntity!.ID;\n agentPrompt.PromptID = prompt.ID;\n agentPrompt.Status = 'Active';\n agentPrompt.ExecutionOrder = this.agentPromptLinks.length + 1;\n \n this.agentPromptLinks.push(agentPrompt);\n }\n \n // Trigger change detection\n this.cdr.detectChanges();\n \n MJNotificationService.Instance.CreateSimpleNotification(\n `${newPrompts.length} prompt${newPrompts.length === 1 ? '' : 's'} added to sub-agent`,\n 'success',\n 3000\n );\n }\n } else if (result && result.createNew) {\n // User wants to create a new prompt\n await this.createNewPrompt();\n }\n },\n error: (error) => {\n console.error('Error opening prompt selector:', error);\n MJNotificationService.Instance.CreateSimpleNotification(\n 'Error opening prompt selector. Please try again.',\n 'error',\n 3000\n );\n }\n });\n } catch (error) {\n console.error('Error in addPrompt:', error);\n MJNotificationService.Instance.CreateSimpleNotification(\n 'Error adding prompts. Please try again.',\n 'error',\n 3000\n );\n }\n }\n\n public async createNewPrompt() {\n try {\n this.agentManagementService.openCreatePromptDialog({\n title: `Create New Prompt for ${this.subAgentEntity?.Name || 'Sub-Agent'}`,\n initialName: '',\n viewContainerRef: this.viewContainerRef\n }).subscribe({\n next: async (result) => {\n if (result && result.prompt) {\n try {\n // Store the newly created entities\n this.newlyCreatedPrompts.push(result.prompt);\n \n if (result.template) {\n this.newlyCreatedPromptTemplates.push(result.template);\n }\n \n if (result.templateContents && result.templateContents.length > 0) {\n this.newlyCreatedTemplateContents.push(...result.templateContents);\n }\n\n // Add to UI\n this.linkedPrompts.push(result.prompt);\n \n // Create agent prompt link entity\n const md = this.ProviderToUse;\n const agentPrompt = await md.GetEntityObject<MJAIAgentPromptEntity>('MJ: AI Agent Prompts');\n agentPrompt.NewRecord();\n agentPrompt.AgentID = this.subAgentEntity!.ID;\n agentPrompt.PromptID = result.prompt.ID;\n agentPrompt.Status = 'Active';\n agentPrompt.ExecutionOrder = this.agentPromptLinks.length + 1;\n \n this.agentPromptLinks.push(agentPrompt);\n\n // Trigger change detection\n this.cdr.detectChanges();\n\n MJNotificationService.Instance.CreateSimpleNotification(\n `New prompt \"${result.prompt.Name}\" created and linked to sub-agent`,\n 'success',\n 3000\n );\n } catch (error) {\n console.error('Error processing created prompt:', error);\n MJNotificationService.Instance.CreateSimpleNotification(\n 'Error processing created prompt. Please try again.',\n 'error',\n 3000\n );\n }\n }\n },\n error: (error) => {\n console.error('Error in create prompt dialog:', error);\n MJNotificationService.Instance.CreateSimpleNotification(\n 'Error opening prompt creation dialog. Please try again.',\n 'error',\n 3000\n );\n }\n });\n } catch (error) {\n console.error('Error in createNewPrompt:', error);\n MJNotificationService.Instance.CreateSimpleNotification(\n 'Error creating new prompt. Please try again.',\n 'error',\n 3000\n );\n }\n }\n\n public async addAction() {\n // Get currently linked action IDs\n const linkedActionIds = this.linkedActions.map(a => a.ID);\n \n try {\n this.agentManagementService.openAddActionDialog({\n agentId: this.subAgentEntity?.ID || '',\n agentName: this.subAgentEntity?.Name || 'Sub-Agent',\n existingActionIds: linkedActionIds,\n viewContainerRef: this.viewContainerRef\n }).subscribe({\n next: async (selectedActions) => {\n if (selectedActions && selectedActions.length > 0) {\n // Filter out already linked actions\n const newActions = selectedActions.filter(action =>\n !linkedActionIds.some(id => UUIDsEqual(id, action.ID))\n );\n \n if (newActions.length > 0) {\n // Add to UI\n this.linkedActions.push(...newActions);\n \n // Create agent action link entities\n const md = this.ProviderToUse;\n for (const action of newActions) {\n const agentAction = await md.GetEntityObject<MJAIAgentActionEntity>('MJ: AI Agent Actions');\n agentAction.NewRecord();\n agentAction.AgentID = this.subAgentEntity!.ID;\n agentAction.ActionID = action.ID;\n agentAction.Status = 'Active';\n \n this.agentActionLinks.push(agentAction);\n }\n \n // Trigger change detection\n this.cdr.detectChanges();\n \n MJNotificationService.Instance.CreateSimpleNotification(\n `${newActions.length} action${newActions.length === 1 ? '' : 's'} added to sub-agent`,\n 'success',\n 3000\n );\n }\n }\n },\n error: (error) => {\n console.error('Error in add action dialog:', error);\n MJNotificationService.Instance.CreateSimpleNotification(\n 'Error opening action selection dialog. Please try again.',\n 'error',\n 3000\n );\n }\n });\n } catch (error) {\n console.error('Error in addAction:', error);\n MJNotificationService.Instance.CreateSimpleNotification(\n 'Error adding actions. Please try again.',\n 'error',\n 3000\n );\n }\n }\n\n public removePrompt(prompt: MJAIPromptEntityExtended) {\n // Remove from UI\n const promptIndex = this.linkedPrompts.findIndex(p => UUIDsEqual(p.ID, prompt.ID));\n if (promptIndex >= 0) {\n this.linkedPrompts.splice(promptIndex, 1);\n }\n \n // Remove from link entities\n const linkIndex = this.agentPromptLinks.findIndex(ap => UUIDsEqual(ap.PromptID, prompt.ID));\n if (linkIndex >= 0) {\n this.agentPromptLinks.splice(linkIndex, 1);\n }\n \n // Remove from newly created prompts if it was created in this dialog\n const newPromptIndex = this.newlyCreatedPrompts.findIndex(p => UUIDsEqual(p.ID, prompt.ID));\n if (newPromptIndex >= 0) {\n this.newlyCreatedPrompts.splice(newPromptIndex, 1);\n }\n \n this.cdr.detectChanges();\n \n MJNotificationService.Instance.CreateSimpleNotification(\n `Prompt \"${prompt.Name}\" removed from sub-agent`,\n 'info',\n 3000\n );\n }\n\n public removeAction(action: MJActionEntity) {\n // Remove from UI\n const actionIndex = this.linkedActions.findIndex(a => UUIDsEqual(a.ID, action.ID));\n if (actionIndex >= 0) {\n this.linkedActions.splice(actionIndex, 1);\n }\n \n // Remove from link entities\n const linkIndex = this.agentActionLinks.findIndex(aa => UUIDsEqual(aa.ActionID, action.ID));\n if (linkIndex >= 0) {\n this.agentActionLinks.splice(linkIndex, 1);\n }\n \n this.cdr.detectChanges();\n \n MJNotificationService.Instance.CreateSimpleNotification(\n `Action \"${action.Name}\" removed from sub-agent`,\n 'info',\n 3000\n );\n }\n\n public async save() {\n if (!this.subAgentForm.valid || !this.subAgentEntity) {\n MJNotificationService.Instance.CreateSimpleNotification(\n 'Please fill in all required fields',\n 'warning',\n 3000\n );\n return;\n }\n\n this.isSaving$.next(true);\n\n try {\n // Update entity with final form values\n this.updateSubAgentEntity(this.subAgentForm.value);\n\n // Return the created entities (not saved to database)\n const result: CreateSubAgentResult = {\n subAgent: this.subAgentEntity,\n agentPrompts: this.agentPromptLinks,\n agentActions: this.agentActionLinks,\n newPrompts: this.newlyCreatedPrompts.length > 0 ? this.newlyCreatedPrompts : undefined,\n newPromptTemplates: this.newlyCreatedPromptTemplates.length > 0 ? this.newlyCreatedPromptTemplates : undefined,\n newTemplateContents: this.newlyCreatedTemplateContents.length > 0 ? this.newlyCreatedTemplateContents : undefined\n };\n\n this.result.next(result);\n this.DialogClose.emit();\n\n } catch (error) {\n console.error('Error preparing sub-agent for creation:', error);\n MJNotificationService.Instance.CreateSimpleNotification(\n 'Error preparing sub-agent for creation',\n 'error',\n 3000\n );\n } finally {\n this.isSaving$.next(false);\n }\n }\n\n public cancel() {\n this.result.next(null);\n this.DialogClose.emit();\n }\n\n // Helper methods for UI\n public getAgentIcon(): string {\n return this.subAgentEntity?.IconClass || 'fa-solid fa-robot';\n }\n\n public getPromptIcon(): string {\n return 'fa-solid fa-comments';\n }\n\n public getActionIcon(): string {\n return 'fa-solid fa-bolt';\n }\n\n public get linkedPromptCount(): number {\n return this.linkedPrompts.length;\n }\n\n public get linkedActionCount(): number {\n return this.linkedActions.length;\n }\n}","<div class=\"sub-agent-dialog\">\n <div class=\"sub-agent-header\">\n <h2 class=\"dialog-title\">\n <i class=\"fa-solid fa-robot\"></i>\n {{ config.title || 'Create New Sub-Agent' }}\n </h2>\n @if (config.parentAgentName) {\n <p class=\"parent-info\">\n <i class=\"fa-solid fa-link\"></i>\n Sub-agent of: <strong>{{ config.parentAgentName }}</strong>\n </p>\n }\n </div>\n\n @if (isLoading$ | async) {\n <div class=\"loading-container\">\n <i class=\"fa-solid fa-spinner fa-spin\"></i>\n <span>Loading sub-agent creation form...</span>\n </div>\n } @else {\n <form [formGroup]=\"subAgentForm\" class=\"sub-agent-form\">\n <!-- Basic Information Section -->\n <div class=\"form-section\">\n <h3 class=\"section-title\">\n <i class=\"fa-solid fa-info-circle\"></i>\n Basic Information\n </h3>\n \n <div class=\"form-row\">\n <div class=\"form-group\">\n <label for=\"name\">Name *</label>\n <input type=\"text\" id=\"name\" formControlName=\"name\" class=\"form-control\" placeholder=\"Enter sub-agent name\">\n </div>\n \n <div class=\"form-group\">\n <label for=\"typeID\">Type *</label>\n <select id=\"typeID\" formControlName=\"typeID\" class=\"form-control\">\n <option value=\"\">Select agent type...</option>\n @for (type of availableAgentTypes$ | async; track type.ID) {\n <option [value]=\"type.ID\">{{ type.Name }}</option>\n }\n </select>\n </div>\n </div>\n\n <div class=\"form-row\">\n <div class=\"form-group\">\n <label for=\"description\">Description</label>\n <textarea id=\"description\" formControlName=\"description\" class=\"form-control\" rows=\"2\" placeholder=\"Enter description\"></textarea>\n </div>\n </div>\n\n <div class=\"form-row\">\n <div class=\"form-group\">\n <label for=\"status\">Status</label>\n <select id=\"status\" formControlName=\"status\" class=\"form-control\">\n <option value=\"Pending\">Pending</option>\n <option value=\"Active\">Active</option>\n <option value=\"Disabled\">Disabled</option>\n </select>\n </div>\n \n <div class=\"form-group\">\n <label for=\"executionMode\">Execution Mode</label>\n <select id=\"executionMode\" formControlName=\"executionMode\" class=\"form-control\">\n <option value=\"Sequential\">Sequential</option>\n <option value=\"Parallel\">Parallel</option>\n </select>\n </div>\n </div>\n </div>\n\n <!-- Purpose & Messages Section -->\n <div class=\"form-section\">\n <h3 class=\"section-title\">\n <i class=\"fa-solid fa-bullseye\"></i>\n Purpose & Messages\n </h3>\n \n <div class=\"form-row\">\n <div class=\"form-group\">\n <label for=\"purpose\">Purpose</label>\n <input type=\"text\" id=\"purpose\" formControlName=\"purpose\" class=\"form-control\" placeholder=\"Enter the purpose of this sub-agent\">\n </div>\n </div>\n\n <div class=\"form-row\">\n <div class=\"form-group\">\n <label for=\"userMessage\">User Message</label>\n <textarea id=\"userMessage\" formControlName=\"userMessage\" class=\"form-control\" rows=\"3\" placeholder=\"Enter user message\"></textarea>\n </div>\n </div>\n\n <!-- System Message field removed - property does not exist on MJAIAgentEntity -->\n </div>\n\n <!-- Model Configuration Section -->\n <div class=\"form-section\">\n <h3 class=\"section-title\">\n <i class=\"fa-solid fa-cogs\"></i>\n Model Configuration\n </h3>\n \n <div class=\"form-row\">\n <div class=\"form-group\">\n <label for=\"modelSelectionMode\">Model Selection Mode</label>\n <select id=\"modelSelectionMode\" formControlName=\"modelSelectionMode\" class=\"form-control\">\n <option value=\"Agent Type\">Agent Type</option>\n <option value=\"Agent\">Agent</option>\n </select>\n </div>\n </div>\n\n <div class=\"form-row\">\n <div class=\"form-group\">\n <label for=\"temperature\">Temperature</label>\n <input type=\"number\" id=\"temperature\" formControlName=\"temperature\" class=\"form-control\" min=\"0\" max=\"2\" step=\"0.1\">\n </div>\n \n <div class=\"form-group\">\n <label for=\"topP\">Top P</label>\n <input type=\"number\" id=\"topP\" formControlName=\"topP\" class=\"form-control\" min=\"0\" max=\"1\" step=\"0.1\">\n </div>\n </div>\n\n <div class=\"form-row\">\n <div class=\"form-group\">\n <label for=\"topK\">Top K</label>\n <input type=\"number\" id=\"topK\" formControlName=\"topK\" class=\"form-control\" min=\"1\" max=\"100\" step=\"1\">\n </div>\n \n <div class=\"form-group\">\n <label for=\"maxTokens\">Max Tokens</label>\n <input type=\"number\" id=\"maxTokens\" formControlName=\"maxTokens\" class=\"form-control\" min=\"1\" max=\"32000\" step=\"1\">\n </div>\n </div>\n\n <div class=\"form-row\">\n <div class=\"form-group\">\n <label for=\"enableCaching\">\n <input type=\"checkbox\" id=\"enableCaching\" formControlName=\"enableCaching\">\n Enable Caching\n </label>\n </div>\n \n <div class=\"form-group\">\n <label for=\"cacheTTL\">Cache TTL (seconds)</label>\n <input type=\"number\" id=\"cacheTTL\" formControlName=\"cacheTTL\" class=\"form-control\" min=\"60\" max=\"86400\" step=\"60\">\n </div>\n </div>\n </div>\n\n <!-- Prompts Section -->\n <div class=\"form-section\">\n <h3 class=\"section-title\">\n <i class=\"fa-solid fa-comments\"></i>\n Prompts ({{ linkedPromptCount }})\n </h3>\n \n <div class=\"section-actions\">\n <button type=\"button\" class=\"btn btn-primary btn-sm\" (click)=\"addPrompt()\">\n <i class=\"fa-solid fa-plus\"></i>\n Add Existing Prompt\n </button>\n <button type=\"button\" class=\"btn btn-success btn-sm\" (click)=\"createNewPrompt()\">\n <i class=\"fa-solid fa-plus\"></i>\n Create New Prompt\n </button>\n </div>\n\n @if (linkedPrompts.length > 0) {\n <div class=\"linked-items\">\n @for (prompt of linkedPrompts; track prompt.ID) {\n <div class=\"linked-item prompt-item\">\n <div class=\"item-info\">\n <i class=\"fa-solid fa-comments\"></i>\n <span class=\"item-name\">{{ prompt.Name }}</span>\n @if (prompt.Description) {\n <span class=\"item-description\">{{ prompt.Description }}</span>\n }\n </div>\n <button type=\"button\" class=\"btn btn-danger btn-xs\" (click)=\"removePrompt(prompt)\">\n <i class=\"fa-solid fa-times\"></i>\n </button>\n </div>\n }\n </div>\n } @else {\n <div class=\"empty-state\">\n <i class=\"fa-solid fa-comments\"></i>\n <p>No prompts added yet. Click the buttons above to add prompts.</p>\n </div>\n }\n </div>\n\n <!-- Actions Section -->\n <div class=\"form-section\">\n <h3 class=\"section-title\">\n <i class=\"fa-solid fa-bolt\"></i>\n Actions ({{ linkedActionCount }})\n </h3>\n \n <div class=\"section-actions\">\n <button type=\"button\" class=\"btn btn-primary btn-sm\" (click)=\"addAction()\">\n <i class=\"fa-solid fa-plus\"></i>\n Add Action\n </button>\n </div>\n\n @if (linkedActions.length > 0) {\n <div class=\"linked-items\">\n @for (action of linkedActions; track action.ID) {\n <div class=\"linked-item action-item\">\n <div class=\"item-info\">\n <i class=\"fa-solid fa-bolt\"></i>\n <span class=\"item-name\">{{ action.Name }}</span>\n @if (action.Description) {\n <span class=\"item-description\">{{ action.Description }}</span>\n }\n </div>\n <button type=\"button\" class=\"btn btn-danger btn-xs\" (click)=\"removeAction(action)\">\n <i class=\"fa-solid fa-times\"></i>\n </button>\n </div>\n }\n </div>\n } @else {\n <div class=\"empty-state\">\n <i class=\"fa-solid fa-bolt\"></i>\n <p>No actions added yet. Click the button above to add actions.</p>\n </div>\n }\n </div>\n </form>\n }\n\n <!-- Dialog Actions -->\n <div class=\"dialog-actions\">\n <button type=\"button\" class=\"btn btn-secondary\" (click)=\"cancel()\" [disabled]=\"isSaving$ | async\">\n <i class=\"fa-solid fa-times\"></i>\n Cancel\n </button>\n <button type=\"button\" class=\"btn btn-primary\" (click)=\"save()\" [disabled]=\"(isSaving$ | async) || !subAgentForm.valid\">\n @if (isSaving$ | async) {\n <i class=\"fa-solid fa-spinner fa-spin\"></i>\n Creating...\n } @else {\n <i class=\"fa-solid fa-save\"></i>\n Create Sub-Agent\n }\n </button>\n </div>\n</div>"]}
1
+ {"version":3,"file":"create-sub-agent-dialog.component.js","sourceRoot":"","sources":["../../../../src/lib/custom/AIAgents/create-sub-agent-dialog.component.ts","../../../../src/lib/custom/AIAgents/create-sub-agent-dialog.component.html"],"names":[],"mappings":"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","sourcesContent":["import { Component, OnInit, OnDestroy, ChangeDetectorRef, ViewContainerRef, Output, EventEmitter } from '@angular/core';\nimport { FormControl, FormGroup, Validators } from '@angular/forms';\nimport { Subject, BehaviorSubject, takeUntil } from 'rxjs';\nimport { Metadata, RunView } from '@memberjunction/core';\nimport { MJAIAgentTypeEntity, MJAIAgentPromptEntity, MJAIAgentActionEntity, MJActionEntity } from '@memberjunction/core-entities';\nimport { MJNotificationService } from '@memberjunction/ng-notifications';\nimport { AIAgentManagementService } from './ai-agent-management.service';\nimport { MJAIPromptEntityExtended, MJAIAgentEntityExtended } from \"@memberjunction/ai-core-plus\";\nimport { UUIDsEqual } from '@memberjunction/global';\nimport { BaseAngularComponent } from '@memberjunction/ng-base-types';\nexport interface CreateSubAgentConfig {\n /** Title for the dialog */\n title?: string;\n /** Initial name for the sub-agent */\n initialName?: string;\n /** Pre-selected agent type ID */\n initialTypeID?: string;\n /** Parent agent ID for relationship */\n parentAgentId: string;\n /** Parent agent name for display */\n parentAgentName?: string;\n}\n\nexport interface CreateSubAgentResult {\n /** Created sub-agent entity (not saved to database) */\n subAgent: MJAIAgentEntityExtended;\n /** Agent prompt link entities (not saved to database) */\n agentPrompts?: MJAIAgentPromptEntity[];\n /** Agent action link entities (not saved to database) */\n agentActions?: MJAIAgentActionEntity[];\n /** Any new prompts created within the dialog */\n newPrompts?: MJAIPromptEntityExtended[];\n /** Any new prompt templates created within the dialog */\n newPromptTemplates?: any[];\n /** Any new template contents created within the dialog */\n newTemplateContents?: any[];\n}\n\n/**\n * Dialog for creating new AI Sub-Agents with essential fields, actions, and prompts management.\n * Creates entities but does not save them - returns entities for parent to add to PendingRecords.\n * This ensures atomicity with the parent form's save operation.\n */\n@Component({\n standalone: false,\n selector: 'mj-create-sub-agent-dialog',\n templateUrl: './create-sub-agent-dialog.component.html',\n styleUrls: ['./create-sub-agent-dialog.component.css']\n})\nexport class CreateSubAgentDialogComponent extends BaseAngularComponent implements OnInit, OnDestroy {\n \n // Configuration\n config: CreateSubAgentConfig = {} as CreateSubAgentConfig;\n \n // State management\n private destroy$ = new Subject<void>();\n public result = new Subject<CreateSubAgentResult | null>();\n \n // Form and validation\n subAgentForm: FormGroup;\n isLoading$ = new BehaviorSubject<boolean>(false);\n isSaving$ = new BehaviorSubject<boolean>(false);\n \n // Data\n availableAgentTypes$ = new BehaviorSubject<MJAIAgentTypeEntity[]>([]);\n availablePrompts$ = new BehaviorSubject<MJAIPromptEntityExtended[]>([]);\n availableActions$ = new BehaviorSubject<MJActionEntity[]>([]);\n \n // Entities (not saved to database)\n subAgentEntity: MJAIAgentEntityExtended | null = null;\n linkedPrompts: MJAIPromptEntityExtended[] = [];\n linkedActions: MJActionEntity[] = [];\n \n // Link entities for database relationships\n agentPromptLinks: MJAIAgentPromptEntity[] = [];\n agentActionLinks: MJAIAgentActionEntity[] = [];\n \n // Storage for new entities created within dialog\n newlyCreatedPrompts: MJAIPromptEntityExtended[] = [];\n newlyCreatedPromptTemplates: any[] = [];\n newlyCreatedTemplateContents: any[] = [];\n\n @Output() DialogClose = new EventEmitter<void>();\n\n constructor(\n private cdr: ChangeDetectorRef,\n private agentManagementService: AIAgentManagementService,\n private viewContainerRef: ViewContainerRef\n ) {\n super();\n this.subAgentForm = this.createForm();\n }\n\n ngOnInit() {\n this.loadInitialData();\n this.setupFormWatching();\n }\n\n ngOnDestroy() {\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n private createForm(): FormGroup {\n return new FormGroup({\n name: new FormControl(this.config.initialName || '', [Validators.required]),\n description: new FormControl(''),\n typeID: new FormControl(this.config.initialTypeID || '', [Validators.required]),\n status: new FormControl('Pending'),\n executionMode: new FormControl('Sequential'),\n purpose: new FormControl(''),\n userMessage: new FormControl(''),\n // systemMessage: new FormControl(''), // SystemMessage does not exist on MJAIAgentEntity\n modelSelectionMode: new FormControl('Agent Type'),\n temperature: new FormControl(0.1),\n topP: new FormControl(0.1),\n topK: new FormControl(40),\n maxTokens: new FormControl(4000),\n enableCaching: new FormControl(false),\n cacheTTL: new FormControl(3600)\n });\n }\n\n private setupFormWatching() {\n // Watch for form changes to update entity\n this.subAgentForm.valueChanges\n .pipe(takeUntil(this.destroy$))\n .subscribe(formValue => {\n this.updateSubAgentEntity(formValue);\n });\n }\n\n private async loadInitialData() {\n this.isLoading$.next(true);\n \n try {\n const rv = RunView.FromMetadataProvider(this.ProviderToUse);\n \n // Load all data in a single batch for better performance\n const results = await rv.RunViews([\n // Agent types (index 0)\n {\n EntityName: 'MJ: AI Agent Types',\n OrderBy: 'Name ASC',\n ResultType: 'entity_object'\n },\n // Available prompts (index 1)\n {\n EntityName: 'MJ: AI Prompts',\n ExtraFilter: `Status = 'Active'`,\n OrderBy: 'Name ASC',\n MaxRows: 1000,\n ResultType: 'entity_object'\n },\n // Available actions (index 2)\n {\n EntityName: 'MJ: Actions',\n ExtraFilter: `Status = 'Active'`,\n OrderBy: 'Name ASC',\n MaxRows: 1000,\n ResultType: 'entity_object'\n }\n ]);\n\n // Process agent types (index 0)\n if (results[0].Success && results[0].Results) {\n this.availableAgentTypes$.next(results[0].Results as MJAIAgentTypeEntity[]);\n \n // Set default type if not specified\n if (!this.config.initialTypeID && results[0].Results.length > 0) {\n this.subAgentForm.patchValue({ typeID: results[0].Results[0].ID });\n }\n }\n\n // Process available prompts (index 1)\n if (results[1].Success && results[1].Results) {\n this.availablePrompts$.next(results[1].Results as MJAIPromptEntityExtended[]);\n }\n\n // Process available actions (index 2)\n const actionsResult = results[2];\n\n if (actionsResult.Success && actionsResult.Results) {\n this.availableActions$.next(actionsResult.Results);\n }\n\n // Create the sub-agent entity\n const md = this.ProviderToUse;\n this.subAgentEntity = await md.GetEntityObject<MJAIAgentEntityExtended>('MJ: AI Agents');\n this.subAgentEntity.NewRecord();\n \n // Set default values\n this.subAgentEntity.Status = 'Pending';\n this.subAgentEntity.ExecutionMode = 'Sequential';\n this.subAgentEntity.ExposeAsAction = false; // Database constraint for sub-agents\n this.subAgentEntity.ParentID = this.config.parentAgentId;\n this.subAgentEntity.ModelSelectionMode = 'Agent Type';\n this.subAgentEntity.Set('Temperature', 0.1);\n this.subAgentEntity.Set('TopP', 0.1);\n this.subAgentEntity.Set('TopK', 40);\n this.subAgentEntity.Set('MaxTokensPerRun', 4000);\n this.subAgentEntity.Set('EnableCaching', false);\n this.subAgentEntity.Set('CacheTTLSeconds', 3600);\n\n // Update form with initial values\n this.updateSubAgentEntity(this.subAgentForm.value);\n\n } catch (error) {\n console.error('Error loading sub-agent creation data:', error);\n MJNotificationService.Instance.CreateSimpleNotification(\n 'Error loading data for sub-agent creation',\n 'error',\n 3000\n );\n } finally {\n this.isLoading$.next(false);\n }\n }\n\n private updateSubAgentEntity(formValue: any) {\n if (!this.subAgentEntity) return;\n\n // Update entity with form values\n this.subAgentEntity.Name = formValue.name;\n this.subAgentEntity.Description = formValue.description || '';\n this.subAgentEntity.TypeID = formValue.typeID;\n this.subAgentEntity.Status = formValue.status;\n this.subAgentEntity.ExecutionMode = formValue.executionMode;\n this.subAgentEntity.Set('Purpose', formValue.purpose || '');\n this.subAgentEntity.Set('UserMessage', formValue.userMessage || '');\n // Note: SystemMessage does not exist on MJAIAgentEntityExtended, removing this line\n this.subAgentEntity.ModelSelectionMode = formValue.modelSelectionMode;\n this.subAgentEntity.Set('Temperature', formValue.temperature);\n this.subAgentEntity.Set('TopP', formValue.topP);\n this.subAgentEntity.Set('TopK', formValue.topK);\n this.subAgentEntity.Set('MaxTokensPerRun', formValue.maxTokens);\n this.subAgentEntity.Set('EnableCaching', formValue.enableCaching);\n this.subAgentEntity.Set('CacheTTLSeconds', formValue.cacheTTL);\n }\n\n public async addPrompt() {\n // Get currently linked prompt IDs\n const linkedPromptIds = this.linkedPrompts.map(p => p.ID);\n \n try {\n this.agentManagementService.openPromptSelectorDialog({\n title: 'Add Prompts to Sub-Agent',\n multiSelect: true,\n selectedPromptIds: [],\n showCreateNew: true,\n linkedPromptIds: linkedPromptIds,\n viewContainerRef: this.viewContainerRef\n }).subscribe({\n next: async (result) => {\n if (result && result.selectedPrompts.length > 0) {\n // Filter out already linked prompts\n const newPrompts = result.selectedPrompts.filter(prompt =>\n !linkedPromptIds.some(id => UUIDsEqual(id, prompt.ID))\n );\n \n if (newPrompts.length > 0) {\n // Add to UI\n this.linkedPrompts.push(...newPrompts);\n \n // Create agent prompt link entities\n const md = this.ProviderToUse;\n for (const prompt of newPrompts) {\n const agentPrompt = await md.GetEntityObject<MJAIAgentPromptEntity>('MJ: AI Agent Prompts');\n agentPrompt.NewRecord();\n agentPrompt.AgentID = this.subAgentEntity!.ID;\n agentPrompt.PromptID = prompt.ID;\n agentPrompt.Status = 'Active';\n agentPrompt.ExecutionOrder = this.agentPromptLinks.length + 1;\n \n this.agentPromptLinks.push(agentPrompt);\n }\n \n // Trigger change detection\n this.cdr.detectChanges();\n \n MJNotificationService.Instance.CreateSimpleNotification(\n `${newPrompts.length} prompt${newPrompts.length === 1 ? '' : 's'} added to sub-agent`,\n 'success',\n 3000\n );\n }\n } else if (result && result.createNew) {\n // User wants to create a new prompt\n await this.createNewPrompt();\n }\n },\n error: (error) => {\n console.error('Error opening prompt selector:', error);\n MJNotificationService.Instance.CreateSimpleNotification(\n 'Error opening prompt selector. Please try again.',\n 'error',\n 3000\n );\n }\n });\n } catch (error) {\n console.error('Error in addPrompt:', error);\n MJNotificationService.Instance.CreateSimpleNotification(\n 'Error adding prompts. Please try again.',\n 'error',\n 3000\n );\n }\n }\n\n public async createNewPrompt() {\n try {\n this.agentManagementService.openCreatePromptDialog({\n title: `Create New Prompt for ${this.subAgentEntity?.Name || 'Sub-Agent'}`,\n initialName: '',\n viewContainerRef: this.viewContainerRef\n }).subscribe({\n next: async (result) => {\n if (result && result.prompt) {\n try {\n // Store the newly created entities\n this.newlyCreatedPrompts.push(result.prompt);\n \n if (result.template) {\n this.newlyCreatedPromptTemplates.push(result.template);\n }\n \n if (result.templateContents && result.templateContents.length > 0) {\n this.newlyCreatedTemplateContents.push(...result.templateContents);\n }\n\n // Add to UI\n this.linkedPrompts.push(result.prompt);\n \n // Create agent prompt link entity\n const md = this.ProviderToUse;\n const agentPrompt = await md.GetEntityObject<MJAIAgentPromptEntity>('MJ: AI Agent Prompts');\n agentPrompt.NewRecord();\n agentPrompt.AgentID = this.subAgentEntity!.ID;\n agentPrompt.PromptID = result.prompt.ID;\n agentPrompt.Status = 'Active';\n agentPrompt.ExecutionOrder = this.agentPromptLinks.length + 1;\n \n this.agentPromptLinks.push(agentPrompt);\n\n // Trigger change detection\n this.cdr.detectChanges();\n\n MJNotificationService.Instance.CreateSimpleNotification(\n `New prompt \"${result.prompt.Name}\" created and linked to sub-agent`,\n 'success',\n 3000\n );\n } catch (error) {\n console.error('Error processing created prompt:', error);\n MJNotificationService.Instance.CreateSimpleNotification(\n 'Error processing created prompt. Please try again.',\n 'error',\n 3000\n );\n }\n }\n },\n error: (error) => {\n console.error('Error in create prompt dialog:', error);\n MJNotificationService.Instance.CreateSimpleNotification(\n 'Error opening prompt creation dialog. Please try again.',\n 'error',\n 3000\n );\n }\n });\n } catch (error) {\n console.error('Error in createNewPrompt:', error);\n MJNotificationService.Instance.CreateSimpleNotification(\n 'Error creating new prompt. Please try again.',\n 'error',\n 3000\n );\n }\n }\n\n public async addAction() {\n // Get currently linked action IDs\n const linkedActionIds = this.linkedActions.map(a => a.ID);\n \n try {\n this.agentManagementService.openAddActionDialog({\n agentId: this.subAgentEntity?.ID || '',\n agentName: this.subAgentEntity?.Name || 'Sub-Agent',\n existingActionIds: linkedActionIds,\n viewContainerRef: this.viewContainerRef\n }).subscribe({\n next: async (selectedActions) => {\n if (selectedActions && selectedActions.length > 0) {\n // Filter out already linked actions\n const newActions = selectedActions.filter(action =>\n !linkedActionIds.some(id => UUIDsEqual(id, action.ID))\n );\n \n if (newActions.length > 0) {\n // Add to UI\n this.linkedActions.push(...newActions);\n \n // Create agent action link entities\n const md = this.ProviderToUse;\n for (const action of newActions) {\n const agentAction = await md.GetEntityObject<MJAIAgentActionEntity>('MJ: AI Agent Actions');\n agentAction.NewRecord();\n agentAction.AgentID = this.subAgentEntity!.ID;\n agentAction.ActionID = action.ID;\n agentAction.Status = 'Active';\n \n this.agentActionLinks.push(agentAction);\n }\n \n // Trigger change detection\n this.cdr.detectChanges();\n \n MJNotificationService.Instance.CreateSimpleNotification(\n `${newActions.length} action${newActions.length === 1 ? '' : 's'} added to sub-agent`,\n 'success',\n 3000\n );\n }\n }\n },\n error: (error) => {\n console.error('Error in add action dialog:', error);\n MJNotificationService.Instance.CreateSimpleNotification(\n 'Error opening action selection dialog. Please try again.',\n 'error',\n 3000\n );\n }\n });\n } catch (error) {\n console.error('Error in addAction:', error);\n MJNotificationService.Instance.CreateSimpleNotification(\n 'Error adding actions. Please try again.',\n 'error',\n 3000\n );\n }\n }\n\n public removePrompt(prompt: MJAIPromptEntityExtended) {\n // Remove from UI\n const promptIndex = this.linkedPrompts.findIndex(p => UUIDsEqual(p.ID, prompt.ID));\n if (promptIndex >= 0) {\n this.linkedPrompts.splice(promptIndex, 1);\n }\n \n // Remove from link entities\n const linkIndex = this.agentPromptLinks.findIndex(ap => UUIDsEqual(ap.PromptID, prompt.ID));\n if (linkIndex >= 0) {\n this.agentPromptLinks.splice(linkIndex, 1);\n }\n \n // Remove from newly created prompts if it was created in this dialog\n const newPromptIndex = this.newlyCreatedPrompts.findIndex(p => UUIDsEqual(p.ID, prompt.ID));\n if (newPromptIndex >= 0) {\n this.newlyCreatedPrompts.splice(newPromptIndex, 1);\n }\n \n this.cdr.detectChanges();\n \n MJNotificationService.Instance.CreateSimpleNotification(\n `Prompt \"${prompt.Name}\" removed from sub-agent`,\n 'info',\n 3000\n );\n }\n\n public removeAction(action: MJActionEntity) {\n // Remove from UI\n const actionIndex = this.linkedActions.findIndex(a => UUIDsEqual(a.ID, action.ID));\n if (actionIndex >= 0) {\n this.linkedActions.splice(actionIndex, 1);\n }\n \n // Remove from link entities\n const linkIndex = this.agentActionLinks.findIndex(aa => UUIDsEqual(aa.ActionID, action.ID));\n if (linkIndex >= 0) {\n this.agentActionLinks.splice(linkIndex, 1);\n }\n \n this.cdr.detectChanges();\n \n MJNotificationService.Instance.CreateSimpleNotification(\n `Action \"${action.Name}\" removed from sub-agent`,\n 'info',\n 3000\n );\n }\n\n public async save() {\n if (!this.subAgentForm.valid || !this.subAgentEntity) {\n MJNotificationService.Instance.CreateSimpleNotification(\n 'Please fill in all required fields',\n 'warning',\n 3000\n );\n return;\n }\n\n this.isSaving$.next(true);\n\n try {\n // Update entity with final form values\n this.updateSubAgentEntity(this.subAgentForm.value);\n\n // Return the created entities (not saved to database)\n const result: CreateSubAgentResult = {\n subAgent: this.subAgentEntity,\n agentPrompts: this.agentPromptLinks,\n agentActions: this.agentActionLinks,\n newPrompts: this.newlyCreatedPrompts.length > 0 ? this.newlyCreatedPrompts : undefined,\n newPromptTemplates: this.newlyCreatedPromptTemplates.length > 0 ? this.newlyCreatedPromptTemplates : undefined,\n newTemplateContents: this.newlyCreatedTemplateContents.length > 0 ? this.newlyCreatedTemplateContents : undefined\n };\n\n this.result.next(result);\n this.DialogClose.emit();\n\n } catch (error) {\n console.error('Error preparing sub-agent for creation:', error);\n MJNotificationService.Instance.CreateSimpleNotification(\n 'Error preparing sub-agent for creation',\n 'error',\n 3000\n );\n } finally {\n this.isSaving$.next(false);\n }\n }\n\n public cancel() {\n this.result.next(null);\n this.DialogClose.emit();\n }\n\n // Helper methods for UI\n public getAgentIcon(): string {\n return this.subAgentEntity?.IconClass || 'fa-solid fa-robot';\n }\n\n public getPromptIcon(): string {\n return 'fa-solid fa-comments';\n }\n\n public getActionIcon(): string {\n return 'fa-solid fa-bolt';\n }\n\n public get linkedPromptCount(): number {\n return this.linkedPrompts.length;\n }\n\n public get linkedActionCount(): number {\n return this.linkedActions.length;\n }\n}","<div class=\"sub-agent-dialog\">\n <div class=\"sub-agent-header\">\n <h2 class=\"dialog-title\">\n <i class=\"fa-solid fa-robot\"></i>\n {{ config.title || 'Create New Sub-Agent' }}\n </h2>\n @if (config.parentAgentName) {\n <p class=\"parent-info\">\n <i class=\"fa-solid fa-link\"></i>\n Sub-agent of: <strong>{{ config.parentAgentName }}</strong>\n </p>\n }\n </div>\n\n @if (isLoading$ | async) {\n <div class=\"loading-container\">\n <i class=\"fa-solid fa-spinner fa-spin\"></i>\n <span>Loading sub-agent creation form...</span>\n </div>\n } @else {\n <form [formGroup]=\"subAgentForm\" class=\"sub-agent-form\">\n <!-- Basic Information Section -->\n <div class=\"form-section\">\n <h3 class=\"section-title\">\n <i class=\"fa-solid fa-info-circle\"></i>\n Basic Information\n </h3>\n \n <div class=\"form-row\">\n <div class=\"form-group\">\n <label for=\"name\">Name *</label>\n <input type=\"text\" id=\"name\" formControlName=\"name\" class=\"form-control\" placeholder=\"Enter sub-agent name\">\n </div>\n \n <div class=\"form-group\">\n <label for=\"typeID\">Type *</label>\n <select id=\"typeID\" formControlName=\"typeID\" class=\"form-control\">\n <option value=\"\">Select agent type...</option>\n @for (type of availableAgentTypes$ | async; track type.ID) {\n <option [value]=\"type.ID\">{{ type.Name }}</option>\n }\n </select>\n </div>\n </div>\n\n <div class=\"form-row\">\n <div class=\"form-group\">\n <label for=\"description\">Description</label>\n <textarea id=\"description\" formControlName=\"description\" class=\"form-control\" rows=\"2\" placeholder=\"Enter description\"></textarea>\n </div>\n </div>\n\n <div class=\"form-row\">\n <div class=\"form-group\">\n <label for=\"status\">Status</label>\n <select id=\"status\" formControlName=\"status\" class=\"form-control\">\n <option value=\"Pending\">Pending</option>\n <option value=\"Active\">Active</option>\n <option value=\"Disabled\">Disabled</option>\n </select>\n </div>\n \n <div class=\"form-group\">\n <label for=\"executionMode\">Execution Mode</label>\n <select id=\"executionMode\" formControlName=\"executionMode\" class=\"form-control\">\n <option value=\"Sequential\">Sequential</option>\n <option value=\"Parallel\">Parallel</option>\n </select>\n </div>\n </div>\n </div>\n\n <!-- Purpose & Messages Section -->\n <div class=\"form-section\">\n <h3 class=\"section-title\">\n <i class=\"fa-solid fa-bullseye\"></i>\n Purpose & Messages\n </h3>\n \n <div class=\"form-row\">\n <div class=\"form-group\">\n <label for=\"purpose\">Purpose</label>\n <input type=\"text\" id=\"purpose\" formControlName=\"purpose\" class=\"form-control\" placeholder=\"Enter the purpose of this sub-agent\">\n </div>\n </div>\n\n <div class=\"form-row\">\n <div class=\"form-group\">\n <label for=\"userMessage\">User Message</label>\n <textarea id=\"userMessage\" formControlName=\"userMessage\" class=\"form-control\" rows=\"3\" placeholder=\"Enter user message\"></textarea>\n </div>\n </div>\n\n <!-- System Message field removed - property does not exist on MJAIAgentEntity -->\n </div>\n\n <!-- Model Configuration Section -->\n <div class=\"form-section\">\n <h3 class=\"section-title\">\n <i class=\"fa-solid fa-cogs\"></i>\n Model Configuration\n </h3>\n \n <div class=\"form-row\">\n <div class=\"form-group\">\n <label for=\"modelSelectionMode\">Model Selection Mode</label>\n <select id=\"modelSelectionMode\" formControlName=\"modelSelectionMode\" class=\"form-control\">\n <option value=\"Agent Type\">Agent Type</option>\n <option value=\"Agent\">Agent</option>\n </select>\n </div>\n </div>\n\n <div class=\"form-row\">\n <div class=\"form-group\">\n <label for=\"temperature\">Temperature</label>\n <input type=\"number\" id=\"temperature\" formControlName=\"temperature\" class=\"form-control\" min=\"0\" max=\"2\" step=\"0.1\">\n </div>\n \n <div class=\"form-group\">\n <label for=\"topP\">Top P</label>\n <input type=\"number\" id=\"topP\" formControlName=\"topP\" class=\"form-control\" min=\"0\" max=\"1\" step=\"0.1\">\n </div>\n </div>\n\n <div class=\"form-row\">\n <div class=\"form-group\">\n <label for=\"topK\">Top K</label>\n <input type=\"number\" id=\"topK\" formControlName=\"topK\" class=\"form-control\" min=\"1\" max=\"100\" step=\"1\">\n </div>\n \n <div class=\"form-group\">\n <label for=\"maxTokens\">Max Tokens</label>\n <input type=\"number\" id=\"maxTokens\" formControlName=\"maxTokens\" class=\"form-control\" min=\"1\" max=\"32000\" step=\"1\">\n </div>\n </div>\n\n <div class=\"form-row\">\n <div class=\"form-group\">\n <label for=\"enableCaching\">\n <input type=\"checkbox\" id=\"enableCaching\" formControlName=\"enableCaching\">\n Enable Caching\n </label>\n </div>\n \n <div class=\"form-group\">\n <label for=\"cacheTTL\">Cache TTL (seconds)</label>\n <input type=\"number\" id=\"cacheTTL\" formControlName=\"cacheTTL\" class=\"form-control\" min=\"60\" max=\"86400\" step=\"60\">\n </div>\n </div>\n </div>\n\n <!-- Prompts Section -->\n <div class=\"form-section\">\n <h3 class=\"section-title\">\n <i class=\"fa-solid fa-comments\"></i>\n Prompts ({{ linkedPromptCount }})\n </h3>\n \n <div class=\"section-actions\">\n <button type=\"button\" class=\"btn btn-primary btn-sm\" (click)=\"addPrompt()\">\n <i class=\"fa-solid fa-plus\"></i>\n Add Existing Prompt\n </button>\n <button type=\"button\" class=\"btn btn-success btn-sm\" (click)=\"createNewPrompt()\">\n <i class=\"fa-solid fa-plus\"></i>\n Create New Prompt\n </button>\n </div>\n\n @if (linkedPrompts.length > 0) {\n <div class=\"linked-items\">\n @for (prompt of linkedPrompts; track prompt.ID) {\n <div class=\"linked-item prompt-item\">\n <div class=\"item-info\">\n <i class=\"fa-solid fa-comments\"></i>\n <span class=\"item-name\">{{ prompt.Name }}</span>\n @if (prompt.Description) {\n <span class=\"item-description\">{{ prompt.Description }}</span>\n }\n </div>\n <button type=\"button\" class=\"btn btn-danger btn-xs\" (click)=\"removePrompt(prompt)\">\n <i class=\"fa-solid fa-times\"></i>\n </button>\n </div>\n }\n </div>\n } @else {\n <mj-empty-state\n Icon=\"fa-solid fa-comments\"\n Title=\"No prompts added yet. Click the buttons above to add prompts.\"\n Size=\"compact\" />\n }\n </div>\n\n <!-- Actions Section -->\n <div class=\"form-section\">\n <h3 class=\"section-title\">\n <i class=\"fa-solid fa-bolt\"></i>\n Actions ({{ linkedActionCount }})\n </h3>\n \n <div class=\"section-actions\">\n <button type=\"button\" class=\"btn btn-primary btn-sm\" (click)=\"addAction()\">\n <i class=\"fa-solid fa-plus\"></i>\n Add Action\n </button>\n </div>\n\n @if (linkedActions.length > 0) {\n <div class=\"linked-items\">\n @for (action of linkedActions; track action.ID) {\n <div class=\"linked-item action-item\">\n <div class=\"item-info\">\n <i class=\"fa-solid fa-bolt\"></i>\n <span class=\"item-name\">{{ action.Name }}</span>\n @if (action.Description) {\n <span class=\"item-description\">{{ action.Description }}</span>\n }\n </div>\n <button type=\"button\" class=\"btn btn-danger btn-xs\" (click)=\"removeAction(action)\">\n <i class=\"fa-solid fa-times\"></i>\n </button>\n </div>\n }\n </div>\n } @else {\n <mj-empty-state\n Icon=\"fa-solid fa-bolt\"\n Title=\"No actions added yet. Click the button above to add actions.\"\n Size=\"compact\" />\n }\n </div>\n </form>\n }\n\n <!-- Dialog Actions -->\n <div class=\"dialog-actions\">\n <button type=\"button\" class=\"btn btn-secondary\" (click)=\"cancel()\" [disabled]=\"isSaving$ | async\">\n <i class=\"fa-solid fa-times\"></i>\n Cancel\n </button>\n <button type=\"button\" class=\"btn btn-primary\" (click)=\"save()\" [disabled]=\"(isSaving$ | async) || !subAgentForm.valid\">\n @if (isSaving$ | async) {\n <i class=\"fa-solid fa-spinner fa-spin\"></i>\n Creating...\n } @else {\n <i class=\"fa-solid fa-save\"></i>\n Create Sub-Agent\n }\n </button>\n </div>\n</div>"]}