@hed-hog/core 0.0.387 → 0.0.390

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 (535) hide show
  1. package/README.md +12 -11
  2. package/dist/access-log/access-log.interceptor.d.ts.map +1 -1
  3. package/dist/access-log/access-log.interceptor.js +4 -2
  4. package/dist/access-log/access-log.interceptor.js.map +1 -1
  5. package/dist/ai/ai-attachment.fragments.d.ts +23 -0
  6. package/dist/ai/ai-attachment.fragments.d.ts.map +1 -0
  7. package/dist/ai/ai-attachment.fragments.js +34 -0
  8. package/dist/ai/ai-attachment.fragments.js.map +1 -0
  9. package/dist/ai/ai.controller.d.ts +7 -16
  10. package/dist/ai/ai.controller.d.ts.map +1 -1
  11. package/dist/ai/ai.prompts.d.ts +16 -0
  12. package/dist/ai/ai.prompts.d.ts.map +1 -0
  13. package/dist/ai/ai.prompts.js +37 -0
  14. package/dist/ai/ai.prompts.js.map +1 -0
  15. package/dist/ai/ai.service.d.ts +63 -12
  16. package/dist/ai/ai.service.d.ts.map +1 -1
  17. package/dist/ai/ai.service.js +215 -88
  18. package/dist/ai/ai.service.js.map +1 -1
  19. package/dist/ai/dto/chat.dto.d.ts +4 -1
  20. package/dist/ai/dto/chat.dto.d.ts.map +1 -1
  21. package/dist/ai/dto/chat.dto.js +23 -1
  22. package/dist/ai/dto/chat.dto.js.map +1 -1
  23. package/dist/ai/dto/create-agent.dto.d.ts +1 -1
  24. package/dist/ai/dto/create-agent.dto.d.ts.map +1 -1
  25. package/dist/ai/dto/create-agent.dto.js +1 -1
  26. package/dist/ai/dto/create-agent.dto.js.map +1 -1
  27. package/dist/ai/dto/update-agent.dto.d.ts +1 -1
  28. package/dist/ai/dto/update-agent.dto.d.ts.map +1 -1
  29. package/dist/ai/dto/update-agent.dto.js +1 -1
  30. package/dist/ai/dto/update-agent.dto.js.map +1 -1
  31. package/dist/ai-instruction/ai-instruction.controller.d.ts +61 -7
  32. package/dist/ai-instruction/ai-instruction.controller.d.ts.map +1 -1
  33. package/dist/ai-instruction/ai-instruction.controller.js +63 -20
  34. package/dist/ai-instruction/ai-instruction.controller.js.map +1 -1
  35. package/dist/ai-instruction/ai-instruction.module.d.ts.map +1 -1
  36. package/dist/ai-instruction/ai-instruction.module.js +13 -2
  37. package/dist/ai-instruction/ai-instruction.module.js.map +1 -1
  38. package/dist/ai-instruction/ai-instruction.service.d.ts +131 -6
  39. package/dist/ai-instruction/ai-instruction.service.d.ts.map +1 -1
  40. package/dist/ai-instruction/ai-instruction.service.js +533 -60
  41. package/dist/ai-instruction/ai-instruction.service.js.map +1 -1
  42. package/dist/ai-instruction/ai-prompt-builder.service.d.ts +8 -0
  43. package/dist/ai-instruction/ai-prompt-builder.service.d.ts.map +1 -1
  44. package/dist/ai-instruction/ai-prompt-builder.service.js +10 -1
  45. package/dist/ai-instruction/ai-prompt-builder.service.js.map +1 -1
  46. package/dist/ai-instruction/ai-prompt-registry.d.ts +45 -0
  47. package/dist/ai-instruction/ai-prompt-registry.d.ts.map +1 -0
  48. package/dist/ai-instruction/ai-prompt-registry.js +49 -0
  49. package/dist/ai-instruction/ai-prompt-registry.js.map +1 -0
  50. package/dist/ai-instruction/ai-prompt-resolver.service.d.ts +89 -0
  51. package/dist/ai-instruction/ai-prompt-resolver.service.d.ts.map +1 -0
  52. package/dist/ai-instruction/ai-prompt-resolver.service.js +222 -0
  53. package/dist/ai-instruction/ai-prompt-resolver.service.js.map +1 -0
  54. package/dist/ai-instruction/ai-prompt-template.util.d.ts +70 -0
  55. package/dist/ai-instruction/ai-prompt-template.util.d.ts.map +1 -0
  56. package/dist/ai-instruction/ai-prompt-template.util.js +154 -0
  57. package/dist/ai-instruction/ai-prompt-template.util.js.map +1 -0
  58. package/dist/ai-instruction/dto/create-ai-instruction.dto.d.ts +5 -0
  59. package/dist/ai-instruction/dto/create-ai-instruction.dto.d.ts.map +1 -1
  60. package/dist/ai-instruction/dto/create-ai-instruction.dto.js +27 -1
  61. package/dist/ai-instruction/dto/create-ai-instruction.dto.js.map +1 -1
  62. package/dist/ai-instruction/dto/preview-ai-instruction.dto.d.ts +14 -0
  63. package/dist/ai-instruction/dto/preview-ai-instruction.dto.d.ts.map +1 -0
  64. package/dist/ai-instruction/dto/preview-ai-instruction.dto.js +42 -0
  65. package/dist/ai-instruction/dto/preview-ai-instruction.dto.js.map +1 -0
  66. package/dist/ai-instruction/dto/update-ai-instruction.dto.d.ts +11 -0
  67. package/dist/ai-instruction/dto/update-ai-instruction.dto.d.ts.map +1 -1
  68. package/dist/ai-instruction/dto/update-ai-instruction.dto.js +34 -0
  69. package/dist/ai-instruction/dto/update-ai-instruction.dto.js.map +1 -1
  70. package/dist/ai-instruction/types/ai-instruction.types.d.ts +13 -1
  71. package/dist/ai-instruction/types/ai-instruction.types.d.ts.map +1 -1
  72. package/dist/ai-instruction/types/ai-instruction.types.js +10 -0
  73. package/dist/ai-instruction/types/ai-instruction.types.js.map +1 -1
  74. package/dist/auth/auth.controller.d.ts +24 -9
  75. package/dist/auth/auth.controller.d.ts.map +1 -1
  76. package/dist/auth/auth.controller.js +49 -21
  77. package/dist/auth/auth.controller.js.map +1 -1
  78. package/dist/auth/auth.service.d.ts +33 -8
  79. package/dist/auth/auth.service.d.ts.map +1 -1
  80. package/dist/auth/auth.service.js +78 -29
  81. package/dist/auth/auth.service.js.map +1 -1
  82. package/dist/captcha/captcha.module.d.ts +3 -0
  83. package/dist/captcha/captcha.module.d.ts.map +1 -0
  84. package/dist/captcha/captcha.module.js +23 -0
  85. package/dist/captcha/captcha.module.js.map +1 -0
  86. package/dist/captcha/captcha.service.d.ts +38 -0
  87. package/dist/captcha/captcha.service.d.ts.map +1 -0
  88. package/dist/captcha/captcha.service.js +144 -0
  89. package/dist/captcha/captcha.service.js.map +1 -0
  90. package/dist/challenge/challenge.service.d.ts +16 -7
  91. package/dist/challenge/challenge.service.d.ts.map +1 -1
  92. package/dist/challenge/challenge.service.js +64 -16
  93. package/dist/challenge/challenge.service.js.map +1 -1
  94. package/dist/core.module.d.ts +3 -1
  95. package/dist/core.module.d.ts.map +1 -1
  96. package/dist/core.module.js +29 -2
  97. package/dist/core.module.js.map +1 -1
  98. package/dist/dashboard/dashboard/dashboard.controller.d.ts +15 -15
  99. package/dist/dashboard/dashboard/dashboard.service.d.ts +15 -15
  100. package/dist/dashboard/dashboard-component/dashboard-component.controller.d.ts +6 -6
  101. package/dist/dashboard/dashboard-component/dashboard-component.service.d.ts +6 -6
  102. package/dist/dashboard/dashboard-component-role/dashboard-component-role.controller.d.ts +20 -20
  103. package/dist/dashboard/dashboard-component-role/dashboard-component-role.service.d.ts +20 -20
  104. package/dist/dashboard/dashboard-core/dashboard-core.controller.d.ts +1 -1
  105. package/dist/dashboard/dashboard-core/dashboard-core.service.d.ts +1 -1
  106. package/dist/dashboard/dashboard-role/dashboard-role.controller.d.ts +13 -13
  107. package/dist/dashboard/dashboard-role/dashboard-role.service.d.ts +13 -13
  108. package/dist/file/file.service.d.ts +6 -0
  109. package/dist/file/file.service.d.ts.map +1 -1
  110. package/dist/file/file.service.js +44 -4
  111. package/dist/file/file.service.js.map +1 -1
  112. package/dist/incident/incident-notifier.service.d.ts +36 -0
  113. package/dist/incident/incident-notifier.service.d.ts.map +1 -0
  114. package/dist/incident/incident-notifier.service.js +208 -0
  115. package/dist/incident/incident-notifier.service.js.map +1 -0
  116. package/dist/incident/incident.controller.d.ts +23 -0
  117. package/dist/incident/incident.controller.d.ts.map +1 -0
  118. package/dist/incident/incident.controller.js +75 -0
  119. package/dist/incident/incident.controller.js.map +1 -0
  120. package/dist/incident/incident.module.d.ts +7 -0
  121. package/dist/incident/incident.module.d.ts.map +1 -0
  122. package/dist/incident/incident.module.js +32 -0
  123. package/dist/incident/incident.module.js.map +1 -0
  124. package/dist/incident/incident.service.d.ts +72 -0
  125. package/dist/incident/incident.service.d.ts.map +1 -0
  126. package/dist/incident/incident.service.js +184 -0
  127. package/dist/incident/incident.service.js.map +1 -0
  128. package/dist/index.d.ts +26 -0
  129. package/dist/index.d.ts.map +1 -1
  130. package/dist/index.js +30 -0
  131. package/dist/index.js.map +1 -1
  132. package/dist/integration-profile/dto/test.dto.d.ts +13 -0
  133. package/dist/integration-profile/dto/test.dto.d.ts.map +1 -0
  134. package/dist/integration-profile/dto/test.dto.js +26 -0
  135. package/dist/integration-profile/dto/test.dto.js.map +1 -0
  136. package/dist/integration-profile/integration-profile.controller.d.ts +12 -1
  137. package/dist/integration-profile/integration-profile.controller.d.ts.map +1 -1
  138. package/dist/integration-profile/integration-profile.controller.js +9 -1
  139. package/dist/integration-profile/integration-profile.controller.js.map +1 -1
  140. package/dist/integration-profile/integration-profile.module.d.ts +6 -1
  141. package/dist/integration-profile/integration-profile.module.d.ts.map +1 -1
  142. package/dist/integration-profile/integration-profile.module.js +26 -3
  143. package/dist/integration-profile/integration-profile.module.js.map +1 -1
  144. package/dist/integration-profile/integration-profile.secrets.d.ts.map +1 -1
  145. package/dist/integration-profile/integration-profile.secrets.js +9 -1
  146. package/dist/integration-profile/integration-profile.secrets.js.map +1 -1
  147. package/dist/integration-profile/integration-profile.service.d.ts +26 -7
  148. package/dist/integration-profile/integration-profile.service.d.ts.map +1 -1
  149. package/dist/integration-profile/integration-profile.service.js +94 -91
  150. package/dist/integration-profile/integration-profile.service.js.map +1 -1
  151. package/dist/integration-profile/integration-profile.utils.d.ts +13 -1
  152. package/dist/integration-profile/integration-profile.utils.d.ts.map +1 -1
  153. package/dist/integration-profile/integration-profile.utils.js +20 -5
  154. package/dist/integration-profile/integration-profile.utils.js.map +1 -1
  155. package/dist/integration-profile/testers/ai.testers.d.ts +3 -0
  156. package/dist/integration-profile/testers/ai.testers.d.ts.map +1 -0
  157. package/dist/integration-profile/testers/ai.testers.js +125 -0
  158. package/dist/integration-profile/testers/ai.testers.js.map +1 -0
  159. package/dist/integration-profile/testers/captcha.testers.d.ts +3 -0
  160. package/dist/integration-profile/testers/captcha.testers.d.ts.map +1 -0
  161. package/dist/integration-profile/testers/captcha.testers.js +121 -0
  162. package/dist/integration-profile/testers/captcha.testers.js.map +1 -0
  163. package/dist/integration-profile/testers/email.testers.d.ts +3 -0
  164. package/dist/integration-profile/testers/email.testers.d.ts.map +1 -0
  165. package/dist/integration-profile/testers/email.testers.js +128 -0
  166. package/dist/integration-profile/testers/email.testers.js.map +1 -0
  167. package/dist/integration-profile/testers/http-probe.d.ts +57 -0
  168. package/dist/integration-profile/testers/http-probe.d.ts.map +1 -0
  169. package/dist/integration-profile/testers/http-probe.js +140 -0
  170. package/dist/integration-profile/testers/http-probe.js.map +1 -0
  171. package/dist/integration-profile/testers/index.d.ts +12 -0
  172. package/dist/integration-profile/testers/index.d.ts.map +1 -0
  173. package/dist/integration-profile/testers/index.js +45 -0
  174. package/dist/integration-profile/testers/index.js.map +1 -0
  175. package/dist/integration-profile/testers/infrastructure.testers.d.ts +3 -0
  176. package/dist/integration-profile/testers/infrastructure.testers.d.ts.map +1 -0
  177. package/dist/integration-profile/testers/infrastructure.testers.js +105 -0
  178. package/dist/integration-profile/testers/infrastructure.testers.js.map +1 -0
  179. package/dist/integration-profile/testers/integration-tester.registry.d.ts +17 -0
  180. package/dist/integration-profile/testers/integration-tester.registry.d.ts.map +1 -0
  181. package/dist/integration-profile/testers/integration-tester.registry.js +52 -0
  182. package/dist/integration-profile/testers/integration-tester.registry.js.map +1 -0
  183. package/dist/integration-profile/testers/integration-tester.types.d.ts +55 -0
  184. package/dist/integration-profile/testers/integration-tester.types.d.ts.map +1 -0
  185. package/dist/integration-profile/testers/integration-tester.types.js +16 -0
  186. package/dist/integration-profile/testers/integration-tester.types.js.map +1 -0
  187. package/dist/integration-profile/testers/messaging.testers.d.ts +3 -0
  188. package/dist/integration-profile/testers/messaging.testers.d.ts.map +1 -0
  189. package/dist/integration-profile/testers/messaging.testers.js +70 -0
  190. package/dist/integration-profile/testers/messaging.testers.js.map +1 -0
  191. package/dist/integration-profile/testers/oauth.testers.d.ts +3 -0
  192. package/dist/integration-profile/testers/oauth.testers.d.ts.map +1 -0
  193. package/dist/integration-profile/testers/oauth.testers.js +285 -0
  194. package/dist/integration-profile/testers/oauth.testers.js.map +1 -0
  195. package/dist/integration-profile/testers/payment.testers.d.ts +3 -0
  196. package/dist/integration-profile/testers/payment.testers.d.ts.map +1 -0
  197. package/dist/integration-profile/testers/payment.testers.js +169 -0
  198. package/dist/integration-profile/testers/payment.testers.js.map +1 -0
  199. package/dist/integration-profile/testers/storage.testers.d.ts +3 -0
  200. package/dist/integration-profile/testers/storage.testers.d.ts.map +1 -0
  201. package/dist/integration-profile/testers/storage.testers.js +208 -0
  202. package/dist/integration-profile/testers/storage.testers.js.map +1 -0
  203. package/dist/language/en.json +4 -2
  204. package/dist/language/pt.json +4 -2
  205. package/dist/leaked-password/leaked-password.controller.d.ts +24 -0
  206. package/dist/leaked-password/leaked-password.controller.d.ts.map +1 -0
  207. package/dist/leaked-password/leaked-password.controller.js +78 -0
  208. package/dist/leaked-password/leaked-password.controller.js.map +1 -0
  209. package/dist/leaked-password/leaked-password.module.d.ts +8 -0
  210. package/dist/leaked-password/leaked-password.module.d.ts.map +1 -0
  211. package/dist/leaked-password/leaked-password.module.js +31 -0
  212. package/dist/leaked-password/leaked-password.module.js.map +1 -0
  213. package/dist/leaked-password/leaked-password.service.d.ts +64 -0
  214. package/dist/leaked-password/leaked-password.service.d.ts.map +1 -0
  215. package/dist/leaked-password/leaked-password.service.js +218 -0
  216. package/dist/leaked-password/leaked-password.service.js.map +1 -0
  217. package/dist/locale/locale.controller.d.ts +1 -1
  218. package/dist/locale/locale.service.d.ts +1 -1
  219. package/dist/mail/dto/preview.dto.d.ts +18 -0
  220. package/dist/mail/dto/preview.dto.d.ts.map +1 -0
  221. package/dist/mail/dto/preview.dto.js +66 -0
  222. package/dist/mail/dto/preview.dto.js.map +1 -0
  223. package/dist/mail/dto/send.dto.d.ts +7 -0
  224. package/dist/mail/dto/send.dto.d.ts.map +1 -1
  225. package/dist/mail/dto/send.dto.js +10 -0
  226. package/dist/mail/dto/send.dto.js.map +1 -1
  227. package/dist/mail/mail.controller.d.ts +4 -0
  228. package/dist/mail/mail.controller.d.ts.map +1 -1
  229. package/dist/mail/mail.controller.js +16 -2
  230. package/dist/mail/mail.controller.js.map +1 -1
  231. package/dist/mail/mail.service.d.ts +23 -2
  232. package/dist/mail/mail.service.d.ts.map +1 -1
  233. package/dist/mail/mail.service.js +102 -13
  234. package/dist/mail/mail.service.js.map +1 -1
  235. package/dist/mail-layout/dto/update.dto.d.ts +17 -0
  236. package/dist/mail-layout/dto/update.dto.d.ts.map +1 -0
  237. package/dist/mail-layout/dto/update.dto.js +27 -0
  238. package/dist/mail-layout/dto/update.dto.js.map +1 -0
  239. package/dist/mail-layout/mail-layout.controller.d.ts +15 -0
  240. package/dist/mail-layout/mail-layout.controller.d.ts.map +1 -0
  241. package/dist/mail-layout/mail-layout.controller.js +71 -0
  242. package/dist/mail-layout/mail-layout.controller.js.map +1 -0
  243. package/dist/mail-layout/mail-layout.module.d.ts +3 -0
  244. package/dist/mail-layout/mail-layout.module.d.ts.map +1 -0
  245. package/dist/mail-layout/mail-layout.module.js +35 -0
  246. package/dist/mail-layout/mail-layout.module.js.map +1 -0
  247. package/dist/mail-layout/mail-layout.service.d.ts +27 -0
  248. package/dist/mail-layout/mail-layout.service.d.ts.map +1 -0
  249. package/dist/mail-layout/mail-layout.service.js +80 -0
  250. package/dist/mail-layout/mail-layout.service.js.map +1 -0
  251. package/dist/mcp-chat/mcp-chat.controller.d.ts +2 -2
  252. package/dist/mcp-chat/mcp-chat.service.d.ts +24 -2
  253. package/dist/mcp-chat/mcp-chat.service.d.ts.map +1 -1
  254. package/dist/mcp-chat/mcp-chat.service.js +80 -24
  255. package/dist/mcp-chat/mcp-chat.service.js.map +1 -1
  256. package/dist/menu/menu.controller.d.ts +3 -3
  257. package/dist/menu/menu.service.d.ts +3 -3
  258. package/dist/notification/notification.controller.d.ts +12 -12
  259. package/dist/notification/notification.service.d.ts +12 -12
  260. package/dist/oauth/oauth-token-broker.service.d.ts +72 -0
  261. package/dist/oauth/oauth-token-broker.service.d.ts.map +1 -0
  262. package/dist/oauth/oauth-token-broker.service.js +258 -0
  263. package/dist/oauth/oauth-token-broker.service.js.map +1 -0
  264. package/dist/oauth/oauth.module.d.ts.map +1 -1
  265. package/dist/oauth/oauth.module.js +3 -1
  266. package/dist/oauth/oauth.module.js.map +1 -1
  267. package/dist/oauth/oauth.service.d.ts +2 -0
  268. package/dist/oauth/oauth.service.d.ts.map +1 -1
  269. package/dist/oauth/oauth.service.js +6 -3
  270. package/dist/oauth/oauth.service.js.map +1 -1
  271. package/dist/pdf/pdf.service.d.ts +8 -0
  272. package/dist/pdf/pdf.service.d.ts.map +1 -1
  273. package/dist/pdf/pdf.service.js +52 -0
  274. package/dist/pdf/pdf.service.js.map +1 -1
  275. package/dist/presence/presence.controller.d.ts +16 -0
  276. package/dist/presence/presence.controller.d.ts.map +1 -0
  277. package/dist/presence/presence.controller.js +60 -0
  278. package/dist/presence/presence.controller.js.map +1 -0
  279. package/dist/presence/presence.listener.d.ts +29 -0
  280. package/dist/presence/presence.listener.d.ts.map +1 -0
  281. package/dist/presence/presence.listener.js +82 -0
  282. package/dist/presence/presence.listener.js.map +1 -0
  283. package/dist/presence/presence.module.d.ts +3 -0
  284. package/dist/presence/presence.module.d.ts.map +1 -0
  285. package/dist/presence/presence.module.js +32 -0
  286. package/dist/presence/presence.module.js.map +1 -0
  287. package/dist/presence/presence.service.d.ts +42 -0
  288. package/dist/presence/presence.service.d.ts.map +1 -0
  289. package/dist/presence/presence.service.js +147 -0
  290. package/dist/presence/presence.service.js.map +1 -0
  291. package/dist/profile/dto/delete-account.dto.d.ts +8 -0
  292. package/dist/profile/dto/delete-account.dto.d.ts.map +1 -0
  293. package/dist/profile/dto/delete-account.dto.js +22 -0
  294. package/dist/profile/dto/delete-account.dto.js.map +1 -0
  295. package/dist/profile/events/profile-account-deleted.event.d.ts +12 -0
  296. package/dist/profile/events/profile-account-deleted.event.d.ts.map +1 -0
  297. package/dist/profile/events/profile-account-deleted.event.js +17 -0
  298. package/dist/profile/events/profile-account-deleted.event.js.map +1 -0
  299. package/dist/profile/profile.controller.d.ts +21 -15
  300. package/dist/profile/profile.controller.d.ts.map +1 -1
  301. package/dist/profile/profile.controller.js +75 -46
  302. package/dist/profile/profile.controller.js.map +1 -1
  303. package/dist/profile/profile.service.d.ts +30 -18
  304. package/dist/profile/profile.service.d.ts.map +1 -1
  305. package/dist/profile/profile.service.js +113 -37
  306. package/dist/profile/profile.service.js.map +1 -1
  307. package/dist/realtime/realtime.gateway.d.ts +48 -0
  308. package/dist/realtime/realtime.gateway.d.ts.map +1 -0
  309. package/dist/realtime/realtime.gateway.js +156 -0
  310. package/dist/realtime/realtime.gateway.js.map +1 -0
  311. package/dist/realtime/realtime.module.d.ts +8 -0
  312. package/dist/realtime/realtime.module.d.ts.map +1 -0
  313. package/dist/realtime/realtime.module.js +29 -0
  314. package/dist/realtime/realtime.module.js.map +1 -0
  315. package/dist/realtime/realtime.service.d.ts +51 -0
  316. package/dist/realtime/realtime.service.d.ts.map +1 -0
  317. package/dist/realtime/realtime.service.js +177 -0
  318. package/dist/realtime/realtime.service.js.map +1 -0
  319. package/dist/redis/redis-pubsub.d.ts +27 -0
  320. package/dist/redis/redis-pubsub.d.ts.map +1 -0
  321. package/dist/redis/redis-pubsub.js +140 -0
  322. package/dist/redis/redis-pubsub.js.map +1 -0
  323. package/dist/role/role.controller.d.ts +3 -3
  324. package/dist/role/role.service.d.ts +3 -3
  325. package/dist/setting/dto/create.dto.d.ts.map +1 -1
  326. package/dist/setting/dto/create.dto.js +9 -2
  327. package/dist/setting/dto/create.dto.js.map +1 -1
  328. package/dist/setting/setting.controller.d.ts +5 -5
  329. package/dist/setting/setting.service.d.ts +8 -5
  330. package/dist/setting/setting.service.d.ts.map +1 -1
  331. package/dist/setting/setting.service.js +25 -1
  332. package/dist/setting/setting.service.js.map +1 -1
  333. package/dist/user/dto/create-with-email-and-password.dto.d.ts +2 -0
  334. package/dist/user/dto/create-with-email-and-password.dto.d.ts.map +1 -1
  335. package/dist/user/dto/create-with-email-and-password.dto.js +5 -0
  336. package/dist/user/dto/create-with-email-and-password.dto.js.map +1 -1
  337. package/dist/user/dto/query-user-mail-list.dto.d.ts +5 -0
  338. package/dist/user/dto/query-user-mail-list.dto.d.ts.map +1 -0
  339. package/dist/user/dto/query-user-mail-list.dto.js +25 -0
  340. package/dist/user/dto/query-user-mail-list.dto.js.map +1 -0
  341. package/dist/user/user-credential.util.d.ts +19 -0
  342. package/dist/user/user-credential.util.d.ts.map +1 -0
  343. package/dist/user/user-credential.util.js +32 -0
  344. package/dist/user/user-credential.util.js.map +1 -0
  345. package/dist/user/user.controller.d.ts +17 -5
  346. package/dist/user/user.controller.d.ts.map +1 -1
  347. package/dist/user/user.controller.js +18 -3
  348. package/dist/user/user.controller.js.map +1 -1
  349. package/dist/user/user.service.d.ts +28 -6
  350. package/dist/user/user.service.d.ts.map +1 -1
  351. package/dist/user/user.service.js +204 -13
  352. package/dist/user/user.service.js.map +1 -1
  353. package/dist/validators/is-strong-password-with-settings.validator.d.ts.map +1 -1
  354. package/dist/validators/is-strong-password-with-settings.validator.js +11 -0
  355. package/dist/validators/is-strong-password-with-settings.validator.js.map +1 -1
  356. package/dist/validators/service-locator.d.ts +9 -0
  357. package/dist/validators/service-locator.d.ts.map +1 -1
  358. package/dist/validators/service-locator.js +12 -0
  359. package/dist/validators/service-locator.js.map +1 -1
  360. package/dist/whatsapp-sender/whatsapp-sender.module.d.ts +3 -0
  361. package/dist/whatsapp-sender/whatsapp-sender.module.d.ts.map +1 -0
  362. package/dist/whatsapp-sender/whatsapp-sender.module.js +23 -0
  363. package/dist/whatsapp-sender/whatsapp-sender.module.js.map +1 -0
  364. package/dist/whatsapp-sender/whatsapp-sender.service.d.ts +50 -0
  365. package/dist/whatsapp-sender/whatsapp-sender.service.d.ts.map +1 -0
  366. package/dist/whatsapp-sender/whatsapp-sender.service.js +224 -0
  367. package/dist/whatsapp-sender/whatsapp-sender.service.js.map +1 -0
  368. package/hedhog/data/integration_provider.yaml +16 -0
  369. package/hedhog/data/mail.yaml +88 -61
  370. package/hedhog/data/mail_layout.yaml +188 -0
  371. package/hedhog/data/menu.yaml +67 -3
  372. package/hedhog/data/route.yaml +135 -0
  373. package/hedhog/data/setting_group.yaml +139 -1
  374. package/hedhog/frontend/app/account/components/mfa-setup-dialog.tsx.ejs +36 -0
  375. package/hedhog/frontend/app/account/components/two-factor-auth.tsx.ejs +2 -0
  376. package/hedhog/frontend/app/account/hooks/use-mfa-setup.ts.ejs +10 -7
  377. package/hedhog/frontend/app/ai_agent/page.tsx.ejs +7 -4
  378. package/hedhog/frontend/app/ai_instruction/_components/ai-instruction-form.tsx.ejs +580 -0
  379. package/hedhog/frontend/app/ai_instruction/_components/ai-instruction-preview.tsx.ejs +150 -0
  380. package/hedhog/frontend/app/ai_instruction/_components/ai-instruction-versions.tsx.ejs +199 -0
  381. package/hedhog/frontend/app/ai_instruction/_components/prompt-diff.tsx.ejs +63 -0
  382. package/hedhog/frontend/app/ai_instruction/_lib/line-diff.spec.ts.ejs +59 -0
  383. package/hedhog/frontend/app/ai_instruction/_lib/line-diff.ts.ejs +72 -0
  384. package/hedhog/frontend/app/ai_instruction/_lib/prompt-template.spec.ts.ejs +170 -0
  385. package/hedhog/frontend/app/ai_instruction/_lib/prompt-template.ts.ejs +167 -0
  386. package/hedhog/frontend/app/ai_instruction/_lib/types.ts.ejs +99 -0
  387. package/hedhog/frontend/app/ai_instruction/page.tsx.ejs +422 -0
  388. package/hedhog/frontend/app/configurations/[slug]/components/setting-field.tsx.ejs +51 -4
  389. package/hedhog/frontend/app/incidents/page.tsx.ejs +400 -0
  390. package/hedhog/frontend/app/integration/profiles/page.tsx.ejs +153 -84
  391. package/hedhog/frontend/app/mail/layout/page.tsx.ejs +344 -0
  392. package/hedhog/frontend/app/mail/template/page.tsx.ejs +155 -121
  393. package/hedhog/frontend/app/mcp_chat/page.tsx.ejs +129 -17
  394. package/hedhog/frontend/app/pages/_components/page-delete-dialog.tsx.ejs +343 -0
  395. package/hedhog/frontend/app/pages/_components/page-detail-sheet.tsx.ejs +438 -0
  396. package/hedhog/frontend/app/pages/_components/page-wizard-sheet.tsx.ejs +1009 -0
  397. package/hedhog/frontend/app/pages/_components/system-page-types.ts.ejs +56 -0
  398. package/hedhog/frontend/app/pages/_components/use-system-pages.ts.ejs +171 -0
  399. package/hedhog/frontend/app/pages/page.tsx.ejs +514 -0
  400. package/hedhog/frontend/app/users/page.tsx.ejs +119 -13
  401. package/hedhog/frontend/app/users/user-activity-timeline.tsx.ejs +231 -0
  402. package/hedhog/frontend/app/users/user-mails.tsx.ejs +399 -0
  403. package/hedhog/frontend/app/users/user-sheet.tsx.ejs +60 -75
  404. package/hedhog/frontend/messages/en.json +499 -3
  405. package/hedhog/frontend/messages/pt.json +499 -3
  406. package/hedhog/table/ai_agent.yaml +1 -0
  407. package/hedhog/table/ai_instruction.yaml +15 -0
  408. package/hedhog/table/leaked_password.yaml +18 -0
  409. package/hedhog/table/mail_layout.yaml +35 -0
  410. package/hedhog/table/mail_var.yaml +4 -0
  411. package/hedhog/table/setting.yaml +1 -0
  412. package/hedhog/table/system_incident.yaml +59 -0
  413. package/hedhog/table/user_presence.yaml +36 -0
  414. package/package.json +8 -4
  415. package/src/access-log/access-log.interceptor.ts +4 -2
  416. package/src/ai/ai-attachment.fragments.spec.ts +319 -0
  417. package/src/ai/ai-attachment.fragments.ts +35 -0
  418. package/src/ai/ai.prompts.ts +38 -0
  419. package/src/ai/ai.service.spec.ts +280 -0
  420. package/src/ai/ai.service.ts +338 -82
  421. package/src/ai/dto/chat.dto.ts +33 -3
  422. package/src/ai/dto/create-agent.dto.ts +2 -2
  423. package/src/ai/dto/update-agent.dto.ts +2 -2
  424. package/src/ai-instruction/ai-instruction.controller.ts +40 -9
  425. package/src/ai-instruction/ai-instruction.module.ts +13 -2
  426. package/src/ai-instruction/ai-instruction.service.spec.ts +658 -0
  427. package/src/ai-instruction/ai-instruction.service.ts +661 -62
  428. package/src/ai-instruction/ai-prompt-builder.service.ts +10 -1
  429. package/src/ai-instruction/ai-prompt-registry.ts +87 -0
  430. package/src/ai-instruction/ai-prompt-resolver.service.spec.ts +375 -0
  431. package/src/ai-instruction/ai-prompt-resolver.service.ts +295 -0
  432. package/src/ai-instruction/ai-prompt-template.util.spec.ts +162 -0
  433. package/src/ai-instruction/ai-prompt-template.util.ts +199 -0
  434. package/src/ai-instruction/dto/create-ai-instruction.dto.ts +39 -3
  435. package/src/ai-instruction/dto/preview-ai-instruction.dto.ts +26 -0
  436. package/src/ai-instruction/dto/update-ai-instruction.dto.ts +42 -1
  437. package/src/ai-instruction/types/ai-instruction.types.ts +24 -1
  438. package/src/auth/auth.controller.ts +31 -5
  439. package/src/auth/auth.service.spec.ts +3 -1
  440. package/src/auth/auth.service.ts +101 -36
  441. package/src/captcha/captcha.module.ts +10 -0
  442. package/src/captcha/captcha.service.spec.ts +210 -0
  443. package/src/captcha/captcha.service.ts +191 -0
  444. package/src/challenge/challenge.service.spec.ts +39 -4
  445. package/src/challenge/challenge.service.ts +72 -17
  446. package/src/core.module.ts +27 -1
  447. package/src/file/file.service.spec.ts +105 -0
  448. package/src/file/file.service.ts +60 -3
  449. package/src/incident/incident-notifier.service.spec.ts +205 -0
  450. package/src/incident/incident-notifier.service.ts +241 -0
  451. package/src/incident/incident.controller.ts +38 -0
  452. package/src/incident/incident.module.ts +19 -0
  453. package/src/incident/incident.service.spec.ts +150 -0
  454. package/src/incident/incident.service.ts +209 -0
  455. package/src/index.ts +37 -0
  456. package/src/integration-profile/dto/test.dto.ts +19 -0
  457. package/src/integration-profile/integration-profile.controller.ts +10 -1
  458. package/src/integration-profile/integration-profile.module.spec.ts +51 -0
  459. package/src/integration-profile/integration-profile.module.ts +23 -4
  460. package/src/integration-profile/integration-profile.secrets.ts +9 -1
  461. package/src/integration-profile/integration-profile.service.spec.ts +279 -0
  462. package/src/integration-profile/integration-profile.service.ts +120 -124
  463. package/src/integration-profile/integration-profile.utils.spec.ts +22 -0
  464. package/src/integration-profile/integration-profile.utils.ts +40 -3
  465. package/src/integration-profile/testers/ai.testers.ts +165 -0
  466. package/src/integration-profile/testers/captcha.testers.spec.ts +92 -0
  467. package/src/integration-profile/testers/captcha.testers.ts +139 -0
  468. package/src/integration-profile/testers/email.testers.ts +161 -0
  469. package/src/integration-profile/testers/http-probe.spec.ts +153 -0
  470. package/src/integration-profile/testers/http-probe.ts +171 -0
  471. package/src/integration-profile/testers/index.ts +30 -0
  472. package/src/integration-profile/testers/infrastructure.testers.ts +122 -0
  473. package/src/integration-profile/testers/integration-tester.registry.spec.ts +75 -0
  474. package/src/integration-profile/testers/integration-tester.registry.ts +43 -0
  475. package/src/integration-profile/testers/integration-tester.types.ts +61 -0
  476. package/src/integration-profile/testers/messaging.testers.ts +102 -0
  477. package/src/integration-profile/testers/oauth.testers.spec.ts +220 -0
  478. package/src/integration-profile/testers/oauth.testers.ts +305 -0
  479. package/src/integration-profile/testers/payment.testers.ts +185 -0
  480. package/src/integration-profile/testers/remaining.testers.spec.ts +401 -0
  481. package/src/integration-profile/testers/storage.testers.spec.ts +185 -0
  482. package/src/integration-profile/testers/storage.testers.ts +226 -0
  483. package/src/integration-profile/testers/tester-coverage.spec.ts +58 -0
  484. package/src/language/en.json +4 -2
  485. package/src/language/pt.json +4 -2
  486. package/src/leaked-password/README.md +83 -0
  487. package/src/leaked-password/leaked-password.controller.ts +52 -0
  488. package/src/leaked-password/leaked-password.module.ts +18 -0
  489. package/src/leaked-password/leaked-password.service.ts +242 -0
  490. package/src/leaked-password/seed/build-seed-sql.mjs +180 -0
  491. package/src/leaked-password/seed/common-passwords.txt +335 -0
  492. package/src/mail/dto/preview.dto.ts +50 -0
  493. package/src/mail/dto/send.dto.ts +14 -1
  494. package/src/mail/mail-template.spec.ts +197 -0
  495. package/src/mail/mail.controller.ts +9 -2
  496. package/src/mail/mail.service.spec.ts +116 -1
  497. package/src/mail/mail.service.ts +118 -12
  498. package/src/mail-layout/dto/update.dto.ts +19 -0
  499. package/src/mail-layout/mail-layout.controller.ts +47 -0
  500. package/src/mail-layout/mail-layout.module.ts +22 -0
  501. package/src/mail-layout/mail-layout.service.ts +94 -0
  502. package/src/mcp-chat/mcp-chat.service.spec.ts +236 -0
  503. package/src/mcp-chat/mcp-chat.service.ts +122 -26
  504. package/src/oauth/oauth-token-broker.service.spec.ts +172 -0
  505. package/src/oauth/oauth-token-broker.service.ts +363 -0
  506. package/src/oauth/oauth.module.ts +3 -1
  507. package/src/oauth/oauth.service.ts +8 -2
  508. package/src/pdf/pdf.service.ts +75 -0
  509. package/src/presence/presence.controller.ts +29 -0
  510. package/src/presence/presence.listener.ts +53 -0
  511. package/src/presence/presence.module.ts +19 -0
  512. package/src/presence/presence.service.spec.ts +97 -0
  513. package/src/presence/presence.service.ts +160 -0
  514. package/src/profile/dto/delete-account.dto.ts +11 -0
  515. package/src/profile/events/profile-account-deleted.event.ts +13 -0
  516. package/src/profile/profile.controller.ts +46 -34
  517. package/src/profile/profile.service.ts +138 -38
  518. package/src/realtime/realtime.gateway.ts +138 -0
  519. package/src/realtime/realtime.module.ts +16 -0
  520. package/src/realtime/realtime.service.spec.ts +50 -0
  521. package/src/realtime/realtime.service.ts +187 -0
  522. package/src/redis/redis-pubsub.ts +179 -0
  523. package/src/setting/dto/create.dto.ts +13 -2
  524. package/src/setting/setting.service.spec.ts +56 -0
  525. package/src/setting/setting.service.ts +29 -1
  526. package/src/user/dto/create-with-email-and-password.dto.ts +6 -1
  527. package/src/user/dto/query-user-mail-list.dto.ts +10 -0
  528. package/src/user/user-credential.util.ts +35 -0
  529. package/src/user/user.controller.ts +17 -2
  530. package/src/user/user.service.spec.ts +153 -0
  531. package/src/user/user.service.ts +255 -12
  532. package/src/validators/is-strong-password-with-settings.validator.ts +12 -0
  533. package/src/validators/service-locator.ts +15 -0
  534. package/src/whatsapp-sender/whatsapp-sender.module.ts +10 -0
  535. package/src/whatsapp-sender/whatsapp-sender.service.ts +313 -0
@@ -111,6 +111,22 @@
111
111
  slug: admin-mail
112
112
  - where:
113
113
  slug: integration-manager
114
+ - menu_id:
115
+ where:
116
+ slug: /core/mail-management
117
+ url: /core/mail/layout
118
+ order: 2
119
+ icon: layout-template
120
+ name:
121
+ en: Base Layout
122
+ pt: Layout base
123
+ slug: /core/mail-layout
124
+ relations:
125
+ role:
126
+ - where:
127
+ slug: admin
128
+ - where:
129
+ slug: admin-mail
114
130
  - menu_id:
115
131
  where:
116
132
  slug: /core/mail-management
@@ -172,11 +188,29 @@
172
188
  role:
173
189
  - where:
174
190
  slug: admin
191
+
175
192
  - menu_id:
176
193
  where:
177
194
  slug: /core/management
178
- url: /core/integrations-webhooks
195
+ url: /core/ai_instruction
179
196
  order: 9
197
+ icon: sparkles
198
+ name:
199
+ en: AI Prompts
200
+ pt: Prompts de IA
201
+ slug: /core/ai-instruction
202
+ relations:
203
+ role:
204
+ - where:
205
+ slug: admin
206
+ - where:
207
+ slug: admin-access
208
+
209
+ - menu_id:
210
+ where:
211
+ slug: /core/management
212
+ url: /core/integrations-webhooks
213
+ order: 10
180
214
  icon: webhook
181
215
  name:
182
216
  en: Integrations and Webhooks
@@ -191,7 +225,7 @@
191
225
  where:
192
226
  slug: /core/management
193
227
  url: /core/setting-list
194
- order: 10
228
+ order: 11
195
229
  icon: list
196
230
  name:
197
231
  en: Setting Lists
@@ -205,8 +239,23 @@
205
239
  - menu_id:
206
240
  where:
207
241
  slug: /core/management
208
- url: /core/access-log
242
+ url: /core/pages
209
243
  order: 11
244
+ icon: layout-template
245
+ name:
246
+ en: Pages
247
+ pt: Páginas
248
+ slug: /core/pages
249
+ relations:
250
+ role:
251
+ - where:
252
+ slug: admin
253
+
254
+ - menu_id:
255
+ where:
256
+ slug: /core/management
257
+ url: /core/access-log
258
+ order: 12
210
259
  icon: file-clock
211
260
  name:
212
261
  en: Access Logs
@@ -217,6 +266,21 @@
217
266
  - where:
218
267
  slug: admin
219
268
 
269
+ - menu_id:
270
+ where:
271
+ slug: /core/management
272
+ url: /core/incidents
273
+ order: 13
274
+ icon: alert-triangle
275
+ name:
276
+ en: Incidents
277
+ pt: Incidentes
278
+ slug: /core/incidents
279
+ relations:
280
+ role:
281
+ - where:
282
+ slug: admin
283
+
220
284
  - url: /core/users
221
285
  order: 0
222
286
  icon: users
@@ -1,3 +1,31 @@
1
+ - url: /incident
2
+ method: GET
3
+ type: HTTP
4
+ relations:
5
+ role:
6
+ - where:
7
+ slug: admin
8
+ - url: /incident/summary
9
+ method: GET
10
+ type: HTTP
11
+ relations:
12
+ role:
13
+ - where:
14
+ slug: admin
15
+ - url: /incident/:id/resolve
16
+ method: PATCH
17
+ type: HTTP
18
+ relations:
19
+ role:
20
+ - where:
21
+ slug: admin
22
+ - url: /incident/:id/reopen
23
+ method: PATCH
24
+ type: HTTP
25
+ relations:
26
+ role:
27
+ - where:
28
+ slug: admin
1
29
  - url: /access-log
2
30
  method: GET
3
31
  type: HTTP
@@ -12,6 +40,8 @@
12
40
  role:
13
41
  - where:
14
42
  slug: admin
43
+ - where:
44
+ slug: admin-mail
15
45
  - url: /user/:userId/verify-identifier/:identifierId
16
46
  method: POST
17
47
  type: HTTP
@@ -442,6 +472,15 @@
442
472
  slug: admin
443
473
  - where:
444
474
  slug: admin-user
475
+ - url: /user/:userId/mail
476
+ method: GET
477
+ type: HTTP
478
+ relations:
479
+ role:
480
+ - where:
481
+ slug: admin
482
+ - where:
483
+ slug: admin-user
445
484
  - url: /user/:userId/menu
446
485
  method: GET
447
486
  type: HTTP
@@ -1160,6 +1199,8 @@
1160
1199
  role:
1161
1200
  - where:
1162
1201
  slug: admin
1202
+ - where:
1203
+ slug: admin-mail
1163
1204
  - url: /mail-sent
1164
1205
  method: GET
1165
1206
  type: HTTP
@@ -1202,6 +1243,8 @@
1202
1243
  role:
1203
1244
  - where:
1204
1245
  slug: admin
1246
+ - where:
1247
+ slug: admin-mail
1205
1248
  - url: /mail/:id/html
1206
1249
  method: GET
1207
1250
  type: HTTP
@@ -1209,6 +1252,8 @@
1209
1252
  role:
1210
1253
  - where:
1211
1254
  slug: admin
1255
+ - where:
1256
+ slug: admin-mail
1212
1257
  - url: /mail
1213
1258
  method: POST
1214
1259
  type: HTTP
@@ -1216,6 +1261,8 @@
1216
1261
  role:
1217
1262
  - where:
1218
1263
  slug: admin
1264
+ - where:
1265
+ slug: admin-mail
1219
1266
  - url: /mail/import
1220
1267
  method: POST
1221
1268
  type: HTTP
@@ -1223,6 +1270,8 @@
1223
1270
  role:
1224
1271
  - where:
1225
1272
  slug: admin
1273
+ - where:
1274
+ slug: admin-mail
1226
1275
  - url: /mail/:id
1227
1276
  method: PATCH
1228
1277
  type: HTTP
@@ -1230,6 +1279,8 @@
1230
1279
  role:
1231
1280
  - where:
1232
1281
  slug: admin
1282
+ - where:
1283
+ slug: admin-mail
1233
1284
  - url: /mail
1234
1285
  method: DELETE
1235
1286
  type: HTTP
@@ -1237,6 +1288,8 @@
1237
1288
  role:
1238
1289
  - where:
1239
1290
  slug: admin
1291
+ - where:
1292
+ slug: admin-mail
1240
1293
  - url: /mail/test
1241
1294
  method: POST
1242
1295
  type: HTTP
@@ -1244,6 +1297,44 @@
1244
1297
  role:
1245
1298
  - where:
1246
1299
  slug: admin
1300
+ - where:
1301
+ slug: admin-mail
1302
+ - url: /mail/preview
1303
+ method: POST
1304
+ type: HTTP
1305
+ relations:
1306
+ role:
1307
+ - where:
1308
+ slug: admin
1309
+ - where:
1310
+ slug: admin-mail
1311
+ - url: /mail-layout
1312
+ method: GET
1313
+ type: HTTP
1314
+ relations:
1315
+ role:
1316
+ - where:
1317
+ slug: admin
1318
+ - where:
1319
+ slug: admin-mail
1320
+ - url: /mail-layout/:id
1321
+ method: GET
1322
+ type: HTTP
1323
+ relations:
1324
+ role:
1325
+ - where:
1326
+ slug: admin
1327
+ - where:
1328
+ slug: admin-mail
1329
+ - url: /mail-layout/:id
1330
+ method: PATCH
1331
+ type: HTTP
1332
+ relations:
1333
+ role:
1334
+ - where:
1335
+ slug: admin
1336
+ - where:
1337
+ slug: admin-mail
1247
1338
 
1248
1339
  # ─── Integration Profile ──────────────────────────────────────────────────────
1249
1340
 
@@ -3149,6 +3240,36 @@
3149
3240
  - where:
3150
3241
  slug: admin-access
3151
3242
 
3243
+ - url: /ai-instruction/modules
3244
+ method: GET
3245
+ type: HTTP
3246
+ relations:
3247
+ role:
3248
+ - where:
3249
+ slug: admin
3250
+ - where:
3251
+ slug: admin-access
3252
+
3253
+ - url: /ai-instruction/registry
3254
+ method: GET
3255
+ type: HTTP
3256
+ relations:
3257
+ role:
3258
+ - where:
3259
+ slug: admin
3260
+ - where:
3261
+ slug: admin-access
3262
+
3263
+ - url: /ai-instruction/preview
3264
+ method: POST
3265
+ type: HTTP
3266
+ relations:
3267
+ role:
3268
+ - where:
3269
+ slug: admin
3270
+ - where:
3271
+ slug: admin-access
3272
+
3152
3273
  - url: /ai-instruction/:id
3153
3274
  method: GET
3154
3275
  type: HTTP
@@ -3380,3 +3501,17 @@
3380
3501
  method: PUT
3381
3502
  type: HTTP
3382
3503
  relations: *core_user_roles
3504
+ - url: /profile/account
3505
+ method: DELETE
3506
+ type: HTTP
3507
+ relations: *core_user_roles
3508
+ # Corpus de senhas vazadas. O filtro e consumido pelo cofre e pelos formularios
3509
+ # de senha, entao vale para qualquer usuario autenticado.
3510
+ - url: /leaked-password/filter
3511
+ method: GET
3512
+ type: HTTP
3513
+ relations: *core_user_roles
3514
+ - url: /leaked-password/stats
3515
+ method: GET
3516
+ type: HTTP
3517
+ relations: *core_user_roles
@@ -71,7 +71,21 @@
71
71
  description:
72
72
  en: 'Base URLs for specific apps, formatted as "app=https://example.com" (one per tag). Used in transactional email links (e.g. password reset) when the request comes from that app, falling back to System URL otherwise.'
73
73
  pt: 'URLs base de apps específicos, no formato "app=https://exemplo.com" (uma por tag). Usadas em links de e-mails transacionais (ex.: redefinição de senha) quando a solicitação vem desse app, usando a URL do Sistema como alternativa.'
74
- value: '["training=http://localhost:3001","class=https://localhost:3002","partners=http://localhost:3003"]'
74
+ value: '["training=http://localhost:3001","class=https://localhost:3002","partners=http://localhost:3003","admin=http://localhost:3200"]'
75
+ user_override: false
76
+ subgroup_id:
77
+ where:
78
+ slug: general-system
79
+ - slug: app-names
80
+ type: array
81
+ component: input-tags
82
+ name:
83
+ en: App Names
84
+ pt: Nomes dos Aplicativos
85
+ description:
86
+ en: 'Display name for specific apps, formatted as "app=Name" (one per tag). Used as the brand name shown in transactional emails when the request comes from that app, falling back to System Name otherwise.'
87
+ pt: 'Nome de exibição de apps específicos, no formato "app=Nome" (uma por tag). Usado como o nome de marca exibido em e-mails transacionais quando a solicitação vem desse app, usando o Nome do Sistema como alternativa.'
88
+ value: '["training=Training","class=Class","partners=Partners","admin=Admin"]'
75
89
  user_override: false
76
90
  subgroup_id:
77
91
  where:
@@ -256,6 +270,42 @@
256
270
  subgroup_id:
257
271
  where:
258
272
  slug: mail-configuration
273
+ - slug: ai-default-provider
274
+ type: string
275
+ component: combobox
276
+ name:
277
+ en: Default AI Provider
278
+ pt: Provedor de IA Padrão
279
+ description:
280
+ en: Default AI provider used when a caller does not explicitly specify one
281
+ pt: Provedor de IA padrão usado quando quem chama não especifica um explicitamente
282
+ value: openai
283
+ user_override: false
284
+ relations:
285
+ setting_list:
286
+ - value: openai
287
+ order: 0
288
+ - value: gemini
289
+ order: 1
290
+ - value: deepseek
291
+ order: 2
292
+ subgroup_id:
293
+ where:
294
+ slug: ai-configuration
295
+ - slug: core-ai-prompts-link
296
+ type: string
297
+ component: link
298
+ name:
299
+ en: AI Prompts
300
+ pt: Prompts de IA
301
+ description:
302
+ en: View and edit the AI prompts used by the core module.
303
+ pt: Veja e edite os prompts de IA usados pelo modulo core.
304
+ value: /core/ai_instruction?module=core
305
+ user_override: false
306
+ subgroup_id:
307
+ where:
308
+ slug: ai-configuration
259
309
  - slug: ai-openai-profile-id
260
310
  type: string
261
311
  component: entity-picker
@@ -284,6 +334,20 @@
284
334
  subgroup_id:
285
335
  where:
286
336
  slug: ai-configuration
337
+ - slug: ai-deepseek-profile-id
338
+ type: string
339
+ component: entity-picker
340
+ name:
341
+ en: DeepSeek Profile
342
+ pt: Perfil DeepSeek
343
+ description:
344
+ en: Integration profile (type AI / DeepSeek) to use for DeepSeek features
345
+ pt: Perfil de integração (tipo IA / DeepSeek) a usar para recursos de DeepSeek
346
+ value: ''
347
+ user_override: false
348
+ subgroup_id:
349
+ where:
350
+ slug: ai-configuration
287
351
  - slug: mcp-enabled
288
352
  type: boolean
289
353
  component: switch
@@ -406,6 +470,34 @@
406
470
  subgroup_id:
407
471
  where:
408
472
  slug: password-policy
473
+ - slug: password-block-leaked
474
+ type: boolean
475
+ component: switch
476
+ name:
477
+ en: Block Leaked Passwords
478
+ pt: Bloquear Senhas Vazadas
479
+ description:
480
+ en: Reject passwords found in the known-breach corpus, and warn about vault secrets that use one
481
+ pt: Recusar senhas encontradas no corpus de vazamentos conhecidos e avisar sobre segredos do cofre que usam alguma
482
+ value: true
483
+ user_override: false
484
+ subgroup_id:
485
+ where:
486
+ slug: password-policy
487
+ - slug: password-max-age-days
488
+ type: number
489
+ component: input-number
490
+ name:
491
+ en: Password Maximum Age (days)
492
+ pt: Idade Máxima da Senha (dias)
493
+ description:
494
+ en: Days after which a stored password is flagged as outdated in the vaults. Use 0 to disable the check.
495
+ pt: Dias após os quais uma senha guardada é sinalizada como desatualizada nos cofres. Use 0 para desativar a verificação.
496
+ value: 180
497
+ user_override: false
498
+ subgroup_id:
499
+ where:
500
+ slug: password-policy
409
501
  - slug: email-host-whitelist
410
502
  type: array
411
503
  name:
@@ -992,6 +1084,52 @@
992
1084
  order: 1
993
1085
  - value: email
994
1086
  order: 2
1087
+ - value: User.Read
1088
+ order: 3
1089
+ - value: offline_access
1090
+ order: 4
1091
+ - value: Calendars.Read
1092
+ order: 5
1093
+ - value: OnlineMeetings.Read
1094
+ order: 6
1095
+ - value: Chat.Read
1096
+ order: 7
1097
+ - value: ChannelMessage.Read
1098
+ order: 8
1099
+ - value: Team.ReadBasic.All
1100
+ order: 9
1101
+ - value: Presence.Read
1102
+ order: 10
1103
+ - value: User.ReadBasic.All
1104
+ order: 11
1105
+ subgroup_id:
1106
+ where:
1107
+ slug: microsoft-entra-id
1108
+ - slug: microsoft-graph-app-only-enabled
1109
+ type: boolean
1110
+ component: switch
1111
+ name:
1112
+ en: Enable tenant-wide (app-only) Microsoft Graph access
1113
+ pt: Acesso Microsoft Graph da organização (app-only)
1114
+ description:
1115
+ en: Allow the Microsoft integration to read data across the whole tenant using application permissions (client credentials), in addition to per-user delegated access. Requires admin consent in Entra.
1116
+ pt: Permite que a integração Microsoft leia dados de toda a organização usando permissões de aplicativo (client credentials), além do acesso delegado por usuário. Exige consentimento do administrador no Entra.
1117
+ value: 'false'
1118
+ user_override: false
1119
+ subgroup_id:
1120
+ where:
1121
+ slug: microsoft-entra-id
1122
+ - slug: microsoft-graph-chat-subscriptions-enabled
1123
+ type: boolean
1124
+ component: switch
1125
+ name:
1126
+ en: Subscribe to Teams chat/channel messages (protected API)
1127
+ pt: Assinar mensagens de chat/canal do Teams (API protegida)
1128
+ description:
1129
+ en: Create org-wide change-notification subscriptions for Teams chat and channel messages. These are protected APIs that require an approved request to Microsoft and appropriate licensing; leave off until approved.
1130
+ pt: Cria assinaturas de change notification para mensagens de chat e canal do Teams em toda a organização. São APIs protegidas que exigem pedido aprovado pela Microsoft e licenciamento adequado; deixe desligado até aprovar.
1131
+ value: 'false'
1132
+ user_override: false
995
1133
  subgroup_id:
996
1134
  where:
997
1135
  slug: microsoft-entra-id
@@ -17,13 +17,25 @@ import {
17
17
  import { Label } from '@/components/ui/label';
18
18
  import { UserMfaTypeEnum } from '@hed-hog/api-types/UserMfaTypeEnum';
19
19
  import { useApp } from '@hed-hog/next-app-provider';
20
+ import { Copy } from 'lucide-react';
20
21
  import { useTranslations } from 'next-intl';
21
22
  import { getMethodName } from '../lib/mfa-utils';
22
23
 
24
+ /** Extrai o segredo base32 da URL otpauth:// para digitação manual (quando não dá pra escanear o QR code), formatado em blocos de 4 caracteres. */
25
+ function getTotpManualEntryCode(otpauthUrl?: string): string | null {
26
+ if (!otpauthUrl) return null;
27
+ const match = otpauthUrl.match(/[?&]secret=([^&]+)/);
28
+ if (!match) return null;
29
+ return decodeURIComponent(match[1]!)
30
+ .replace(/(.{4})/g, '$1 ')
31
+ .trim();
32
+ }
33
+
23
34
  interface MfaSetupDialogProps {
24
35
  open: boolean;
25
36
  selectedMethod: UserMfaTypeEnum | null;
26
37
  qrCode: string;
38
+ otpauthUrl?: string;
27
39
  verificationCode: string;
28
40
  name: string;
29
41
  onNameChange: (name: string) => void;
@@ -42,6 +54,7 @@ export function MfaSetupDialog({
42
54
  open,
43
55
  selectedMethod,
44
56
  qrCode,
57
+ otpauthUrl,
45
58
  verificationCode,
46
59
  name,
47
60
  onNameChange,
@@ -59,6 +72,7 @@ export function MfaSetupDialog({
59
72
  const { getSettingValue } = useApp();
60
73
  const pinCodeLength = getSettingValue('mfa-email-code-length') || 6;
61
74
  const methodName = getMethodName(String(selectedMethod));
75
+ const totpManualEntryCode = getTotpManualEntryCode(otpauthUrl);
62
76
 
63
77
  return (
64
78
  <Dialog open={open} onOpenChange={onOpenChange}>
@@ -78,6 +92,28 @@ export function MfaSetupDialog({
78
92
  <div className="bg-muted p-4 rounded-lg flex justify-center">
79
93
  <img src={qrCode} alt="QR Code" />
80
94
  </div>
95
+ {totpManualEntryCode && (
96
+ <div className="flex flex-col items-center gap-2 text-center">
97
+ <p className="text-xs text-muted-foreground">
98
+ {t('manualCodeHint')}
99
+ </p>
100
+ <Button
101
+ type="button"
102
+ variant="outline"
103
+ size="sm"
104
+ className="font-mono tracking-wider"
105
+ title={t('manualCodeCopy')}
106
+ onClick={() =>
107
+ navigator.clipboard?.writeText(
108
+ totpManualEntryCode.replace(/\s+/g, '')
109
+ )
110
+ }
111
+ >
112
+ {totpManualEntryCode}
113
+ <Copy className="size-3.5" />
114
+ </Button>
115
+ </div>
116
+ )}
81
117
  </div>
82
118
  )}
83
119
  <div className="space-y-4">
@@ -90,6 +90,7 @@ export function TwoFactorAuth() {
90
90
  const { mfaMethods, refetchMfaMethods } = useMfaMethods();
91
91
  const {
92
92
  qrCode,
93
+ otpauthUrl,
93
94
  verifyEmailMFA,
94
95
  verifyTOTPMFA,
95
96
  removeMfaUnified,
@@ -331,6 +332,7 @@ export function TwoFactorAuth() {
331
332
  open={showAddDialog}
332
333
  selectedMethod={selectedMethod}
333
334
  qrCode={qrCode}
335
+ otpauthUrl={otpauthUrl}
334
336
  verificationCode={verificationCode}
335
337
  onOpenChange={setShowAddDialog}
336
338
  name={name}
@@ -9,6 +9,7 @@ export function useMfaSetup() {
9
9
  const [secret, setSecret] = useState('');
10
10
  const [codeHash, setCodeHash] = useState('');
11
11
  const [qrCode, setQrCode] = useState('');
12
+ const [otpauthUrl, setOtpauthUrl] = useState('');
12
13
  const [challengeId, setChallengeId] = useState<number | null>(null);
13
14
  const [resendLoading, setResendLoading] = useState(false);
14
15
  const [resendCooldown, setResendCooldown] = useState(0);
@@ -97,6 +98,7 @@ export function useMfaSetup() {
97
98
 
98
99
  setSecret(data.secret);
99
100
  setQrCode(data.qrCode);
101
+ setOtpauthUrl(data.otpauthUrl ?? '');
100
102
  showToastHandler('success', t('scanQrCode'));
101
103
  } catch (error) {
102
104
  console.error(error);
@@ -215,17 +217,17 @@ export function useMfaSetup() {
215
217
  const assertion = await startAuthentication({
216
218
  optionsJSON: optionsResponse.data,
217
219
  });
218
- await request({
219
- url: '/profile/webauthn/authenticate/verify',
220
- method: 'POST',
221
- data: {
222
- assertionResponse: assertion,
223
- },
224
- });
225
220
 
221
+ // A asserção é verificada pelo próprio endpoint de remoção (o backend
222
+ // exige e confere `assertionResponse` antes de excluir a chave). Não
223
+ // chamar /authenticate/verify antes: o desafio só pode ser verificado
224
+ // uma vez, e chamá-lo aqui o consumiria antes da remoção poder usá-lo.
226
225
  await request({
227
226
  url: `/profile/webauthn/${methodId}/remove`,
228
227
  method: 'DELETE',
228
+ data: {
229
+ assertionResponse: assertion,
230
+ },
229
231
  });
230
232
  showToastHandler('success', t('securityKeyRemovedSuccess'));
231
233
  } catch (error: any) {
@@ -443,6 +445,7 @@ export function useMfaSetup() {
443
445
 
444
446
  return {
445
447
  qrCode,
448
+ otpauthUrl,
446
449
  userEmail,
447
450
  verifyEmailMFA,
448
451
  verifyTOTPMFA,
@@ -70,7 +70,7 @@ import { z } from 'zod';
70
70
  type Agent = {
71
71
  id: number;
72
72
  slug: string;
73
- provider: 'openai' | 'gemini';
73
+ provider: 'openai' | 'gemini' | 'deepseek';
74
74
  model: string | null;
75
75
  instructions: string | null;
76
76
  external_agent_id: string | null;
@@ -88,7 +88,7 @@ type PaginatedResponse<T> = {
88
88
 
89
89
  type FormValues = {
90
90
  slug: string;
91
- provider: 'openai' | 'gemini';
91
+ provider: 'openai' | 'gemini' | 'deepseek';
92
92
  model?: string;
93
93
  instructions?: string;
94
94
  };
@@ -131,7 +131,7 @@ export default function AiAgentPage() {
131
131
  const t = useTranslations('core.AiAgentPage');
132
132
  const formSchema = z.object({
133
133
  slug: z.string().min(2, t('validationSlugMinLength')),
134
- provider: z.enum(['openai', 'gemini']),
134
+ provider: z.enum(['openai', 'gemini', 'deepseek']),
135
135
  model: z.string().optional(),
136
136
  instructions: z.string().optional(),
137
137
  });
@@ -213,7 +213,7 @@ export default function AiAgentPage() {
213
213
  (watchedValues.slug ?? '').trim() ||
214
214
  (watchedValues.model ?? '').trim() ||
215
215
  (watchedValues.instructions ?? '').trim() ||
216
- watchedValues.provider === 'gemini'
216
+ watchedValues.provider !== 'openai'
217
217
  ),
218
218
  enabled: isDialogOpen,
219
219
  });
@@ -544,6 +544,9 @@ export default function AiAgentPage() {
544
544
  <SelectItem value="gemini">
545
545
  {t('providerGemini')}
546
546
  </SelectItem>
547
+ <SelectItem value="deepseek">
548
+ {t('providerDeepseek')}
549
+ </SelectItem>
547
550
  </SelectContent>
548
551
  </Select>
549
552
  </FormControl>