@projectcor/maia-components 2.48.1-1 → 2.49.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 (422) hide show
  1. package/README.md +2 -0
  2. package/lib/App.js +19 -44
  3. package/lib/components/atoms/ApprovalBox/ApprovalBox.helpers.js +37 -0
  4. package/lib/components/atoms/ApprovalBox/ApprovalBox.js +3 -37
  5. package/lib/components/atoms/AttachmentCard/AttachmentCardAudio.helpers.js +53 -1
  6. package/lib/components/atoms/AttachmentCard/AttachmentCardAudio.js +28 -52
  7. package/lib/components/atoms/AttachmentPreviewModal/AttachmentPreviewModal.helpers.js +37 -1
  8. package/lib/components/atoms/AttachmentPreviewModal/AttachmentPreviewModal.js +33 -66
  9. package/lib/components/atoms/AttachmentPreviewModal/PptPreview.helpers.js +227 -1
  10. package/lib/components/atoms/AttachmentPreviewModal/PptPreview.js +53 -177
  11. package/lib/components/atoms/ClientSelector/ClientSelector.helpers.js +26 -0
  12. package/lib/components/atoms/ClientSelector/ClientSelector.js +12 -21
  13. package/lib/components/atoms/ContextMentionEditor/ContextMentionEditor.helpers.js +29 -1
  14. package/lib/components/atoms/ContextMentionEditor/ContextMentionEditor.js +12 -28
  15. package/lib/components/atoms/FrequentlyUsedActions/FrequentlyUsedActions.js +1 -3
  16. package/lib/components/atoms/FrequentlyUsedActions/FrequentlyUsedActions.styles.js +7 -19
  17. package/lib/components/atoms/MAIAInput/MAIAInput.attachments.helpers.js +74 -0
  18. package/lib/components/atoms/MAIAInput/MAIAInput.helpers.js +173 -1
  19. package/lib/components/atoms/MAIAInput/MAIAInput.js +126 -171
  20. package/lib/components/atoms/MAIAInput/MAIAInputEditor.helpers.js +47 -1
  21. package/lib/components/atoms/MAIAInput/MAIAInputEditor.js +40 -61
  22. package/lib/components/atoms/ReasoningBlock/ReasoningBlock.js +2 -7
  23. package/lib/components/atoms/ReasoningBlock/ReasoningBlock.styles.js +24 -41
  24. package/lib/components/atoms/ReasoningBlock/ReasoningSteps.js +10 -25
  25. package/lib/components/atoms/ReasoningBlock/ReasoningTimeline.js +43 -78
  26. package/lib/components/atoms/ReasoningBlock/groupParallelSteps.js +11 -9
  27. package/lib/components/atoms/ReasoningBlock/reasoningLiveNarration.js +15 -37
  28. package/lib/components/atoms/SlashCommandDropdown/SlashCommandDropdown.helpers.js +101 -0
  29. package/lib/components/atoms/SlashCommandDropdown/SlashCommandDropdown.js +21 -77
  30. package/lib/components/atoms/TextArea/TextArea.helpers.js +23 -0
  31. package/lib/components/atoms/TextArea/TextArea.js +11 -20
  32. package/lib/components/index.js +1 -2
  33. package/lib/components/molecules/AbmSection/AbmGeneralSection.helpers.js +30 -1
  34. package/lib/components/molecules/AbmSection/AbmGeneralSection.js +13 -18
  35. package/lib/components/molecules/AbmSection/AbmKnowledgeSection.helpers.js +48 -1
  36. package/lib/components/molecules/AbmSection/AbmKnowledgeSection.js +17 -26
  37. package/lib/components/molecules/ChatAIContent/ChatAIContent.js +3 -7
  38. package/lib/components/molecules/ChatAIHome/ChatAIHome.helpers.js +370 -0
  39. package/lib/components/molecules/ChatAIHome/ChatAIHome.js +266 -321
  40. package/lib/components/molecules/ChatAIHome/styles.js +78 -85
  41. package/lib/components/molecules/ChatAIMessages/ChatAIMessages.helpers.js +345 -1
  42. package/lib/components/molecules/ChatAIMessages/ChatAIMessages.js +201 -200
  43. package/lib/components/molecules/ChatAIMessages/newStyles.js +35 -32
  44. package/lib/components/molecules/ChatAIModal/ChatAIModal.helpers.js +373 -5
  45. package/lib/components/molecules/ChatAIModal/ChatAIModal.js +199 -271
  46. package/lib/components/molecules/ChatAIModal/ChatAIModal.styles.js +2 -2
  47. package/lib/components/molecules/ChatAIModal/components/ChatAiModalFooter/ChatAiModalFooter.js +153 -15
  48. package/lib/components/molecules/ChatAIModal/components/ChatAiModalFooter/ChatAiModalFooter.styles.js +26 -2
  49. package/lib/components/molecules/ChatAIModal/components/ChatAiModalHeader/ChatAiModalHeader.helpers.js +20 -1
  50. package/lib/components/molecules/ChatAIModal/components/ChatAiModalHeader/ChatAiModalHeader.js +87 -74
  51. package/lib/components/molecules/ChatAIMyAgents/ChatAIMyAgents.helpers.js +39 -0
  52. package/lib/components/molecules/ChatAIMyAgents/ChatAIMyAgents.js +30 -33
  53. package/lib/components/molecules/ChatAIMySkills/ChatAIMySkills.helpers.js +41 -0
  54. package/lib/components/molecules/ChatAIMySkills/ChatAIMySkills.js +9 -35
  55. package/lib/components/molecules/ChatFooter/ChatFooter.js +4 -10
  56. package/lib/components/molecules/Sidebar/Sidebar.helpers.js +43 -0
  57. package/lib/components/molecules/Sidebar/Sidebar.js +46 -61
  58. package/lib/components/organisms/AbmAgentModal/AbmAgentModal.helpers.js +314 -1
  59. package/lib/components/organisms/AbmAgentModal/AbmAgentModal.js +261 -480
  60. package/lib/components/organisms/AbmSkillModal/AbmSkillModal.helpers.js +37 -0
  61. package/lib/components/organisms/AbmSkillModal/AbmSkillModal.js +13 -25
  62. package/lib/constants/permissions/index.js +2 -2
  63. package/lib/constants/permissions/utils.js +1 -4
  64. package/lib/dev/DevReasoningTimeline.js +37 -68
  65. package/lib/dev/Providers.js +3 -5
  66. package/lib/hooks/useAgentModel/useCreateAgent.helpers.js +144 -0
  67. package/lib/hooks/useAgentModel/useCreateAgent.js +38 -102
  68. package/lib/hooks/useChatManager/useChatManager.helpers.js +550 -1
  69. package/lib/hooks/useChatManager/useChatManager.js +245 -429
  70. package/lib/hooks/useChatMessages/useChatMessages.helpers.js +257 -1
  71. package/lib/hooks/useChatMessages/useChatMessages.js +50 -206
  72. package/lib/hooks/useContextMentions.helpers.js +61 -1
  73. package/lib/hooks/useContextMentions.js +5 -62
  74. package/lib/hooks/useEntitySearch.helpers.js +49 -1
  75. package/lib/hooks/useEntitySearch.js +22 -53
  76. package/lib/hooks/useFrequentlyUsedActions.js +22 -60
  77. package/lib/hooks/useOrchestratorStream/useOrchestratorStream.helpers.js +86 -0
  78. package/lib/hooks/useOrchestratorStream/useOrchestratorStream.js +8 -82
  79. package/lib/index.js +2 -5
  80. package/lib/lang/br/index.js +1 -26
  81. package/lib/lang/en/index.js +1 -26
  82. package/lib/lang/es/index.js +1 -26
  83. package/lib/lang/fr/index.js +1 -26
  84. package/lib/services/maia/Actions/getFrequentlyUsedActions.js +1 -1
  85. package/lib/services/maia/Agents/getAgents.helpers.js +61 -1
  86. package/lib/services/maia/Agents/getAgents.js +31 -59
  87. package/lib/services/utils/mapChatMessages.helpers.js +223 -0
  88. package/lib/services/utils/mapChatMessages.js +25 -249
  89. package/lib/store/sessions/sessionStreamManager.helpers.js +134 -0
  90. package/lib/store/sessions/sessionStreamManager.js +213 -273
  91. package/lib/styles/cascade.js +3 -29
  92. package/lib/styles/transitions.js +1 -3
  93. package/lib/types/global.d.js +1 -1
  94. package/lib/utils/hoursPlannerQuickActionType.js +1 -74
  95. package/lib/utils/renderContextMentions.helpers.js +110 -0
  96. package/lib/utils/renderContextMentions.js +4 -110
  97. package/lib/utils/streamActivityMessages.helpers.js +222 -0
  98. package/lib/utils/streamActivityMessages.js +21 -251
  99. package/package.json +1 -1
  100. package/lib/components/atoms/ActionableButton.spec.js +0 -111
  101. package/lib/components/atoms/AgentActivityIndicator/AgentActivityIndicator.spec.js +0 -52
  102. package/lib/components/atoms/AgentActivityIndicator/AgentActivityIndicator.utils.spec.js +0 -11
  103. package/lib/components/atoms/ApprovalBox/ApprovalBox.spec.js +0 -135
  104. package/lib/components/atoms/AttachmentCard/AttachmentCard.spec.js +0 -123
  105. package/lib/components/atoms/AttachmentCard/AttachmentCardAudio.helpers.spec.js +0 -66
  106. package/lib/components/atoms/AttachmentCard/AttachmentCardAudio.spec.js +0 -211
  107. package/lib/components/atoms/AttachmentCard/AttachmentCardImage.spec.js +0 -78
  108. package/lib/components/atoms/AttachmentPreviewModal/AttachmentPreviewModal.helpers.spec.js +0 -41
  109. package/lib/components/atoms/AttachmentPreviewModal/AttachmentPreviewModal.spec.js +0 -253
  110. package/lib/components/atoms/AttachmentPreviewModal/ExcelPreview.spec.js +0 -80
  111. package/lib/components/atoms/AttachmentPreviewModal/PptPreview.helpers.spec.js +0 -33
  112. package/lib/components/atoms/AttachmentPreviewModal/PptPreview.spec.js +0 -25
  113. package/lib/components/atoms/AttachmentPreviewModal/WordPreview.helpers.spec.js +0 -11
  114. package/lib/components/atoms/AttachmentPreviewModal/WordPreview.spec.js +0 -77
  115. package/lib/components/atoms/Backdrop/Backdrop.spec.js +0 -28
  116. package/lib/components/atoms/CardMenu/CardMenu.spec.js +0 -56
  117. package/lib/components/atoms/ChatClientSelector/ChatClientSelector.spec.js +0 -67
  118. package/lib/components/atoms/Checkbox/Checkbox.spec.js +0 -27
  119. package/lib/components/atoms/Chip/Chip.spec.js +0 -82
  120. package/lib/components/atoms/ChipLlm/ChipLlm.spec.js +0 -26
  121. package/lib/components/atoms/ClientSelector/ClientSelector.spec.js +0 -88
  122. package/lib/components/atoms/ContextMentionChip/ContextMentionChip.spec.js +0 -29
  123. package/lib/components/atoms/ContextMentionChip/MentionOverflowLabel.spec.js +0 -46
  124. package/lib/components/atoms/ContextMentionChip/buildChipElement.helpers.spec.js +0 -77
  125. package/lib/components/atoms/ContextMentionChip/buildChipElement.spec.js +0 -81
  126. package/lib/components/atoms/ContextMentionEditor/ContextMentionEditor.helpers.spec.js +0 -48
  127. package/lib/components/atoms/ContextMentionEditor/ContextMentionEditor.spec.js +0 -231
  128. package/lib/components/atoms/ContextMentionItem/ContextMentionItem.spec.js +0 -107
  129. package/lib/components/atoms/ContextMentionPopover/ContextMentionPopover.spec.js +0 -136
  130. package/lib/components/atoms/CopyToClipboard.spec.js +0 -74
  131. package/lib/components/atoms/EditableLabel/EditableLabel.spec.js +0 -76
  132. package/lib/components/atoms/EntitySelector/EntitySelector.spec.js +0 -86
  133. package/lib/components/atoms/Expand/Expand.spec.js +0 -57
  134. package/lib/components/atoms/Fade/Fade.spec.js +0 -31
  135. package/lib/components/atoms/FeedbackButton/FeedbackButton.spec.js +0 -75
  136. package/lib/components/atoms/FrequentlyAskedQuestions/FrequentlyAskedQuestions.spec.js +0 -104
  137. package/lib/components/atoms/FrequentlyUsedActions/FrequentlyUsedActions.spec.js +0 -91
  138. package/lib/components/atoms/HelpButton.spec.js +0 -87
  139. package/lib/components/atoms/ImagePreview/ImagePreview.spec.js +0 -96
  140. package/lib/components/atoms/ListMenuOption/ListMenuOption.spec.js +0 -54
  141. package/lib/components/atoms/LoadingFaqs/LoadingFaqs.spec.js +0 -21
  142. package/lib/components/atoms/LoadingSearchClients/LoadingSearchClients.spec.js +0 -20
  143. package/lib/components/atoms/LoadingSearchProjects/LoadingSearchProjects.spec.js +0 -26
  144. package/lib/components/atoms/LoadingText/LoadingText.spec.js +0 -25
  145. package/lib/components/atoms/MAIAButton/MAIAButton.spec.js +0 -42
  146. package/lib/components/atoms/MAIAError/MAIAError.spec.js +0 -27
  147. package/lib/components/atoms/MAIAInput/MAIAInput.helpers.spec.js +0 -26
  148. package/lib/components/atoms/MAIAInput/MAIAInput.spec.js +0 -444
  149. package/lib/components/atoms/MAIAInput/MAIAInputEditor.helpers.spec.js +0 -20
  150. package/lib/components/atoms/MAIAInput/MAIAInputEditor.spec.js +0 -53
  151. package/lib/components/atoms/MAIAInput/maiaInputLayout.spec.js +0 -22
  152. package/lib/components/atoms/MaiaStreamdown/MaiaStreamdown.spec.js +0 -64
  153. package/lib/components/atoms/MaiaWrapper/MaiaWrapper.spec.js +0 -43
  154. package/lib/components/atoms/MaiaWrapper/MaiaWrapperBase.spec.js +0 -114
  155. package/lib/components/atoms/MaiaWrapper/ModernMaiaWrapper.spec.js +0 -51
  156. package/lib/components/atoms/ModalClientAccess/ModalClientAccess.spec.js +0 -48
  157. package/lib/components/atoms/ModalProject/ModalProject.spec.js +0 -66
  158. package/lib/components/atoms/NextPageLoader.spec.js +0 -37
  159. package/lib/components/atoms/OnboardingModalButton/OnboardingModal.spec.js +0 -20
  160. package/lib/components/atoms/OnboardingModalButton/OnboardingModalButton.helpers.spec.js +0 -35
  161. package/lib/components/atoms/OnboardingModalButton/OnboardingModalButton.spec.js +0 -47
  162. package/lib/components/atoms/OptionAccessibility/OptionAccessibility.spec.js +0 -86
  163. package/lib/components/atoms/PrimaryButton.spec.js +0 -42
  164. package/lib/components/atoms/ProjectSelector/ProjectSelector.spec.js +0 -69
  165. package/lib/components/atoms/ReasoningBlock/ReasoningBlock.spec.js +0 -69
  166. package/lib/components/atoms/ReasoningBlock/ReasoningSteps.spec.js +0 -59
  167. package/lib/components/atoms/ReasoningBlock/ReasoningTimeline.spec.js +0 -170
  168. package/lib/components/atoms/ReasoningBlock/groupParallelSteps.spec.js +0 -199
  169. package/lib/components/atoms/ReasoningBlock/reasoningLeading.spec.js +0 -70
  170. package/lib/components/atoms/ReasoningBlock/reasoningLiveNarration.spec.js +0 -120
  171. package/lib/components/atoms/ReasoningBlock/reasoningMotion.js +0 -8
  172. package/lib/components/atoms/ReasoningBlock/reasoningTimeline.helpers.spec.js +0 -31
  173. package/lib/components/atoms/ReasoningBlock/useCollapsibleHeight.js +0 -52
  174. package/lib/components/atoms/ReasoningBlock/useCollapsibleHeight.spec.js +0 -90
  175. package/lib/components/atoms/ReasoningBlock/useReasoningMarkerHandoff.js +0 -29
  176. package/lib/components/atoms/ReasoningBlock/useReasoningMarkerHandoff.spec.js +0 -38
  177. package/lib/components/atoms/SessionGeneratingDot/SessionGeneratingDot.spec.js +0 -16
  178. package/lib/components/atoms/SkillsDropdown/SkillsDropdown.spec.js +0 -107
  179. package/lib/components/atoms/SlashCommandChip/SlashCommandChip.spec.js +0 -24
  180. package/lib/components/atoms/SlashCommandDropdown/SlashCommandDropdown.spec.js +0 -85
  181. package/lib/components/atoms/Switch/Switch.spec.js +0 -41
  182. package/lib/components/atoms/TextArea/CustomTextArea.spec.js +0 -52
  183. package/lib/components/atoms/TextArea/TextArea.spec.js +0 -68
  184. package/lib/components/atoms/ThirdButton.spec.js +0 -29
  185. package/lib/components/atoms/VideoModal/VideoModal.spec.js +0 -68
  186. package/lib/components/atoms/WithAppCfg.spec.js +0 -60
  187. package/lib/components/molecules/AbmSection/AbmAccessibilitySection/AbmAccessibilitySection.helpers.spec.js +0 -53
  188. package/lib/components/molecules/AbmSection/AbmAccessibilitySection/AbmAccessibilitySection.spec.js +0 -495
  189. package/lib/components/molecules/AbmSection/AbmGeneralSection.helpers.spec.js +0 -57
  190. package/lib/components/molecules/AbmSection/AbmGeneralSection.spec.js +0 -227
  191. package/lib/components/molecules/AbmSection/AbmKnowledgeSection.helpers.spec.js +0 -108
  192. package/lib/components/molecules/AbmSection/AbmKnowledgeSection.spec.js +0 -254
  193. package/lib/components/molecules/AbmSection/AbmLoaderFiles.helpers.spec.js +0 -50
  194. package/lib/components/molecules/AbmSection/AbmLoaderFiles.spec.js +0 -94
  195. package/lib/components/molecules/AgentInputBlock/AgentInputBlockMessage.js +0 -83
  196. package/lib/components/molecules/AgentInputBlock/AgentInputBlockMessage.styles.js +0 -30
  197. package/lib/components/molecules/AgentInputBlock/index.js +0 -5
  198. package/lib/components/molecules/AgentInputBlock/resolveAgentInputBlock.js +0 -52
  199. package/lib/components/molecules/AgentInputBlock/resolveAgentInputBlock.spec.js +0 -76
  200. package/lib/components/molecules/AgentInputBlock/resolveLegacyContextSession.js +0 -20
  201. package/lib/components/molecules/AgentInputBlock/resolveLegacyContextSession.spec.js +0 -34
  202. package/lib/components/molecules/AgentInputBlock/useAgentChangeModelAction.js +0 -36
  203. package/lib/components/molecules/ChatAIClientSelector/ChatAIClientSelector.spec.js +0 -66
  204. package/lib/components/molecules/ChatAIContent/ChatAIContent.spec.js +0 -145
  205. package/lib/components/molecules/ChatAIHistory/ChatAIHistory.spec.js +0 -204
  206. package/lib/components/molecules/ChatAIHome/ChatAIHome.spec.js +0 -246
  207. package/lib/components/molecules/ChatAIHome/ChatAIHomeMaiaker.spec.js +0 -86
  208. package/lib/components/molecules/ChatAIMessages/ChatAICreateAgentActions.spec.js +0 -104
  209. package/lib/components/molecules/ChatAIMessages/ChatAIMessages.helpers.spec.js +0 -77
  210. package/lib/components/molecules/ChatAIMessages/ChatAIMessages.spec.js +0 -445
  211. package/lib/components/molecules/ChatAIMessages/ChatAISuggestions.spec.js +0 -46
  212. package/lib/components/molecules/ChatAIModal/ChatAIModal.helpers.spec.js +0 -471
  213. package/lib/components/molecules/ChatAIModal/ChatAIModal.spec.js +0 -659
  214. package/lib/components/molecules/ChatAIModal/components/ChatAiAgentOptions/ChatAiAgentOptions.helpers.spec.js +0 -33
  215. package/lib/components/molecules/ChatAIModal/components/ChatAiAgentOptions/ChatAiAgentOptions.spec.js +0 -116
  216. package/lib/components/molecules/ChatAIModal/components/ChatAiModalFooter/ChatAiModalFooter.spec.js +0 -134
  217. package/lib/components/molecules/ChatAIModal/components/ChatAiModalHeader/ChatAiModalHeader.helpers.spec.js +0 -95
  218. package/lib/components/molecules/ChatAIModal/components/ChatAiModalHeader/ChatAiModalHeader.spec.js +0 -241
  219. package/lib/components/molecules/ChatAIModal/components/MaiaMinimizedPill/MaiaMinimizedPill.spec.js +0 -37
  220. package/lib/components/molecules/ChatAIModal/constants.spec.js +0 -16
  221. package/lib/components/molecules/ChatAIModal/floatingPanelMotion/FloatingPanelMotion.spec.js +0 -22
  222. package/lib/components/molecules/ChatAIModal/floatingPanelMotion/useFloatingPanelDragTilt.spec.js +0 -67
  223. package/lib/components/molecules/ChatAIModal/layout.spec.js +0 -72
  224. package/lib/components/molecules/ChatAIMyAgents/ChatAIMyAgents.spec.js +0 -172
  225. package/lib/components/molecules/ChatAIMySkills/ChatAIMySkills.spec.js +0 -128
  226. package/lib/components/molecules/ChatAIProjectSelector/ChatAIProjectSelector.spec.js +0 -66
  227. package/lib/components/molecules/ChatFooter/ChatFooter.spec.js +0 -369
  228. package/lib/components/molecules/ChatFooter/ChatFooterCorAccess.spec.js +0 -10
  229. package/lib/components/molecules/ChatFooter/ChatFooterFaqs.helpers.spec.js +0 -82
  230. package/lib/components/molecules/ChatFooter/ChatFooterFaqs.spec.js +0 -139
  231. package/lib/components/molecules/ContextMentionInput/ContextMentionInput.spec.js +0 -84
  232. package/lib/components/molecules/MessageFeedback/MessageFeedback.spec.js +0 -116
  233. package/lib/components/molecules/ProjectSummaryChat/ProjectSummaryChat.spec.js +0 -126
  234. package/lib/components/molecules/ProjectSummaryConfig/ProjectSummaryConfig.spec.js +0 -115
  235. package/lib/components/molecules/ProjectSummaryContent/ProjectSummaryContent.spec.js +0 -79
  236. package/lib/components/molecules/ProjectSummaryModal/ProjectSummaryModal.spec.js +0 -37
  237. package/lib/components/molecules/Sidebar/Sidebar.spec.js +0 -453
  238. package/lib/components/organisms/AbmAgentModal/AbmAgentModal.helpers.spec.js +0 -391
  239. package/lib/components/organisms/AbmAgentModal/AbmAgentModal.spec.js +0 -1204
  240. package/lib/components/organisms/AbmSkillGenerateModal/AbmSkillGenerateModal.spec.js +0 -112
  241. package/lib/components/organisms/AbmSkillModal/AbmSkillModal.spec.js +0 -405
  242. package/lib/components/organisms/ChatAI/ChatAI.spec.js +0 -174
  243. package/lib/components/organisms/ChatAIPage/ChatAIPage.js +0 -525
  244. package/lib/components/organisms/ChatAIPage/ChatAIPage.spec.js +0 -246
  245. package/lib/components/organisms/ChatAIPage/ChatAIPage.styles.js +0 -16
  246. package/lib/components/organisms/ChatAIPage/ChatAIPageHeader.js +0 -253
  247. package/lib/components/organisms/ChatAIPage/ChatAIPageHeader.spec.js +0 -139
  248. package/lib/components/organisms/ChatAIPage/ChatAIPageHeader.styles.js +0 -13
  249. package/lib/components/organisms/ChatAIPage/ChatAIPageHome.js +0 -275
  250. package/lib/components/organisms/ChatAIPage/ChatAIPageHome.spec.js +0 -275
  251. package/lib/components/organisms/ChatAIPage/ChatAIPageHome.styles.js +0 -195
  252. package/lib/components/organisms/ChatAIPage/ChatAIPageHomeActionCardSlot.js +0 -94
  253. package/lib/components/organisms/ChatAIPage/ChatAIPageHomeActionCardSlot.spec.js +0 -69
  254. package/lib/components/organisms/ChatAIPage/ChatAIPageHomeActionCards.skeleton.js +0 -38
  255. package/lib/components/organisms/ChatAIPage/getDaypart.js +0 -9
  256. package/lib/components/organisms/ChatAIPage/getDaypart.spec.js +0 -19
  257. package/lib/components/organisms/ChatAIPage/index.js +0 -3
  258. package/lib/components/organisms/ClientAIButton/ClientAIButton.spec.js +0 -53
  259. package/lib/components/organisms/DeleteAgentModal/DeleteAgentModal.spec.js +0 -59
  260. package/lib/components/organisms/DeleteQuestionModal/DeleteQuestionModal.spec.js +0 -79
  261. package/lib/components/organisms/EditQuestionModal/EditQuestionModal.spec.js +0 -86
  262. package/lib/components/organisms/ModalFileExceeds/ModalFileExceeds.spec.js +0 -49
  263. package/lib/components/organisms/ProjectAIButton/ProjectAIButton.spec.js +0 -67
  264. package/lib/components/organisms/ProjectSummary/ProjectSummary.spec.js +0 -117
  265. package/lib/components/organisms/SnackBar/Snackbar.spec.js +0 -66
  266. package/lib/components/organisms/SourcesInformation/SourceItem.spec.js +0 -19
  267. package/lib/components/organisms/SourcesInformation/SourcesInformationModal.spec.js +0 -52
  268. package/lib/constants/maiaExternalConnectorsAccess.spec.js +0 -29
  269. package/lib/constants/maiaFeatureAccess.spec.js +0 -30
  270. package/lib/constants/maiaHourAgentAccess.spec.js +0 -30
  271. package/lib/constants/maiaTaskPanelAccess.spec.js +0 -30
  272. package/lib/constants/permissions/clientRoleAccess.spec.js +0 -31
  273. package/lib/constants/permissions/utils.spec.js +0 -128
  274. package/lib/dev/DevMaiaPage.js +0 -30
  275. package/lib/hooks/frequentlyUsedActionsCache.js +0 -17
  276. package/lib/hooks/frequentlyUsedActionsCache.spec.js +0 -25
  277. package/lib/hooks/useAccessClient/useAccessClient.spec.js +0 -149
  278. package/lib/hooks/useAgentModel/useAgentModel.spec.js +0 -83
  279. package/lib/hooks/useAgentModel/useCreateAgent.spec.js +0 -231
  280. package/lib/hooks/useAgentModel/useDeleteAgent.spec.js +0 -183
  281. package/lib/hooks/useAgentModel/useUpdateAgent.spec.js +0 -313
  282. package/lib/hooks/useAgentSuggestions.spec.js +0 -89
  283. package/lib/hooks/useCaretPosition.spec.js +0 -58
  284. package/lib/hooks/useChatManager/useChatManager.helpers.spec.js +0 -506
  285. package/lib/hooks/useChatManager/useChatManager.spec.js +0 -1261
  286. package/lib/hooks/useChatMessages/useChatMessages.helpers.spec.js +0 -176
  287. package/lib/hooks/useChatMessages/useChatMessages.spec.js +0 -379
  288. package/lib/hooks/useChats/useChats.spec.js +0 -208
  289. package/lib/hooks/useClientSearch.helpers.spec.js +0 -52
  290. package/lib/hooks/useClientSearch.spec.js +0 -86
  291. package/lib/hooks/useContextMentions.helpers.spec.js +0 -143
  292. package/lib/hooks/useContextMentions.spec.js +0 -239
  293. package/lib/hooks/useContextPinPopover.helpers.spec.js +0 -115
  294. package/lib/hooks/useContextPinPopover.spec.js +0 -159
  295. package/lib/hooks/useContinueLegacyContextInNewChat/index.js +0 -2
  296. package/lib/hooks/useContinueLegacyContextInNewChat/useContinueLegacyContextInNewChat.js +0 -93
  297. package/lib/hooks/useDebounce.spec.js +0 -42
  298. package/lib/hooks/useEntitySearch.helpers.spec.js +0 -321
  299. package/lib/hooks/useEntitySearch.spec.js +0 -443
  300. package/lib/hooks/useEvent.spec.js +0 -45
  301. package/lib/hooks/useFrequentlyAskedQuestions.spec.js +0 -222
  302. package/lib/hooks/useFrequentlyUsedActions.spec.js +0 -135
  303. package/lib/hooks/useIsMaiaPageRoute.js +0 -26
  304. package/lib/hooks/useIsMaiaPageRoute.spec.js +0 -26
  305. package/lib/hooks/useKnowledge/deleteKnowledge.spec.js +0 -122
  306. package/lib/hooks/useKnowledge/downloadKnowledge.spec.js +0 -148
  307. package/lib/hooks/useKnowledge/saveKnowledge.spec.js +0 -104
  308. package/lib/hooks/useKnowledge/useKnowledgeOperations.spec.js +0 -178
  309. package/lib/hooks/useMaiaChatSessionMeta/index.js +0 -2
  310. package/lib/hooks/useMaiaChatSessionMeta/useMaiaChatSessionMeta.js +0 -24
  311. package/lib/hooks/useMentionAllowedTypes.spec.js +0 -89
  312. package/lib/hooks/useMentionPopover.helpers.spec.js +0 -71
  313. package/lib/hooks/useMentionPopover.spec.js +0 -215
  314. package/lib/hooks/useMinimizedPillBottomOffset.helpers.spec.js +0 -132
  315. package/lib/hooks/useMinimizedPillBottomOffset.spec.js +0 -89
  316. package/lib/hooks/useMinimizedPillNoveltyDot/useMinimizedPillNoveltyDot.spec.js +0 -67
  317. package/lib/hooks/useModal/useModal.spec.js +0 -73
  318. package/lib/hooks/useOrchestratorStream/useOrchestratorStream.spec.js +0 -192
  319. package/lib/hooks/useProjectSearch.helpers.spec.js +0 -70
  320. package/lib/hooks/useProjectSearch.spec.js +0 -91
  321. package/lib/hooks/useProjectSummary.spec.js +0 -193
  322. package/lib/hooks/useProjectSummaryConfig.helpers.spec.js +0 -92
  323. package/lib/hooks/useProjectSummaryConfig.spec.js +0 -133
  324. package/lib/hooks/useReasoningTrace/reasoningStore.spec.js +0 -112
  325. package/lib/hooks/useRecentClientsSearch.helpers.spec.js +0 -33
  326. package/lib/hooks/useRecentClientsSearch.spec.js +0 -85
  327. package/lib/hooks/useRecentContexts.spec.js +0 -139
  328. package/lib/hooks/useResize.spec.js +0 -37
  329. package/lib/hooks/useSkillsCatalog.spec.js +0 -88
  330. package/lib/hooks/useSlashCommands.spec.js +0 -139
  331. package/lib/hooks/useSmoothStreamText/useSmoothStreamText.spec.js +0 -101
  332. package/lib/hooks/useSnackBarManager/useSnackBarManager.spec.js +0 -33
  333. package/lib/hooks/useStreamResponse.spec.js +0 -199
  334. package/lib/hooks/useT.spec.js +0 -20
  335. package/lib/hooks/useToggle.spec.js +0 -33
  336. package/lib/hooks/useToggleFavorite/useToggleFavorite.spec.js +0 -171
  337. package/lib/services/maia/Access/updateAccess.spec.js +0 -137
  338. package/lib/services/maia/Actions/getFrequentlyUsedActions.spec.js +0 -56
  339. package/lib/services/maia/Actions/getSlashCommands.spec.js +0 -91
  340. package/lib/services/maia/Agents/connectors.spec.js +0 -359
  341. package/lib/services/maia/Agents/createAgent.spec.js +0 -55
  342. package/lib/services/maia/Agents/deleteAgent.spec.js +0 -57
  343. package/lib/services/maia/Agents/fetchAgentDetail.spec.js +0 -108
  344. package/lib/services/maia/Agents/getAgentById.spec.js +0 -190
  345. package/lib/services/maia/Agents/getAgentModels.spec.js +0 -190
  346. package/lib/services/maia/Agents/getAgentSuggestions.spec.js +0 -89
  347. package/lib/services/maia/Agents/getAgents.helpers.spec.js +0 -211
  348. package/lib/services/maia/Agents/getAgents.spec.js +0 -697
  349. package/lib/services/maia/Agents/setAgentToolGroups.spec.js +0 -45
  350. package/lib/services/maia/Agents/toggleFavorite.spec.js +0 -59
  351. package/lib/services/maia/Agents/updateAgent.spec.js +0 -48
  352. package/lib/services/maia/Chats/deleteChat.spec.js +0 -31
  353. package/lib/services/maia/Chats/getChatMessages.spec.js +0 -150
  354. package/lib/services/maia/Chats/getChatsByUserId.spec.js +0 -149
  355. package/lib/services/maia/Chats/markSessionAsRead.spec.js +0 -30
  356. package/lib/services/maia/Chats/patchChat.spec.js +0 -41
  357. package/lib/services/maia/Chats/wasHelpfulChat.spec.js +0 -28
  358. package/lib/services/maia/Faqs/getFrequentlyAskedQuestions.spec.js +0 -58
  359. package/lib/services/maia/Knowledge/delete.spec.js +0 -45
  360. package/lib/services/maia/Knowledge/download.spec.js +0 -78
  361. package/lib/services/maia/Knowledge/save.spec.js +0 -58
  362. package/lib/services/maia/Orchestrator/orchestrator.helpers.spec.js +0 -153
  363. package/lib/services/maia/Orchestrator/orchestrator.spec.js +0 -181
  364. package/lib/services/maia/RecentClients/getRecentClients.spec.js +0 -52
  365. package/lib/services/maia/RecentContexts/getRecentContexts.spec.js +0 -103
  366. package/lib/services/maia/RecentProjects/getRecentProjects.spec.js +0 -82
  367. package/lib/services/maia/RecentTasks/getRecentTasks.spec.js +0 -63
  368. package/lib/services/maia/RecentUsers/getRecentUsers.spec.js +0 -82
  369. package/lib/services/maia/Skills/createSkill.spec.js +0 -68
  370. package/lib/services/maia/Skills/deleteSkill.spec.js +0 -42
  371. package/lib/services/maia/Skills/generateSkill.spec.js +0 -48
  372. package/lib/services/maia/Skills/getSkills.spec.js +0 -152
  373. package/lib/services/maia/Skills/updateSkill.spec.js +0 -62
  374. package/lib/services/maia/client.spec.js +0 -56
  375. package/lib/services/utils/fetchCOR.spec.js +0 -211
  376. package/lib/services/utils/getCookie.spec.js +0 -20
  377. package/lib/services/utils/mapChatMessages.spec.js +0 -254
  378. package/lib/store/chatsSidebarOptimistic.spec.js +0 -112
  379. package/lib/store/maiaLastChatPersistence.spec.js +0 -22
  380. package/lib/store/maiaPanelSessionPersistence.spec.js +0 -62
  381. package/lib/store/sessions/sessionNotificationSound.spec.js +0 -145
  382. package/lib/store/sessions/sessionNotifications.helpers.spec.js +0 -63
  383. package/lib/store/sessions/sessionNotifications.spec.js +0 -106
  384. package/lib/store/sessions/sessionStreamManager.spec.js +0 -503
  385. package/lib/store/sessions/sessions.types.spec.js +0 -16
  386. package/lib/store/sessions/useSessionsStore.spec.js +0 -135
  387. package/lib/store/useChatsStore.spec.js +0 -619
  388. package/lib/store/useFaqsStore.spec.js +0 -57
  389. package/lib/utils/actionCategoryMap.spec.js +0 -18
  390. package/lib/utils/agentDisplayName.spec.js +0 -44
  391. package/lib/utils/autoApproveStorage.spec.js +0 -25
  392. package/lib/utils/chatInputFiles.spec.js +0 -39
  393. package/lib/utils/contextMentionIcons.spec.js +0 -41
  394. package/lib/utils/contextMentionLabel.spec.js +0 -13
  395. package/lib/utils/contextMentionTriggers.spec.js +0 -38
  396. package/lib/utils/contextMentionTypeLabel.spec.js +0 -14
  397. package/lib/utils/corConnectorMentionTypes.spec.js +0 -23
  398. package/lib/utils/entityLinkRender.spec.js +0 -72
  399. package/lib/utils/fileDownloadHelper.spec.js +0 -67
  400. package/lib/utils/formatQuickActionMessage.spec.js +0 -27
  401. package/lib/utils/formatUnreadCount.spec.js +0 -12
  402. package/lib/utils/getUnitFileSize.spec.js +0 -18
  403. package/lib/utils/hitlAnalytics.spec.js +0 -100
  404. package/lib/utils/hoursPlannerQuickActionType.spec.js +0 -64
  405. package/lib/utils/imagePreprocessor.helpers.spec.js +0 -28
  406. package/lib/utils/imagePreprocessor.spec.js +0 -112
  407. package/lib/utils/maiaPageRoute.js +0 -24
  408. package/lib/utils/maiaPageRoute.spec.js +0 -23
  409. package/lib/utils/mapBackendLang.spec.js +0 -19
  410. package/lib/utils/navigateContextEntity.spec.js +0 -50
  411. package/lib/utils/normalizeAgentConnectors.spec.js +0 -98
  412. package/lib/utils/orchestratorSubagents.spec.js +0 -32
  413. package/lib/utils/reasoningMappers.spec.js +0 -103
  414. package/lib/utils/recentContextsHomeLimit.spec.js +0 -32
  415. package/lib/utils/renderContextMentions.spec.js +0 -158
  416. package/lib/utils/retryCompletion.spec.js +0 -99
  417. package/lib/utils/skillContentSize.spec.js +0 -13
  418. package/lib/utils/slashCommandMarker.spec.js +0 -43
  419. package/lib/utils/sortManagerHoursHomeFuas.spec.js +0 -51
  420. package/lib/utils/sseStreamContent.spec.js +0 -31
  421. package/lib/utils/streamActivityMessages.spec.js +0 -253
  422. package/lib/utils/validateTrimmedFields.spec.js +0 -26
@@ -0,0 +1,74 @@
1
+ var NEW_FORMAT_EXTENSIONS = ['.png', '.jpg', '.jpeg', '.pdf'];
2
+ var OLD_FORMAT_EXTENSIONS = ['.txt', '.md', '.csv', '.doc', '.docx', '.xlsx', '.xls', '.ppt', '.pptx'];
3
+ var AUDIO_FORMAT_EXTENSIONS = ['.flac', '.m4a', '.mp3', '.mp4', '.oga', '.ogg', '.wav', '.webm'];
4
+ export var parseChatInputFileExtension = function parseChatInputFileExtension(fileName) {
5
+ var _fileNameParts$pop;
6
+ var fileNameParts = fileName.split('.');
7
+ return fileNameParts.length > 1 ? ".".concat((_fileNameParts$pop = fileNameParts.pop()) === null || _fileNameParts$pop === void 0 ? void 0 : _fileNameParts$pop.toLowerCase()) : '';
8
+ };
9
+ var isKnownAttachmentFormat = function isKnownAttachmentFormat(extension) {
10
+ return NEW_FORMAT_EXTENSIONS.includes(extension) || OLD_FORMAT_EXTENSIONS.includes(extension) || AUDIO_FORMAT_EXTENSIONS.includes(extension);
11
+ };
12
+
13
+ /** Clasifica archivos del input del chat (tamaño, cantidad, tipo permitido). */
14
+ export var processIncomingChatInputFiles = function processIncomingChatInputFiles(incoming, options) {
15
+ var exceededFiles = [];
16
+ var excludedFiles = [];
17
+ var fileSizes = {};
18
+ var filesToAttach = [];
19
+ var filesInserted = options.currentAttachmentCount;
20
+ var exceedsMaxSize = function exceedsMaxSize(extension, size) {
21
+ return size > options.getMaxSizeMb(extension) * 1024 * 1024;
22
+ };
23
+ incoming.forEach(function (file) {
24
+ var excludedFile = false;
25
+ var fileExtension = parseChatInputFileExtension(file.name);
26
+ if (!options.allowedExtensions.includes(fileExtension)) {
27
+ return;
28
+ }
29
+ fileSizes[file.name] = file.size;
30
+ if (!isKnownAttachmentFormat(fileExtension)) {
31
+ return;
32
+ }
33
+ if (exceedsMaxSize(fileExtension, file.size)) {
34
+ exceededFiles.push(file.name);
35
+ excludedFile = true;
36
+ }
37
+ if (filesInserted + 1 > options.maxAttachments) {
38
+ excludedFiles.push(file.name);
39
+ excludedFile = true;
40
+ }
41
+ if (!excludedFile) {
42
+ filesInserted += 1;
43
+ var typeFile = file.type || options.fileTypes[fileExtension];
44
+ filesToAttach.push(new File([file], file.name, {
45
+ type: typeFile
46
+ }));
47
+ }
48
+ });
49
+ return {
50
+ filesToAttach: filesToAttach,
51
+ exceededFiles: exceededFiles,
52
+ excludedFiles: excludedFiles,
53
+ fileSizes: fileSizes
54
+ };
55
+ };
56
+ export var shouldOpenAttachmentValidationModal = function shouldOpenAttachmentValidationModal(excludedFiles, exceededFiles) {
57
+ return excludedFiles.length > 0 || exceededFiles.length > 0;
58
+ };
59
+ export var isImageAttachmentFile = function isImageAttachmentFile(mimeType, fileName) {
60
+ return Boolean(mimeType === null || mimeType === void 0 ? void 0 : mimeType.startsWith('image/')) || /\.(png|jpe?g|gif|webp|bmp|svg)$/i.test(fileName || '');
61
+ };
62
+ export var shouldHandleDragLeaveEvent = function shouldHandleDragLeaveEvent(isFileDragActive, hasFilesInTransfer) {
63
+ return isFileDragActive || hasFilesInTransfer;
64
+ };
65
+ export var decrementFileDragCounter = function decrementFileDragCounter(counter) {
66
+ return Math.max(0, counter - 1);
67
+ };
68
+ export var shouldClearFileDragOverlay = function shouldClearFileDragOverlay(counterAfterLeave) {
69
+ return counterAfterLeave === 0;
70
+ };
71
+ export var shouldInterceptWrapperPaste = function shouldInterceptWrapperPaste(isTargetInsideContentEditable, pastedFilesCount) {
72
+ return !isTargetInsideContentEditable && pastedFilesCount > 0;
73
+ };
74
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJORVdfRk9STUFUX0VYVEVOU0lPTlMiLCJPTERfRk9STUFUX0VYVEVOU0lPTlMiLCJBVURJT19GT1JNQVRfRVhURU5TSU9OUyIsInBhcnNlQ2hhdElucHV0RmlsZUV4dGVuc2lvbiIsImZpbGVOYW1lIiwiX2ZpbGVOYW1lUGFydHMkcG9wIiwiZmlsZU5hbWVQYXJ0cyIsInNwbGl0IiwibGVuZ3RoIiwiY29uY2F0IiwicG9wIiwidG9Mb3dlckNhc2UiLCJpc0tub3duQXR0YWNobWVudEZvcm1hdCIsImV4dGVuc2lvbiIsImluY2x1ZGVzIiwicHJvY2Vzc0luY29taW5nQ2hhdElucHV0RmlsZXMiLCJpbmNvbWluZyIsIm9wdGlvbnMiLCJleGNlZWRlZEZpbGVzIiwiZXhjbHVkZWRGaWxlcyIsImZpbGVTaXplcyIsImZpbGVzVG9BdHRhY2giLCJmaWxlc0luc2VydGVkIiwiY3VycmVudEF0dGFjaG1lbnRDb3VudCIsImV4Y2VlZHNNYXhTaXplIiwic2l6ZSIsImdldE1heFNpemVNYiIsImZvckVhY2giLCJmaWxlIiwiZXhjbHVkZWRGaWxlIiwiZmlsZUV4dGVuc2lvbiIsIm5hbWUiLCJhbGxvd2VkRXh0ZW5zaW9ucyIsInB1c2giLCJtYXhBdHRhY2htZW50cyIsInR5cGVGaWxlIiwidHlwZSIsImZpbGVUeXBlcyIsIkZpbGUiLCJzaG91bGRPcGVuQXR0YWNobWVudFZhbGlkYXRpb25Nb2RhbCIsImlzSW1hZ2VBdHRhY2htZW50RmlsZSIsIm1pbWVUeXBlIiwiQm9vbGVhbiIsInN0YXJ0c1dpdGgiLCJ0ZXN0Iiwic2hvdWxkSGFuZGxlRHJhZ0xlYXZlRXZlbnQiLCJpc0ZpbGVEcmFnQWN0aXZlIiwiaGFzRmlsZXNJblRyYW5zZmVyIiwiZGVjcmVtZW50RmlsZURyYWdDb3VudGVyIiwiY291bnRlciIsIk1hdGgiLCJtYXgiLCJzaG91bGRDbGVhckZpbGVEcmFnT3ZlcmxheSIsImNvdW50ZXJBZnRlckxlYXZlIiwic2hvdWxkSW50ZXJjZXB0V3JhcHBlclBhc3RlIiwiaXNUYXJnZXRJbnNpZGVDb250ZW50RWRpdGFibGUiLCJwYXN0ZWRGaWxlc0NvdW50Il0sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvYXRvbXMvTUFJQUlucHV0L01BSUFJbnB1dC5hdHRhY2htZW50cy5oZWxwZXJzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB0eXBlIFByb2Nlc3NJbmNvbWluZ0NoYXRJbnB1dEZpbGVzUmVzdWx0ID0ge1xuICBmaWxlc1RvQXR0YWNoOiBGaWxlW11cbiAgZXhjZWVkZWRGaWxlczogc3RyaW5nW11cbiAgZXhjbHVkZWRGaWxlczogc3RyaW5nW11cbiAgZmlsZVNpemVzOiBSZWNvcmQ8c3RyaW5nLCBudW1iZXI+XG59XG5cbmV4cG9ydCB0eXBlIFByb2Nlc3NJbmNvbWluZ0NoYXRJbnB1dEZpbGVzT3B0aW9ucyA9IHtcbiAgYWxsb3dlZEV4dGVuc2lvbnM6IHJlYWRvbmx5IHN0cmluZ1tdXG4gIGZpbGVUeXBlczogUmVjb3JkPHN0cmluZywgc3RyaW5nPlxuICBjdXJyZW50QXR0YWNobWVudENvdW50OiBudW1iZXJcbiAgbWF4QXR0YWNobWVudHM6IG51bWJlclxuICBnZXRNYXhTaXplTWI6IChleHRlbnNpb246IHN0cmluZykgPT4gbnVtYmVyXG59XG5cbmNvbnN0IE5FV19GT1JNQVRfRVhURU5TSU9OUyA9IFsnLnBuZycsICcuanBnJywgJy5qcGVnJywgJy5wZGYnXSBhcyBjb25zdFxuY29uc3QgT0xEX0ZPUk1BVF9FWFRFTlNJT05TID0gWycudHh0JywgJy5tZCcsICcuY3N2JywgJy5kb2MnLCAnLmRvY3gnLCAnLnhsc3gnLCAnLnhscycsICcucHB0JywgJy5wcHR4J10gYXMgY29uc3RcbmNvbnN0IEFVRElPX0ZPUk1BVF9FWFRFTlNJT05TID0gWycuZmxhYycsICcubTRhJywgJy5tcDMnLCAnLm1wNCcsICcub2dhJywgJy5vZ2cnLCAnLndhdicsICcud2VibSddIGFzIGNvbnN0XG5cbmV4cG9ydCBjb25zdCBwYXJzZUNoYXRJbnB1dEZpbGVFeHRlbnNpb24gPSAoZmlsZU5hbWU6IHN0cmluZyk6IHN0cmluZyA9PiB7XG4gIGNvbnN0IGZpbGVOYW1lUGFydHMgPSBmaWxlTmFtZS5zcGxpdCgnLicpXG4gIHJldHVybiBmaWxlTmFtZVBhcnRzLmxlbmd0aCA+IDEgPyBgLiR7ZmlsZU5hbWVQYXJ0cy5wb3AoKT8udG9Mb3dlckNhc2UoKX1gIDogJydcbn1cblxuY29uc3QgaXNLbm93bkF0dGFjaG1lbnRGb3JtYXQgPSAoZXh0ZW5zaW9uOiBzdHJpbmcpOiBib29sZWFuID0+XG4gIChORVdfRk9STUFUX0VYVEVOU0lPTlMgYXMgcmVhZG9ubHkgc3RyaW5nW10pLmluY2x1ZGVzKGV4dGVuc2lvbikgfHxcbiAgKE9MRF9GT1JNQVRfRVhURU5TSU9OUyBhcyByZWFkb25seSBzdHJpbmdbXSkuaW5jbHVkZXMoZXh0ZW5zaW9uKSB8fFxuICAoQVVESU9fRk9STUFUX0VYVEVOU0lPTlMgYXMgcmVhZG9ubHkgc3RyaW5nW10pLmluY2x1ZGVzKGV4dGVuc2lvbilcblxuLyoqIENsYXNpZmljYSBhcmNoaXZvcyBkZWwgaW5wdXQgZGVsIGNoYXQgKHRhbWHDsW8sIGNhbnRpZGFkLCB0aXBvIHBlcm1pdGlkbykuICovXG5leHBvcnQgY29uc3QgcHJvY2Vzc0luY29taW5nQ2hhdElucHV0RmlsZXMgPSAoXG4gIGluY29taW5nOiBGaWxlW10sXG4gIG9wdGlvbnM6IFByb2Nlc3NJbmNvbWluZ0NoYXRJbnB1dEZpbGVzT3B0aW9uc1xuKTogUHJvY2Vzc0luY29taW5nQ2hhdElucHV0RmlsZXNSZXN1bHQgPT4ge1xuICBjb25zdCBleGNlZWRlZEZpbGVzOiBzdHJpbmdbXSA9IFtdXG4gIGNvbnN0IGV4Y2x1ZGVkRmlsZXM6IHN0cmluZ1tdID0gW11cbiAgY29uc3QgZmlsZVNpemVzOiBSZWNvcmQ8c3RyaW5nLCBudW1iZXI+ID0ge31cbiAgY29uc3QgZmlsZXNUb0F0dGFjaDogRmlsZVtdID0gW11cbiAgbGV0IGZpbGVzSW5zZXJ0ZWQgPSBvcHRpb25zLmN1cnJlbnRBdHRhY2htZW50Q291bnRcblxuICBjb25zdCBleGNlZWRzTWF4U2l6ZSA9IChleHRlbnNpb246IHN0cmluZywgc2l6ZTogbnVtYmVyKSA9PiBzaXplID4gb3B0aW9ucy5nZXRNYXhTaXplTWIoZXh0ZW5zaW9uKSAqIDEwMjQgKiAxMDI0XG5cbiAgaW5jb21pbmcuZm9yRWFjaChmaWxlID0+IHtcbiAgICBsZXQgZXhjbHVkZWRGaWxlID0gZmFsc2VcbiAgICBjb25zdCBmaWxlRXh0ZW5zaW9uID0gcGFyc2VDaGF0SW5wdXRGaWxlRXh0ZW5zaW9uKGZpbGUubmFtZSlcblxuICAgIGlmICghb3B0aW9ucy5hbGxvd2VkRXh0ZW5zaW9ucy5pbmNsdWRlcyhmaWxlRXh0ZW5zaW9uKSkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgZmlsZVNpemVzW2ZpbGUubmFtZV0gPSBmaWxlLnNpemVcblxuICAgIGlmICghaXNLbm93bkF0dGFjaG1lbnRGb3JtYXQoZmlsZUV4dGVuc2lvbikpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGlmIChleGNlZWRzTWF4U2l6ZShmaWxlRXh0ZW5zaW9uLCBmaWxlLnNpemUpKSB7XG4gICAgICBleGNlZWRlZEZpbGVzLnB1c2goZmlsZS5uYW1lKVxuICAgICAgZXhjbHVkZWRGaWxlID0gdHJ1ZVxuICAgIH1cblxuICAgIGlmIChmaWxlc0luc2VydGVkICsgMSA+IG9wdGlvbnMubWF4QXR0YWNobWVudHMpIHtcbiAgICAgIGV4Y2x1ZGVkRmlsZXMucHVzaChmaWxlLm5hbWUpXG4gICAgICBleGNsdWRlZEZpbGUgPSB0cnVlXG4gICAgfVxuXG4gICAgaWYgKCFleGNsdWRlZEZpbGUpIHtcbiAgICAgIGZpbGVzSW5zZXJ0ZWQgKz0gMVxuICAgICAgY29uc3QgdHlwZUZpbGUgPSBmaWxlLnR5cGUgfHwgb3B0aW9ucy5maWxlVHlwZXNbZmlsZUV4dGVuc2lvbl1cbiAgICAgIGZpbGVzVG9BdHRhY2gucHVzaChuZXcgRmlsZShbZmlsZV0sIGZpbGUubmFtZSwgeyB0eXBlOiB0eXBlRmlsZSB9KSlcbiAgICB9XG4gIH0pXG5cbiAgcmV0dXJuIHsgZmlsZXNUb0F0dGFjaCwgZXhjZWVkZWRGaWxlcywgZXhjbHVkZWRGaWxlcywgZmlsZVNpemVzIH1cbn1cblxuZXhwb3J0IGNvbnN0IHNob3VsZE9wZW5BdHRhY2htZW50VmFsaWRhdGlvbk1vZGFsID0gKGV4Y2x1ZGVkRmlsZXM6IHN0cmluZ1tdLCBleGNlZWRlZEZpbGVzOiBzdHJpbmdbXSk6IGJvb2xlYW4gPT5cbiAgZXhjbHVkZWRGaWxlcy5sZW5ndGggPiAwIHx8IGV4Y2VlZGVkRmlsZXMubGVuZ3RoID4gMFxuXG5leHBvcnQgY29uc3QgaXNJbWFnZUF0dGFjaG1lbnRGaWxlID0gKG1pbWVUeXBlOiBzdHJpbmcgfCB1bmRlZmluZWQsIGZpbGVOYW1lOiBzdHJpbmcpOiBib29sZWFuID0+XG4gIEJvb2xlYW4obWltZVR5cGU/LnN0YXJ0c1dpdGgoJ2ltYWdlLycpKSB8fCAvXFwuKHBuZ3xqcGU/Z3xnaWZ8d2VicHxibXB8c3ZnKSQvaS50ZXN0KGZpbGVOYW1lIHx8ICcnKVxuXG5leHBvcnQgY29uc3Qgc2hvdWxkSGFuZGxlRHJhZ0xlYXZlRXZlbnQgPSAoaXNGaWxlRHJhZ0FjdGl2ZTogYm9vbGVhbiwgaGFzRmlsZXNJblRyYW5zZmVyOiBib29sZWFuKTogYm9vbGVhbiA9PlxuICBpc0ZpbGVEcmFnQWN0aXZlIHx8IGhhc0ZpbGVzSW5UcmFuc2ZlclxuXG5leHBvcnQgY29uc3QgZGVjcmVtZW50RmlsZURyYWdDb3VudGVyID0gKGNvdW50ZXI6IG51bWJlcik6IG51bWJlciA9PiBNYXRoLm1heCgwLCBjb3VudGVyIC0gMSlcblxuZXhwb3J0IGNvbnN0IHNob3VsZENsZWFyRmlsZURyYWdPdmVybGF5ID0gKGNvdW50ZXJBZnRlckxlYXZlOiBudW1iZXIpOiBib29sZWFuID0+IGNvdW50ZXJBZnRlckxlYXZlID09PSAwXG5cbmV4cG9ydCBjb25zdCBzaG91bGRJbnRlcmNlcHRXcmFwcGVyUGFzdGUgPSAoXG4gIGlzVGFyZ2V0SW5zaWRlQ29udGVudEVkaXRhYmxlOiBib29sZWFuLFxuICBwYXN0ZWRGaWxlc0NvdW50OiBudW1iZXJcbik6IGJvb2xlYW4gPT4gIWlzVGFyZ2V0SW5zaWRlQ29udGVudEVkaXRhYmxlICYmIHBhc3RlZEZpbGVzQ291bnQgPiAwXG4iXSwibWFwcGluZ3MiOiJBQWVBLElBQU1BLHFCQUFxQixHQUFHLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsTUFBTSxDQUFVO0FBQ3hFLElBQU1DLHFCQUFxQixHQUFHLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxPQUFPLENBQVU7QUFDakgsSUFBTUMsdUJBQXVCLEdBQUcsQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsT0FBTyxDQUFVO0FBRTNHLE9BQU8sSUFBTUMsMkJBQTJCLEdBQUcsU0FBOUJBLDJCQUEyQkEsQ0FBSUMsUUFBZ0IsRUFBYTtFQUFBLElBQUFDLGtCQUFBO0VBQ3ZFLElBQU1DLGFBQWEsR0FBR0YsUUFBUSxDQUFDRyxLQUFLLENBQUMsR0FBRyxDQUFDO0VBQ3pDLE9BQU9ELGFBQWEsQ0FBQ0UsTUFBTSxHQUFHLENBQUMsT0FBQUMsTUFBQSxFQUFBSixrQkFBQSxHQUFPQyxhQUFhLENBQUNJLEdBQUcsQ0FBQyxDQUFDLGNBQUFMLGtCQUFBLHVCQUFuQkEsa0JBQUEsQ0FBcUJNLFdBQVcsQ0FBQyxDQUFDLElBQUssRUFBRTtBQUNqRixDQUFDO0FBRUQsSUFBTUMsdUJBQXVCLEdBQUcsU0FBMUJBLHVCQUF1QkEsQ0FBSUMsU0FBaUI7RUFBQSxPQUMvQ2IscUJBQXFCLENBQXVCYyxRQUFRLENBQUNELFNBQVMsQ0FBQyxJQUMvRFoscUJBQXFCLENBQXVCYSxRQUFRLENBQUNELFNBQVMsQ0FBQyxJQUMvRFgsdUJBQXVCLENB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
@@ -1,4 +1,11 @@
1
1
  import { isSkillsPilotCompany } from '../../../constants/permissions/utils';
2
+ /** Agent id para slash commands (orchestrator global o clone especialista). */
3
+ export var resolveSlashCommandsAgentId = function resolveSlashCommandsAgentId(agent) {
4
+ if ((agent === null || agent === void 0 ? void 0 : agent.type) === 'orchestrator' && (agent === null || agent === void 0 ? void 0 : agent.entity) === 'global' || (agent === null || agent === void 0 ? void 0 : agent.type) === 'clone' && (agent === null || agent === void 0 ? void 0 : agent.entity) !== 'global') {
5
+ return agent.id;
6
+ }
7
+ return undefined;
8
+ };
2
9
  export var getSkillMentionIds = function getSkillMentionIds(mentions) {
3
10
  return mentions.filter(function (mention) {
4
11
  return mention.type === 'skill';
@@ -6,7 +13,172 @@ export var getSkillMentionIds = function getSkillMentionIds(mentions) {
6
13
  return String(mention.id);
7
14
  });
8
15
  };
16
+ export var getRemovedSkillMentionIds = function getRemovedSkillMentionIds(previousIds, currentIds) {
17
+ return previousIds.filter(function (skillId) {
18
+ return !currentIds.includes(skillId);
19
+ });
20
+ };
9
21
  export var canCreateSkillsFromInput = function canCreateSkillsFromInput(showSkillsButton, companyId) {
10
22
  return showSkillsButton && isSkillsPilotCompany(companyId !== null && companyId !== void 0 ? companyId : undefined);
11
23
  };
12
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJpc1NraWxsc1BpbG90Q29tcGFueSIsImdldFNraWxsTWVudGlvbklkcyIsIm1lbnRpb25zIiwiZmlsdGVyIiwibWVudGlvbiIsInR5cGUiLCJtYXAiLCJTdHJpbmciLCJpZCIsImNhbkNyZWF0ZVNraWxsc0Zyb21JbnB1dCIsInNob3dTa2lsbHNCdXR0b24iLCJjb21wYW55SWQiLCJ1bmRlZmluZWQiXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50cy9hdG9tcy9NQUlBSW5wdXQvTUFJQUlucHV0LmhlbHBlcnMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaXNTa2lsbHNQaWxvdENvbXBhbnkgfSBmcm9tICcuLi8uLi8uLi9jb25zdGFudHMvcGVybWlzc2lvbnMvdXRpbHMnXG5pbXBvcnQgdHlwZSB7IENvbnRleHRNZW50aW9uIH0gZnJvbSAnLi4vLi4vLi4vdHlwZXMvY29udGV4dE1lbnRpb24nXG5cbmV4cG9ydCBjb25zdCBnZXRTa2lsbE1lbnRpb25JZHMgPSAobWVudGlvbnM6IENvbnRleHRNZW50aW9uW10pOiBzdHJpbmdbXSA9PlxuICBtZW50aW9ucy5maWx0ZXIobWVudGlvbiA9PiBtZW50aW9uLnR5cGUgPT09ICdza2lsbCcpLm1hcChtZW50aW9uID0+IFN0cmluZyhtZW50aW9uLmlkKSlcblxuZXhwb3J0IGNvbnN0IGNhbkNyZWF0ZVNraWxsc0Zyb21JbnB1dCA9IChzaG93U2tpbGxzQnV0dG9uOiBib29sZWFuLCBjb21wYW55SWQ6IG51bWJlciB8IG51bGwgfCB1bmRlZmluZWQpOiBib29sZWFuID0+XG4gIHNob3dTa2lsbHNCdXR0b24gJiYgaXNTa2lsbHNQaWxvdENvbXBhbnkoY29tcGFueUlkID8/IHVuZGVmaW5lZClcbiJdLCJtYXBwaW5ncyI6IkFBQUEsU0FBU0Esb0JBQW9CLFFBQVEsc0NBQXNDO0FBRzNFLE9BQU8sSUFBTUMsa0JBQWtCLEdBQUcsU0FBckJBLGtCQUFrQkEsQ0FBSUMsUUFBMEI7RUFBQSxPQUMzREEsUUFBUSxDQUFDQyxNQUFNLENBQUMsVUFBQUMsT0FBTztJQUFBLE9BQUlBLE9BQU8sQ0FBQ0MsSUFBSSxLQUFLLE9BQU87RUFBQSxFQUFDLENBQUNDLEdBQUcsQ0FBQyxVQUFBRixPQUFPO0lBQUEsT0FBSUcsTUFBTSxDQUFDSCxPQUFPLENBQUNJLEVBQUUsQ0FBQztFQUFBLEVBQUM7QUFBQTtBQUV6RixPQUFPLElBQU1DLHdCQUF3QixHQUFHLFNBQTNCQSx3QkFBd0JBLENBQUlDLGdCQUF5QixFQUFFQyxTQUFvQztFQUFBLE9BQ3RHRCxnQkFBZ0IsSUFBSVYsb0JBQW9CLENBQUNXLFNBQVMsYUFBVEEsU0FBUyxjQUFUQSxTQUFTLEdBQUlDLFNBQVMsQ0FBQztBQUFBIiwiaWdub3JlTGlzdCI6W119
24
+ export var getAnalyticsCloneEntityPayload = function getAnalyticsCloneEntityPayload(agent) {
25
+ var _agent$entity;
26
+ return (agent === null || agent === void 0 ? void 0 : agent.type) === 'clone' ? {
27
+ entity: (_agent$entity = agent.entity) !== null && _agent$entity !== void 0 ? _agent$entity : null
28
+ } : {};
29
+ };
30
+ export var isSendDisabled = function isSendDisabled(hasTypingPresence, attachmentCount) {
31
+ return !hasTypingPresence && attachmentCount === 0;
32
+ };
33
+ export var canSubmitChatMessage = function canSubmitChatMessage(text, attachmentCount) {
34
+ return Boolean(text.trim()) || attachmentCount > 0;
35
+ };
36
+ export var shouldSubmitOnEnter = function shouldSubmitOnEnter(key, shiftKey, popoverOpen, sendDisabled, disabled) {
37
+ return key === 'Enter' && !shiftKey && !popoverOpen && !sendDisabled && !disabled;
38
+ };
39
+ export var hasEditorTypingPresence = function hasEditorTypingPresence(text) {
40
+ return text.trim().length > 0;
41
+ };
42
+ export var shouldOpenSlashDropdown = function shouldOpenSlashDropdown(slashTrigger, slashCommandsCount) {
43
+ return Boolean((slashTrigger === null || slashTrigger === void 0 ? void 0 : slashTrigger.active) && slashCommandsCount > 0);
44
+ };
45
+ export var shouldOpenSkillsHashDropdown = function shouldOpenSkillsHashDropdown(hashTrigger, showSkillsButton) {
46
+ return Boolean((hashTrigger === null || hashTrigger === void 0 ? void 0 : hashTrigger.active) && showSkillsButton);
47
+ };
48
+ export var resolveSlashCommandInsertContext = function resolveSlashCommandInsertContext(text, slashQuery) {
49
+ var triggerPart = "/".concat(slashQuery);
50
+ var beforeTrigger = text.endsWith(triggerPart) ? text.slice(0, -triggerPart.length) : text;
51
+ return {
52
+ beforeTrigger: beforeTrigger,
53
+ isEmptyBeforeTrigger: beforeTrigger.trim() === ''
54
+ };
55
+ };
56
+ export var shouldApplyInitialDraft = function shouldApplyInitialDraft(initialDraft, alreadyApplied, disabled) {
57
+ return Boolean((initialDraft === null || initialDraft === void 0 ? void 0 : initialDraft.trim()) && !alreadyApplied && !disabled);
58
+ };
59
+ export var resolveSessionAutoFocusPlan = function resolveSessionAutoFocusPlan(ctx) {
60
+ var agentChanged = ctx.previousAgentId !== ctx.currentAgentId;
61
+ var chatChanged = ctx.previousChatId !== ctx.currentChatId;
62
+ var changedFromNewChatToOldChat = (ctx.previousChatId === undefined || ctx.previousChatId === null) && ctx.currentChatId !== undefined && ctx.currentChatId !== null;
63
+ var newChatStarted = ctx.previousNewChatKey !== ctx.currentNewChatKey;
64
+ var isInitialMount = ctx.previousAgentId === undefined && ctx.previousChatId === undefined;
65
+ if (!(agentChanged || chatChanged || changedFromNewChatToOldChat || newChatStarted || isInitialMount) || ctx.disabled) {
66
+ return {
67
+ shouldFocus: false
68
+ };
69
+ }
70
+ return {
71
+ shouldFocus: true,
72
+ delayMs: isInitialMount || changedFromNewChatToOldChat ? 200 : 100
73
+ };
74
+ };
75
+ export var shouldAutoFocusOnLayoutModeChange = function shouldAutoFocusOnLayoutModeChange(previousLayoutMode, layoutMode, disabled) {
76
+ if (!layoutMode || disabled) {
77
+ return false;
78
+ }
79
+ if (previousLayoutMode === undefined || previousLayoutMode === layoutMode) {
80
+ return false;
81
+ }
82
+ return true;
83
+ };
84
+ export var isSpecialistCloneAgentForAppcues = function isSpecialistCloneAgentForAppcues(agent) {
85
+ return (agent === null || agent === void 0 ? void 0 : agent.type) === 'clone' && ((agent === null || agent === void 0 ? void 0 : agent.entity) === 'project' || (agent === null || agent === void 0 ? void 0 : agent.entity) === 'client');
86
+ };
87
+ export var agentHasCorConnectorAccess = function agentHasCorConnectorAccess(agent) {
88
+ var _agent$connectors;
89
+ if ((agent === null || agent === void 0 ? void 0 : agent.type) !== 'custom') {
90
+ return false;
91
+ }
92
+ return Boolean((_agent$connectors = agent.connectors) === null || _agent$connectors === void 0 ? void 0 : _agent$connectors.some(function (connector) {
93
+ return connector.group === 'COR' && connector.slugs.some(function (slug) {
94
+ return typeof slug === 'string' && slug.trim().length > 0;
95
+ });
96
+ }));
97
+ };
98
+ export var getCustomAgentModelDisplayName = function getCustomAgentModelDisplayName(agent) {
99
+ var _agent$model_display_;
100
+ if ((agent === null || agent === void 0 ? void 0 : agent.type) !== 'custom') {
101
+ return null;
102
+ }
103
+ return ((_agent$model_display_ = agent.model_display_name) === null || _agent$model_display_ === void 0 ? void 0 : _agent$model_display_.trim()) || null;
104
+ };
105
+ export var shouldShowCustomAgentMetaIndicators = function shouldShowCustomAgentMetaIndicators(hasCorAccess, agentModelName) {
106
+ return hasCorAccess || Boolean(agentModelName);
107
+ };
108
+ export var shouldShowMentionToolbarButton = function shouldShowMentionToolbarButton(agentType, hasCorAccess) {
109
+ return agentType === 'orchestrator' || hasCorAccess;
110
+ };
111
+ export var shouldShowInputChipsRow = function shouldShowInputChipsRow(contextItemCount, attachmentCount) {
112
+ return Boolean(contextItemCount || attachmentCount);
113
+ };
114
+ export var shouldStartToolChipExit = function shouldStartToolChipExit(isWebSearchActive, isDeepSearchActive) {
115
+ return isWebSearchActive || isDeepSearchActive;
116
+ };
117
+ export var resolveToolChipExitToggle = function resolveToolChipExitToggle(wasWeb, wasDeep, searchModes) {
118
+ if (wasWeb && searchModes.web) {
119
+ return 'web';
120
+ }
121
+ if (wasDeep && searchModes.deep) {
122
+ return 'deep';
123
+ }
124
+ return null;
125
+ };
126
+ export var resolveWebSearchPlusMenuAction = function resolveWebSearchPlusMenuAction(isWebSearchActive, isDeepSearchActive) {
127
+ if (isWebSearchActive) {
128
+ return {
129
+ kind: 'deactivate_via_chip_exit'
130
+ };
131
+ }
132
+ return {
133
+ kind: 'activate_web',
134
+ turnOffDeep: isDeepSearchActive
135
+ };
136
+ };
137
+ export var resolveDeepSearchPlusMenuAction = function resolveDeepSearchPlusMenuAction(isWebSearchActive, isDeepSearchActive) {
138
+ if (isDeepSearchActive) {
139
+ return {
140
+ kind: 'deactivate_via_chip_exit'
141
+ };
142
+ }
143
+ return {
144
+ kind: 'activate_deep',
145
+ turnOffWeb: isWebSearchActive
146
+ };
147
+ };
148
+ export var resolveMaiaInputDropdownPosition = function resolveMaiaInputDropdownPosition(input) {
149
+ var _input$caretTop, _input$caretLeft;
150
+ var topSource = (_input$caretTop = input.caretTop) !== null && _input$caretTop !== void 0 ? _input$caretTop : input.wrapperWidth > 0 && input.wrapperTop != null ? input.wrapperTop : null;
151
+ var leftSource = (_input$caretLeft = input.caretLeft) !== null && _input$caretLeft !== void 0 ? _input$caretLeft : input.wrapperWidth > 0 && input.wrapperLeft != null ? input.wrapperLeft : null;
152
+ if (topSource == null || leftSource == null) {
153
+ return null;
154
+ }
155
+ var left = Math.max(input.viewportPadPx, Math.min(input.viewportWidth - input.dropdownWidthPx - input.viewportPadPx, leftSource));
156
+ var availableHeightPx = topSource - input.gapPx - input.viewportPadPx;
157
+ var maxHeight = Math.min(input.maxDropdownHeightPx, Math.max(0, availableHeightPx));
158
+ return {
159
+ left: left,
160
+ bottom: input.viewportHeight - topSource + input.gapPx,
161
+ maxHeight: maxHeight
162
+ };
163
+ };
164
+ export var resolveMaiaInputStreamingDataAttr = function resolveMaiaInputStreamingDataAttr(isStreaming) {
165
+ return isStreaming ? 'true' : 'false';
166
+ };
167
+ export var resolveActiveToolChipIconMode = function resolveActiveToolChipIconMode(activeToolChipHovered, isWebSearchActive) {
168
+ if (activeToolChipHovered) return 'close';
169
+ if (isWebSearchActive) return 'web';
170
+ return 'deep';
171
+ };
172
+ export var resolveActiveToolChipSearchLabel = function resolveActiveToolChipSearchLabel(params) {
173
+ return params.activeToolChipHovered || params.isWebSearchActive ? params.webSearchLabel : params.deepSearchLabel;
174
+ };
175
+ export var resolveMeasuredLayoutRowHeight = function resolveMeasuredLayoutRowHeight(current, next) {
176
+ return current === next ? current : next;
177
+ };
178
+ export var shouldObserveMaiaInputLayoutElement = function shouldObserveMaiaInputLayoutElement(element) {
179
+ return Boolean(element);
180
+ };
181
+ export var canAttachMoreChatInputFiles = function canAttachMoreChatInputFiles(currentAttachmentCount, maxAttachments) {
182
+ return currentAttachmentCount < maxAttachments;
183
+ };
184
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJpc1NraWxsc1BpbG90Q29tcGFueSIsInJlc29sdmVTbGFzaENvbW1hbmRzQWdlbnRJZCIsImFnZW50IiwidHlwZSIsImVudGl0eSIsImlkIiwidW5kZWZpbmVkIiwiZ2V0U2tpbGxNZW50aW9uSWRzIiwibWVudGlvbnMiLCJmaWx0ZXIiLCJtZW50aW9uIiwibWFwIiwiU3RyaW5nIiwiZ2V0UmVtb3ZlZFNraWxsTWVudGlvbklkcyIsInByZXZpb3VzSWRzIiwiY3VycmVudElkcyIsInNraWxsSWQiLCJpbmNsdWRlcyIsImNhbkNyZWF0ZVNraWxsc0Zyb21JbnB1dCIsInNob3dTa2lsbHNCdXR0b24iLCJjb21wYW55SWQiLCJnZXRBbmFseXRpY3NDbG9uZUVudGl0eVBheWxvYWQiLCJfYWdlbnQkZW50aXR5IiwiaXNTZW5kRGlzYWJsZWQiLCJoYXNUeXBpbmdQcmVzZW5jZSIsImF0dGFjaG1lbnRDb3VudCIsImNhblN1Ym1pdENoYXRNZXNzYWdlIiwidGV4dCIsIkJvb2xlYW4iLCJ0cmltIiwic2hvdWxkU3VibWl0T25FbnRlciIsImtleSIsInNoaWZ0S2V5IiwicG9wb3Zlck9wZW4iLCJzZW5kRGlzYWJsZWQiLCJkaXNhYmxlZCIsImhhc0VkaXRvclR5cGluZ1ByZXNlbmNlIiwibGVuZ3RoIiwic2hvdWxkT3BlblNsYXNoRHJvcGRvd24iLCJzbGFzaFRyaWdnZXIiLCJzbGFzaENvbW1hbmRzQ291bnQiLCJhY3RpdmUiLCJzaG91bGRPcGVuU2tpbGxzSGFzaERyb3Bkb3duIiwiaGFzaFRyaWdnZXIiLCJyZXNvbHZlU2xhc2hDb21tYW5kSW5zZXJ0Q29udGV4dCIsInNsYXNoUXVlcnkiLCJ0cmlnZ2VyUGFydCIsImNvbmNhdCIsImJlZm9yZVRyaWdnZXIiLCJlbmRzV2l0aCIsInNsaWNlIiwiaXNFbXB0eUJlZm9yZVRyaWdnZXIiLCJzaG91bGRBcHBseUluaXRpYWxEcmFmdCIsImluaXRpYWxEcmFmdCIsImFscmVhZHlBcHBsaWVkIiwicmVzb2x2ZVNlc3Npb25BdXRvRm9jdXNQbGFuIiwiY3R4IiwiYWdlbnRDaGFuZ2VkIiwicHJldmlvdXNBZ2VudElkIiwiY3VycmVudEFnZW50SWQiLCJjaGF0Q2hhbmdlZCIsInByZXZpb3VzQ2hhdElkIiwiY3VycmVudENoYXRJZCIsImNoYW5nZWRGcm9tTmV3Q2hhdFRvT2xkQ2hhdCIsIm5ld0NoYXRTdGFydGVkIiwicHJldmlvdXNOZXdDaGF0S2V5IiwiY3VycmVudE5ld0NoYXRLZXkiLCJpc0luaXRpYWxNb3VudCIsInNob3VsZEZvY3VzIiwiZGVsYXlNcyIsInNob3VsZEF1dG9Gb2N1c09uTGF5b3V0TW9kZUNoYW5nZSIsInByZXZpb3VzTGF5b3V0TW9kZSIsImxheW91dE1vZGUiLCJpc1NwZWNpYWxpc3RDbG9uZUFnZW50Rm9yQXBwY3VlcyIsImFnZW50SGFzQ29yQ29ubmVjdG9yQWNjZXNzIiwiX2FnZW50JGNvbm5lY3RvcnMiLCJjb25uZWN0b3JzIiwic29tZSIsImNvbm5lY3RvciIsImdyb3VwIiwic2x1Z3MiLCJzbHVnIiwiZ2V0Q3VzdG9tQWdlbnRNb2RlbERpc3BsYXlOYW1lIiwiX2FnZW50JG1vZGVsX2Rpc3BsYXlfIiwibW9kZWxfZGlzcGxheV9uYW1lIiwic2hvdWxkU2hvd0N1c3RvbUFnZW50TWV0YUluZGljYXRvcnMiLCJoYXNDb3JBY2Nlc3MiLCJhZ2VudE1vZGVsTmFtZSIsInNob3VsZFNob3dNZW50aW9uVG9vbGJhckJ1dHRvbiIsImFnZW50VHlwZSIsInNob3VsZFNob3dJbnB1dENoaXBzUm93IiwiY29udGV4dEl0ZW1Db3VudCIsInNob3VsZFN0YXJ0VG9vbENoaXBFeGl0IiwiaXNXZWJTZWFyY2hBY3RpdmUiLCJpc0RlZXBTZWFyY2hBY3RpdmUiLCJyZXNvbHZlVG9vbENoaXBFeGl0VG9nZ2xlIiwid2FzV2ViIiwid2FzRGVlcCIsInNlYXJjaE1vZGVzIiwid2ViIiwiZGVlcCIsInJlc29sdmVXZWJTZWFyY2hQbHVzTWVudUFjdGlvbiIsImtpbmQiLCJ0dXJuT2ZmRGVlcCIsInJlc29sdmVEZWVwU2VhcmNoUGx1c01lbnVBY3Rpb24iLCJ0dXJuT2ZmV2ViIiwicmVzb2x2ZU1haWFJbnB1dERyb3Bkb3duUG9zaXRpb24iLCJpbnB1dCIsIl9pbnB1dCRjYXJldFRvcCIsIl9pbnB1dCRjYXJldExlZnQiLCJ0b3BTb3VyY2UiLCJjYXJldFRvcCIsIndyYXBwZXJXaWR0aCIsIndyYXBwZXJUb3AiLCJsZWZ0U291cmNlIiwiY2FyZXRMZWZ0Iiwid3JhcHBlckxlZnQiLCJsZWZ0IiwiTWF0aCIsIm1heCIsInZpZXdwb3J0UGFkUHgiLCJtaW4iLCJ2aWV3cG9ydFdpZHRoIiwiZHJvcGRvd25XaWR0aFB4IiwiYXZhaWxhYmxlSGVpZ2h0UHgiLCJnYXBQeCIsIm1heEhlaWdodCIsIm1heERyb3Bkb3duSGVpZ2h0UHgiLCJib3R0b20iLCJ2aWV3cG9ydEhlaWdodCIsInJlc29sdmVNYWlhSW5wdXRTdHJlYW1pbmdEYXRhQXR0ciIsImlzU3RyZWFtaW5nIiwicmVzb2x2ZUFjdGl2ZVRvb2xDaGlwSWNvbk1vZGUiLCJhY3RpdmVUb29sQ2hpcEhvdmVyZWQiLCJyZXNvbHZlQWN0aXZlVG9vbENoaXBTZWFyY2hMYWJlbCIsInBhcmFtcyIsIndlYlNlYXJjaExhYmVsIiwiZGVlcFNlYXJjaExhYmVsIiwicmVzb2x2ZU1lYXN1cmVkTGF5b3V0Um93SGVpZ2h0IiwiY3VycmVudCIsIm5leHQiLCJzaG91bGRPYnNlcnZlTWFpYUlucHV0TGF5b3V0RWxlbWVudCIsImVsZW1lbnQiLCJjYW5BdHRhY2hNb3JlQ2hhdElucHV0RmlsZXMiLCJjdXJyZW50QXR0YWNobWVudENvdW50IiwibWF4QXR0YWNobWVudHMiXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50cy9hdG9tcy9NQUlBSW5wdXQvTUFJQUlucHV0LmhlbHBlcnMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaXNTa2lsbHNQaWxvdENvbXBhbnkgfSBmcm9tICcuLi8uLi8uLi9jb25zdGFudHMvcGVybWlzc2lvbnMvdXRpbHMnXG5pbXBvcnQgdHlwZSB7IEFnZW50LCBBZ2VudFR5cGUgfSBmcm9tICcuLi8uLi8uLi90eXBlcy9hZ2VudCdcbmltcG9ydCB0eXBlIHsgQ29udGV4dE1lbnRpb24gfSBmcm9tICcuLi8uLi8uLi90eXBlcy9jb250ZXh0TWVudGlvbidcblxuLyoqIEFnZW50IGlkIHBhcmEgc2xhc2ggY29tbWFuZHMgKG9yY2hlc3RyYXRvciBnbG9iYWwgbyBjbG9uZSBlc3BlY2lhbGlzdGEpLiAqL1xuZXhwb3J0IGNvbnN0IHJlc29sdmVTbGFzaENvbW1hbmRzQWdlbnRJZCA9IChhZ2VudDogQWdlbnQgfCBudWxsIHwgdW5kZWZpbmVkKTogc3RyaW5nIHwgdW5kZWZpbmVkID0+IHtcbiAgaWYgKFxuICAgIChhZ2VudD8udHlwZSA9PT0gJ29yY2hlc3RyYXRvcicgJiYgYWdlbnQ/LmVudGl0eSA9PT0gJ2dsb2JhbCcpIHx8XG4gICAgKGFnZW50Py50eXBlID09PSAnY2xvbmUnICYmIGFnZW50Py5lbnRpdHkgIT09ICdnbG9iYWwnKVxuICApIHtcbiAgICByZXR1cm4gYWdlbnQuaWRcbiAgfVxuICByZXR1cm4gdW5kZWZpbmVkXG59XG5cbmV4cG9ydCBjb25zdCBnZXRTa2lsbE1lbnRpb25JZHMgPSAobWVudGlvbnM6IENvbnRleHRNZW50aW9uW10pOiBzdHJpbmdbXSA9PlxuICBtZW50aW9ucy5maWx0ZXIobWVudGlvbiA9PiBtZW50aW9uLnR5cGUgPT09ICdza2lsbCcpLm1hcChtZW50aW9uID0+IFN0cmluZyhtZW50aW9uLmlkKSlcblxuZXhwb3J0IGNvbnN0IGdldFJlbW92ZWRTa2lsbE1lbnRpb25JZHMgPSAocHJldmlvdXNJZHM6IHN0cmluZ1tdLCBjdXJyZW50SWRzOiBzdHJpbmdbXSk6IHN0cmluZ1tdID0+XG4gIHByZXZpb3VzSWRzLmZpbHRlcihza2lsbElkID0+ICFjdXJyZW50SWRzLmluY2x1ZGVzKHNraWxsSWQpKVxuXG5leHBvcnQgY29uc3QgY2FuQ3JlYXRlU2tpbGxzRnJvbUlucHV0ID0gKHNob3dTa2lsbHNCdXR0b246IGJvb2xlYW4sIGNvbXBhbnlJZDogbnVtYmVyIHwgbnVsbCB8IHVuZGVmaW5lZCk6IGJvb2xlYW4gPT5cbiAgc2hvd1NraWxsc0J1dHRvbiAmJiBpc1NraWxsc1BpbG90Q29tcGFueShjb21wYW55SWQgPz8gdW5kZWZpbmVkKVxuXG5leHBvcnQgY29uc3QgZ2V0QW5hbHl0aWNzQ2xvbmVFbnRpdHlQYXlsb2FkID0gKFxuICBhZ2VudDogUGljazxBZ2VudCwgJ3R5cGUnIHwgJ2VudGl0eSc+IHwgbnVsbCB8IHVuZGVmaW5lZFxuKTogeyBlbnRpdHk6IEFnZW50WydlbnRpdHknXSB8IG51bGwgfSB8IFJlY29yZDxzdHJpbmcsIG5ldmVyPiA9PlxuICBhZ2VudD8udHlwZSA9PT0gJ2Nsb25lJyA/IHsgZW50aXR5OiBhZ2VudC5lbnRpdHkgPz8gbnVsbCB9IDoge31cblxuZXhwb3J0IGNvbnN0IGlzU2VuZERpc2FibGVkID0gKGhhc1R5cGluZ1ByZXNlbmNlOiBib29sZWFuLCBhdHRhY2htZW50Q291bnQ6IG51bWJlcik6IGJvb2xlYW4gPT5cbiAgIWhhc1R5cGluZ1ByZXNlbmNlICYmIGF0dGFjaG1lbnRDb3VudCA9PT0gMFxuXG5leHBvcnQgY29uc3QgY2FuU3VibWl0Q2hhdE1lc3NhZ2UgPSAodGV4dDogc3RyaW5nLCBhdHRhY2htZW50Q291bnQ6IG51bWJlcik6IGJvb2xlYW4gPT5cbiAgQm9vbGVhbih0ZXh0LnRyaW0oKSkgfHwgYXR0YWNobWVudENvdW50ID4gMFxuXG5leHBvcnQgY29uc3Qgc2hvdWxkU3VibWl0T25FbnRlciA9IChcbiAga2V5OiBzdHJpbmcsXG4gIHNoaWZ0S2V5OiBib29sZWFuLFxuICBwb3BvdmVyT3BlbjogYm9vbGVhbixcbiAgc2VuZERpc2FibGVkOiBib29sZWFuLFxuICBkaXNhYmxlZDogYm9vbGVhbiB8IHVuZGVmaW5lZFxuKTogYm9vbGVhbiA9PiBrZXkgPT09ICdFbnRlcicgJiYgIXNoaWZ0S2V5ICYmICFwb3BvdmVyT3BlbiAmJiAhc2VuZERpc2FibGVkICYmICFkaXNhYmxlZFxuXG5leHBvcnQgY29uc3QgaGFzRWRpdG9yVHlwaW5nUHJlc2VuY2UgPSAodGV4dDogc3RyaW5nKTogYm9vbGVhbiA9PiB0ZXh0LnRyaW0oKS5sZW5ndGggPiAwXG5cbmV4cG9ydCBjb25zdCBzaG91bGRPcGVuU2xhc2hEcm9wZG93biA9IChcbiAgc2xhc2hUcmlnZ2VyOiB7IGFjdGl2ZTogYm9vbGVhbjsgcXVlcnk6IHN0cmluZyB9IHwgdW5kZWZpbmVkLFxuICBzbGFzaENvbW1hbmRzQ291bnQ6IG51bWJlclxuKTogYm9vbGVhbiA9PiBCb29sZWFuKHNsYXNoVHJpZ2dlcj8uYWN0aXZlICYmIHNsYXNoQ29tbWFuZHNDb3VudCA+IDApXG5cbmV4cG9ydCBjb25zdCBzaG91bGRPcGVuU2tpbGxzSGFzaERyb3Bkb3duID0gKFxuICBoYXNoVHJpZ2dlcjogeyBhY3RpdmU6IGJvb2xlYW47IHF1ZXJ5OiBzdHJpbmcgfSB8IHVuZGVmaW5lZCxcbiAgc2hvd1NraWxsc0J1dHRvbjogYm9vbGVhblxuKTogYm9vbGVhbiA9PiBCb29sZWFuKGhhc2hUcmlnZ2VyPy5hY3RpdmUgJiYgc2hvd1NraWxsc0J1dHRvbilcblxuZXhwb3J0IGNvbnN0IHJlc29sdmVTbGFzaENvbW1hbmRJbnNlcnRDb250ZXh0ID0gKFxuICB0ZXh0OiBzdHJpbmcsXG4gIHNsYXNoUXVlcnk6IHN0cmluZ1xuKTogeyBiZWZvcmVUcmlnZ2VyOiBzdHJpbmc7IGlzRW1wdHlCZWZvcmVUcmlnZ2VyOiBib29sZWFuIH0gPT4ge1xuICBjb25zdCB0cmlnZ2VyUGFydCA9IGAvJHtzbGFzaFF1ZXJ5fWBcbiAgY29uc3QgYmVmb3JlVHJpZ2dlciA9IHRleHQuZW5kc1dpdGgodHJpZ2dlclBhcnQpID8gdGV4dC5zbGljZSgwLCAtdHJpZ2dlclBhcnQubGVuZ3RoKSA6IHRleHRcbiAgcmV0dXJuIHsgYmVmb3JlVHJpZ2dlciwgaXNFbXB0eUJlZm9yZVRyaWdnZXI6IGJlZm9yZVRyaWdnZXIudHJpbSgpID09PSAnJyB9XG59XG5cbmV4cG9ydCBjb25zdCBzaG91bGRBcHBseUluaXRpYWxEcmFmdCA9IChcbiAgaW5pdGlhbERyYWZ0OiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkLFxuICBhbHJlYWR5QXBwbGllZDogYm9vbGVhbixcbiAgZGlzYWJsZWQ6IGJvb2xlYW4gfCB1bmRlZmluZWRcbik6IGJvb2xlYW4gPT4gQm9vbGVhbihpbml0aWFsRHJhZnQ/LnRyaW0oKSAmJiAhYWxyZWFkeUFwcGxpZWQgJiYgIWRpc2FibGVkKVxuXG5leHBvcnQgdHlwZSBTZXNzaW9uQXV0b0ZvY3VzQ29udGV4dCA9IHtcbiAgcHJldmlvdXNBZ2VudElkOiBzdHJpbmcgfCB1bmRlZmluZWRcbiAgY3VycmVudEFnZW50SWQ6IHN0cmluZyB8IHVuZGVmaW5lZFxuICBwcmV2aW91c0NoYXRJZDogc3RyaW5nIHwgdW5kZWZpbmVkXG4gIGN1cnJlbnRDaGF0SWQ6IHN0cmluZyB8IHVuZGVmaW5lZFxuICBwcmV2aW91c05ld0NoYXRLZXk6IG51bWJlciB8IHVuZGVmaW5lZFxuICBjdXJyZW50TmV3Q2hhdEtleTogbnVtYmVyIHwgdW5kZWZpbmVkXG4gIGRpc2FibGVkOiBib29sZWFuIHwgdW5kZWZpbmVkXG59XG5cbmV4cG9ydCBjb25zdCByZXNvbHZlU2Vzc2lvbkF1dG9Gb2N1c1BsYW4gPSAoXG4gIGN0eDogU2Vzc2lvbkF1dG9Gb2N1c0NvbnRleHRcbik6IHsgc2hvdWxkRm9jdXM6IHRydWU7IGRlbGF5TXM6IG51bWJlciB9IHwgeyBzaG91bGRGb2N1czogZmFsc2UgfSA9PiB7XG4gIGNvbnN0IGFnZW50Q2hhbmdlZCA9IGN0eC5wcmV2aW91c0FnZW50SWQgIT09IGN0eC5jdXJyZW50QWdlbnRJZFxuICBjb25zdCBjaGF0Q2hhbmdlZCA9IGN0eC5wcmV2aW91c0NoYXRJZCAhPT0gY3R4LmN1cnJlbnRDaGF0SWRcbiAgY29uc3QgY2hhbmdlZEZyb21OZXdDaGF0VG9PbGRDaGF0ID1cbiAgICAoY3R4LnByZXZpb3VzQ2hhdElkID09PSB1bmRlZmluZWQgfHwgY3R4LnByZXZpb3VzQ2hhdElkID09PSBudWxsKSAmJlxuICAgIGN0eC5jdXJyZW50Q2hhdElkICE9PSB1bmRlZmluZWQgJiZcbiAgICBjdHguY3VycmVudENoYXRJZCAhPT0gbnVsbFxuICBjb25zdCBuZXdDaGF0U3RhcnRlZCA9IGN0eC5wcmV2aW91c05ld0NoYXRLZXkgIT09IGN0eC5jdXJyZW50TmV3Q2hhdEtleVxuICBjb25zdCBpc0luaXRpYWxNb3VudCA9IGN0eC5wcmV2aW91c0FnZW50SWQgPT09IHVuZGVmaW5lZCAmJiBjdHgucHJldmlvdXNDaGF0SWQgPT09IHVuZGVmaW5lZFxuXG4gIGlmIChcbiAgICAhKGFnZW50Q2hhbmdlZCB8fCBjaGF0Q2hhbmdlZCB8fCBjaGFuZ2VkRnJvbU5ld0NoYXRUb09sZENoYXQgfHwgbmV3Q2hhdFN0YXJ0ZWQgfHwgaXNJbml0aWFsTW91bnQpIHx8XG4gICAgY3R4LmRpc2FibGVkXG4gICkge1xuICAgIHJldHVybiB7IHNob3VsZEZvY3VzOiBmYWxzZSB9XG4gIH1cblxuICByZXR1cm4ge1xuICAgIHNob3VsZEZvY3VzOiB0cnVlLFxuICAgIGRlbGF5TXM6IGlzSW5pdGlhbE1vdW50IHx8IGNoYW5nZWRGcm9tTmV3Q2hhdFRvT2xkQ2hhdCA/IDIwMCA6IDEwMCxcbiAgfVxufVxuXG5leHBvcnQgdHlwZSBNYWlhSW5wdXRMYXlvdXRNb2RlID0gJ3NpZGViYXInIHwgJ2Z1bGxzY3JlZW4nIHwgJ2Zsb2F0aW5nJ1xuXG5leHBvcnQgY29uc3Qgc2hvdWxkQXV0b0ZvY3VzT25MYXlvdXRNb2RlQ2hhbmdlID0gKFxuICBwcmV2aW91c0xheW91dE1vZGU6IE1haWFJbnB1dExheW91dE1vZGUgfCB1bmRlZmluZWQsXG4gIGxheW91dE1vZGU6IE1haWFJbnB1dExheW91dE1vZGUgfCB1bmRlZmluZWQsXG4gIGRpc2FibGVkOiBib29sZWFuIHwgdW5kZWZpbmVkXG4pOiBib29sZWFuID0+IHtcbiAgaWYgKCFsYXlvdXRNb2RlIHx8IGRpc2FibGVkKSB7XG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cbiAgaWYgKHByZXZpb3VzTGF5b3V0TW9kZSA9PT0gdW5kZWZpbmVkIHx8IHByZXZpb3VzTGF5b3V0TW9kZSA9PT0gbGF5b3V0TW9kZSkge1xuICAgIHJldHVybiBmYWxzZVxuICB9XG4gIHJldHVybiB0cnVlXG59XG5cbmV4cG9ydCBjb25zdCBpc1NwZWNpYWxpc3RDbG9uZUFnZW50Rm9yQXBwY3VlcyA9IChhZ2VudDogUGljazxBZ2VudCwgJ3R5cGUnIHwgJ2VudGl0eSc+IHwgbnVsbCB8IHVuZGVmaW5lZCk6IGJvb2xlYW4gPT5cbiAgYWdlbnQ/LnR5cGUgPT09ICdjbG9uZScgJiYgKGFnZW50Py5lbnRpdHkgPT09ICdwcm9qZWN0JyB8fCBhZ2VudD8uZW50aXR5ID09PSAnY2xpZW50JylcblxuZXhwb3J0IGNvbnN0IGFnZW50SGFzQ29yQ29ubmVjdG9yQWNjZXNzID0gKGFnZW50OiBBZ2VudCB8IG51bGwgfCB1bmRlZmluZWQpOiBib29sZWFuID0+IHtcbiAgaWYgKGFnZW50Py50eXBlICE9PSAnY3VzdG9tJykge1xuICAgIHJldHVybiBmYWxzZVxuICB9XG4gIHJldHVybiBCb29sZWFuKFxuICAgIGFnZW50LmNvbm5lY3RvcnM/LnNvbWUoXG4gICAgICBjb25uZWN0b3IgPT5cbiAgICAgICAgY29ubmVjdG9yLmdyb3VwID09PSAnQ09SJyAmJiBjb25uZWN0b3Iuc2x1Z3Muc29tZShzbHVnID0+IHR5cGVvZiBzbHVnID09PSAnc3RyaW5nJyAmJiBzbHVnLnRyaW0oKS5sZW5ndGggPiAwKVxuICAgIClcbiAgKVxufVxuXG5leHBvcnQgY29uc3QgZ2V0Q3VzdG9tQWdlbnRNb2RlbERpc3BsYXlOYW1lID0gKGFnZW50OiBBZ2VudCB8IG51bGwgfCB1bmRlZmluZWQpOiBzdHJpbmcgfCBudWxsID0+IHtcbiAgaWYgKGFnZW50Py50eXBlICE9PSAnY3VzdG9tJykge1xuICAgIHJldHVybiBudWxsXG4gIH1cbiAgcmV0dXJuIGFnZW50Lm1vZGVsX2Rpc3BsYXlfbmFtZT8udHJpbSgpIHx8IG51bGxcbn1cblxuZXhwb3J0IGNvbnN0IHNob3VsZFNob3dDdXN0b21BZ2VudE1ldGFJbmRpY2F0b3JzID0gKGhhc0NvckFjY2VzczogYm9vbGVhbiwgYWdlbnRNb2RlbE5hbWU6IHN0cmluZyB8IG51bGwpOiBib29sZWFuID0+XG4gIGhhc0NvckFjY2VzcyB8fCBCb29sZWFuKGFnZW50TW9kZWxOYW1lKVxuXG5leHBvcnQgY29uc3Qgc2hvdWxkU2hvd01lbnRpb25Ub29sYmFyQnV0dG9uID0gKGFnZW50VHlwZTogQWdlbnRUeXBlIHwgdW5kZWZpbmVkLCBoYXNDb3JBY2Nlc3M6IGJvb2xlYW4pOiBib29sZWFuID0+XG4gIGFnZW50VHlwZSA9PT0gJ29yY2hlc3RyYXRvcicgfHwgaGFzQ29yQWNjZXNzXG5cbmV4cG9ydCBjb25zdCBzaG91bGRTaG93SW5wdXRDaGlwc1JvdyA9IChjb250ZXh0SXRlbUNvdW50OiBudW1iZXIgfCB1bmRlZmluZWQsIGF0dGFjaG1lbnRDb3VudDogbnVtYmVyKTogYm9vbGVhbiA9PlxuICBCb29sZWFuKGNvbnRleHRJdGVtQ291bnQgfHwgYXR0YWNobWVudENvdW50KVxuXG5leHBvcnQgY29uc3Qgc2hvdWxkU3RhcnRUb29sQ2hpcEV4aXQgPSAoaXNXZWJTZWFyY2hBY3RpdmU6IGJvb2xlYW4sIGlzRGVlcFNlYXJjaEFjdGl2ZTogYm9vbGVhbik6IGJvb2xlYW4gPT5cbiAgaXNXZWJTZWFyY2hBY3RpdmUgfHwgaXNEZWVwU2VhcmNoQWN0aXZlXG5cbmV4cG9ydCB0eXBlIEFjdGl2ZVNlYXJjaE1vZGVzID0geyB3ZWI6IGJvb2xlYW47IGRlZXA6IGJvb2xlYW4gfVxuXG5leHBvcnQgY29uc3QgcmVzb2x2ZVRvb2xDaGlwRXhpdFRvZ2dsZSA9IChcbiAgd2FzV2ViOiBib29sZWFuLFxuICB3YXNEZWVwOiBib29sZWFuLFxuICBzZWFyY2hNb2RlczogQWN0aXZlU2VhcmNoTW9kZXNcbik6ICd3ZWInIHwgJ2RlZXAnIHwgbnVsbCA9PiB7XG4gIGlmICh3YXNXZWIgJiYgc2VhcmNoTW9kZXMud2ViKSB7XG4gICAgcmV0dXJuICd3ZWInXG4gIH1cbiAgaWYgKHdhc0RlZXAgJiYgc2VhcmNoTW9kZXMuZGVlcCkge1xuICAgIHJldHVybiAnZGVlcCdcbiAgfVxuICByZXR1cm4gbnVsbFxufVxuXG5leHBvcnQgdHlwZSBTZWFyY2hNb2RlUGx1c01lbnVBY3Rpb24gPVxuICB8IHsga2luZDogJ2RlYWN0aXZhdGVfdmlhX2NoaXBfZXhpdCcgfVxuICB8IHsga2luZDogJ2FjdGl2YXRlX3dlYic7IHR1cm5PZmZEZWVwOiBib29sZWFuIH1cbiAgfCB7IGtpbmQ6ICdhY3RpdmF0ZV9kZWVwJzsgdHVybk9mZldlYjogYm9vbGVhbiB9XG5cbmV4cG9ydCBjb25zdCByZXNvbHZlV2ViU2VhcmNoUGx1c01lbnVBY3Rpb24gPSAoXG4gIGlzV2ViU2VhcmNoQWN0aXZlOiBib29sZWFuLFxuICBpc0RlZXBTZWFyY2hBY3RpdmU6IGJvb2xlYW5cbik6IFNlYXJjaE1vZGVQbHVzTWVudUFjdGlvbiA9PiB7XG4gIGlmIChpc1dlYlNlYXJjaEFjdGl2ZSkge1xuICAgIHJldHVybiB7IGtpbmQ6ICdkZWFjdGl2YXRlX3ZpYV9jaGlwX2V4aXQnIH1cbiAgfVxuICByZXR1cm4geyBraW5kOiAnYWN0aXZhdGVfd2ViJywgdHVybk9mZkRlZXA6IGlzRGVlcFNlYXJjaEFjdGl2ZSB9XG59XG5cbmV4cG9ydCBjb25zdCByZXNvbHZlRGVlcFNlYXJjaFBsdXNNZW51QWN0aW9uID0gKFxuICBpc1dlYlNlYXJjaEFjdGl2ZTogYm9vbGVhbixcbiAgaXNEZWVwU2VhcmNoQWN0aXZlOiBib29sZWFuXG4pOiBTZWFyY2hNb2RlUGx1c01lbnVBY3Rpb24gPT4ge1xuICBpZiAoaXNEZWVwU2VhcmNoQWN0aXZlKSB7XG4gICAgcmV0dXJuIHsga2luZDogJ2RlYWN0aXZhdGVfdmlhX2NoaXBfZXhpdCcgfVxuICB9XG4gIHJldHVybiB7IGtpbmQ6ICdhY3RpdmF0ZV9kZWVwJywgdHVybk9mZldlYjogaXNXZWJTZWFyY2hBY3RpdmUgfVxufVxuXG5leHBvcnQgdHlwZSBNYWlhSW5wdXREcm9wZG93blBvc2l0aW9uSW5wdXQgPSB7XG4gIGNhcmV0VG9wOiBudW1iZXIgfCBudWxsIHwgdW5kZWZpbmVkXG4gIGNhcmV0TGVmdDogbnVtYmVyIHwgbnVsbCB8IHVuZGVmaW5lZFxuICB3cmFwcGVyVG9wOiBudW1iZXIgfCBudWxsIHwgdW5kZWZpbmVkXG4gIHdyYXBwZXJMZWZ0OiBudW1iZXIgfCBudWxsIHwgdW5kZWZpbmVkXG4gIHdyYXBwZXJXaWR0aDogbnVtYmVyXG4gIHZpZXdwb3J0SGVpZ2h0OiBudW1iZXJcbiAgdmlld3BvcnRXaWR0aDogbnVtYmVyXG4gIGRyb3Bkb3duV2lkdGhQeDogbnVtYmVyXG4gIG1heERyb3Bkb3duSGVpZ2h0UHg6IG51bWJlclxuICBnYXBQeDogbnVtYmVyXG4gIHZpZXdwb3J0UGFkUHg6IG51bWJlclxufVxuXG5leHBvcnQgdHlwZSBNYWlhSW5wdXREcm9wZG93blBvc2l0aW9uID0ge1xuICBsZWZ0OiBudW1iZXJcbiAgYm90dG9tOiBudW1iZXJcbiAgbWF4SGVpZ2h0OiBudW1iZXJcbn1cblxuZXhwb3J0IGNvbnN0IHJlc29sdmVNYWlhSW5wdXREcm9wZG93blBvc2l0aW9uID0gKFxuICBpbnB1dDogTWFpYUlucHV0RHJvcGRvd25Qb3NpdGlvbklucHV0XG4pOiBNYWlhSW5wdXREcm9wZG93blBvc2l0aW9uIHwgbnVsbCA9PiB7XG4gIGNvbnN0IHRvcFNvdXJjZSA9IGlucHV0LmNhcmV0VG9wID8/IChpbnB1dC53cmFwcGVyV2lkdGggPiAwICYmIGlucHV0LndyYXBwZXJUb3AgIT0gbnVsbCA/IGlucHV0LndyYXBwZXJUb3AgOiBudWxsKVxuICBjb25zdCBsZWZ0U291cmNlID0gaW5wdXQuY2FyZXRMZWZ0ID8/IChpbnB1dC53cmFwcGVyV2lkdGggPiAwICYmIGlucHV0LndyYXBwZXJMZWZ0ICE9IG51bGwgPyBpbnB1dC53cmFwcGVyTGVmdCA6IG51bGwpXG5cbiAgaWYgKHRvcFNvdXJjZSA9PSBudWxsIHx8IGxlZnRTb3VyY2UgPT0gbnVsbCkge1xuICAgIHJldHVybiBudWxsXG4gIH1cblxuICBjb25zdCBsZWZ0ID0gTWF0aC5tYXgoXG4gICAgaW5wdXQudmlld3BvcnRQYWRQeCxcbiAgICBNYXRoLm1pbihpbnB1dC52aWV3cG9ydFdpZHRoIC0gaW5wdXQuZHJvcGRvd25XaWR0aFB4IC0gaW5wdXQudmlld3BvcnRQYWRQeCwgbGVmdFNvdXJjZSlcbiAgKVxuICBjb25zdCBhdmFpbGFibGVIZWlnaHRQeCA9IHRvcFNvdXJjZSAtIGlucHV0LmdhcFB4IC0gaW5wdXQudmlld3BvcnRQYWRQeFxuICBjb25zdCBtYXhIZWlnaHQgPSBNYXRoLm1pbihpbnB1dC5tYXhEcm9wZG93bkhlaWdodFB4LCBNYXRoLm1heCgwLCBhdmFpbGFibGVIZWlnaHRQeCkpXG5cbiAgcmV0dXJuIHtcbiAgICBsZWZ0LFxuICAgIGJvdHRvbTogaW5wdXQudmlld3BvcnRIZWlnaHQgLSB0b3BTb3VyY2UgKyBpbnB1dC5nYXBQeCxcbiAgICBtYXhIZWlnaHQsXG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IHJlc29sdmVNYWlhSW5wdXRTdHJlYW1pbmdEYXRhQXR0ciA9IChpc1N0cmVhbWluZzogYm9vbGVhbik6ICd0cnVlJyB8ICdmYWxzZScgPT5cbiAgaXNTdHJlYW1pbmcgPyAndHJ1ZScgOiAnZmFsc2UnXG5cbmV4cG9ydCB0eXBlIEFjdGl2ZVRvb2xDaGlwSWNvbk1vZGUgPSAnY2xvc2UnIHwgJ3dlYicgfCAnZGVlcCdcblxuZXhwb3J0IGNvbnN0IHJlc29sdmVBY3RpdmVUb29sQ2hpcEljb25Nb2RlID0gKFxuICBhY3RpdmVUb29sQ2hpcEhvdmVyZWQ6IGJvb2xlYW4sXG4gIGlzV2ViU2VhcmNoQWN0aXZlOiBib29sZWFuXG4pOiBBY3RpdmVUb29sQ2hpcEljb25Nb2RlID0+IHtcbiAgaWYgKGFjdGl2ZVRvb2xDaGlwSG92ZXJlZCkgcmV0dXJuICdjbG9zZSdcbiAgaWYgKGlzV2ViU2VhcmNoQWN0aXZlKSByZXR1cm4gJ3dlYidcbiAgcmV0dXJuICdkZWVwJ1xufVxuXG5leHBvcnQgY29uc3QgcmVzb2x2ZUFjdGl2ZVRvb2xDaGlwU2VhcmNoTGFiZWwgPSAocGFyYW1zOiB7XG4gIGFjdGl2ZVRvb2xDaGlwSG92ZXJlZDogYm9vbGVhblxuICBpc1dlYlNlYXJjaEFjdGl2ZTogYm9vbGVhblxuICB3ZWJTZWFyY2hMYWJlbDogc3RyaW5nXG4gIGRlZXBTZWFyY2hMYWJlbDogc3RyaW5nXG59KTogc3RyaW5nID0+XG4gIHBhcmFtcy5hY3RpdmVUb29sQ2hpcEhvdmVyZWQgfHwgcGFyYW1zLmlzV2ViU2VhcmNoQWN0aXZlID8gcGFyYW1zLndlYlNlYXJjaExhYmVsIDogcGFyYW1zLmRlZXBTZWFyY2hMYWJlbFxuXG5leHBvcnQgY29uc3QgcmVzb2x2ZU1lYXN1cmVkTGF5b3V0Um93SGVpZ2h0ID0gKGN1cnJlbnQ6IG51bWJlciwgbmV4dDogbnVtYmVyKTogbnVtYmVyID0+XG4gIGN1cnJlbnQgPT09IG5leHQgPyBjdXJyZW50IDogbmV4dFxuXG5leHBvcnQgY29uc3Qgc2hvdWxkT2JzZXJ2ZU1haWFJbnB1dExheW91dEVsZW1lbnQgPSAoZWxlbWVudDogSFRNTEVsZW1lbnQgfCBudWxsIHwgdW5kZWZpbmVkKTogYm9vbGVhbiA9PlxuICBCb29sZWFuKGVsZW1lbnQpXG5cbmV4cG9ydCBjb25zdCBjYW5BdHRhY2hNb3JlQ2hhdElucHV0RmlsZXMgPSAoY3VycmVudEF0dGFjaG1lbnRDb3VudDogbnVtYmVyLCBtYXhBdHRhY2htZW50czogbnVtYmVyKTogYm9vbGVhbiA9PlxuICBjdXJyZW50QXR0YWNobWVudENvdW50IDwgbWF4QXR0YWNobWVudHNcbiJdLCJtYXBwaW5ncyI6IkFBQUEsU0FBU0Esb0JBQW9CLFFBQVEsc0NBQXNDO0FBSTNFO0FBQ0EsT0FBTyxJQUFNQywyQkFBMkIsR0FBRyxTQUE5QkEsMkJBQTJCQSxDQUFJQyxLQUErQixFQUF5QjtFQUNsRyxJQUNHLENBQUFBLEtBQUssYUFBTEEsS0FBSyx1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