@camera.ui/server 2.2.1 → 2.2.3

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 (490) hide show
  1. package/dist/interface/assets/{404-Ci4V-7l9.js → 404-D0S6IGok.js} +1 -1
  2. package/dist/interface/assets/{About-BSGYUvI7.js → About-DAw9u8ZY.js} +1 -1
  3. package/dist/interface/assets/Assistant-Gi6_YkEY.js +1 -0
  4. package/dist/interface/assets/Automation-6eFKPJPu.js +3 -0
  5. package/dist/interface/assets/AutomationImport-95PfbPvG.js +2 -0
  6. package/dist/interface/assets/AutomationStore-BHxzzx7a.js +2 -0
  7. package/dist/interface/assets/AutomationStoreDetail-DEVlRllt.js +2 -0
  8. package/dist/interface/assets/Automations-DEivoiS1.js +2 -0
  9. package/dist/interface/assets/Camera-B5l_gv7t.js +2 -0
  10. package/dist/interface/assets/{CameraConsole-DbmJ9PNU.js → CameraConsole-B8bBYQzk.js} +1 -1
  11. package/dist/interface/assets/Cameras-HblWPGCv.js +651 -0
  12. package/dist/interface/assets/Camview-DEKrbg5R.js +1 -0
  13. package/dist/interface/assets/{CertificateUpload-_VQx5fjA.js → CertificateUpload-CC6YtX7h.js} +1 -1
  14. package/dist/interface/assets/{Config-BuuQmMOC.js → Config-DQEaOnaN.js} +1 -1
  15. package/dist/interface/assets/{ConfigActionAssistant-DforDPLT.js → ConfigActionAssistant-C_XRnBzo.js} +1 -1
  16. package/dist/interface/assets/{ConfigActionCameraControl-LwL8BSZX.js → ConfigActionCameraControl-oRzM9rjX.js} +1 -1
  17. package/dist/interface/assets/{ConfigActionDelay-C6u-CHFE.js → ConfigActionDelay-Dc-NZS5L.js} +1 -1
  18. package/dist/interface/assets/{ConfigActionHttp-CxbJVkf2.js → ConfigActionHttp-Nw0wt-JZ.js} +1 -1
  19. package/dist/interface/assets/{ConfigActionImageInput-BpDXjbnf.js → ConfigActionImageInput-Do60Upqm.js} +1 -1
  20. package/dist/interface/assets/{ConfigActionMqtt-BkbAAepo.js → ConfigActionMqtt-BeQVgaGX.js} +1 -1
  21. package/dist/interface/assets/{ConfigActionNotification-B2Dtkf2b.js → ConfigActionNotification-BA0FjOWs.js} +1 -1
  22. package/dist/interface/assets/{ConfigActionNotificationControl-DMW2_Vez.js → ConfigActionNotificationControl-Ce3Kd_Xv.js} +1 -1
  23. package/dist/interface/assets/{ConfigActionOutput-WVe74xXz.js → ConfigActionOutput-ChiOMWDy.js} +1 -1
  24. package/dist/interface/assets/{ConfigActionPlugin-C3iZfPRv.js → ConfigActionPlugin-Cn3r0glk.js} +1 -1
  25. package/dist/interface/assets/{ConfigActionSensor-DSW92VVP.js → ConfigActionSensor-DkdBCu-6.js} +1 -1
  26. package/dist/interface/assets/{ConfigActionSnapshot-Cl3NLmyn.js → ConfigActionSnapshot-CLlaDFUV.js} +1 -1
  27. package/dist/interface/assets/{ConfigActionVariable-Due14Kwt.js → ConfigActionVariable-D4x3Luxl.js} +1 -1
  28. package/dist/interface/assets/{ConfigConditionIfElse-mIXw954j.js → ConfigConditionIfElse-BpL8KZ5X.js} +1 -1
  29. package/dist/interface/assets/{ConfigConditionSensorState-C_FpJLnM.js → ConfigConditionSensorState-CSQexUF_.js} +1 -1
  30. package/dist/interface/assets/{ConfigConditionSwitch-CYRUg-Uo.js → ConfigConditionSwitch-CB2J_5kr.js} +1 -1
  31. package/dist/interface/assets/{ConfigConditionTime-WkevpYaO.js → ConfigConditionTime-X9fsNsYu.js} +1 -1
  32. package/dist/interface/assets/{ConfigSensorValueInput-BDz5olLY.js → ConfigSensorValueInput-VPhPxrQl.js} +1 -1
  33. package/dist/interface/assets/{ConfigTriggerDetection-Cb_BObEL.js → ConfigTriggerDetection-Dhzng4X5.js} +1 -1
  34. package/dist/interface/assets/{ConfigTriggerGeofence-B7Iugx3i.js → ConfigTriggerGeofence-Cm0CLNf5.js} +1 -1
  35. package/dist/interface/assets/{ConfigTriggerManual-D7w6C58j.js → ConfigTriggerManual-CRi3rsgG.js} +1 -1
  36. package/dist/interface/assets/{ConfigTriggerMqtt-D_ozlopI.js → ConfigTriggerMqtt-Ck__CWck.js} +1 -1
  37. package/dist/interface/assets/{ConfigTriggerSchedule-1UcaRD5S.js → ConfigTriggerSchedule-C1PZrHEu.js} +1 -1
  38. package/dist/interface/assets/{ConfigTriggerSensor-D9_lg6yH.js → ConfigTriggerSensor-9xVgCtkn.js} +1 -1
  39. package/dist/interface/assets/{ConfigTriggerSystem-COPR6t7r.js → ConfigTriggerSystem-Denf1gkO.js} +1 -1
  40. package/dist/interface/assets/{ConfigTriggerWebhook-C0v6uR67.js → ConfigTriggerWebhook-im24LkCn.js} +1 -1
  41. package/dist/interface/assets/Console-Q1HpmyO_.js +1 -0
  42. package/dist/interface/assets/CuiAssistantConversation-BxJf9sdu.js +5 -0
  43. package/dist/interface/assets/{CuiAssistantConversation-BkWDr6uX.css → CuiAssistantConversation-DmSdiv1b.css} +1 -1
  44. package/dist/interface/assets/{CuiAutomationRunsDialog-CGBqZXR4.js → CuiAutomationRunsDialog-B3tJ-Cma.js} +1 -1
  45. package/dist/interface/assets/CuiBottomSheet-C37blNu-.js +1 -0
  46. package/dist/interface/assets/{CuiBottomSheet-DomRjKV8.js → CuiBottomSheet-kvvLw1MQ.js} +1 -1
  47. package/dist/interface/assets/CuiCameraPipCard-TVAf5ZYQ.js +1 -0
  48. package/dist/interface/assets/CuiCameraRecordings-C26rX8dh.css +1 -0
  49. package/dist/interface/assets/CuiCameraRecordings-IHg1dNf4.js +1 -0
  50. package/dist/interface/assets/{CuiCameraShares-CVbWZZ_i.js → CuiCameraShares-B5ghuJS-.js} +1 -1
  51. package/dist/interface/assets/{CuiCameraTable-B1F2UjZk.js → CuiCameraTable-Y5XUkU7w.js} +1 -1
  52. package/dist/interface/assets/CuiCameraTable-xDZz7Wpe.js +1 -0
  53. package/dist/interface/assets/{CuiChartTable-CcovDii1.js → CuiChartTable-CXdupaj5.js} +1 -1
  54. package/dist/interface/assets/CuiChartTable-DXY7rY3O.css +1 -0
  55. package/dist/interface/assets/{CuiConsole-BzJJnQTd.js → CuiConsole-5KgXSOS5.js} +2 -2
  56. package/dist/interface/assets/CuiDataTable-DPIbKnvU.css +1 -0
  57. package/dist/interface/assets/CuiDataTable-hArZWV9B.js +1 -0
  58. package/dist/interface/assets/CuiLightControl-MRpR0XIZ.js +1 -0
  59. package/dist/interface/assets/{CuiList-Dfklll0h.js → CuiList-D-l4HrBP.js} +1 -1
  60. package/dist/interface/assets/CuiPluginCard-whoQ5YHn.js +2 -0
  61. package/dist/interface/assets/CuiPluginCategoryChip-CH53zk2o.js +1 -0
  62. package/dist/interface/assets/CuiPluginOAuthButton-BBA0AzVO.js +2 -0
  63. package/dist/interface/assets/{CuiPluginTrustBadge-CILKiExH.js → CuiPluginTrustBadge-C0EX5aCI.js} +1 -1
  64. package/dist/interface/assets/{CuiQRCode-DHUwFLQz.js → CuiQRCode-BRT0NO5c.js} +1 -1
  65. package/dist/interface/assets/CuiSchema-DBY1x1BT.js +1 -0
  66. package/dist/interface/assets/{CuiTopNavbarItem-DBsbHvkJ.js → CuiTopNavbarItem-CpMT8_0r.js} +1 -1
  67. package/dist/interface/assets/Faces-Dqi30qs9.js +1 -0
  68. package/dist/interface/assets/FirstSteps-B8n4fGK3.js +1 -0
  69. package/dist/interface/assets/Floorplan-ZHXNaZA8.js +1 -0
  70. package/dist/interface/assets/{Instances-cgw_Xzu0.js → Instances-DEj3gs6H.js} +1 -1
  71. package/dist/interface/assets/{Logs-BrTGt33Q.js → Logs-CwHvSKd6.js} +2 -2
  72. package/dist/interface/assets/Menu-C4BxUV0P.js +1 -0
  73. package/dist/interface/assets/Metrics-BCOE-rcw.js +9 -0
  74. package/dist/interface/assets/{OAuthDeviceFlow-Bx6YBLUX.js → OAuthDeviceFlow-D6bjZOYS.js} +1 -1
  75. package/dist/interface/assets/Plugin-ppCvxkl4.js +1 -0
  76. package/dist/interface/assets/{PluginConsole-C6xky2l3.js → PluginConsole-BP42Qpee.js} +1 -1
  77. package/dist/interface/assets/PluginDetail-BnX5lZGz.js +2 -0
  78. package/dist/interface/assets/{PluginSchema-D5dmitq0.js → PluginSchema-uVKXzfo6.js} +1 -1
  79. package/dist/interface/assets/PluginSearch-C4MvWyLb.js +1 -0
  80. package/dist/interface/assets/PluginSearch-no79fTuf.js +2 -0
  81. package/dist/interface/assets/{PluginUpdateProgress-Cj4Ilm8M.js → PluginUpdateProgress-73jprYHA.js} +1 -1
  82. package/dist/interface/assets/Plugins-DtEqS6_j.js +1 -0
  83. package/dist/interface/assets/RecentEventsFilter-CtyCbt6Z.js +1 -0
  84. package/dist/interface/assets/Recordings-DrcOsRLn.js +1 -0
  85. package/dist/interface/assets/{SensorEdit-BBTdSbok.js → SensorEdit-D4-mMg8S.js} +1 -1
  86. package/dist/interface/assets/{SensorHistory-BmGYTFWx.js → SensorHistory-C-X7VI-f.js} +1 -1
  87. package/dist/interface/assets/Sensors-BJh8BkCR.js +2 -0
  88. package/dist/interface/assets/{Settings-B-lq2Bls.js → Settings-B9CZvA-d.js} +1 -1
  89. package/dist/interface/assets/SettingsAccount-CkvScQmF.js +1 -0
  90. package/dist/interface/assets/SettingsAccount-D3zF2kLc.js +1 -0
  91. package/dist/interface/assets/{SettingsAppearance-DMhqHxXU.js → SettingsAppearance-CbG8M38w.js} +1 -1
  92. package/dist/interface/assets/SettingsAppearance-ZHqNXXIL.js +1 -0
  93. package/dist/interface/assets/SettingsAssistant-BESab92C.css +1 -0
  94. package/dist/interface/assets/SettingsAssistant-DxYPnbms.js +1 -0
  95. package/dist/interface/assets/{SettingsBackup-C9clJ_2F.js → SettingsBackup-DZBzUyQm.js} +1 -1
  96. package/dist/interface/assets/{SettingsList-Ba5TjVzD.js → SettingsList-DFg8g7IM.js} +1 -1
  97. package/dist/interface/assets/{SettingsMqtt-4tFIdfzL.js → SettingsMqtt-BeujOZkh.js} +1 -1
  98. package/dist/interface/assets/SettingsNotifications-DtSTE76r.js +1 -0
  99. package/dist/interface/assets/{SettingsPermissions-B6vNyFvJ.js → SettingsPermissions-CPOAefv0.js} +1 -1
  100. package/dist/interface/assets/SettingsRecordings-ClAtT4Bh.js +1 -0
  101. package/dist/interface/assets/SettingsRemote-58S4Thfp.js +2 -0
  102. package/dist/interface/assets/SettingsSystem-tTGpuiRW.js +2 -0
  103. package/dist/interface/assets/{SettingsUsers-DOUvMVjf.js → SettingsUsers-D8b7I5c2.js} +1 -1
  104. package/dist/interface/assets/{Terminal-BoMq8civ.js → Terminal-1_Fi0VW-.js} +2 -2
  105. package/dist/interface/assets/Training-CQHfQjUP.css +1 -0
  106. package/dist/interface/assets/Training-DfOqDTHJ.js +1 -0
  107. package/dist/interface/assets/{Updates-Cceza_vs.js → Updates-BW0p7Wc5.js} +1 -1
  108. package/dist/interface/assets/{VariableInput-Ds5NaShw.js → VariableInput-sqnLuk6S.js} +1 -1
  109. package/dist/interface/assets/{VariableSuggestions-B0Y5QsCw.js → VariableSuggestions-3pbnxhyT.js} +1 -1
  110. package/dist/interface/assets/{VersionsHandler-D3ugTFh9.js → VersionsHandler-CWmjDygB.js} +1 -1
  111. package/dist/interface/assets/VirtualSensorCreate-BzmFlvYD.js +1 -0
  112. package/dist/interface/assets/Workers-Dm9o2wMo.js +2 -0
  113. package/dist/interface/assets/api-B6TtU9Ew.css +2 -0
  114. package/dist/interface/assets/{api-C4b9FQa5.js → api-CQ-3I3-i.js} +1 -1
  115. package/dist/interface/assets/api-DPgKdIQZ.js +4 -0
  116. package/dist/interface/assets/{assistant-DfBoMwZZ.js → assistant-0UymvpMy.js} +1 -1
  117. package/dist/interface/assets/{auth-jXwc9evv.js → auth-C0jhqNaz.js} +1 -1
  118. package/dist/interface/assets/{automations-Bx7_-5ll.js → automations-Bj30nb8s.js} +1 -1
  119. package/dist/interface/assets/cameraSources-CiMjIjsh.js +1 -0
  120. package/dist/interface/assets/cloudHandoff-Cxljjl7N.js +1 -0
  121. package/dist/interface/assets/{config-4L2n-1_z.js → config-D-uVfwYp.js} +1 -1
  122. package/dist/interface/assets/dots-vertical-C4DlXZyp.js +1 -0
  123. package/dist/interface/assets/eventIcons-BPQ-zSnz.js +1 -0
  124. package/dist/interface/assets/{flowSchema-ZMBzlKJI.js → flowSchema-D3nNJVLL.js} +1 -1
  125. package/dist/interface/assets/{intercomService-DQ4LZJfW.js → intercomService-BeoNs-09.js} +1 -1
  126. package/dist/interface/assets/main-BrNGfemk.js +3 -0
  127. package/dist/interface/assets/{mqtt-DEt78fr7.js → mqtt-D7jRwifB.js} +1 -1
  128. package/dist/interface/assets/{notifications-mJrKtTFp.js → notifications-BpRVoerg.js} +1 -1
  129. package/dist/interface/assets/pause-B7ud2O8d.js +1 -0
  130. package/dist/interface/assets/{plugins-IMJg5aI8.js → plugins-wZ4RDxCb.js} +1 -1
  131. package/dist/interface/assets/{rooms-Dt3X1UEj.js → rooms-CFcu2dU1.js} +1 -1
  132. package/dist/interface/assets/sensorIcons-B117n8l2.js +1 -0
  133. package/dist/interface/assets/{sensorSlots-CUWphRrL.js → sensorSlots-CAr3prFc.js} +1 -1
  134. package/dist/interface/assets/{sensors-DG-GPuvr.js → sensors-oriEG3KR.js} +1 -1
  135. package/dist/interface/assets/{server-CFtdMCM4.js → server-Ce6ou2NV.js} +1 -1
  136. package/dist/interface/assets/{theme-C8wlVvxI.js → theme-CBTC6-Lp.js} +1 -1
  137. package/dist/interface/assets/{types-BxQYBZ2c.js → types-C-amdBz6.js} +1 -1
  138. package/dist/interface/assets/types-CjU6-JvD.js +1 -0
  139. package/dist/interface/assets/types-CzjppLwt.js +1 -0
  140. package/dist/interface/assets/{ungrouped-Dbr16vFt.css → ungrouped-AYNBKz52.css} +1 -1
  141. package/dist/interface/assets/ungrouped-BQzKp2PT.js +1 -0
  142. package/dist/interface/assets/{updates-DqHYjhVs.js → updates-Cohtc6vb.js} +1 -1
  143. package/dist/interface/assets/{useAppVersion-iJHv6EYQ.js → useAppVersion-xxi6fR7J.js} +1 -1
  144. package/dist/interface/assets/{useAssistantActions-BeXqj2-6.js → useAssistantActions-BkRK1FBg.js} +1 -1
  145. package/dist/interface/assets/useBackupRestore-BGvhSqJB.js +1 -0
  146. package/dist/interface/assets/{useCameraOptions-DVcUIXzh.js → useCameraOptions-ophs2V4p.js} +1 -1
  147. package/dist/interface/assets/{useKeyboardInset-DpxykA20.js → useKeyboardInset-Cpz6Hs5c.js} +1 -1
  148. package/dist/interface/assets/{useLogsSocket-D2gJ0e00.js → useLogsSocket-CB07yhv4.js} +1 -1
  149. package/dist/interface/assets/{useNavLayout-D-KmCM3U.js → useNavLayout-BYEejBpb.js} +1 -1
  150. package/dist/interface/assets/{usePermissions-CsWQ7pWp.js → usePermissions-yWhjYMcr.js} +1 -1
  151. package/dist/interface/assets/{usePluginUpdates-D0bz8TeJ.js → usePluginUpdates-9rvsWfdJ.js} +1 -1
  152. package/dist/interface/assets/{usePushRegistration-B9vouC4k.js → usePushRegistration-b5owOzjH.js} +1 -1
  153. package/dist/interface/assets/{useServerRestart-CaYRL38s.js → useServerRestart-yRXDWnH_.js} +1 -1
  154. package/dist/interface/assets/{useStreamStatus-BSl9TJlX.js → useStreamStatus-BHyWrAHu.js} +1 -1
  155. package/dist/interface/assets/{useTabSwipe-B6GIPOrZ.js → useTabSwipe-Dr9HYP1J.js} +1 -1
  156. package/dist/interface/assets/{useUpdateChannel-BuIKUKQ9.js → useUpdateChannel-IVj0XKlN.js} +1 -1
  157. package/dist/interface/assets/{useUpdatesSocket-B8F-9tUI.js → useUpdatesSocket-CuPHbSF7.js} +1 -1
  158. package/dist/interface/assets/{useUserOptions-9Lcq7htw.js → useUserOptions-zIfrMDiG.js} +1 -1
  159. package/dist/interface/assets/{vendor-cameraui-zaB6gIk1.js → vendor-cameraui-Dhg7MEnt.js} +2 -2
  160. package/dist/interface/assets/{vendor-core-CfoDuMvj.js → vendor-core-CQ2HVu0L.js} +1 -1
  161. package/dist/interface/assets/{vendor-primevue-5HrOunkM.js → vendor-primevue-CeWNZxSE.js} +1 -1
  162. package/dist/interface/assets/vendor-zod-CBbC1rE7.js +109 -0
  163. package/dist/interface/ha/{404-BA6DAi0I.js → 404-B70KNhsW.js} +1 -1
  164. package/dist/interface/ha/{About-D3tEPbYC.js → About-DLNqqctZ.js} +3 -3
  165. package/dist/interface/ha/{Assistant-BSlIm7T1.js → Assistant-Duvvoz2B.js} +1004 -988
  166. package/dist/interface/ha/{Automation-B7ZCtbpe.js → Automation-DZ8zvsvo.js} +199 -199
  167. package/dist/interface/ha/{AutomationImport-CVEGBlET.js → AutomationImport-DOCdim5O.js} +7 -7
  168. package/dist/interface/ha/{AutomationStore-hW-ReFbV.js → AutomationStore-Bjoubp-m.js} +52 -51
  169. package/dist/interface/ha/{AutomationStoreDetail-R-1XPudW.js → AutomationStoreDetail-H-RWNpwm.js} +20 -20
  170. package/dist/interface/ha/{Automations-9CLEXB1U.js → Automations-GyofQfo7.js} +87 -100
  171. package/dist/interface/ha/{Camera-CQK1LgJe.js → Camera-Bo5nMQaU.js} +30 -30
  172. package/dist/interface/ha/{CameraConsole-C6CZ3tzc.js → CameraConsole-BmDQ3rcS.js} +5 -5
  173. package/dist/interface/ha/{Cameras-Bw_Co8e9.js → Cameras-BfHoFjpC.js} +224 -224
  174. package/dist/interface/ha/{Camview-fb7D6KvD.js → Camview-DVoIdM3o.js} +332 -331
  175. package/dist/interface/ha/{Config-Cf0XlhJ-.js → Config-CC8tQiOy.js} +110 -110
  176. package/dist/interface/ha/{ConfigActionAssistant-BtnJwaka.js → ConfigActionAssistant-hfsz38an.js} +4 -4
  177. package/dist/interface/ha/{ConfigActionCameraControl-B1NtlCI4.js → ConfigActionCameraControl-C0-wxlAS.js} +5 -5
  178. package/dist/interface/ha/{ConfigActionHttp-BpI7XQC3.js → ConfigActionHttp-CM_3bIUq.js} +2 -2
  179. package/dist/interface/ha/{ConfigActionImageInput-tLzrOm0l.js → ConfigActionImageInput-B5306Z_7.js} +1 -1
  180. package/dist/interface/ha/{ConfigActionMqtt-DIuCKfQL.js → ConfigActionMqtt-DLiM83Kz.js} +4 -4
  181. package/dist/interface/ha/{ConfigActionNotification-CotMZbgF.js → ConfigActionNotification-36VBlfim.js} +4 -4
  182. package/dist/interface/ha/{ConfigActionNotificationControl-ClnOPBa2.js → ConfigActionNotificationControl-DRjDvA1H.js} +2 -2
  183. package/dist/interface/ha/{ConfigActionOutput-DFRh3xK2.js → ConfigActionOutput-BkGHERoJ.js} +1 -1
  184. package/dist/interface/ha/{ConfigActionPlugin-BSUdCGwz.js → ConfigActionPlugin-Ds1_Pow7.js} +5 -5
  185. package/dist/interface/ha/{ConfigActionSensor-B-PHlt11.js → ConfigActionSensor-22uKE0d0.js} +6 -6
  186. package/dist/interface/ha/{ConfigActionSnapshot-DomyiKiQ.js → ConfigActionSnapshot-uTTsTfo2.js} +2 -2
  187. package/dist/interface/ha/{ConfigActionVariable-D4QZ0GSg.js → ConfigActionVariable-DNMJBiQV.js} +1 -1
  188. package/dist/interface/ha/{ConfigConditionIfElse-Din_LVbb.js → ConfigConditionIfElse-BVzmIDKK.js} +3 -3
  189. package/dist/interface/ha/{ConfigConditionSensorState-cnMbVYSj.js → ConfigConditionSensorState-Di7Ic1xI.js} +4 -4
  190. package/dist/interface/ha/{ConfigConditionSwitch-nLCPZ02V.js → ConfigConditionSwitch-D8CcTHJ1.js} +10 -10
  191. package/dist/interface/ha/{ConfigConditionTime-CcZFjBil.js → ConfigConditionTime-CRn4k6uE.js} +2 -2
  192. package/dist/interface/ha/{ConfigSensorValueInput-CrZoNX72.js → ConfigSensorValueInput-DthsOthT.js} +5 -4
  193. package/dist/interface/ha/{ConfigTriggerDetection-MsrbiErr.js → ConfigTriggerDetection-BDYanDEV.js} +4 -4
  194. package/dist/interface/ha/{ConfigTriggerGeofence-BxQ0n4-f.js → ConfigTriggerGeofence-Binp0lYx.js} +7 -7
  195. package/dist/interface/ha/{ConfigTriggerMqtt-ti8xd7vF.js → ConfigTriggerMqtt-BaPzSHbK.js} +1 -1
  196. package/dist/interface/ha/{ConfigTriggerSensor-CNlsV9yo.js → ConfigTriggerSensor-DiTaTZXm.js} +2 -2
  197. package/dist/interface/ha/{ConfigTriggerSystem-CsULDPX-.js → ConfigTriggerSystem-CsdWiz-S.js} +2 -2
  198. package/dist/interface/ha/{ConfigTriggerWebhook-BnUer9x_.js → ConfigTriggerWebhook-Ca0PsUmU.js} +2 -2
  199. package/dist/interface/ha/{Console-B1Y6mBPP.js → Console-0amlIoZR.js} +100 -100
  200. package/dist/interface/ha/{CuiAutomationRunsDialog-BHJIQ0Tj.js → CuiAutomationRunsDialog-DNBuwkgL.js} +2 -2
  201. package/dist/interface/ha/{CuiBottomSheet-DyCegs0G.js → CuiBottomSheet-CdXBYz4P.js} +1 -1
  202. package/dist/interface/ha/{CuiCameraRecordings-Cfzu3-OA.js → CuiCameraRecordings-D4ZB56nd.js} +21 -21
  203. package/dist/interface/ha/{CuiCameraShares-CE2Z9Osp.js → CuiCameraShares-YmzZusZR.js} +5 -5
  204. package/dist/interface/ha/{CuiCameraTable-DCm-DNjq.js → CuiCameraTable-DFzhCO3J.js} +8 -8
  205. package/dist/interface/ha/{CuiChartTable-BYkhLvXA.js → CuiChartTable-BvfJbFNS.js} +20 -18
  206. package/dist/interface/ha/{CuiConsole-DTDUpQ_E.js → CuiConsole-DtxyD6Sd.js} +5 -5
  207. package/dist/interface/ha/{CuiDataTable-Cxk-gD0O.js → CuiDataTable-CHvx6ALQ.js} +19 -12
  208. package/dist/interface/ha/{CuiPluginCard-CaJWPBXm.js → CuiPluginCard-B3vU57eD.js} +50 -50
  209. package/dist/interface/ha/{CuiPluginOAuthButton--RbsaIiq.js → CuiPluginOAuthButton-DgOFfP5e.js} +8 -8
  210. package/dist/interface/ha/{CuiPluginTrustBadge-G79t87hq.js → CuiPluginTrustBadge-udmtgGHt.js} +3 -3
  211. package/dist/interface/ha/{CuiQRCode-C0o0cS3C.js → CuiQRCode-8yDZMC3o.js} +7 -7
  212. package/dist/interface/ha/{CuiSchema-BmfjaboJ.js → CuiSchema-0Hikg2mm.js} +125 -125
  213. package/dist/interface/ha/{CuiTopNavbarItem-KlOpTPMA.js → CuiTopNavbarItem-B139fVxP.js} +1 -1
  214. package/dist/interface/ha/{Faces-CG1S8jsV.js → Faces-YdAf9USr.js} +45 -44
  215. package/dist/interface/ha/{FirstSteps-B4cODn_E.js → FirstSteps-Dts6TJ6O.js} +64 -64
  216. package/dist/interface/ha/{Floorplan-CM5cL4_h.js → Floorplan-D6XXe8ni.js} +428 -427
  217. package/dist/interface/ha/{Instances-B1KAGADd.js → Instances-DsIsonqp.js} +71 -71
  218. package/dist/interface/ha/{Logs-CNVJvujx.js → Logs-Cyo3LC94.js} +11 -11
  219. package/dist/interface/ha/{Menu-hlaVYE5G.js → Menu-yh_sI9d9.js} +20 -25
  220. package/dist/interface/ha/{Metrics-CUllrnJc.js → Metrics-VehQmsmN.js} +91 -90
  221. package/dist/interface/ha/{OAuthDeviceFlow-kYPoT4p2.js → OAuthDeviceFlow-CXp9NvbY.js} +9 -9
  222. package/dist/interface/ha/{Plugin-QvBE-VHD.js → Plugin-BqvlXx43.js} +127 -126
  223. package/dist/interface/ha/{PluginConsole-Cpd8sx5a.js → PluginConsole-Dx84BNoO.js} +6 -6
  224. package/dist/interface/ha/{PluginDetail-CqSaIeH-.js → PluginDetail-DUpDS2nD.js} +10 -10
  225. package/dist/interface/ha/{PluginSearch-C-3nAbyu.js → PluginSearch-Cvh0P9VB.js} +127 -126
  226. package/dist/interface/ha/{PluginUpdateProgress-Izcgxa6-.js → PluginUpdateProgress-CfyI2Qdp.js} +3 -3
  227. package/dist/interface/ha/Plugins-DXreIUwr.js +692 -0
  228. package/dist/interface/ha/RecentEventsFilter-C1deXNIS.js +79 -0
  229. package/dist/interface/ha/{Recordings-BSR6AGq2.js → Recordings-Cb8ifRcB.js} +352 -383
  230. package/dist/interface/ha/{SensorEdit-KLS5N1YP.js → SensorEdit-CsNXxcdj.js} +353 -351
  231. package/dist/interface/ha/{SensorHistory-nHGwqzDW.js → SensorHistory-DToDalOm.js} +2 -2
  232. package/dist/interface/ha/{Sensors-VAy09hDh.js → Sensors-B6giaowJ.js} +191 -189
  233. package/dist/interface/ha/{Settings-DINmP-PB.js → Settings-CVed7MM_.js} +22 -22
  234. package/dist/interface/ha/{SettingsAccount-B-3XO53P.js → SettingsAccount-CvvsLPoT.js} +263 -262
  235. package/dist/interface/ha/{SettingsAppearance-B7ONsdV3.js → SettingsAppearance-BDJeNGTd.js} +19 -19
  236. package/dist/interface/ha/SettingsAssistant-B168p5HB.js +1857 -0
  237. package/dist/interface/ha/{SettingsBackup-CRzyW7Ce.js → SettingsBackup-Bz_9xJ61.js} +42 -42
  238. package/dist/interface/ha/{SettingsList-GWb7HKeq.js → SettingsList-B42rajJc.js} +2 -2
  239. package/dist/interface/ha/{SettingsMqtt-Db8CUtzi.js → SettingsMqtt-B5Qy6bxD.js} +23 -23
  240. package/dist/interface/ha/SettingsNotifications-C59UxYic.js +529 -0
  241. package/dist/interface/ha/{SettingsRecordings-s52rT7TX.js → SettingsRecordings-CkJGOiyQ.js} +11 -10
  242. package/dist/interface/ha/{SettingsRemote-DYUJdmKW.js → SettingsRemote-Cc-qt3si.js} +340 -340
  243. package/dist/interface/ha/{SettingsSystem-Bkfc5Tky.js → SettingsSystem-Cco2XXsS.js} +9 -9
  244. package/dist/interface/ha/{SettingsUsers-BHLsFMG9.js → SettingsUsers-BDh-3saR.js} +36 -36
  245. package/dist/interface/ha/{Terminal-CDZjjg7e.js → Terminal-D2U-kFPW.js} +41 -41
  246. package/dist/interface/ha/Training-DWcaCI-3.js +1499 -0
  247. package/dist/interface/ha/{Updates-DM5YITjv.js → Updates-DGHNcvO9.js} +13 -13
  248. package/dist/interface/ha/{VariableInput-DOiVQbEb.js → VariableInput-Bujz1T1I.js} +1 -1
  249. package/dist/interface/ha/{VersionsHandler-CjzF5jII.js → VersionsHandler-CXvbeKbl.js} +10 -10
  250. package/dist/interface/ha/{VirtualSensorCreate-q7b13gfi.js → VirtualSensorCreate-DOYONbgu.js} +3 -3
  251. package/dist/interface/ha/{Workers-Vf16lK9P.js → Workers-tQbC3WS6.js} +28 -28
  252. package/dist/interface/ha/{accordion-DdpJ2jcK.js → accordion-X9Wa7KVq.js} +1 -1
  253. package/dist/interface/ha/{api-C0pVlzsW.js → api-BI6_Fcag.js} +9483 -9888
  254. package/dist/interface/ha/{api-Bnk0paIs.js → api-DfJZj7ht.js} +3 -3
  255. package/dist/interface/ha/{assistant-DJPdidEd.js → assistant-BqSg4N8v.js} +55 -55
  256. package/dist/interface/ha/{auth-CmCJIpis.js → auth-BFoSqfzS.js} +39 -39
  257. package/dist/interface/ha/{automationBlueprint-CtX7AOzy.js → automationBlueprint-Q0yt2MdH.js} +4 -3
  258. package/dist/interface/ha/cameraui-cards.js +1 -1
  259. package/dist/interface/ha/{cards-Cn0baEOx.js → cards-BW9I5B5Z.js} +561 -560
  260. package/dist/interface/ha/checkbox-D012nd17.js +279 -0
  261. package/dist/interface/ha/{config-DxaLI3Wy.js → config-CeNHEP9A.js} +16 -16
  262. package/dist/interface/ha/{datepicker-DpDmhDeD.js → datepicker-44Ub2Hx0.js} +329 -604
  263. package/dist/interface/ha/dist-BTp4AyuI.js +287 -0
  264. package/dist/interface/ha/{dist-aGnBxAoZ.js → dist-BV3OfApt.js} +763 -1048
  265. package/dist/interface/ha/dots-vertical-BEPlUtxU.js +19 -0
  266. package/dist/interface/ha/eventIcons-DrjNuTS2.js +676 -0
  267. package/dist/interface/ha/{mqtt-BSUalkMz.js → mqtt-BkYa2CXH.js} +12 -12
  268. package/dist/interface/ha/{multiselect-Cedfen4P.js → multiselect-B0fAnW75.js} +1 -1
  269. package/dist/interface/ha/{notifications-DuVSTES6.js → notifications-E3WSCGpc.js} +22 -22
  270. package/dist/interface/ha/pause-Ch6v65wA.js +19 -0
  271. package/dist/interface/ha/{pinia-Dk3LfWcE.js → pinia-DoDLbPZ3.js} +2293 -2274
  272. package/dist/interface/ha/{plugins-XTsvVLj3.js → plugins-2jjU7TfW.js} +68 -68
  273. package/dist/interface/ha/pwa/favicon-16.ico +0 -0
  274. package/dist/interface/ha/pwa/favicon-32.ico +0 -0
  275. package/dist/interface/ha/pwa/favicon-48.ico +0 -0
  276. package/dist/interface/ha/pwa/pwa-120x120.png +0 -0
  277. package/dist/interface/ha/pwa/pwa-24x24.png +0 -0
  278. package/dist/interface/ha/pwa/pwa-36x36.png +0 -0
  279. package/dist/interface/ha/pwa/pwa-48x48.png +0 -0
  280. package/dist/interface/ha/pwa/pwa-50x50.png +0 -0
  281. package/dist/interface/ha/pwa/pwa-64x64.png +0 -0
  282. package/dist/interface/ha/pwa/pwa-72x72.png +0 -0
  283. package/dist/interface/ha/pwa/pwa-88x88.png +0 -0
  284. package/dist/interface/ha/pwa/pwa-96x96.png +0 -0
  285. package/dist/interface/ha/{rooms-Ch5UrfPN.js → rooms-BkEw1ev-.js} +8 -8
  286. package/dist/interface/ha/{server-h-kQ6sSS.js → server-CuK4o2fS.js} +31 -31
  287. package/dist/interface/ha/{types-DjunpV_X.js → types-BRHWeX0a.js} +48 -34
  288. package/dist/interface/ha/{ungrouped-DkDSBlpG.js → ungrouped-BDwep3kg.js} +189 -206
  289. package/dist/interface/ha/{updates-D0cNiMIr.js → updates-R4xTxour.js} +42 -42
  290. package/dist/interface/ha/{useAppVersion-Cpv2npEz.js → useAppVersion-uaFjqUpx.js} +1 -1
  291. package/dist/interface/ha/{useLogsSocket-Du83S3Wz.js → useLogsSocket-BZq9GXfy.js} +1 -1
  292. package/dist/interface/ha/{useNavLayout-XBJRTK3F.js → useNavLayout-BJdDE__R.js} +11 -11
  293. package/dist/interface/ha/{useServerRestart-CWhJrEyy.js → useServerRestart-DDCKnE6c.js} +1 -1
  294. package/dist/interface/ha/{useTabSwipe-BSlykGzV.js → useTabSwipe-CEH6ltIZ.js} +1 -1
  295. package/dist/interface/ha/{useUpdateChannel-DZttbpyK.js → useUpdateChannel-CHt1il2V.js} +2 -2
  296. package/dist/interface/ha/{useUpdatesSocket-DI15Udke.js → useUpdatesSocket-BnVaNioY.js} +1 -1
  297. package/dist/interface/ha/{useUserOptions-CQL8tMr4.js → useUserOptions-C7cQ1P3Q.js} +1 -1
  298. package/dist/interface/index.html +35 -34
  299. package/dist/interface/pwa/favicon-16.ico +0 -0
  300. package/dist/interface/pwa/favicon-32.ico +0 -0
  301. package/dist/interface/pwa/favicon-48.ico +0 -0
  302. package/dist/interface/pwa/pwa-120x120.png +0 -0
  303. package/dist/interface/pwa/pwa-24x24.png +0 -0
  304. package/dist/interface/pwa/pwa-36x36.png +0 -0
  305. package/dist/interface/pwa/pwa-48x48.png +0 -0
  306. package/dist/interface/pwa/pwa-50x50.png +0 -0
  307. package/dist/interface/pwa/pwa-64x64.png +0 -0
  308. package/dist/interface/pwa/pwa-72x72.png +0 -0
  309. package/dist/interface/pwa/pwa-88x88.png +0 -0
  310. package/dist/interface/pwa/pwa-96x96.png +0 -0
  311. package/dist/interface/sw.js +1 -1
  312. package/dist/server/package.json +7 -8
  313. package/dist/server/requirements.txt +1 -1
  314. package/dist/server/src/_camera_ui_tools/camera_ui_sdk/__init__.py +2 -0
  315. package/dist/server/src/_camera_ui_tools/camera_ui_sdk/camera/__init__.py +2 -0
  316. package/dist/server/src/_camera_ui_tools/camera_ui_sdk/camera/frames.py +9 -5
  317. package/dist/server/src/api/controllers/assistant.controller.js +2 -1
  318. package/dist/server/src/api/controllers/assistant.controller.js.map +1 -1
  319. package/dist/server/src/api/controllers/plugins.controller.js +3 -3
  320. package/dist/server/src/api/controllers/plugins.controller.js.map +1 -1
  321. package/dist/server/src/api/controllers/users.controller.d.ts +3 -1
  322. package/dist/server/src/api/controllers/users.controller.js +38 -0
  323. package/dist/server/src/api/controllers/users.controller.js.map +1 -1
  324. package/dist/server/src/api/database/index.d.ts +1 -1
  325. package/dist/server/src/api/database/index.js +1 -1
  326. package/dist/server/src/api/database/index.js.map +1 -1
  327. package/dist/server/src/api/database/migrations/v2-2-3.d.ts +3 -0
  328. package/dist/server/src/api/database/migrations/v2-2-3.js +22 -0
  329. package/dist/server/src/api/database/migrations/v2-2-3.js.map +1 -0
  330. package/dist/server/src/api/database/record-schemas.d.ts +44 -1
  331. package/dist/server/src/api/database/record-schemas.js +3 -3
  332. package/dist/server/src/api/database/record-schemas.js.map +1 -1
  333. package/dist/server/src/api/database/types.d.ts +4 -2
  334. package/dist/server/src/api/routes/users.routes.js +24 -1
  335. package/dist/server/src/api/routes/users.routes.js.map +1 -1
  336. package/dist/server/src/api/schemas/assistant.schema.d.ts +43 -1
  337. package/dist/server/src/api/schemas/assistant.schema.js +2 -1
  338. package/dist/server/src/api/schemas/assistant.schema.js.map +1 -1
  339. package/dist/server/src/api/schemas/cameras.schema.d.ts +32 -16
  340. package/dist/server/src/api/schemas/cameras.schema.js +5 -5
  341. package/dist/server/src/api/schemas/cameras.schema.js.map +1 -1
  342. package/dist/server/src/api/schemas/users.schema.d.ts +8 -0
  343. package/dist/server/src/api/schemas/users.schema.js +45 -0
  344. package/dist/server/src/api/schemas/users.schema.js.map +1 -1
  345. package/dist/server/src/api/services/users.service.d.ts +3 -1
  346. package/dist/server/src/api/services/users.service.js +33 -0
  347. package/dist/server/src/api/services/users.service.js.map +1 -1
  348. package/dist/server/src/api/types/index.d.ts +4 -1
  349. package/dist/server/src/api/types/index.js.map +1 -1
  350. package/dist/server/src/api/websocket/nsp/logs.d.ts +5 -2
  351. package/dist/server/src/api/websocket/nsp/logs.js +20 -5
  352. package/dist/server/src/api/websocket/nsp/logs.js.map +1 -1
  353. package/dist/server/src/api/websocket/nsp/training.d.ts +1 -1
  354. package/dist/server/src/api/websocket/nsp/training.js +3 -2
  355. package/dist/server/src/api/websocket/nsp/training.js.map +1 -1
  356. package/dist/server/src/assistant/manager.d.ts +1 -0
  357. package/dist/server/src/assistant/manager.js +24 -2
  358. package/dist/server/src/assistant/manager.js.map +1 -1
  359. package/dist/server/src/assistant/prompt.d.ts +1 -0
  360. package/dist/server/src/assistant/prompt.js +10 -1
  361. package/dist/server/src/assistant/prompt.js.map +1 -1
  362. package/dist/server/src/assistant/reasoning.d.ts +1 -1
  363. package/dist/server/src/assistant/reasoning.js +6 -3
  364. package/dist/server/src/assistant/reasoning.js.map +1 -1
  365. package/dist/server/src/assistant/retry.d.ts +4 -0
  366. package/dist/server/src/assistant/retry.js +3 -0
  367. package/dist/server/src/assistant/retry.js.map +1 -1
  368. package/dist/server/src/assistant/search.js +4 -2
  369. package/dist/server/src/assistant/search.js.map +1 -1
  370. package/dist/server/src/assistant/skills.js +3 -2
  371. package/dist/server/src/assistant/skills.js.map +1 -1
  372. package/dist/server/src/assistant/tool-names.d.ts +2 -0
  373. package/dist/server/src/assistant/tool-names.js +23 -0
  374. package/dist/server/src/assistant/tool-names.js.map +1 -0
  375. package/dist/server/src/assistant/tools/api.js +2 -0
  376. package/dist/server/src/assistant/tools/api.js.map +1 -1
  377. package/dist/server/src/assistant/tools/docs.js +1 -0
  378. package/dist/server/src/assistant/tools/docs.js.map +1 -1
  379. package/dist/server/src/assistant/tools/index.js +2 -2
  380. package/dist/server/src/assistant/tools/index.js.map +1 -1
  381. package/dist/server/src/assistant/tools/memory.js +1 -0
  382. package/dist/server/src/assistant/tools/memory.js.map +1 -1
  383. package/dist/server/src/assistant/tools/notifications.d.ts +2 -1
  384. package/dist/server/src/assistant/tools/notifications.js +69 -35
  385. package/dist/server/src/assistant/tools/notifications.js.map +1 -1
  386. package/dist/server/src/assistant/tools/plugins.d.ts +7 -1
  387. package/dist/server/src/assistant/tools/plugins.js +13 -9
  388. package/dist/server/src/assistant/tools/plugins.js.map +1 -1
  389. package/dist/server/src/assistant/tools/settings.js +1 -0
  390. package/dist/server/src/assistant/tools/settings.js.map +1 -1
  391. package/dist/server/src/assistant/uploads.js +8 -1
  392. package/dist/server/src/assistant/uploads.js.map +1 -1
  393. package/dist/server/src/automations/utilities/imageInput.js +4 -2
  394. package/dist/server/src/automations/utilities/imageInput.js.map +1 -1
  395. package/dist/server/src/camera/controller.d.ts +3 -0
  396. package/dist/server/src/camera/controller.js +41 -28
  397. package/dist/server/src/camera/controller.js.map +1 -1
  398. package/dist/server/src/camera/index.d.ts +1 -7
  399. package/dist/server/src/camera/index.js +0 -13
  400. package/dist/server/src/camera/index.js.map +1 -1
  401. package/dist/server/src/camera/privacy/snapshot.js +4 -2
  402. package/dist/server/src/camera/privacy/snapshot.js.map +1 -1
  403. package/dist/server/src/camera/snapshot-store.d.ts +22 -0
  404. package/dist/server/src/camera/snapshot-store.js +78 -0
  405. package/dist/server/src/camera/snapshot-store.js.map +1 -0
  406. package/dist/server/src/camera/streaming/fmp4-session.d.ts +2 -1
  407. package/dist/server/src/camera/streaming/fmp4-session.js +4 -0
  408. package/dist/server/src/camera/streaming/fmp4-session.js.map +1 -1
  409. package/dist/server/src/camera/streaming/rtp-session.js +1 -0
  410. package/dist/server/src/camera/streaming/rtp-session.js.map +1 -1
  411. package/dist/server/src/manager/downloadManager.d.ts +1 -0
  412. package/dist/server/src/manager/downloadManager.js +3 -0
  413. package/dist/server/src/manager/downloadManager.js.map +1 -1
  414. package/dist/server/src/manager/notificationManager.d.ts +1 -0
  415. package/dist/server/src/manager/notificationManager.js +13 -2
  416. package/dist/server/src/manager/notificationManager.js.map +1 -1
  417. package/dist/server/src/manager/trainingCandidateManager.js +17 -13
  418. package/dist/server/src/manager/trainingCandidateManager.js.map +1 -1
  419. package/dist/server/src/manager/types.d.ts +4 -0
  420. package/dist/server/src/rpc/interfaces/device.d.ts +1 -0
  421. package/dist/server/src/sensors/registry.js +2 -2
  422. package/dist/server/src/sensors/registry.js.map +1 -1
  423. package/dist/server/src/utils/image.d.ts +1 -0
  424. package/dist/server/src/utils/image.js +95 -0
  425. package/dist/server/src/utils/image.js.map +1 -0
  426. package/package.json +7 -8
  427. package/dist/interface/assets/Assistant-CblA57eC.js +0 -1
  428. package/dist/interface/assets/Automation-WFaHCnEO.js +0 -3
  429. package/dist/interface/assets/AutomationImport-HRMq3VvF.js +0 -2
  430. package/dist/interface/assets/AutomationStore-BaaFYySv.js +0 -2
  431. package/dist/interface/assets/AutomationStoreDetail-IiLAbn4L.js +0 -2
  432. package/dist/interface/assets/Automations-DRTUxje4.js +0 -2
  433. package/dist/interface/assets/Camera-CaNYoR20.js +0 -2
  434. package/dist/interface/assets/Cameras-DnLbeJFs.js +0 -651
  435. package/dist/interface/assets/Camview-uZ50ebLh.js +0 -1
  436. package/dist/interface/assets/Console-CHdFH_Ip.js +0 -1
  437. package/dist/interface/assets/CuiAssistantConversation-B_eSNMuO.js +0 -5
  438. package/dist/interface/assets/CuiBottomSheet-B7hreGA-.js +0 -1
  439. package/dist/interface/assets/CuiCameraPipCard-BXCRph8M.js +0 -1
  440. package/dist/interface/assets/CuiCameraRecordings-B7BhgPpP.css +0 -1
  441. package/dist/interface/assets/CuiCameraRecordings-CztUs6YM.js +0 -1
  442. package/dist/interface/assets/CuiCameraTable-BmsSlihU.js +0 -1
  443. package/dist/interface/assets/CuiChartTable-DCGY-zVy.css +0 -1
  444. package/dist/interface/assets/CuiDataTable-CNFiiz_X.js +0 -1
  445. package/dist/interface/assets/CuiDataTable-DbkFXZeg.css +0 -1
  446. package/dist/interface/assets/CuiLightControl-u_yM0oyh.js +0 -1
  447. package/dist/interface/assets/CuiPluginCard-Bib3KXMs.js +0 -2
  448. package/dist/interface/assets/CuiPluginCategoryChip-CKSV5COz.js +0 -1
  449. package/dist/interface/assets/CuiPluginOAuthButton-Cug_uTVq.js +0 -2
  450. package/dist/interface/assets/CuiSchema-ycZ4rNC_.js +0 -1
  451. package/dist/interface/assets/Faces-D6pm4dxq.js +0 -1
  452. package/dist/interface/assets/FirstSteps-DotR0zU_.js +0 -1
  453. package/dist/interface/assets/Floorplan-xxlvYsYV.js +0 -1
  454. package/dist/interface/assets/Menu-6FMKvbpH.js +0 -1
  455. package/dist/interface/assets/Metrics-SQdgeJrD.js +0 -9
  456. package/dist/interface/assets/Plugin-CsT7_OZp.js +0 -1
  457. package/dist/interface/assets/PluginDetail-Bz65OQlN.js +0 -2
  458. package/dist/interface/assets/PluginSearch-CrzD6rwo.js +0 -1
  459. package/dist/interface/assets/PluginSearch-DKSrC539.js +0 -2
  460. package/dist/interface/assets/Plugins-BvuGEkhs.js +0 -1
  461. package/dist/interface/assets/Recordings-6MHDmY05.js +0 -1
  462. package/dist/interface/assets/Sensors-XQLst9D2.js +0 -2
  463. package/dist/interface/assets/SettingsAccount-BwC-JLu1.js +0 -1
  464. package/dist/interface/assets/SettingsAccount-D8txIS7w.js +0 -1
  465. package/dist/interface/assets/SettingsAppearance-D1PEIzvU.js +0 -1
  466. package/dist/interface/assets/SettingsAssistant-BpTwRGXe.css +0 -1
  467. package/dist/interface/assets/SettingsAssistant-C_9kjVnu.js +0 -1
  468. package/dist/interface/assets/SettingsNotifications-DhXKEfw0.js +0 -1
  469. package/dist/interface/assets/SettingsRecordings-BqRtaATr.js +0 -1
  470. package/dist/interface/assets/SettingsRemote-9YXNd_d3.js +0 -2
  471. package/dist/interface/assets/SettingsSystem-CwlTgN12.js +0 -2
  472. package/dist/interface/assets/Training-DMNjB3uX.css +0 -1
  473. package/dist/interface/assets/Training-DQP1EUdI.js +0 -1
  474. package/dist/interface/assets/VirtualSensorCreate-VIHqPQuq.js +0 -1
  475. package/dist/interface/assets/Workers-CJXGSHP0.js +0 -2
  476. package/dist/interface/assets/api-0KzHya6g.js +0 -4
  477. package/dist/interface/assets/api-C85p0Dk3.css +0 -2
  478. package/dist/interface/assets/cameraSources-B5dOcB7w.js +0 -1
  479. package/dist/interface/assets/cloudHandoff-DzrB62Ot.js +0 -1
  480. package/dist/interface/assets/main-BREBoPYq.js +0 -3
  481. package/dist/interface/assets/sensorIcons-Dwg45YYo.js +0 -1
  482. package/dist/interface/assets/types-B5ZroTch.js +0 -1
  483. package/dist/interface/assets/types-BZz-3rol.js +0 -1
  484. package/dist/interface/assets/ungrouped-CH2Ug0hy.js +0 -1
  485. package/dist/interface/assets/useBackupRestore-5E-Y8DMu.js +0 -1
  486. package/dist/interface/assets/vendor-zod-BMOt_yT8.js +0 -109
  487. package/dist/interface/ha/Plugins-BkvUlAHi.js +0 -705
  488. package/dist/interface/ha/SettingsAssistant-VQkALMWq.js +0 -1699
  489. package/dist/interface/ha/SettingsNotifications-lNH9mh9I.js +0 -529
  490. package/dist/interface/ha/Training-BbRm4L9a.js +0 -1469
@@ -0,0 +1,1857 @@
1
+ import { F as e, G as t, H as n, Jt as r, Tt as i, Wt as a, _t as o, d as s, f as c, gt as l, kt as u, l as d, lt as f, ot as p, p as m, q as ee, r as h, rt as g, u as _, ut as v, v as y, x as b, xt as x, y as S } from "./runtime-core.esm-bundler-DCktklpY.js";
2
+ import { t as C } from "./tooltip-X5MY9FoG.js";
3
+ import { t as te } from "./message-BExXUXHN.js";
4
+ import { t as w } from "./chevron-down-CN3LNAsG.js";
5
+ import { t as ne } from "./tag-Bko2QYOK.js";
6
+ import { $t as T, Dt as E, En as D, Et as re, On as ie, Qt as O, Tt as ae, V as k, Xi as A, a as j, br as oe, dn as se, en as ce, fn as le, ht as M, p as ue, r as de, ut as fe, yi as pe, yr as N } from "./api-BI6_Fcag.js";
7
+ import { i as me } from "./intercomService-Dwd0bhSN.js";
8
+ import { K as P } from "./pinia-DoDLbPZ3.js";
9
+ import { n as F } from "./vue-i18n-BBObX4QY.js";
10
+ import { t as he } from "./button-DJDZxmKj.js";
11
+ import { t as ge } from "./inputtext-vdcrNX6K.js";
12
+ import { t as _e } from "./select-CaVzuLaS.js";
13
+ import { t as ve } from "./autocomplete-gFZBpGxE.js";
14
+ import { i as ye, t as be } from "./CuiDataTable-CHvx6ALQ.js";
15
+ import { t as xe } from "./inputnumber-MSv4Pb-P.js";
16
+ import { t as Se } from "./multiselect-B0fAnW75.js";
17
+ import { t as Ce } from "./textarea-DrKQ6YMZ.js";
18
+ import { t as I } from "./assistant-BqSg4N8v.js";
19
+ import { t as we } from "./content-copy-ChfuNPUb.js";
20
+ import { u as Te } from "./cards-BW9I5B5Z.js";
21
+ import { a as L, c as Ee, d as De, i as Oe, l as R, o as ke, s as Ae, u as z } from "./types-B9Rna2FN.js";
22
+ import { t as je } from "./pause-Ch6v65wA.js";
23
+ import { t as Me } from "./restore-DMczh46P.js";
24
+ import { t as Ne } from "./dots-vertical-BEPlUtxU.js";
25
+ import { t as Pe } from "./pencil-outline-3AYc7WXi.js";
26
+ //#region ~icons/mdi/wrench-outline
27
+ var Fe = {
28
+ viewBox: "0 0 24 24",
29
+ width: "1.2em",
30
+ height: "1.2em"
31
+ };
32
+ function B(e, t) {
33
+ return n(), m("svg", Fe, [...t[0] ||= [_("path", {
34
+ fill: "currentColor",
35
+ d: "m22.61 19l-9.08-9.09c.93-2.34.47-5.1-1.44-7C9.79.61 6.21.4 3.66 2.26L7.5 6.11L6.08 7.5L2.25 3.69C.39 6.23.6 9.82 2.9 12.11c1.86 1.86 4.57 2.35 6.89 1.48l9.11 9.11c.39.39 1.02.39 1.41 0l2.3-2.3c.39-.4.39-1.01 0-1.4m-3 1.59l-9.46-9.46c-.61.45-1.29.72-2 .82c-1.36.2-2.79-.21-3.83-1.25C3.37 9.76 2.93 8.5 3 7.26l3.09 3.09l4.24-4.24L7.24 3c1.26-.05 2.49.39 3.44 1.33a4.47 4.47 0 0 1 1.24 3.96a4.35 4.35 0 0 1-.88 1.96l9.46 9.45z"
36
+ }, null, -1)]]);
37
+ }
38
+ var Ie = o({
39
+ name: "mdi-wrench-outline",
40
+ render: B
41
+ }), V = {
42
+ viewBox: "0 0 24 24",
43
+ width: "1.2em",
44
+ height: "1.2em"
45
+ };
46
+ function Le(e, t) {
47
+ return n(), m("svg", V, [...t[0] ||= [_("path", {
48
+ fill: "currentColor",
49
+ d: "M11 9.47V11h3.76L13 14.53V13H9.24zM13 1L6 15h5v8l7-14h-5z"
50
+ }, null, -1)]]);
51
+ }
52
+ var Re = o({
53
+ name: "mdi-lightning-bolt-outline",
54
+ render: Le
55
+ }), ze = {
56
+ viewBox: "0 0 24 24",
57
+ width: "1.2em",
58
+ height: "1.2em"
59
+ };
60
+ function H(e, t) {
61
+ return n(), m("svg", ze, [...t[0] ||= [_("path", {
62
+ fill: "currentColor",
63
+ d: "m12 15.39l-3.76 2.27l.99-4.28l-3.32-2.88l4.38-.37L12 6.09l1.71 4.04l4.38.37l-3.32 2.88l.99 4.28M22 9.24l-7.19-.61L12 2L9.19 8.63L2 9.24l5.45 4.73L5.82 21L12 17.27L18.18 21l-1.64-7.03z"
64
+ }, null, -1)]]);
65
+ }
66
+ var Be = o({
67
+ name: "mdi-star-outline",
68
+ render: H
69
+ }), U = { class: "flex w-full flex-col gap-6" }, Ve = { class: "flex flex-col field-gap" }, He = {
70
+ for: "assistantModelProvider",
71
+ class: "cui-label"
72
+ }, Ue = {
73
+ key: 0,
74
+ class: "flex flex-col field-gap"
75
+ }, We = {
76
+ for: "assistantModelBaseUrl",
77
+ class: "cui-label"
78
+ }, Ge = {
79
+ key: 1,
80
+ class: "flex flex-col field-gap"
81
+ }, W = {
82
+ for: "assistantModelKey",
83
+ class: "cui-label"
84
+ }, G = { class: "flex flex-col field-gap" }, K = {
85
+ for: "assistantModelModel",
86
+ class: "cui-label"
87
+ }, q = { class: "flex flex-col field-gap" }, Ke = {
88
+ for: "assistantModelName",
89
+ class: "cui-label"
90
+ }, J = { class: "flex items-center gap-4 cui-toggle-switch" }, Y = { class: "flex flex-col field-switch-gap" }, qe = {
91
+ for: "assistantModelUsers",
92
+ class: "cui-label-switch"
93
+ }, Je = {
94
+ key: 2,
95
+ class: "flex items-center gap-4 cui-toggle-switch"
96
+ }, X = { class: "flex flex-col field-switch-gap" }, Ye = {
97
+ for: "assistantModelImages",
98
+ class: "cui-label-switch"
99
+ }, Xe = /* @__PURE__ */ b({
100
+ __name: "AssistantModel",
101
+ props: {
102
+ entry: {},
103
+ models: {}
104
+ },
105
+ setup(t, { expose: i }) {
106
+ let a = new I(), o = t, { t: p } = F(), ee = pe(), g = a.listAssistantModelsMutation(), v = x(o.entry?.provider ?? "ollama"), b = x(o.entry?.baseURL ?? ""), C = x(""), w = x(o.entry?.model ?? ""), ne = x(o.entry && o.entry.name !== o.entry.model ? o.entry.name : ""), T = x(o.entry?.sendImages ?? !1), E = x(o.entry?.userAccess !== !1), D = x("new"), re = x([]), O = x([]), ae = x(!1), k = d(() => ke.includes(v.value)), A = d(() => v.value === "ollama" || v.value === "openai-compatible"), j = d(() => o.entry?.apiKeySet === !0 && o.entry.provider === v.value), oe = d(() => o.models.filter((e) => e._id !== o.entry?._id && e.provider === v.value && e.apiKeySet)), se = d(() => [{
107
+ label: j.value ? p("views.settings.assistant_api_key_stored") : p("views.settings.assistant_api_key_new"),
108
+ value: "new"
109
+ }, ...oe.value.map((e) => ({
110
+ label: p("views.settings.assistant_api_key_from", { name: e.name }),
111
+ value: e._id
112
+ }))]), ce = d(() => k.value && D.value === "new" && !C.value && !j.value);
113
+ function le() {
114
+ return j.value ? "new" : oe.value[0]?._id ?? "new";
115
+ }
116
+ function M() {
117
+ let e = D.value === "new" ? C.value ? { apiKey: C.value } : o.entry && !j.value ? { apiKey: null } : {} : { copyKeyFrom: D.value };
118
+ return {
119
+ ...o.entry ? {
120
+ id: o.entry._id,
121
+ retest: !0,
122
+ sendImages: T.value
123
+ } : {},
124
+ ...e,
125
+ name: ne.value,
126
+ provider: v.value,
127
+ baseURL: A.value && b.value ? b.value : null,
128
+ model: w.value.trim(),
129
+ userAccess: E.value
130
+ };
131
+ }
132
+ function ue() {
133
+ b.value = "", w.value = "", re.value = [], O.value = [], D.value = le();
134
+ }
135
+ function de(e) {
136
+ let t = e.query.toLowerCase();
137
+ O.value = re.value.filter((e) => e.toLowerCase().includes(t));
138
+ }
139
+ async function N() {
140
+ let e = await g.mutateAsync(M());
141
+ if (e.error) {
142
+ ee.add({
143
+ severity: "warn",
144
+ detail: p("views.settings.assistant_models_failed", { message: e.error }),
145
+ life: 5e3
146
+ });
147
+ return;
148
+ }
149
+ re.value = e.models, O.value = e.models;
150
+ }
151
+ return e(() => {
152
+ D.value = le();
153
+ }), i({ onConfirm: async () => !w.value.trim() || ce.value ? (ae.value = !0, null) : M() }), (e, i) => {
154
+ let a = _e, o = te, d = ge, p = fe, ee = ve, x = ie;
155
+ return n(), m("div", U, [
156
+ _("div", Ve, [
157
+ _("label", He, r(e.$t("views.settings.assistant_provider_label")), 1),
158
+ S(a, {
159
+ modelValue: u(v),
160
+ "onUpdate:modelValue": i[0] ||= (e) => l(v) ? v.value = e : null,
161
+ "input-id": "assistantModelProvider",
162
+ options: u(Ae),
163
+ "option-label": "label",
164
+ "option-value": "value",
165
+ fluid: "",
166
+ onChange: ue
167
+ }, null, 8, ["modelValue", "options"]),
168
+ S(o, {
169
+ severity: "secondary",
170
+ variant: "simple",
171
+ size: "small",
172
+ class: "cui-input-hint"
173
+ }, {
174
+ default: f(() => [y(r(e.$t(`views.settings.assistant_provider_hint_${u(v).replace("-", "_")}`)), 1)]),
175
+ _: 1
176
+ })
177
+ ]),
178
+ u(A) ? (n(), m("div", Ue, [_("label", We, r(e.$t("views.settings.assistant_base_url_label")), 1), S(d, {
179
+ id: "assistantModelBaseUrl",
180
+ modelValue: u(b),
181
+ "onUpdate:modelValue": i[1] ||= (e) => l(b) ? b.value = e : null,
182
+ modelModifiers: { trim: !0 },
183
+ placeholder: u(L)[u(v)],
184
+ fluid: "",
185
+ autocomplete: "off"
186
+ }, null, 8, ["modelValue", "placeholder"])])) : c("", !0),
187
+ u(k) || u(v) === "openai-compatible" ? (n(), m("div", Ge, [
188
+ _("label", W, r(e.$t("views.settings.assistant_api_key_label")), 1),
189
+ u(oe).length ? (n(), s(a, {
190
+ key: 0,
191
+ modelValue: u(D),
192
+ "onUpdate:modelValue": i[2] ||= (e) => l(D) ? D.value = e : null,
193
+ options: u(se),
194
+ "option-label": "label",
195
+ "option-value": "value",
196
+ fluid: ""
197
+ }, null, 8, ["modelValue", "options"])) : c("", !0),
198
+ u(D) === u("new") ? (n(), m(h, { key: 1 }, [S(p, {
199
+ modelValue: u(C),
200
+ "onUpdate:modelValue": i[3] ||= (e) => l(C) ? C.value = e : null,
201
+ "input-id": "assistantModelKey",
202
+ feedback: !1,
203
+ "toggle-mask": "",
204
+ fluid: "",
205
+ autocomplete: "new-password",
206
+ invalid: u(ae) && u(ce),
207
+ placeholder: u(j) ? "••••••••" : ""
208
+ }, null, 8, [
209
+ "modelValue",
210
+ "invalid",
211
+ "placeholder"
212
+ ]), u(j) ? (n(), s(o, {
213
+ key: 0,
214
+ severity: "secondary",
215
+ variant: "simple",
216
+ size: "small",
217
+ class: "cui-input-hint"
218
+ }, {
219
+ default: f(() => [y(r(e.$t("views.settings.assistant_api_key_keep_hint")), 1)]),
220
+ _: 1
221
+ })) : u(k) ? c("", !0) : (n(), s(o, {
222
+ key: 1,
223
+ severity: "secondary",
224
+ variant: "simple",
225
+ size: "small",
226
+ class: "cui-input-hint"
227
+ }, {
228
+ default: f(() => [y(r(e.$t("views.settings.assistant_api_key_optional")), 1)]),
229
+ _: 1
230
+ }))], 64)) : c("", !0)
231
+ ])) : c("", !0),
232
+ _("div", G, [
233
+ _("label", K, r(e.$t("views.settings.assistant_model_label")), 1),
234
+ S(ee, {
235
+ modelValue: u(w),
236
+ "onUpdate:modelValue": i[4] ||= (e) => l(w) ? w.value = e : null,
237
+ "input-id": "assistantModelModel",
238
+ suggestions: u(O),
239
+ loading: u(g).isPending.value,
240
+ invalid: u(ae) && !u(w).trim(),
241
+ dropdown: "",
242
+ fluid: "",
243
+ placeholder: e.$t("views.settings.assistant_model_placeholder"),
244
+ onComplete: de,
245
+ onDropdownClick: N
246
+ }, null, 8, [
247
+ "modelValue",
248
+ "suggestions",
249
+ "loading",
250
+ "invalid",
251
+ "placeholder"
252
+ ]),
253
+ S(o, {
254
+ severity: "secondary",
255
+ variant: "simple",
256
+ size: "small",
257
+ class: "cui-input-hint"
258
+ }, {
259
+ default: f(() => [y(r(e.$t("views.settings.assistant_model_info")), 1)]),
260
+ _: 1
261
+ })
262
+ ]),
263
+ _("div", q, [_("label", Ke, r(e.$t("views.settings.assistant_model_name_label")), 1), S(d, {
264
+ id: "assistantModelName",
265
+ modelValue: u(ne),
266
+ "onUpdate:modelValue": i[5] ||= (e) => l(ne) ? ne.value = e : null,
267
+ modelModifiers: { trim: !0 },
268
+ placeholder: u(w).trim() || e.$t("views.settings.assistant_model_name_placeholder"),
269
+ maxlength: "40",
270
+ fluid: ""
271
+ }, null, 8, ["modelValue", "placeholder"])]),
272
+ _("div", J, [_("div", Y, [_("label", qe, r(e.$t("views.settings.assistant_model_users")), 1), S(o, {
273
+ severity: "secondary",
274
+ variant: "simple",
275
+ size: "small",
276
+ class: "cui-input-switch-hint"
277
+ }, {
278
+ default: f(() => [y(r(e.$t("views.settings.assistant_model_users_info")), 1)]),
279
+ _: 1
280
+ })]), S(x, {
281
+ modelValue: u(E),
282
+ "onUpdate:modelValue": i[6] ||= (e) => l(E) ? E.value = e : null,
283
+ "input-id": "assistantModelUsers",
284
+ class: "ml-auto shrink-0"
285
+ }, null, 8, ["modelValue"])]),
286
+ t.entry ? (n(), m("div", Je, [_("div", X, [_("label", Ye, r(e.$t("views.settings.assistant_send_images")), 1), S(o, {
287
+ severity: "secondary",
288
+ variant: "simple",
289
+ size: "small",
290
+ class: "cui-input-switch-hint"
291
+ }, {
292
+ default: f(() => [y(r(t.entry.capabilities?.vision === !1 ? e.$t("views.settings.assistant_send_images_no_vision") : e.$t("views.settings.assistant_send_images_info")), 1)]),
293
+ _: 1
294
+ })]), S(x, {
295
+ modelValue: u(T),
296
+ "onUpdate:modelValue": i[7] ||= (e) => l(T) ? T.value = e : null,
297
+ "input-id": "assistantModelImages",
298
+ class: "ml-auto shrink-0"
299
+ }, null, 8, ["modelValue"])])) : c("", !0)
300
+ ]);
301
+ };
302
+ }
303
+ }), Ze = { class: "w-full h-full" }, Qe = {
304
+ key: 0,
305
+ class: "w-full h-full flex items-center justify-center"
306
+ }, $e = {
307
+ key: 1,
308
+ class: "flex flex-col w-full gap-6"
309
+ }, et = { class: "card-title" }, tt = { class: "flex items-center gap-4" }, nt = { class: "flex flex-col field-switch-gap min-w-0" }, rt = { class: "text-sm font-bold text-color" }, it = { class: "card-title" }, at = { class: "flex flex-col gap-6" }, ot = { class: "flex items-center gap-4 cui-toggle-switch" }, st = { class: "flex flex-col field-switch-gap" }, ct = {
310
+ for: "enabled",
311
+ class: "cui-label-switch"
312
+ }, lt = {
313
+ key: 0,
314
+ class: "flex flex-col divide-y divide-(--border-color)"
315
+ }, ut = { class: "flex min-w-0 flex-1 flex-wrap items-center gap-x-2 gap-y-1" }, dt = { class: "max-w-full basis-full truncate font-medium text-color md:basis-auto" }, ft = { class: "order-3 mt-1 flex flex-wrap items-center gap-1.5 md:order-2 md:mt-0" }, pt = { class: "order-2 basis-full truncate text-muted md:order-3" }, mt = {
316
+ key: 0,
317
+ class: "order-4 basis-full text-xs text-danger line-clamp-2"
318
+ }, ht = { class: "hidden shrink-0 items-center gap-1 md:flex" }, gt = { class: "shrink-0 md:hidden" }, _t = {
319
+ key: 1,
320
+ class: "text-sm text-muted"
321
+ }, vt = { class: "flex" }, yt = { class: "card-title" }, bt = { class: "flex flex-col gap-6" }, xt = { class: "flex min-w-0 items-center gap-2" }, St = ["for"], Ct = {
322
+ key: 1,
323
+ class: "text-sm text-muted"
324
+ }, wt = { class: "flex" }, Tt = { class: "card-title" }, Et = { class: "flex flex-col gap-6" }, Dt = { class: "flex items-center gap-4 cui-toggle-switch" }, Ot = { class: "flex flex-col field-switch-gap" }, kt = {
325
+ for: "memoryEnabled",
326
+ class: "cui-label-switch"
327
+ }, At = { class: "flex items-center gap-4 cui-toggle-switch" }, jt = { class: "flex flex-col field-switch-gap" }, Mt = {
328
+ for: "terminalEnabled",
329
+ class: "cui-label-switch"
330
+ }, Nt = { class: "flex flex-col field-gap" }, Pt = {
331
+ for: "language",
332
+ class: "cui-label"
333
+ }, Ft = { class: "flex flex-col field-gap" }, It = {
334
+ for: "reasoning",
335
+ class: "cui-label"
336
+ }, Lt = { class: "flex flex-col md:flex-row gap-6" }, Rt = { class: "flex flex-col field-gap flex-1" }, zt = {
337
+ for: "maxIterations",
338
+ class: "cui-label"
339
+ }, Bt = { class: "flex flex-col field-gap flex-1" }, Vt = {
340
+ for: "maxToolCalls",
341
+ class: "cui-label"
342
+ }, Ht = { class: "flex flex-col field-gap" }, Ut = {
343
+ for: "contextTokens",
344
+ class: "cui-label"
345
+ }, Wt = { class: "flex flex-col md:flex-row gap-4" }, Gt = { class: "flex flex-col field-gap flex-1" }, Kt = {
346
+ for: "historyThreads",
347
+ class: "cui-label"
348
+ }, qt = { class: "flex flex-col field-gap flex-1" }, Jt = {
349
+ for: "historyImages",
350
+ class: "cui-label"
351
+ }, Yt = { class: "flex flex-col field-gap" }, Xt = {
352
+ for: "systemPromptExtra",
353
+ class: "cui-label"
354
+ }, Zt = { class: "flex items-center gap-2" }, Qt = { class: "card-title" }, $t = { class: "flex flex-col gap-6" }, en = { class: "flex flex-col gap-4" }, tn = { class: "flex items-center justify-between gap-4" }, nn = { class: "flex flex-col" }, rn = { class: "text-sm font-medium text-color" }, an = { class: "text-xs text-muted" }, on = { class: "flex items-center justify-between gap-4" }, sn = { class: "flex flex-col" }, cn = { class: "text-sm font-medium text-color" }, ln = { class: "text-xs text-muted" }, un = {
355
+ key: 0,
356
+ class: "flex flex-col gap-6"
357
+ }, dn = { class: "flex flex-col field-gap" }, fn = {
358
+ for: "mcpEndpoint",
359
+ class: "cui-label"
360
+ }, pn = { class: "flex flex-col field-gap" }, mn = {
361
+ for: "mcpClient",
362
+ class: "cui-label"
363
+ }, hn = { class: "flex" }, gn = { class: "card-title" }, _n = { class: "flex flex-col gap-6" }, vn = ["aria-expanded", "onClick"], yn = { class: "flex min-w-0 flex-1 flex-col gap-0.5" }, bn = { class: "truncate text-sm font-medium text-color" }, xn = ["inert"], Sn = { class: "flex flex-col gap-4 px-4 pb-4" }, Cn = { class: "flex items-center gap-4 cui-toggle-switch" }, wn = { class: "flex flex-col field-switch-gap" }, Tn = ["for"], En = { class: "flex flex-col md:flex-row gap-4" }, Dn = { class: "flex flex-col field-gap md:w-56" }, On = ["for"], kn = { class: "flex flex-col field-gap flex-1" }, An = ["for"], jn = { class: "flex flex-col field-gap" }, Mn = ["for"], Nn = { class: "flex items-center gap-4 cui-toggle-switch" }, Pn = { class: "flex flex-col field-switch-gap" }, Fn = ["for"], In = { class: "flex" }, Ln = { class: "flex items-center gap-2" }, Rn = { class: "card-title" }, zn = { class: "flex flex-col gap-6" }, Bn = {
364
+ key: 0,
365
+ class: "flex flex-col divide-y divide-(--border-color)"
366
+ }, Vn = { class: "max-w-full basis-full truncate font-medium text-color md:basis-auto" }, Hn = { class: "flex flex-wrap items-center gap-1.5" }, Un = { class: "basis-full text-muted line-clamp-2" }, Wn = { class: "basis-full text-xs text-muted" }, Gn = { key: 0 }, Kn = { key: 1 }, qn = {
367
+ key: 0,
368
+ class: "basis-full text-xs text-danger line-clamp-2"
369
+ }, Jn = { class: "shrink-0" }, Yn = { class: "hidden items-center gap-1 md:flex" }, Xn = { class: "md:hidden" }, Zn = { class: "flex flex-col md:flex-row gap-6" }, Qn = { class: "flex flex-col field-gap flex-1" }, $n = {
370
+ for: "scheduleTitle",
371
+ class: "cui-label"
372
+ }, er = { class: "flex flex-col field-gap w-full md:w-52 shrink-0" }, tr = {
373
+ for: "scheduleDeliver",
374
+ class: "cui-label"
375
+ }, nr = { class: "flex flex-col field-gap" }, rr = {
376
+ for: "schedulePrompt",
377
+ class: "cui-label"
378
+ }, ir = {
379
+ key: 0,
380
+ class: "flex flex-col field-gap"
381
+ }, ar = {
382
+ for: "scheduleProfile",
383
+ class: "cui-label"
384
+ }, or = { class: "flex flex-col md:flex-row gap-6" }, sr = { class: "flex flex-col field-gap flex-1" }, cr = {
385
+ for: "schedulePreset",
386
+ class: "cui-label"
387
+ }, lr = {
388
+ key: 0,
389
+ class: "flex flex-col field-gap w-full md:w-40 shrink-0"
390
+ }, ur = {
391
+ for: "scheduleTime",
392
+ class: "cui-label"
393
+ }, dr = {
394
+ key: 1,
395
+ class: "flex flex-col field-gap flex-1"
396
+ }, fr = {
397
+ for: "scheduleCron",
398
+ class: "cui-label"
399
+ }, pr = { class: "flex" }, mr = { class: "card-title" }, hr = { class: "flex flex-col gap-3" }, gr = { class: "text-sm text-muted" }, _r = { class: "truncate" }, vr = { class: "truncate" }, yr = { class: "card-title" }, br = {
400
+ key: 0,
401
+ class: "text-sm text-muted"
402
+ }, xr = {
403
+ key: 1,
404
+ class: "flex flex-col gap-6"
405
+ }, Sr = {
406
+ key: 0,
407
+ class: "mb-4 flex flex-col field-gap"
408
+ }, Cr = ["for"], wr = { class: "flex max-h-96 flex-col divide-y divide-(--border-color) overflow-y-auto pr-2" }, Tr = { class: "min-w-0 flex-1" }, Er = { class: "flex flex-wrap items-center gap-2" }, Dr = { class: "font-medium text-color" }, Or = { class: "text-muted" }, kr = {
409
+ key: 0,
410
+ class: "flex"
411
+ }, Z = "none", Ar = /*#__PURE__*/ N(/* @__PURE__ */ b({
412
+ __name: "SettingsAssistant",
413
+ setup(e) {
414
+ let o = {
415
+ icon: k,
416
+ iconProps: { class: "text-red-500" },
417
+ labelProps: { class: "text-red-500" },
418
+ buttonProps: { severity: "danger" }
419
+ }, b = {
420
+ memoryEnabled: !0,
421
+ terminalEnabled: !1,
422
+ language: null,
423
+ reasoning: "default",
424
+ maxIterations: 8,
425
+ maxToolCalls: 25,
426
+ contextTokens: 48e3,
427
+ historyThreads: 50,
428
+ historyImages: 24
429
+ }, N = { columnHeaderContent: { class: "justify-end" } }, ve = {
430
+ bodyRow: { class: "text-sm text-secondary" },
431
+ column: { columnTitle: { class: "text-sm" } }
432
+ }, L = new I(), ke = pe(), Fe = M(), { t: B, locale: V } = F(), { data: Le, isLoading: ze } = L.usageAllQuery(), { data: H } = L.getAssistantInfoQuery(), U = L.patchAssistantInfoMutation(), { data: Ve } = L.listProfilesQuery(), { data: He } = L.listSchedulesQuery(), Ue = L.createScheduleMutation(), We = L.patchScheduleMutation(), Ge = L.deleteScheduleMutation(), W = L.runScheduleMutation(), G = x(null), K = x({
433
+ title: "",
434
+ prompt: "",
435
+ preset: "daily",
436
+ time: "20:00",
437
+ cron: "",
438
+ deliver: "push",
439
+ profileId: null
440
+ }), q = x({}), Ke = x([]), J = x([]), Y = x("claude-code"), qe = x("core"), Je = g("rowMenuRef"), X = d(() => H.value?.settings.models ?? []), Ye = d(() => H.value ? R(H.value.settings) : void 0), Ar = d(() => [{
441
+ label: B("views.settings.assistant_plugin_no_access"),
442
+ value: Z
443
+ }, ...X.value.map((e) => ({
444
+ label: e.name,
445
+ value: e._id
446
+ }))]), jr = d(() => {
447
+ let e = /* @__PURE__ */ new Map();
448
+ for (let t of H.value?.tools ?? []) {
449
+ let n = t.source.kind === "plugin" ? t.source.pluginId : t.source.kind === "external" ? t.source.serverId : "core", r = t.source.kind === "plugin" ? t.source.pluginName : t.source.kind === "external" ? t.source.serverName : "camera.ui", i = e.get(n) ?? {
450
+ key: n,
451
+ label: r,
452
+ serverId: t.source.kind === "external" ? t.source.serverId : void 0,
453
+ tools: []
454
+ };
455
+ i.tools.push(t), e.set(n, i);
456
+ }
457
+ return Array.from(e.values());
458
+ }), Mr = d(() => Le.value?.map((e) => ({
459
+ ...e,
460
+ key: `${e.userId}-${e.month}-${e.provider}-${e.model}`
461
+ }))), Q = d(() => H.value?.status), Nr = d(() => {
462
+ let e = new Intl.DisplayNames([V.value], { type: "language" }), t = P.map((t) => ({
463
+ label: e.of(t) ?? t,
464
+ value: t
465
+ })).sort((e, t) => e.label.localeCompare(t.label, V.value));
466
+ return [{
467
+ label: B("views.settings.assistant_language_auto"),
468
+ value: null
469
+ }, ...t];
470
+ }), Pr = d(() => [
471
+ "default",
472
+ "off",
473
+ "low",
474
+ "high"
475
+ ].map((e) => ({
476
+ label: B(`views.settings.assistant_reasoning_${e}`),
477
+ value: e
478
+ }))), Fr = d(() => new URL(`${A.defaults.baseURL ?? "/api"}/assistant/mcp`.replace(/\/{2,}/g, "/"), window.location.origin).toString()), Ir = d(() => [
479
+ {
480
+ label: "Claude Code",
481
+ value: "claude-code"
482
+ },
483
+ {
484
+ label: "Cursor, Windsurf, VS Code",
485
+ value: "cursor"
486
+ },
487
+ {
488
+ label: "Claude Desktop",
489
+ value: "claude-desktop"
490
+ }
491
+ ]), Lr = d(() => {
492
+ let e = Fr.value;
493
+ return Y.value === "claude-code" ? `claude mcp add --transport http camera-ui ${e} --header "Authorization: Bearer <api token>"` : Y.value === "cursor" ? JSON.stringify({ mcpServers: { "camera-ui": {
494
+ url: e,
495
+ headers: { Authorization: "Bearer <api token>" }
496
+ } } }, null, 2) : JSON.stringify({ mcpServers: { "camera-ui": {
497
+ command: "npx",
498
+ args: [
499
+ "-y",
500
+ "mcp-remote",
501
+ e,
502
+ "--header",
503
+ "Authorization: Bearer <api token>"
504
+ ]
505
+ } } }, null, 2);
506
+ }), Rr = d(() => [
507
+ "push",
508
+ "thread",
509
+ "both"
510
+ ].map((e) => ({
511
+ label: B(`views.settings.assistant_schedule_deliver_${e}`),
512
+ value: e
513
+ }))), zr = d(() => [
514
+ "daily",
515
+ "weekdays",
516
+ "weekends",
517
+ "weekly",
518
+ "hourly",
519
+ "custom"
520
+ ].map((e) => ({
521
+ label: B(`views.settings.assistant_schedule_preset_${e}`),
522
+ value: e
523
+ }))), Br = d(() => {
524
+ let { preset: e, time: t, cron: n } = K.value, [r, i] = t.split(":").map((e) => Number.parseInt(e, 10));
525
+ return e === "custom" ? n.trim() : e === "hourly" ? "0 * * * *" : Number.isNaN(r) || Number.isNaN(i) ? "" : `${i} ${r} * * ${e === "weekdays" ? "1-5" : e === "weekends" ? "0,6" : e === "weekly" ? "0" : "*"}`;
526
+ }), Vr = d(() => {
527
+ switch (Q.value?.state) {
528
+ case "ready": return "success";
529
+ case "unconfigured": return "warn";
530
+ default: return "secondary";
531
+ }
532
+ }), Hr = d(() => B(`views.settings.assistant_state_${Q.value?.state ?? "disabled"}`)), Ur = d(() => Q.value ? Q.value.state === "ready" ? B("views.settings.assistant_status_ready", { model: Q.value.model }) : B("views.settings.assistant_status_info") : "");
533
+ function Wr(e) {
534
+ let t = /^(\d+) (\d+) \* \* (\*|1-5|0,6|0)$/.exec(e);
535
+ if (!t) return e;
536
+ let n = `${t[2].padStart(2, "0")}:${t[1].padStart(2, "0")}`, r = t[3] === "*" ? "daily" : t[3] === "1-5" ? "weekdays" : t[3] === "0" ? "weekly" : "weekends";
537
+ return `${B(`views.settings.assistant_schedule_preset_${r}`)} ${n}`;
538
+ }
539
+ function Gr(e) {
540
+ return e === "push" ? "info" : e === "thread" ? "secondary" : "success";
541
+ }
542
+ function Kr(e) {
543
+ return new Date(e).toLocaleString(V.value, {
544
+ day: "2-digit",
545
+ month: "2-digit",
546
+ hour: "2-digit",
547
+ minute: "2-digit"
548
+ });
549
+ }
550
+ async function qr() {
551
+ await Ue.mutateAsync({
552
+ title: K.value.title,
553
+ prompt: K.value.prompt,
554
+ cron: Br.value,
555
+ timezone: Intl.DateTimeFormat().resolvedOptions().timeZone,
556
+ language: V.value,
557
+ deliver: K.value.deliver,
558
+ profileId: K.value.profileId,
559
+ enabled: !0
560
+ }), K.value = {
561
+ ...K.value,
562
+ title: "",
563
+ prompt: "",
564
+ cron: "",
565
+ profileId: null
566
+ };
567
+ }
568
+ function Jr(e) {
569
+ return e.replace(/^\[[^\]]+\]\s*/, "");
570
+ }
571
+ function Yr(e) {
572
+ if (e.source.kind !== "external") return e.approval;
573
+ let { serverId: t, toolName: n } = e.source;
574
+ return G.value?.mcpServers.find((e) => e.id === t)?.toolApproval[n] ?? e.approval;
575
+ }
576
+ function Xr(e) {
577
+ return e.tools.flatMap((e) => e.source.kind === "external" ? [{
578
+ label: Oe(e.name),
579
+ value: e.source.toolName
580
+ }] : []);
581
+ }
582
+ function Zr(e) {
583
+ return e.tools.flatMap((e) => e.source.kind === "external" && !Yr(e) ? [e.source.toolName] : []);
584
+ }
585
+ function Qr(e, t) {
586
+ let n = G.value?.mcpServers.find((t) => t.id === e.serverId);
587
+ n && (n.toolApproval = Object.fromEntries(Xr(e).map((e) => [e.value, !t.includes(e.value)])));
588
+ }
589
+ function $r(e) {
590
+ return e < 1e3 ? String(e) : e < 1e6 ? `${(e / 1e3).toFixed(+(e < 1e4))}k` : `${(e / 1e6).toFixed(2)}M`;
591
+ }
592
+ function ei(e) {
593
+ return H.value?.external.find((t) => t.id === e);
594
+ }
595
+ function ti(e) {
596
+ let t = ei(e);
597
+ return t ? t.state === "connected" ? B("views.settings.assistant_external_state_connected", { n: t.toolCount }) : t.state === "error" ? B("views.settings.assistant_external_state_error", { message: t.error ?? "" }) : B(`views.settings.assistant_external_state_${t.state}`) : "";
598
+ }
599
+ function ni(e) {
600
+ let t = ei(e)?.state;
601
+ return t === "connected" ? "text-success" : t === "error" ? "text-danger" : "text-muted";
602
+ }
603
+ function ri() {
604
+ if (!G.value) return;
605
+ let e = ue();
606
+ G.value.mcpServers.push({
607
+ id: e,
608
+ name: "",
609
+ url: "",
610
+ enabled: !0,
611
+ insecure: !1,
612
+ tokenSet: !1,
613
+ toolApproval: {}
614
+ }), J.value.push(e);
615
+ }
616
+ function ii(e) {
617
+ J.value = J.value.includes(e) ? J.value.filter((t) => t !== e) : [...J.value, e];
618
+ }
619
+ function ai(e) {
620
+ G.value && (G.value.mcpServers = G.value.mcpServers.filter((t) => t.id !== e), J.value = J.value.filter((t) => t !== e), delete q.value[e]);
621
+ }
622
+ function oi() {
623
+ let e = j(G.value);
624
+ return {
625
+ language: e.language,
626
+ maxIterations: e.maxIterations,
627
+ maxToolCalls: e.maxToolCalls,
628
+ contextTokens: e.contextTokens,
629
+ historyThreads: e.historyThreads,
630
+ historyImages: e.historyImages,
631
+ terminalEnabled: e.terminalEnabled,
632
+ reasoning: e.reasoning,
633
+ systemPromptExtra: e.systemPromptExtra,
634
+ mcpEnabled: e.mcpEnabled,
635
+ mcpWrites: e.mcpWrites,
636
+ memoryEnabled: e.memoryEnabled,
637
+ plugins: e.plugins.map(({ pluginId: e, modelId: t }) => ({
638
+ pluginId: e,
639
+ modelId: t
640
+ })),
641
+ mcpServers: e.mcpServers.filter((e) => e.name.trim() || e.url.trim()).map((e) => ({
642
+ id: e.id,
643
+ name: e.name.trim(),
644
+ url: e.url.trim(),
645
+ enabled: e.enabled,
646
+ insecure: e.insecure,
647
+ toolApproval: e.toolApproval,
648
+ ...q.value[e.id] ? { token: q.value[e.id] } : {}
649
+ }))
650
+ };
651
+ }
652
+ function si() {
653
+ G.value && Object.assign(G.value, b);
654
+ }
655
+ async function ci() {
656
+ G.value && (await U.mutateAsync(oi()), q.value = {});
657
+ }
658
+ function li(e) {
659
+ return Ae.find((t) => t.value === e)?.label ?? e;
660
+ }
661
+ async function ui(e) {
662
+ return U.mutateAsync({ models: e });
663
+ }
664
+ function di(e, t) {
665
+ Ke.value = [
666
+ {
667
+ label: B("views.settings.assistant_model_make_default"),
668
+ icon: Be,
669
+ hide: t._id === Ye.value?._id,
670
+ disabled: U.isPending.value,
671
+ onClick: () => _i(t)
672
+ },
673
+ {
674
+ label: B("views.settings.assistant_model_edit"),
675
+ icon: Pe,
676
+ onClick: () => mi(t)
677
+ },
678
+ {
679
+ ...o,
680
+ label: B("views.settings.assistant_model_delete"),
681
+ onClick: () => gi(t)
682
+ }
683
+ ], Je.value?.toggleMenu(e);
684
+ }
685
+ function fi(e) {
686
+ We.mutate({
687
+ scheduleId: e._id,
688
+ patch: { enabled: !e.enabled }
689
+ });
690
+ }
691
+ function pi(e, t) {
692
+ Ke.value = [
693
+ {
694
+ label: B("views.settings.assistant_schedule_run"),
695
+ icon: Re,
696
+ onClick: () => W.mutate(t._id)
697
+ },
698
+ t.enabled ? {
699
+ label: B("views.settings.assistant_schedule_pause"),
700
+ icon: je,
701
+ onClick: () => fi(t)
702
+ } : {
703
+ label: B("views.settings.assistant_schedule_resume"),
704
+ icon: De,
705
+ onClick: () => fi(t)
706
+ },
707
+ {
708
+ ...o,
709
+ label: B("views.settings.assistant_schedule_delete"),
710
+ onClick: () => Ge.mutate(t._id)
711
+ }
712
+ ], Je.value?.toggleMenu(e);
713
+ }
714
+ function mi(e) {
715
+ let t = new Set(X.value.map((e) => e._id));
716
+ Fe.openComponentDialog(Xe, {
717
+ data: {
718
+ title: B(e ? "views.settings.assistant_model_edit" : "views.settings.assistant_model_add"),
719
+ confirmText: B("components.form.button.save"),
720
+ awaitConfirm: !0,
721
+ contentProps: {
722
+ entry: e ? i(e) : void 0,
723
+ models: i(X.value)
724
+ }
725
+ },
726
+ onConfirm: async (n) => {
727
+ hi((await ui(e ? X.value.map((t) => t._id === e._id ? n : z(t)) : [...X.value.map(z), n])).settings.models.find((n) => e ? n._id === e._id : !t.has(n._id)));
728
+ }
729
+ });
730
+ }
731
+ function hi(e) {
732
+ let t = e?.capabilities;
733
+ if (!t) return;
734
+ let n = t.error ? B("views.settings.assistant_test_failed", { message: t.error }) : t.toolCalling ? t.vision === !1 ? B("views.settings.assistant_test_vision_missing") : "" : B("views.settings.assistant_test_tools_missing");
735
+ n && ke.add({
736
+ severity: t.error ? "error" : "warn",
737
+ detail: n,
738
+ life: 8e3
739
+ });
740
+ }
741
+ function gi(e) {
742
+ Fe.openTextDialog({
743
+ data: {
744
+ title: B("views.settings.assistant_model_delete"),
745
+ contentText: B("views.settings.assistant_model_delete_confirm", { name: e.name }),
746
+ confirmText: B("views.settings.assistant_model_delete"),
747
+ confirmButtonProps: { severity: "danger" }
748
+ },
749
+ onConfirm: async () => {
750
+ await ui(X.value.filter((t) => t._id !== e._id).map(z));
751
+ }
752
+ });
753
+ }
754
+ async function _i(e) {
755
+ await U.mutateAsync({ defaultModelId: e._id });
756
+ }
757
+ function vi(e) {
758
+ return G.value?.plugins.find((t) => t.pluginId === e)?.modelId ?? Z;
759
+ }
760
+ function yi(e) {
761
+ return X.value.find((t) => t._id === vi(e));
762
+ }
763
+ function bi(e, t) {
764
+ if (!G.value) return;
765
+ let n = G.value.plugins.filter((t) => t.pluginId !== e);
766
+ G.value.plugins = t === Z ? n : [...n, {
767
+ pluginId: e,
768
+ modelId: t
769
+ }];
770
+ }
771
+ function xi(e) {
772
+ return X.value.find((t) => t.provider === e.provider && t.model === e.model)?.name ?? e.model;
773
+ }
774
+ function Si(e) {
775
+ return Ve.value?.find((t) => t._id === e)?.name;
776
+ }
777
+ return p(H, (e) => {
778
+ e && !G.value && (G.value = j(e.settings));
779
+ }, { immediate: !0 }), (e, i) => {
780
+ let o = oe, d = te, p = ne, g = me, b = ie, x = Be, A = he, j = Pe, M = k, ue = Ne, pe = Te, P = _e, F = xe, I = Ce, L = Me, R = ge, ke = ae, Ae = re, z = E, Fe = ee("RouterLink"), B = w, V = fe, Le = Re, We = je, Xe = De, Z = ye, Q = be, ei = O, oi = T, ui = Se, hi = Ie, Ci = ce, wi = se, Ti = le, $ = C;
781
+ return n(), m("div", Ze, [u(G) ? (n(), m("div", $e, [
782
+ _("div", null, [_("span", et, r(e.$t("views.settings.status")), 1), S(g, { class: "cui-card" }, {
783
+ content: f(() => [_("div", tt, [_("div", nt, [_("span", rt, r(e.$t("views.settings.assistant_title")), 1), S(d, {
784
+ severity: "secondary",
785
+ variant: "simple",
786
+ size: "small",
787
+ class: "cui-input-switch-hint truncate"
788
+ }, {
789
+ default: f(() => [y(r(u(Ur)), 1)]),
790
+ _: 1
791
+ })]), S(p, {
792
+ class: "ml-auto shrink-0",
793
+ severity: u(Vr),
794
+ value: u(Hr)
795
+ }, null, 8, ["severity", "value"])])]),
796
+ _: 1
797
+ })]),
798
+ _("div", null, [_("span", it, r(e.$t("views.settings.assistant_model")), 1), S(g, { class: "cui-card" }, {
799
+ content: f(() => [_("div", at, [
800
+ _("div", ot, [_("div", st, [_("label", ct, r(e.$t("components.form.label.enabled")), 1), S(d, {
801
+ severity: "secondary",
802
+ variant: "simple",
803
+ size: "small",
804
+ class: "cui-input-switch-hint"
805
+ }, {
806
+ default: f(() => [y(r(e.$t("views.settings.assistant_enabled_info")), 1)]),
807
+ _: 1
808
+ })]), S(b, {
809
+ "model-value": u(H)?.settings.enabled ?? !1,
810
+ "input-id": "enabled",
811
+ disabled: u(U).isPending.value,
812
+ class: "ml-auto shrink-0",
813
+ "onUpdate:modelValue": i[0] ||= (e) => u(U).mutate({ enabled: e })
814
+ }, null, 8, ["model-value", "disabled"])]),
815
+ S(d, {
816
+ severity: "secondary",
817
+ variant: "simple",
818
+ size: "small",
819
+ class: "cui-input-hint"
820
+ }, {
821
+ default: f(() => [y(r(e.$t("views.settings.assistant_models_info")), 1)]),
822
+ _: 1
823
+ }),
824
+ u(X).length ? (n(), m("div", lt, [(n(!0), m(h, null, t(u(X), (i) => (n(), m("div", {
825
+ key: i._id,
826
+ class: "flex items-start gap-3 py-3 text-sm"
827
+ }, [
828
+ _("div", ut, [
829
+ _("span", dt, r(i.name), 1),
830
+ _("div", ft, [
831
+ i._id === u(Ye)?._id ? (n(), s(p, {
832
+ key: 0,
833
+ severity: "info",
834
+ value: e.$t("views.settings.assistant_model_default"),
835
+ class: "text-[10px]"
836
+ }, null, 8, ["value"])) : c("", !0),
837
+ i.userAccess === !1 ? (n(), s(p, {
838
+ key: 1,
839
+ severity: "secondary",
840
+ value: e.$t("views.settings.assistant_model_admins_only"),
841
+ class: "text-[10px]"
842
+ }, null, 8, ["value"])) : c("", !0),
843
+ (n(!0), m(h, null, t(u(Ee)(i), (t) => (n(), s(p, {
844
+ key: t.key,
845
+ severity: t.severity,
846
+ value: e.$t(`views.settings.assistant_capability_${t.key}`),
847
+ class: "text-[10px]"
848
+ }, null, 8, ["severity", "value"]))), 128))
849
+ ]),
850
+ _("div", pt, r(li(i.provider)) + " · " + r(i.model), 1),
851
+ i.capabilities?.error ? (n(), m("div", mt, r(i.capabilities.error), 1)) : c("", !0)
852
+ ]),
853
+ _("div", ht, [
854
+ i._id === u(Ye)?._id ? c("", !0) : v((n(), s(A, {
855
+ key: 0,
856
+ type: "button",
857
+ severity: "secondary",
858
+ text: "",
859
+ rounded: "",
860
+ class: "cui-icon-md",
861
+ disabled: u(U).isPending.value,
862
+ onClick: (e) => _i(i)
863
+ }, {
864
+ icon: f(() => [S(x, {
865
+ width: "100%",
866
+ height: "100%"
867
+ })]),
868
+ _: 1
869
+ }, 8, ["disabled", "onClick"])), [[
870
+ $,
871
+ { value: e.$t("views.settings.assistant_model_make_default") },
872
+ void 0,
873
+ { top: !0 }
874
+ ]]),
875
+ v((n(), s(A, {
876
+ type: "button",
877
+ severity: "secondary",
878
+ text: "",
879
+ rounded: "",
880
+ class: "cui-icon-md",
881
+ onClick: (e) => mi(i)
882
+ }, {
883
+ icon: f(() => [S(j, {
884
+ width: "100%",
885
+ height: "100%"
886
+ })]),
887
+ _: 1
888
+ }, 8, ["onClick"])), [[
889
+ $,
890
+ { value: e.$t("views.settings.assistant_model_edit") },
891
+ void 0,
892
+ { top: !0 }
893
+ ]]),
894
+ v((n(), s(A, {
895
+ type: "button",
896
+ severity: "danger",
897
+ text: "",
898
+ rounded: "",
899
+ class: "cui-icon-md",
900
+ onClick: (e) => gi(i)
901
+ }, {
902
+ icon: f(() => [S(M, {
903
+ width: "100%",
904
+ height: "100%"
905
+ })]),
906
+ _: 1
907
+ }, 8, ["onClick"])), [[
908
+ $,
909
+ { value: e.$t("views.settings.assistant_model_delete") },
910
+ void 0,
911
+ { top: !0 }
912
+ ]])
913
+ ]),
914
+ _("div", gt, [S(A, {
915
+ type: "button",
916
+ severity: "secondary",
917
+ text: "",
918
+ rounded: "",
919
+ class: "cui-icon-md",
920
+ onClick: (e) => di(e, i)
921
+ }, {
922
+ icon: f(() => [S(ue, {
923
+ width: "100%",
924
+ height: "100%"
925
+ })]),
926
+ _: 1
927
+ }, 8, ["onClick"])])
928
+ ]))), 128))])) : (n(), m("div", _t, r(e.$t("views.settings.assistant_models_empty")), 1)),
929
+ _("div", vt, [S(A, {
930
+ type: "button",
931
+ severity: "secondary",
932
+ outlined: "",
933
+ class: "cui-button-medium ml-auto",
934
+ label: e.$t("views.settings.assistant_model_add"),
935
+ disabled: u(X).length >= 20,
936
+ onClick: i[1] ||= (e) => mi()
937
+ }, {
938
+ icon: f(() => [S(pe, { class: "w-4 h-4" })]),
939
+ _: 1
940
+ }, 8, ["label", "disabled"])])
941
+ ])]),
942
+ _: 1
943
+ })]),
944
+ _("div", null, [_("span", yt, r(e.$t("views.settings.assistant_plugins")), 1), S(g, { class: "cui-card" }, {
945
+ content: f(() => [_("div", bt, [
946
+ S(d, {
947
+ severity: "secondary",
948
+ variant: "simple",
949
+ size: "small",
950
+ class: "cui-input-hint"
951
+ }, {
952
+ default: f(() => [y(r(e.$t("views.settings.assistant_plugins_info")), 1)]),
953
+ _: 1
954
+ }),
955
+ u(H)?.plugins.length ? (n(!0), m(h, { key: 0 }, t(u(H).plugins, (t) => (n(), m("div", {
956
+ key: t.id,
957
+ class: "flex flex-col field-gap"
958
+ }, [_("div", xt, [_("label", {
959
+ for: `plugin-${t.id}`,
960
+ class: "cui-label truncate"
961
+ }, r(t.name), 9, St), yi(t.id)?.capabilities?.vision === !1 ? (n(), s(p, {
962
+ key: 0,
963
+ severity: "warn",
964
+ value: e.$t("views.settings.assistant_capability_no_vision"),
965
+ class: "shrink-0 text-[10px]"
966
+ }, null, 8, ["value"])) : c("", !0)]), S(P, {
967
+ "model-value": vi(t.id),
968
+ "input-id": `plugin-${t.id}`,
969
+ options: u(Ar),
970
+ "option-label": "label",
971
+ "option-value": "value",
972
+ fluid: "",
973
+ "onUpdate:modelValue": (e) => bi(t.id, e)
974
+ }, null, 8, [
975
+ "model-value",
976
+ "input-id",
977
+ "options",
978
+ "onUpdate:modelValue"
979
+ ])]))), 128)) : (n(), m("div", Ct, r(e.$t("views.settings.assistant_plugins_empty")), 1)),
980
+ _("div", wt, [S(A, {
981
+ type: "button",
982
+ loading: u(U).isPending.value,
983
+ class: "cui-button-medium ml-auto",
984
+ label: e.$t("components.form.button.save"),
985
+ onClick: ci
986
+ }, null, 8, ["loading", "label"])])
987
+ ])]),
988
+ _: 1
989
+ })]),
990
+ _("div", null, [_("span", Tt, r(e.$t("views.settings.assistant_behavior")), 1), S(g, { class: "cui-card" }, {
991
+ content: f(() => [_("div", Et, [
992
+ _("div", Dt, [_("div", Ot, [_("label", kt, r(e.$t("views.settings.assistant_memory")), 1), S(d, {
993
+ severity: "secondary",
994
+ variant: "simple",
995
+ size: "small",
996
+ class: "cui-input-switch-hint"
997
+ }, {
998
+ default: f(() => [y(r(e.$t("views.settings.assistant_memory_info")), 1)]),
999
+ _: 1
1000
+ })]), S(b, {
1001
+ modelValue: u(G).memoryEnabled,
1002
+ "onUpdate:modelValue": i[2] ||= (e) => u(G).memoryEnabled = e,
1003
+ "input-id": "memoryEnabled",
1004
+ class: "ml-auto shrink-0"
1005
+ }, null, 8, ["modelValue"])]),
1006
+ _("div", At, [_("div", jt, [_("label", Mt, r(e.$t("views.settings.assistant_terminal")), 1), S(d, {
1007
+ severity: "secondary",
1008
+ variant: "simple",
1009
+ size: "small",
1010
+ class: "cui-input-switch-hint"
1011
+ }, {
1012
+ default: f(() => [y(r(e.$t("views.settings.assistant_terminal_info")), 1)]),
1013
+ _: 1
1014
+ })]), S(b, {
1015
+ modelValue: u(G).terminalEnabled,
1016
+ "onUpdate:modelValue": i[3] ||= (e) => u(G).terminalEnabled = e,
1017
+ "input-id": "terminalEnabled",
1018
+ class: "ml-auto shrink-0"
1019
+ }, null, 8, ["modelValue"])]),
1020
+ _("div", Nt, [
1021
+ _("label", Pt, r(e.$t("views.settings.assistant_language_label")), 1),
1022
+ S(P, {
1023
+ modelValue: u(G).language,
1024
+ "onUpdate:modelValue": i[4] ||= (e) => u(G).language = e,
1025
+ "input-id": "language",
1026
+ options: u(Nr),
1027
+ "option-label": "label",
1028
+ "option-value": "value",
1029
+ filter: "",
1030
+ fluid: ""
1031
+ }, null, 8, ["modelValue", "options"]),
1032
+ S(d, {
1033
+ severity: "secondary",
1034
+ variant: "simple",
1035
+ size: "small",
1036
+ class: "cui-input-hint"
1037
+ }, {
1038
+ default: f(() => [y(r(e.$t("views.settings.assistant_language_info")), 1)]),
1039
+ _: 1
1040
+ })
1041
+ ]),
1042
+ _("div", Ft, [
1043
+ _("label", It, r(e.$t("views.settings.assistant_reasoning_label")), 1),
1044
+ S(P, {
1045
+ modelValue: u(G).reasoning,
1046
+ "onUpdate:modelValue": i[5] ||= (e) => u(G).reasoning = e,
1047
+ "input-id": "reasoning",
1048
+ options: u(Pr),
1049
+ "option-label": "label",
1050
+ "option-value": "value",
1051
+ fluid: ""
1052
+ }, null, 8, ["modelValue", "options"]),
1053
+ S(d, {
1054
+ severity: "secondary",
1055
+ variant: "simple",
1056
+ size: "small",
1057
+ class: "cui-input-hint"
1058
+ }, {
1059
+ default: f(() => [y(r(e.$t("views.settings.assistant_reasoning_info")), 1)]),
1060
+ _: 1
1061
+ })
1062
+ ]),
1063
+ _("div", Lt, [_("div", Rt, [
1064
+ _("label", zt, r(e.$t("views.settings.assistant_max_iterations_label")), 1),
1065
+ S(F, {
1066
+ modelValue: u(G).maxIterations,
1067
+ "onUpdate:modelValue": i[6] ||= (e) => u(G).maxIterations = e,
1068
+ min: 1,
1069
+ max: 30,
1070
+ "use-grouping": !1,
1071
+ fluid: ""
1072
+ }, null, 8, ["modelValue"]),
1073
+ S(d, {
1074
+ severity: "secondary",
1075
+ variant: "simple",
1076
+ size: "small",
1077
+ class: "cui-input-hint"
1078
+ }, {
1079
+ default: f(() => [y(r(e.$t("views.settings.assistant_max_iterations_info")), 1)]),
1080
+ _: 1
1081
+ })
1082
+ ]), _("div", Bt, [
1083
+ _("label", Vt, r(e.$t("views.settings.assistant_max_tool_calls_label")), 1),
1084
+ S(F, {
1085
+ modelValue: u(G).maxToolCalls,
1086
+ "onUpdate:modelValue": i[7] ||= (e) => u(G).maxToolCalls = e,
1087
+ min: 1,
1088
+ max: 100,
1089
+ "use-grouping": !1,
1090
+ fluid: ""
1091
+ }, null, 8, ["modelValue"]),
1092
+ S(d, {
1093
+ severity: "secondary",
1094
+ variant: "simple",
1095
+ size: "small",
1096
+ class: "cui-input-hint"
1097
+ }, {
1098
+ default: f(() => [y(r(e.$t("views.settings.assistant_max_tool_calls_info")), 1)]),
1099
+ _: 1
1100
+ })
1101
+ ])]),
1102
+ _("div", Ht, [
1103
+ _("label", Ut, r(e.$t("views.settings.assistant_context_tokens_label")), 1),
1104
+ S(F, {
1105
+ id: "contextTokens",
1106
+ modelValue: u(G).contextTokens,
1107
+ "onUpdate:modelValue": i[8] ||= (e) => u(G).contextTokens = e,
1108
+ min: 8e3,
1109
+ max: 4e5,
1110
+ step: 1e3,
1111
+ "use-grouping": !1,
1112
+ fluid: ""
1113
+ }, null, 8, ["modelValue"]),
1114
+ S(d, {
1115
+ severity: "secondary",
1116
+ variant: "simple",
1117
+ size: "small",
1118
+ class: "cui-input-hint"
1119
+ }, {
1120
+ default: f(() => [y(r(e.$t("views.settings.assistant_context_tokens_info")), 1)]),
1121
+ _: 1
1122
+ })
1123
+ ]),
1124
+ _("div", Wt, [_("div", Gt, [
1125
+ _("label", Kt, r(e.$t("views.settings.assistant_history_threads_label")), 1),
1126
+ S(F, {
1127
+ id: "historyThreads",
1128
+ modelValue: u(G).historyThreads,
1129
+ "onUpdate:modelValue": i[9] ||= (e) => u(G).historyThreads = e,
1130
+ min: 5,
1131
+ max: 500,
1132
+ "use-grouping": !1,
1133
+ fluid: ""
1134
+ }, null, 8, ["modelValue"]),
1135
+ S(d, {
1136
+ severity: "secondary",
1137
+ variant: "simple",
1138
+ size: "small",
1139
+ class: "cui-input-hint"
1140
+ }, {
1141
+ default: f(() => [y(r(e.$t("views.settings.assistant_history_threads_info")), 1)]),
1142
+ _: 1
1143
+ })
1144
+ ]), _("div", qt, [
1145
+ _("label", Jt, r(e.$t("views.settings.assistant_history_images_label")), 1),
1146
+ S(F, {
1147
+ id: "historyImages",
1148
+ modelValue: u(G).historyImages,
1149
+ "onUpdate:modelValue": i[10] ||= (e) => u(G).historyImages = e,
1150
+ min: 0,
1151
+ max: 200,
1152
+ "use-grouping": !1,
1153
+ fluid: ""
1154
+ }, null, 8, ["modelValue"]),
1155
+ S(d, {
1156
+ severity: "secondary",
1157
+ variant: "simple",
1158
+ size: "small",
1159
+ class: "cui-input-hint"
1160
+ }, {
1161
+ default: f(() => [y(r(e.$t("views.settings.assistant_history_images_info")), 1)]),
1162
+ _: 1
1163
+ })
1164
+ ])]),
1165
+ _("div", Yt, [
1166
+ _("label", Xt, r(e.$t("views.settings.assistant_extra_prompt_label")), 1),
1167
+ S(I, {
1168
+ modelValue: u(G).systemPromptExtra,
1169
+ "onUpdate:modelValue": i[11] ||= (e) => u(G).systemPromptExtra = e,
1170
+ rows: "3",
1171
+ "auto-resize": "",
1172
+ placeholder: e.$t("views.settings.assistant_extra_prompt_placeholder")
1173
+ }, null, 8, ["modelValue", "placeholder"]),
1174
+ S(d, {
1175
+ severity: "secondary",
1176
+ variant: "simple",
1177
+ size: "small",
1178
+ class: "cui-input-hint"
1179
+ }, {
1180
+ default: f(() => [y(r(e.$t("views.settings.assistant_extra_prompt_info")), 1)]),
1181
+ _: 1
1182
+ })
1183
+ ]),
1184
+ _("div", Zt, [S(A, {
1185
+ type: "button",
1186
+ severity: "secondary",
1187
+ outlined: "",
1188
+ class: "cui-button-medium ml-auto",
1189
+ label: e.$t("components.form.button.reset_defaults"),
1190
+ onClick: si
1191
+ }, {
1192
+ icon: f(() => [S(L, { class: "w-4 h-4" })]),
1193
+ _: 1
1194
+ }, 8, ["label"]), S(A, {
1195
+ type: "button",
1196
+ loading: u(U).isPending.value,
1197
+ class: "cui-button-medium",
1198
+ label: e.$t("components.form.button.save"),
1199
+ onClick: ci
1200
+ }, null, 8, ["loading", "label"])])
1201
+ ])]),
1202
+ _: 1
1203
+ })]),
1204
+ _("div", null, [_("span", Qt, r(e.$t("views.settings.assistant_mcp")), 1), S(g, { class: "cui-card" }, {
1205
+ content: f(() => [_("div", $t, [
1206
+ S(d, {
1207
+ severity: "secondary",
1208
+ variant: "simple",
1209
+ size: "small",
1210
+ class: "cui-input-hint"
1211
+ }, {
1212
+ default: f(() => [y(r(e.$t("views.settings.assistant_mcp_info")), 1)]),
1213
+ _: 1
1214
+ }),
1215
+ _("div", en, [_("div", tn, [_("div", nn, [_("span", rn, r(e.$t("views.settings.assistant_mcp_enabled_label")), 1), _("span", an, r(e.$t("views.settings.assistant_mcp_enabled_info")), 1)]), S(b, {
1216
+ modelValue: u(G).mcpEnabled,
1217
+ "onUpdate:modelValue": i[12] ||= (e) => u(G).mcpEnabled = e
1218
+ }, null, 8, ["modelValue"])]), _("div", on, [_("div", sn, [_("span", cn, r(e.$t("views.settings.assistant_mcp_writes_label")), 1), _("span", ln, r(e.$t("views.settings.assistant_mcp_writes_info")), 1)]), S(b, {
1219
+ modelValue: u(G).mcpWrites,
1220
+ "onUpdate:modelValue": i[13] ||= (e) => u(G).mcpWrites = e,
1221
+ disabled: !u(G).mcpEnabled
1222
+ }, null, 8, ["modelValue", "disabled"])])]),
1223
+ u(G).mcpEnabled ? (n(), m("div", un, [_("div", dn, [
1224
+ _("label", fn, r(e.$t("views.settings.assistant_mcp_endpoint_label")), 1),
1225
+ S(z, null, {
1226
+ default: f(() => [S(R, {
1227
+ id: "mcpEndpoint",
1228
+ "model-value": u(Fr),
1229
+ readonly: "",
1230
+ class: "font-mono text-sm"
1231
+ }, null, 8, ["model-value"]), S(Ae, null, {
1232
+ default: f(() => [S(ke, {
1233
+ "action-text": e.$t("components.form.tooltip.copied"),
1234
+ icon: u(we),
1235
+ "button-props": {
1236
+ severity: "secondary",
1237
+ text: !0
1238
+ },
1239
+ onAction: i[14] ||= (e) => u(de)(u(Fr))
1240
+ }, null, 8, ["action-text", "icon"])]),
1241
+ _: 1
1242
+ })]),
1243
+ _: 1
1244
+ }),
1245
+ S(d, {
1246
+ severity: "secondary",
1247
+ variant: "simple",
1248
+ size: "small",
1249
+ class: "cui-input-hint"
1250
+ }, {
1251
+ default: f(() => [y(r(e.$t("views.settings.assistant_mcp_token_info")) + " ", 1), S(Fe, {
1252
+ to: { name: "SettingsAccount" },
1253
+ class: "underline"
1254
+ }, {
1255
+ default: f(() => [y(r(e.$t("views.settings.assistant_mcp_token_link")), 1)]),
1256
+ _: 1
1257
+ })]),
1258
+ _: 1
1259
+ })
1260
+ ]), _("div", pn, [
1261
+ _("label", mn, r(e.$t("views.settings.assistant_mcp_client_label")), 1),
1262
+ S(P, {
1263
+ modelValue: u(Y),
1264
+ "onUpdate:modelValue": i[15] ||= (e) => l(Y) ? Y.value = e : null,
1265
+ "input-id": "mcpClient",
1266
+ options: u(Ir),
1267
+ "option-label": "label",
1268
+ "option-value": "value",
1269
+ class: "w-full"
1270
+ }, null, 8, ["modelValue", "options"]),
1271
+ S(z, null, {
1272
+ default: f(() => [S(I, {
1273
+ id: "mcpSnippet",
1274
+ "model-value": u(Lr),
1275
+ readonly: "",
1276
+ "auto-resize": "",
1277
+ rows: "3",
1278
+ class: "font-mono text-xs"
1279
+ }, null, 8, ["model-value"]), S(Ae, null, {
1280
+ default: f(() => [S(ke, {
1281
+ "action-text": e.$t("components.form.tooltip.copied"),
1282
+ icon: u(we),
1283
+ "button-props": {
1284
+ severity: "secondary",
1285
+ text: !0
1286
+ },
1287
+ onAction: i[16] ||= (e) => u(de)(u(Lr))
1288
+ }, null, 8, ["action-text", "icon"])]),
1289
+ _: 1
1290
+ })]),
1291
+ _: 1
1292
+ }),
1293
+ S(d, {
1294
+ severity: "secondary",
1295
+ variant: "simple",
1296
+ size: "small",
1297
+ class: "cui-input-hint"
1298
+ }, {
1299
+ default: f(() => [y(r(e.$t("views.settings.assistant_mcp_snippet_info")), 1)]),
1300
+ _: 1
1301
+ })
1302
+ ])])) : c("", !0),
1303
+ _("div", hn, [S(A, {
1304
+ type: "button",
1305
+ loading: u(U).isPending.value,
1306
+ class: "cui-button-medium ml-auto",
1307
+ label: e.$t("components.form.button.save"),
1308
+ onClick: ci
1309
+ }, null, 8, ["loading", "label"])])
1310
+ ])]),
1311
+ _: 1
1312
+ })]),
1313
+ _("div", null, [_("span", gn, r(e.$t("views.settings.assistant_external")), 1), S(g, { class: "cui-card" }, {
1314
+ content: f(() => [_("div", _n, [
1315
+ S(d, {
1316
+ severity: "secondary",
1317
+ variant: "simple",
1318
+ size: "small",
1319
+ class: "cui-input-hint"
1320
+ }, {
1321
+ default: f(() => [y(r(e.$t("views.settings.assistant_external_info")), 1)]),
1322
+ _: 1
1323
+ }),
1324
+ (n(!0), m(h, null, t(u(G).mcpServers, (t) => (n(), m("div", {
1325
+ key: t.id,
1326
+ class: "cui-assistant-server overflow-hidden rounded-xl"
1327
+ }, [_("button", {
1328
+ type: "button",
1329
+ class: "flex w-full cursor-pointer items-center gap-3 p-4 text-left",
1330
+ "aria-expanded": u(J).includes(t.id),
1331
+ onClick: (e) => ii(t.id)
1332
+ }, [_("div", yn, [_("span", bn, r(t.name || e.$t("views.settings.assistant_external_new")), 1), ti(t.id) ? (n(), m("span", {
1333
+ key: 0,
1334
+ class: a(["truncate text-xs", ni(t.id)])
1335
+ }, r(ti(t.id)), 3)) : c("", !0)]), S(B, { class: a(["h-5 w-5 shrink-0 text-muted transition-transform duration-200", { "rotate-180": u(J).includes(t.id) }]) }, null, 8, ["class"])], 8, vn), _("div", { class: a(["cui-assistant-server-body grid", { "cui-assistant-server-open": u(J).includes(t.id) }]) }, [_("div", {
1336
+ class: "min-h-0 overflow-hidden",
1337
+ inert: !u(J).includes(t.id)
1338
+ }, [_("div", Sn, [
1339
+ _("div", Cn, [_("div", wn, [_("label", {
1340
+ for: `server-enabled-${t.id}`,
1341
+ class: "cui-label-switch"
1342
+ }, r(e.$t("components.form.label.enabled")), 9, Tn), S(d, {
1343
+ severity: "secondary",
1344
+ variant: "simple",
1345
+ size: "small",
1346
+ class: "cui-input-switch-hint"
1347
+ }, {
1348
+ default: f(() => [y(r(e.$t("views.settings.assistant_external_enabled_info")), 1)]),
1349
+ _: 1
1350
+ })]), S(b, {
1351
+ modelValue: t.enabled,
1352
+ "onUpdate:modelValue": (e) => t.enabled = e,
1353
+ "input-id": `server-enabled-${t.id}`,
1354
+ class: "ml-auto shrink-0"
1355
+ }, null, 8, [
1356
+ "modelValue",
1357
+ "onUpdate:modelValue",
1358
+ "input-id"
1359
+ ])]),
1360
+ _("div", En, [_("div", Dn, [_("label", {
1361
+ for: `server-name-${t.id}`,
1362
+ class: "cui-label"
1363
+ }, r(e.$t("views.settings.assistant_external_name")), 9, On), S(R, {
1364
+ id: `server-name-${t.id}`,
1365
+ modelValue: t.name,
1366
+ "onUpdate:modelValue": (e) => t.name = e,
1367
+ fluid: "",
1368
+ placeholder: "Home Assistant"
1369
+ }, null, 8, [
1370
+ "id",
1371
+ "modelValue",
1372
+ "onUpdate:modelValue"
1373
+ ])]), _("div", kn, [_("label", {
1374
+ for: `server-url-${t.id}`,
1375
+ class: "cui-label"
1376
+ }, r(e.$t("views.settings.assistant_external_url")), 9, An), S(R, {
1377
+ id: `server-url-${t.id}`,
1378
+ modelValue: t.url,
1379
+ "onUpdate:modelValue": (e) => t.url = e,
1380
+ fluid: "",
1381
+ placeholder: "http://homeassistant.local:8123/api/mcp"
1382
+ }, null, 8, [
1383
+ "id",
1384
+ "modelValue",
1385
+ "onUpdate:modelValue"
1386
+ ])])]),
1387
+ _("div", jn, [
1388
+ _("label", {
1389
+ for: `server-token-${t.id}`,
1390
+ class: "cui-label"
1391
+ }, r(e.$t("views.settings.assistant_external_token")), 9, Mn),
1392
+ S(V, {
1393
+ id: `server-token-${t.id}`,
1394
+ modelValue: u(q)[t.id],
1395
+ "onUpdate:modelValue": (e) => u(q)[t.id] = e,
1396
+ feedback: !1,
1397
+ "toggle-mask": "",
1398
+ fluid: "",
1399
+ autocomplete: "new-password",
1400
+ placeholder: t.tokenSet ? "••••••••" : ""
1401
+ }, null, 8, [
1402
+ "id",
1403
+ "modelValue",
1404
+ "onUpdate:modelValue",
1405
+ "placeholder"
1406
+ ]),
1407
+ S(d, {
1408
+ severity: "secondary",
1409
+ variant: "simple",
1410
+ size: "small",
1411
+ class: "cui-input-hint"
1412
+ }, {
1413
+ default: f(() => [y(r(t.tokenSet ? e.$t("views.settings.assistant_external_token_set") : e.$t("views.settings.assistant_external_token_info")), 1)]),
1414
+ _: 2
1415
+ }, 1024)
1416
+ ]),
1417
+ _("div", Nn, [_("div", Pn, [_("label", {
1418
+ for: `server-insecure-${t.id}`,
1419
+ class: "cui-label-switch"
1420
+ }, r(e.$t("views.settings.assistant_external_insecure")), 9, Fn), S(d, {
1421
+ severity: "secondary",
1422
+ variant: "simple",
1423
+ size: "small",
1424
+ class: "cui-input-switch-hint"
1425
+ }, {
1426
+ default: f(() => [y(r(e.$t("views.settings.assistant_external_insecure_info")), 1)]),
1427
+ _: 1
1428
+ })]), S(b, {
1429
+ "input-id": `server-insecure-${t.id}`,
1430
+ modelValue: t.insecure,
1431
+ "onUpdate:modelValue": (e) => t.insecure = e,
1432
+ class: "ml-auto shrink-0"
1433
+ }, null, 8, [
1434
+ "input-id",
1435
+ "modelValue",
1436
+ "onUpdate:modelValue"
1437
+ ])]),
1438
+ _("div", In, [S(A, {
1439
+ type: "button",
1440
+ severity: "danger",
1441
+ outlined: "",
1442
+ class: "cui-button-medium ml-auto",
1443
+ label: e.$t("views.settings.assistant_external_remove"),
1444
+ onClick: (e) => ai(t.id)
1445
+ }, {
1446
+ icon: f(() => [S(M, { class: "w-4 h-4" })]),
1447
+ _: 1
1448
+ }, 8, ["label", "onClick"])])
1449
+ ])], 8, xn)], 2)]))), 128)),
1450
+ _("div", Ln, [S(A, {
1451
+ type: "button",
1452
+ severity: "secondary",
1453
+ outlined: "",
1454
+ class: "cui-button-medium",
1455
+ label: e.$t("views.settings.assistant_external_add"),
1456
+ disabled: u(G).mcpServers.length >= 10,
1457
+ onClick: ri
1458
+ }, {
1459
+ icon: f(() => [S(pe, { class: "w-4 h-4" })]),
1460
+ _: 1
1461
+ }, 8, ["label", "disabled"]), S(A, {
1462
+ type: "button",
1463
+ loading: u(U).isPending.value,
1464
+ class: "cui-button-medium ml-auto",
1465
+ label: e.$t("components.form.button.save"),
1466
+ onClick: ci
1467
+ }, null, 8, ["loading", "label"])])
1468
+ ])]),
1469
+ _: 1
1470
+ })]),
1471
+ _("div", null, [_("span", Rn, r(e.$t("views.settings.assistant_schedules")), 1), S(g, { class: "cui-card" }, {
1472
+ content: f(() => [_("div", zn, [
1473
+ S(d, {
1474
+ severity: "secondary",
1475
+ variant: "simple",
1476
+ size: "small",
1477
+ class: "cui-input-hint"
1478
+ }, {
1479
+ default: f(() => [y(r(e.$t("views.settings.assistant_schedules_info")), 1)]),
1480
+ _: 1
1481
+ }),
1482
+ u(He)?.length ? (n(), m("div", Bn, [(n(!0), m(h, null, t(u(He), (t) => (n(), m("div", {
1483
+ key: t._id,
1484
+ class: "flex items-start gap-3 py-3 text-sm"
1485
+ }, [_("div", { class: a(["flex min-w-0 flex-1 flex-wrap items-center gap-x-2 gap-y-1", { "opacity-60": !t.enabled }]) }, [
1486
+ _("span", Vn, r(t.title), 1),
1487
+ _("div", Hn, [
1488
+ S(p, {
1489
+ severity: "secondary",
1490
+ value: Wr(t.cron),
1491
+ class: "text-[10px]"
1492
+ }, null, 8, ["value"]),
1493
+ S(p, {
1494
+ severity: Gr(t.deliver),
1495
+ value: e.$t(`views.settings.assistant_schedule_deliver_${t.deliver}`),
1496
+ class: "text-[10px]"
1497
+ }, null, 8, ["severity", "value"]),
1498
+ t.profileId ? (n(), s(p, {
1499
+ key: 0,
1500
+ severity: Si(t.profileId) ? "secondary" : "warn",
1501
+ value: Si(t.profileId) ?? e.$t("views.settings.assistant_schedule_profile_missing"),
1502
+ class: "text-[10px]"
1503
+ }, null, 8, ["severity", "value"])) : c("", !0)
1504
+ ]),
1505
+ _("div", Un, r(t.prompt), 1),
1506
+ _("div", Wn, [t.enabled && t.nextRun ? (n(), m("span", Gn, r(e.$t("views.settings.assistant_schedule_next", { time: Kr(t.nextRun) })), 1)) : t.enabled ? c("", !0) : (n(), m("span", Kn, r(e.$t("views.settings.assistant_schedule_paused")), 1)), t.lastRun ? (n(), m("span", {
1507
+ key: 2,
1508
+ class: a({ "text-danger": t.lastRun.status === "error" })
1509
+ }, " · " + r(e.$t(`views.settings.assistant_schedule_last_${t.lastRun.status}`, { time: Kr(t.lastRun.at) })), 3)) : c("", !0)]),
1510
+ t.lastRun?.status === "error" && t.lastRun.message ? (n(), m("div", qn, r(t.lastRun.message), 1)) : c("", !0)
1511
+ ], 2), _("div", Jn, [_("div", Yn, [
1512
+ v((n(), s(A, {
1513
+ type: "button",
1514
+ severity: "secondary",
1515
+ text: "",
1516
+ rounded: "",
1517
+ class: "cui-icon-md",
1518
+ loading: u(W).isPending.value && u(W).variables.value === t._id,
1519
+ onClick: (e) => u(W).mutate(t._id)
1520
+ }, {
1521
+ icon: f(() => [S(Le, {
1522
+ width: "100%",
1523
+ height: "100%"
1524
+ })]),
1525
+ _: 1
1526
+ }, 8, ["loading", "onClick"])), [[
1527
+ $,
1528
+ { value: e.$t("views.settings.assistant_schedule_run") },
1529
+ void 0,
1530
+ { top: !0 }
1531
+ ]]),
1532
+ v((n(), s(A, {
1533
+ type: "button",
1534
+ severity: "secondary",
1535
+ text: "",
1536
+ rounded: "",
1537
+ class: "cui-icon-md",
1538
+ onClick: (e) => fi(t)
1539
+ }, {
1540
+ icon: f(() => [t.enabled ? (n(), s(We, {
1541
+ key: 0,
1542
+ width: "100%",
1543
+ height: "100%"
1544
+ })) : (n(), s(Xe, {
1545
+ key: 1,
1546
+ width: "100%",
1547
+ height: "100%"
1548
+ }))]),
1549
+ _: 2
1550
+ }, 1032, ["onClick"])), [[
1551
+ $,
1552
+ { value: t.enabled ? e.$t("views.settings.assistant_schedule_pause") : e.$t("views.settings.assistant_schedule_resume") },
1553
+ void 0,
1554
+ { top: !0 }
1555
+ ]]),
1556
+ v((n(), s(A, {
1557
+ type: "button",
1558
+ severity: "danger",
1559
+ text: "",
1560
+ rounded: "",
1561
+ class: "cui-icon-md",
1562
+ onClick: (e) => u(Ge).mutate(t._id)
1563
+ }, {
1564
+ icon: f(() => [S(M, {
1565
+ width: "100%",
1566
+ height: "100%"
1567
+ })]),
1568
+ _: 1
1569
+ }, 8, ["onClick"])), [[
1570
+ $,
1571
+ { value: e.$t("views.settings.assistant_schedule_delete") },
1572
+ void 0,
1573
+ { top: !0 }
1574
+ ]])
1575
+ ]), _("div", Xn, [S(A, {
1576
+ type: "button",
1577
+ severity: "secondary",
1578
+ text: "",
1579
+ rounded: "",
1580
+ class: "cui-icon-md",
1581
+ loading: u(W).isPending.value && u(W).variables.value === t._id,
1582
+ onClick: (e) => pi(e, t)
1583
+ }, {
1584
+ icon: f(() => [S(ue, {
1585
+ width: "100%",
1586
+ height: "100%"
1587
+ })]),
1588
+ _: 1
1589
+ }, 8, ["loading", "onClick"])])])]))), 128))])) : c("", !0),
1590
+ _("div", { class: a(["flex flex-col gap-6", { "cui-assistant-schedule-form": u(He)?.length }]) }, [
1591
+ _("div", Zn, [_("div", Qn, [_("label", $n, r(e.$t("views.settings.assistant_schedule_title_label")), 1), S(R, {
1592
+ modelValue: u(K).title,
1593
+ "onUpdate:modelValue": i[17] ||= (e) => u(K).title = e,
1594
+ modelModifiers: { trim: !0 },
1595
+ type: "text",
1596
+ placeholder: e.$t("views.settings.assistant_schedule_title_placeholder"),
1597
+ class: "w-full"
1598
+ }, null, 8, ["modelValue", "placeholder"])]), _("div", er, [_("label", tr, r(e.$t("views.settings.assistant_schedule_deliver_label")), 1), S(P, {
1599
+ modelValue: u(K).deliver,
1600
+ "onUpdate:modelValue": i[18] ||= (e) => u(K).deliver = e,
1601
+ options: u(Rr),
1602
+ "option-label": "label",
1603
+ "option-value": "value",
1604
+ fluid: ""
1605
+ }, null, 8, ["modelValue", "options"])])]),
1606
+ _("div", nr, [_("label", rr, r(e.$t("views.settings.assistant_schedule_prompt_label")), 1), S(I, {
1607
+ modelValue: u(K).prompt,
1608
+ "onUpdate:modelValue": i[19] ||= (e) => u(K).prompt = e,
1609
+ rows: "2",
1610
+ "auto-resize": "",
1611
+ placeholder: e.$t("views.settings.assistant_schedule_prompt_placeholder")
1612
+ }, null, 8, ["modelValue", "placeholder"])]),
1613
+ u(Ve)?.length ? (n(), m("div", ir, [_("label", ar, r(e.$t("views.settings.assistant_schedule_profile_label")), 1), S(P, {
1614
+ modelValue: u(K).profileId,
1615
+ "onUpdate:modelValue": i[20] ||= (e) => u(K).profileId = e,
1616
+ "input-id": "scheduleProfile",
1617
+ options: u(Ve),
1618
+ "option-label": "name",
1619
+ "option-value": "_id",
1620
+ "show-clear": "",
1621
+ fluid: "",
1622
+ placeholder: e.$t("views.settings.assistant_schedule_profile_none")
1623
+ }, null, 8, [
1624
+ "modelValue",
1625
+ "options",
1626
+ "placeholder"
1627
+ ])])) : c("", !0),
1628
+ _("div", or, [
1629
+ _("div", sr, [_("label", cr, r(e.$t("views.settings.assistant_schedule_when_label")), 1), S(P, {
1630
+ modelValue: u(K).preset,
1631
+ "onUpdate:modelValue": i[21] ||= (e) => u(K).preset = e,
1632
+ options: u(zr),
1633
+ "option-label": "label",
1634
+ "option-value": "value",
1635
+ fluid: ""
1636
+ }, null, 8, ["modelValue", "options"])]),
1637
+ u(K).preset !== "hourly" && u(K).preset !== "custom" ? (n(), m("div", lr, [_("label", ur, r(e.$t("views.settings.assistant_schedule_time_label")), 1), S(R, {
1638
+ modelValue: u(K).time,
1639
+ "onUpdate:modelValue": i[22] ||= (e) => u(K).time = e,
1640
+ type: "time",
1641
+ class: "cui-time-input w-full"
1642
+ }, null, 8, ["modelValue"])])) : c("", !0),
1643
+ u(K).preset === "custom" ? (n(), m("div", dr, [_("label", fr, r(e.$t("views.settings.assistant_schedule_cron_label")), 1), S(R, {
1644
+ modelValue: u(K).cron,
1645
+ "onUpdate:modelValue": i[23] ||= (e) => u(K).cron = e,
1646
+ modelModifiers: { trim: !0 },
1647
+ type: "text",
1648
+ placeholder: "0 20 * * *",
1649
+ class: "w-full font-mono text-sm"
1650
+ }, null, 8, ["modelValue"])])) : c("", !0)
1651
+ ]),
1652
+ _("div", pr, [S(A, {
1653
+ type: "button",
1654
+ loading: u(Ue).isPending.value,
1655
+ disabled: !u(K).title || !u(K).prompt || !u(Br),
1656
+ class: "cui-button-medium ml-auto",
1657
+ label: e.$t("views.settings.assistant_schedule_add"),
1658
+ onClick: qr
1659
+ }, null, 8, [
1660
+ "loading",
1661
+ "disabled",
1662
+ "label"
1663
+ ])])
1664
+ ], 2)
1665
+ ])]),
1666
+ _: 1
1667
+ })]),
1668
+ _("div", null, [_("span", mr, r(e.$t("views.settings.assistant_usage")), 1), S(g, { class: "cui-card" }, {
1669
+ content: f(() => [_("div", hr, [S(d, {
1670
+ severity: "secondary",
1671
+ variant: "simple",
1672
+ size: "small",
1673
+ class: "cui-input-hint"
1674
+ }, {
1675
+ default: f(() => [y(r(e.$t("views.settings.assistant_usage_info")), 1)]),
1676
+ _: 1
1677
+ }), S(Q, {
1678
+ value: u(Mr) ?? [],
1679
+ "data-key": "key",
1680
+ loading: u(ze),
1681
+ pt: ve,
1682
+ "striped-rows": "",
1683
+ scrollable: ""
1684
+ }, {
1685
+ loading: f(() => [S(o, {
1686
+ class: "w-[30px] h-[30px] m-0",
1687
+ "stroke-width": "5"
1688
+ })]),
1689
+ empty: f(() => [_("span", gr, r(e.$t("views.settings.assistant_usage_empty")), 1)]),
1690
+ default: f(() => [
1691
+ S(Z, {
1692
+ field: "month",
1693
+ header: e.$t("views.settings.assistant_usage_month"),
1694
+ "header-class": "p-2",
1695
+ class: "p-2 tabular-nums"
1696
+ }, null, 8, ["header"]),
1697
+ S(Z, {
1698
+ field: "username",
1699
+ header: e.$t("views.settings.assistant_usage_user"),
1700
+ "header-class": "p-2",
1701
+ class: "p-2"
1702
+ }, {
1703
+ body: f(({ data: e }) => [_("span", _r, r(e.pluginName ?? e.username ?? e.userId), 1)]),
1704
+ _: 1
1705
+ }, 8, ["header"]),
1706
+ S(Z, {
1707
+ field: "model",
1708
+ header: e.$t("views.settings.assistant_usage_model"),
1709
+ "header-class": "p-2",
1710
+ class: "p-2"
1711
+ }, {
1712
+ body: f(({ data: e }) => [_("span", vr, r(xi(e)), 1)]),
1713
+ _: 1
1714
+ }, 8, ["header"]),
1715
+ S(Z, {
1716
+ field: "runs",
1717
+ header: e.$t("views.settings.assistant_usage_runs"),
1718
+ "header-class": "p-2",
1719
+ class: "p-2 text-right tabular-nums",
1720
+ pt: N
1721
+ }, null, 8, ["header"]),
1722
+ S(Z, {
1723
+ field: "promptTokens",
1724
+ header: e.$t("views.settings.assistant_usage_in"),
1725
+ "header-class": "p-2",
1726
+ class: "p-2 text-right tabular-nums",
1727
+ pt: N
1728
+ }, {
1729
+ body: f(({ data: e }) => [y(r($r(e.promptTokens)), 1)]),
1730
+ _: 1
1731
+ }, 8, ["header"]),
1732
+ S(Z, {
1733
+ field: "completionTokens",
1734
+ header: e.$t("views.settings.assistant_usage_out"),
1735
+ "header-class": "p-2",
1736
+ class: "p-2 text-right tabular-nums",
1737
+ pt: N
1738
+ }, {
1739
+ body: f(({ data: e }) => [y(r($r(e.completionTokens)), 1)]),
1740
+ _: 1
1741
+ }, 8, ["header"]),
1742
+ S(Z, {
1743
+ field: "costUsd",
1744
+ header: e.$t("views.settings.assistant_usage_cost"),
1745
+ "header-class": "p-2",
1746
+ class: "p-2 text-right tabular-nums",
1747
+ pt: N
1748
+ }, {
1749
+ body: f(({ data: e }) => [y(r(e.costUsd ? `$${e.costUsd.toFixed(e.costUsd < 1 ? 3 : 2)}` : "–"), 1)]),
1750
+ _: 1
1751
+ }, 8, ["header"])
1752
+ ]),
1753
+ _: 1
1754
+ }, 8, ["value", "loading"])])]),
1755
+ _: 1
1756
+ })]),
1757
+ _("div", null, [_("span", yr, r(e.$t("views.settings.assistant_tools")), 1), S(g, { class: "cui-card" }, {
1758
+ content: f(() => [u(jr).length ? (n(), m("div", xr, [S(Ti, {
1759
+ value: u(qe),
1760
+ "onUpdate:value": i[24] ||= (e) => l(qe) ? qe.value = e : null,
1761
+ scrollable: ""
1762
+ }, {
1763
+ default: f(() => [S(oi, { class: "mb-3" }, {
1764
+ default: f(() => [(n(!0), m(h, null, t(u(jr), (e) => (n(), s(ei, {
1765
+ key: e.key,
1766
+ value: e.key,
1767
+ class: "text-sm"
1768
+ }, {
1769
+ default: f(() => [y(r(e.label) + " (" + r(e.tools.length) + ")", 1)]),
1770
+ _: 2
1771
+ }, 1032, ["value"]))), 128))]),
1772
+ _: 1
1773
+ }), S(wi, { class: "!p-0 !bg-transparent" }, {
1774
+ default: f(() => [(n(!0), m(h, null, t(u(jr), (i) => (n(), s(Ci, {
1775
+ key: i.key,
1776
+ value: i.key
1777
+ }, {
1778
+ default: f(() => [i.serverId ? (n(), m("div", Sr, [
1779
+ _("label", {
1780
+ for: `trusted-${i.key}`,
1781
+ class: "cui-label"
1782
+ }, r(e.$t("views.settings.assistant_tools_trusted_label")), 9, Cr),
1783
+ S(ui, {
1784
+ "model-value": Zr(i),
1785
+ "input-id": `trusted-${i.key}`,
1786
+ options: Xr(i),
1787
+ "option-label": "label",
1788
+ "option-value": "value",
1789
+ "max-selected-labels": 3,
1790
+ "selected-items-label": e.$t("views.settings.assistant_tools_trusted_selected", { n: Zr(i).length }),
1791
+ placeholder: e.$t("views.settings.assistant_tools_trusted_none"),
1792
+ filter: "",
1793
+ fluid: "",
1794
+ "onUpdate:modelValue": (e) => Qr(i, e)
1795
+ }, null, 8, [
1796
+ "model-value",
1797
+ "input-id",
1798
+ "options",
1799
+ "selected-items-label",
1800
+ "placeholder",
1801
+ "onUpdate:modelValue"
1802
+ ]),
1803
+ S(d, {
1804
+ severity: "secondary",
1805
+ variant: "simple",
1806
+ size: "small",
1807
+ class: "cui-input-hint"
1808
+ }, {
1809
+ default: f(() => [y(r(e.$t("views.settings.assistant_tools_trusted_info")), 1)]),
1810
+ _: 1
1811
+ })
1812
+ ])) : c("", !0), _("div", wr, [(n(!0), m(h, null, t(i.tools, (t) => (n(), m("div", {
1813
+ key: t.name,
1814
+ class: "flex items-start gap-3 py-2 text-sm"
1815
+ }, [S(hi, { class: "w-4 h-4 mt-0.5 shrink-0 text-muted" }), _("div", Tr, [_("div", Er, [
1816
+ _("span", Dr, r(u(Oe)(t.name)), 1),
1817
+ Yr(t) ? (n(), s(p, {
1818
+ key: 0,
1819
+ severity: "warn",
1820
+ value: e.$t("views.settings.assistant_tool_approval"),
1821
+ class: "text-[10px]"
1822
+ }, null, 8, ["value"])) : c("", !0),
1823
+ t.adminOnly ? (n(), s(p, {
1824
+ key: 1,
1825
+ severity: "info",
1826
+ value: e.$t("views.settings.assistant_tool_admin"),
1827
+ class: "text-[10px]"
1828
+ }, null, 8, ["value"])) : c("", !0)
1829
+ ]), _("div", Or, r(Jr(t.description)), 1)])]))), 128))])]),
1830
+ _: 2
1831
+ }, 1032, ["value"]))), 128))]),
1832
+ _: 1
1833
+ })]),
1834
+ _: 1
1835
+ }, 8, ["value"]), u(jr).some((e) => e.serverId) ? (n(), m("div", kr, [S(A, {
1836
+ type: "button",
1837
+ loading: u(U).isPending.value,
1838
+ class: "cui-button-medium ml-auto",
1839
+ label: e.$t("components.form.button.save"),
1840
+ onClick: ci
1841
+ }, null, 8, ["loading", "label"])])) : c("", !0)])) : (n(), m("div", br, r(e.$t("views.settings.assistant_tools_empty")), 1))]),
1842
+ _: 1
1843
+ })])
1844
+ ])) : (n(), m("div", Qe, [S(o, {
1845
+ class: "w-[30px] h-[30px] m-0",
1846
+ "stroke-width": "5"
1847
+ })])), S(D, {
1848
+ ref_key: "rowMenuRef",
1849
+ ref: Je,
1850
+ items: u(Ke),
1851
+ popover: { pt: { content: { class: "p-0! rounded-xl! overflow-hidden!" } } }
1852
+ }, null, 8, ["items"])]);
1853
+ };
1854
+ }
1855
+ }), [["__scopeId", "data-v-69f75eeb"]]);
1856
+ //#endregion
1857
+ export { Ar as default };