@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.
- package/README.md +12 -11
- package/dist/access-log/access-log.interceptor.d.ts.map +1 -1
- package/dist/access-log/access-log.interceptor.js +4 -2
- package/dist/access-log/access-log.interceptor.js.map +1 -1
- package/dist/ai/ai-attachment.fragments.d.ts +23 -0
- package/dist/ai/ai-attachment.fragments.d.ts.map +1 -0
- package/dist/ai/ai-attachment.fragments.js +34 -0
- package/dist/ai/ai-attachment.fragments.js.map +1 -0
- package/dist/ai/ai.controller.d.ts +7 -16
- package/dist/ai/ai.controller.d.ts.map +1 -1
- package/dist/ai/ai.prompts.d.ts +16 -0
- package/dist/ai/ai.prompts.d.ts.map +1 -0
- package/dist/ai/ai.prompts.js +37 -0
- package/dist/ai/ai.prompts.js.map +1 -0
- package/dist/ai/ai.service.d.ts +63 -12
- package/dist/ai/ai.service.d.ts.map +1 -1
- package/dist/ai/ai.service.js +215 -88
- package/dist/ai/ai.service.js.map +1 -1
- package/dist/ai/dto/chat.dto.d.ts +4 -1
- package/dist/ai/dto/chat.dto.d.ts.map +1 -1
- package/dist/ai/dto/chat.dto.js +23 -1
- package/dist/ai/dto/chat.dto.js.map +1 -1
- package/dist/ai/dto/create-agent.dto.d.ts +1 -1
- package/dist/ai/dto/create-agent.dto.d.ts.map +1 -1
- package/dist/ai/dto/create-agent.dto.js +1 -1
- package/dist/ai/dto/create-agent.dto.js.map +1 -1
- package/dist/ai/dto/update-agent.dto.d.ts +1 -1
- package/dist/ai/dto/update-agent.dto.d.ts.map +1 -1
- package/dist/ai/dto/update-agent.dto.js +1 -1
- package/dist/ai/dto/update-agent.dto.js.map +1 -1
- package/dist/ai-instruction/ai-instruction.controller.d.ts +61 -7
- package/dist/ai-instruction/ai-instruction.controller.d.ts.map +1 -1
- package/dist/ai-instruction/ai-instruction.controller.js +63 -20
- package/dist/ai-instruction/ai-instruction.controller.js.map +1 -1
- package/dist/ai-instruction/ai-instruction.module.d.ts.map +1 -1
- package/dist/ai-instruction/ai-instruction.module.js +13 -2
- package/dist/ai-instruction/ai-instruction.module.js.map +1 -1
- package/dist/ai-instruction/ai-instruction.service.d.ts +131 -6
- package/dist/ai-instruction/ai-instruction.service.d.ts.map +1 -1
- package/dist/ai-instruction/ai-instruction.service.js +533 -60
- package/dist/ai-instruction/ai-instruction.service.js.map +1 -1
- package/dist/ai-instruction/ai-prompt-builder.service.d.ts +8 -0
- package/dist/ai-instruction/ai-prompt-builder.service.d.ts.map +1 -1
- package/dist/ai-instruction/ai-prompt-builder.service.js +10 -1
- package/dist/ai-instruction/ai-prompt-builder.service.js.map +1 -1
- package/dist/ai-instruction/ai-prompt-registry.d.ts +45 -0
- package/dist/ai-instruction/ai-prompt-registry.d.ts.map +1 -0
- package/dist/ai-instruction/ai-prompt-registry.js +49 -0
- package/dist/ai-instruction/ai-prompt-registry.js.map +1 -0
- package/dist/ai-instruction/ai-prompt-resolver.service.d.ts +89 -0
- package/dist/ai-instruction/ai-prompt-resolver.service.d.ts.map +1 -0
- package/dist/ai-instruction/ai-prompt-resolver.service.js +222 -0
- package/dist/ai-instruction/ai-prompt-resolver.service.js.map +1 -0
- package/dist/ai-instruction/ai-prompt-template.util.d.ts +70 -0
- package/dist/ai-instruction/ai-prompt-template.util.d.ts.map +1 -0
- package/dist/ai-instruction/ai-prompt-template.util.js +154 -0
- package/dist/ai-instruction/ai-prompt-template.util.js.map +1 -0
- package/dist/ai-instruction/dto/create-ai-instruction.dto.d.ts +5 -0
- package/dist/ai-instruction/dto/create-ai-instruction.dto.d.ts.map +1 -1
- package/dist/ai-instruction/dto/create-ai-instruction.dto.js +27 -1
- package/dist/ai-instruction/dto/create-ai-instruction.dto.js.map +1 -1
- package/dist/ai-instruction/dto/preview-ai-instruction.dto.d.ts +14 -0
- package/dist/ai-instruction/dto/preview-ai-instruction.dto.d.ts.map +1 -0
- package/dist/ai-instruction/dto/preview-ai-instruction.dto.js +42 -0
- package/dist/ai-instruction/dto/preview-ai-instruction.dto.js.map +1 -0
- package/dist/ai-instruction/dto/update-ai-instruction.dto.d.ts +11 -0
- package/dist/ai-instruction/dto/update-ai-instruction.dto.d.ts.map +1 -1
- package/dist/ai-instruction/dto/update-ai-instruction.dto.js +34 -0
- package/dist/ai-instruction/dto/update-ai-instruction.dto.js.map +1 -1
- package/dist/ai-instruction/types/ai-instruction.types.d.ts +13 -1
- package/dist/ai-instruction/types/ai-instruction.types.d.ts.map +1 -1
- package/dist/ai-instruction/types/ai-instruction.types.js +10 -0
- package/dist/ai-instruction/types/ai-instruction.types.js.map +1 -1
- package/dist/auth/auth.controller.d.ts +24 -9
- package/dist/auth/auth.controller.d.ts.map +1 -1
- package/dist/auth/auth.controller.js +49 -21
- package/dist/auth/auth.controller.js.map +1 -1
- package/dist/auth/auth.service.d.ts +33 -8
- package/dist/auth/auth.service.d.ts.map +1 -1
- package/dist/auth/auth.service.js +78 -29
- package/dist/auth/auth.service.js.map +1 -1
- package/dist/captcha/captcha.module.d.ts +3 -0
- package/dist/captcha/captcha.module.d.ts.map +1 -0
- package/dist/captcha/captcha.module.js +23 -0
- package/dist/captcha/captcha.module.js.map +1 -0
- package/dist/captcha/captcha.service.d.ts +38 -0
- package/dist/captcha/captcha.service.d.ts.map +1 -0
- package/dist/captcha/captcha.service.js +144 -0
- package/dist/captcha/captcha.service.js.map +1 -0
- package/dist/challenge/challenge.service.d.ts +16 -7
- package/dist/challenge/challenge.service.d.ts.map +1 -1
- package/dist/challenge/challenge.service.js +64 -16
- package/dist/challenge/challenge.service.js.map +1 -1
- package/dist/core.module.d.ts +3 -1
- package/dist/core.module.d.ts.map +1 -1
- package/dist/core.module.js +29 -2
- package/dist/core.module.js.map +1 -1
- package/dist/dashboard/dashboard/dashboard.controller.d.ts +15 -15
- package/dist/dashboard/dashboard/dashboard.service.d.ts +15 -15
- package/dist/dashboard/dashboard-component/dashboard-component.controller.d.ts +6 -6
- package/dist/dashboard/dashboard-component/dashboard-component.service.d.ts +6 -6
- package/dist/dashboard/dashboard-component-role/dashboard-component-role.controller.d.ts +20 -20
- package/dist/dashboard/dashboard-component-role/dashboard-component-role.service.d.ts +20 -20
- package/dist/dashboard/dashboard-core/dashboard-core.controller.d.ts +1 -1
- package/dist/dashboard/dashboard-core/dashboard-core.service.d.ts +1 -1
- package/dist/dashboard/dashboard-role/dashboard-role.controller.d.ts +13 -13
- package/dist/dashboard/dashboard-role/dashboard-role.service.d.ts +13 -13
- package/dist/file/file.service.d.ts +6 -0
- package/dist/file/file.service.d.ts.map +1 -1
- package/dist/file/file.service.js +44 -4
- package/dist/file/file.service.js.map +1 -1
- package/dist/incident/incident-notifier.service.d.ts +36 -0
- package/dist/incident/incident-notifier.service.d.ts.map +1 -0
- package/dist/incident/incident-notifier.service.js +208 -0
- package/dist/incident/incident-notifier.service.js.map +1 -0
- package/dist/incident/incident.controller.d.ts +23 -0
- package/dist/incident/incident.controller.d.ts.map +1 -0
- package/dist/incident/incident.controller.js +75 -0
- package/dist/incident/incident.controller.js.map +1 -0
- package/dist/incident/incident.module.d.ts +7 -0
- package/dist/incident/incident.module.d.ts.map +1 -0
- package/dist/incident/incident.module.js +32 -0
- package/dist/incident/incident.module.js.map +1 -0
- package/dist/incident/incident.service.d.ts +72 -0
- package/dist/incident/incident.service.d.ts.map +1 -0
- package/dist/incident/incident.service.js +184 -0
- package/dist/incident/incident.service.js.map +1 -0
- package/dist/index.d.ts +26 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +30 -0
- package/dist/index.js.map +1 -1
- package/dist/integration-profile/dto/test.dto.d.ts +13 -0
- package/dist/integration-profile/dto/test.dto.d.ts.map +1 -0
- package/dist/integration-profile/dto/test.dto.js +26 -0
- package/dist/integration-profile/dto/test.dto.js.map +1 -0
- package/dist/integration-profile/integration-profile.controller.d.ts +12 -1
- package/dist/integration-profile/integration-profile.controller.d.ts.map +1 -1
- package/dist/integration-profile/integration-profile.controller.js +9 -1
- package/dist/integration-profile/integration-profile.controller.js.map +1 -1
- package/dist/integration-profile/integration-profile.module.d.ts +6 -1
- package/dist/integration-profile/integration-profile.module.d.ts.map +1 -1
- package/dist/integration-profile/integration-profile.module.js +26 -3
- package/dist/integration-profile/integration-profile.module.js.map +1 -1
- package/dist/integration-profile/integration-profile.secrets.d.ts.map +1 -1
- package/dist/integration-profile/integration-profile.secrets.js +9 -1
- package/dist/integration-profile/integration-profile.secrets.js.map +1 -1
- package/dist/integration-profile/integration-profile.service.d.ts +26 -7
- package/dist/integration-profile/integration-profile.service.d.ts.map +1 -1
- package/dist/integration-profile/integration-profile.service.js +94 -91
- package/dist/integration-profile/integration-profile.service.js.map +1 -1
- package/dist/integration-profile/integration-profile.utils.d.ts +13 -1
- package/dist/integration-profile/integration-profile.utils.d.ts.map +1 -1
- package/dist/integration-profile/integration-profile.utils.js +20 -5
- package/dist/integration-profile/integration-profile.utils.js.map +1 -1
- package/dist/integration-profile/testers/ai.testers.d.ts +3 -0
- package/dist/integration-profile/testers/ai.testers.d.ts.map +1 -0
- package/dist/integration-profile/testers/ai.testers.js +125 -0
- package/dist/integration-profile/testers/ai.testers.js.map +1 -0
- package/dist/integration-profile/testers/captcha.testers.d.ts +3 -0
- package/dist/integration-profile/testers/captcha.testers.d.ts.map +1 -0
- package/dist/integration-profile/testers/captcha.testers.js +121 -0
- package/dist/integration-profile/testers/captcha.testers.js.map +1 -0
- package/dist/integration-profile/testers/email.testers.d.ts +3 -0
- package/dist/integration-profile/testers/email.testers.d.ts.map +1 -0
- package/dist/integration-profile/testers/email.testers.js +128 -0
- package/dist/integration-profile/testers/email.testers.js.map +1 -0
- package/dist/integration-profile/testers/http-probe.d.ts +57 -0
- package/dist/integration-profile/testers/http-probe.d.ts.map +1 -0
- package/dist/integration-profile/testers/http-probe.js +140 -0
- package/dist/integration-profile/testers/http-probe.js.map +1 -0
- package/dist/integration-profile/testers/index.d.ts +12 -0
- package/dist/integration-profile/testers/index.d.ts.map +1 -0
- package/dist/integration-profile/testers/index.js +45 -0
- package/dist/integration-profile/testers/index.js.map +1 -0
- package/dist/integration-profile/testers/infrastructure.testers.d.ts +3 -0
- package/dist/integration-profile/testers/infrastructure.testers.d.ts.map +1 -0
- package/dist/integration-profile/testers/infrastructure.testers.js +105 -0
- package/dist/integration-profile/testers/infrastructure.testers.js.map +1 -0
- package/dist/integration-profile/testers/integration-tester.registry.d.ts +17 -0
- package/dist/integration-profile/testers/integration-tester.registry.d.ts.map +1 -0
- package/dist/integration-profile/testers/integration-tester.registry.js +52 -0
- package/dist/integration-profile/testers/integration-tester.registry.js.map +1 -0
- package/dist/integration-profile/testers/integration-tester.types.d.ts +55 -0
- package/dist/integration-profile/testers/integration-tester.types.d.ts.map +1 -0
- package/dist/integration-profile/testers/integration-tester.types.js +16 -0
- package/dist/integration-profile/testers/integration-tester.types.js.map +1 -0
- package/dist/integration-profile/testers/messaging.testers.d.ts +3 -0
- package/dist/integration-profile/testers/messaging.testers.d.ts.map +1 -0
- package/dist/integration-profile/testers/messaging.testers.js +70 -0
- package/dist/integration-profile/testers/messaging.testers.js.map +1 -0
- package/dist/integration-profile/testers/oauth.testers.d.ts +3 -0
- package/dist/integration-profile/testers/oauth.testers.d.ts.map +1 -0
- package/dist/integration-profile/testers/oauth.testers.js +285 -0
- package/dist/integration-profile/testers/oauth.testers.js.map +1 -0
- package/dist/integration-profile/testers/payment.testers.d.ts +3 -0
- package/dist/integration-profile/testers/payment.testers.d.ts.map +1 -0
- package/dist/integration-profile/testers/payment.testers.js +169 -0
- package/dist/integration-profile/testers/payment.testers.js.map +1 -0
- package/dist/integration-profile/testers/storage.testers.d.ts +3 -0
- package/dist/integration-profile/testers/storage.testers.d.ts.map +1 -0
- package/dist/integration-profile/testers/storage.testers.js +208 -0
- package/dist/integration-profile/testers/storage.testers.js.map +1 -0
- package/dist/language/en.json +4 -2
- package/dist/language/pt.json +4 -2
- package/dist/leaked-password/leaked-password.controller.d.ts +24 -0
- package/dist/leaked-password/leaked-password.controller.d.ts.map +1 -0
- package/dist/leaked-password/leaked-password.controller.js +78 -0
- package/dist/leaked-password/leaked-password.controller.js.map +1 -0
- package/dist/leaked-password/leaked-password.module.d.ts +8 -0
- package/dist/leaked-password/leaked-password.module.d.ts.map +1 -0
- package/dist/leaked-password/leaked-password.module.js +31 -0
- package/dist/leaked-password/leaked-password.module.js.map +1 -0
- package/dist/leaked-password/leaked-password.service.d.ts +64 -0
- package/dist/leaked-password/leaked-password.service.d.ts.map +1 -0
- package/dist/leaked-password/leaked-password.service.js +218 -0
- package/dist/leaked-password/leaked-password.service.js.map +1 -0
- package/dist/locale/locale.controller.d.ts +1 -1
- package/dist/locale/locale.service.d.ts +1 -1
- package/dist/mail/dto/preview.dto.d.ts +18 -0
- package/dist/mail/dto/preview.dto.d.ts.map +1 -0
- package/dist/mail/dto/preview.dto.js +66 -0
- package/dist/mail/dto/preview.dto.js.map +1 -0
- package/dist/mail/dto/send.dto.d.ts +7 -0
- package/dist/mail/dto/send.dto.d.ts.map +1 -1
- package/dist/mail/dto/send.dto.js +10 -0
- package/dist/mail/dto/send.dto.js.map +1 -1
- package/dist/mail/mail.controller.d.ts +4 -0
- package/dist/mail/mail.controller.d.ts.map +1 -1
- package/dist/mail/mail.controller.js +16 -2
- package/dist/mail/mail.controller.js.map +1 -1
- package/dist/mail/mail.service.d.ts +23 -2
- package/dist/mail/mail.service.d.ts.map +1 -1
- package/dist/mail/mail.service.js +102 -13
- package/dist/mail/mail.service.js.map +1 -1
- package/dist/mail-layout/dto/update.dto.d.ts +17 -0
- package/dist/mail-layout/dto/update.dto.d.ts.map +1 -0
- package/dist/mail-layout/dto/update.dto.js +27 -0
- package/dist/mail-layout/dto/update.dto.js.map +1 -0
- package/dist/mail-layout/mail-layout.controller.d.ts +15 -0
- package/dist/mail-layout/mail-layout.controller.d.ts.map +1 -0
- package/dist/mail-layout/mail-layout.controller.js +71 -0
- package/dist/mail-layout/mail-layout.controller.js.map +1 -0
- package/dist/mail-layout/mail-layout.module.d.ts +3 -0
- package/dist/mail-layout/mail-layout.module.d.ts.map +1 -0
- package/dist/mail-layout/mail-layout.module.js +35 -0
- package/dist/mail-layout/mail-layout.module.js.map +1 -0
- package/dist/mail-layout/mail-layout.service.d.ts +27 -0
- package/dist/mail-layout/mail-layout.service.d.ts.map +1 -0
- package/dist/mail-layout/mail-layout.service.js +80 -0
- package/dist/mail-layout/mail-layout.service.js.map +1 -0
- package/dist/mcp-chat/mcp-chat.controller.d.ts +2 -2
- package/dist/mcp-chat/mcp-chat.service.d.ts +24 -2
- package/dist/mcp-chat/mcp-chat.service.d.ts.map +1 -1
- package/dist/mcp-chat/mcp-chat.service.js +80 -24
- package/dist/mcp-chat/mcp-chat.service.js.map +1 -1
- package/dist/menu/menu.controller.d.ts +3 -3
- package/dist/menu/menu.service.d.ts +3 -3
- package/dist/notification/notification.controller.d.ts +12 -12
- package/dist/notification/notification.service.d.ts +12 -12
- package/dist/oauth/oauth-token-broker.service.d.ts +72 -0
- package/dist/oauth/oauth-token-broker.service.d.ts.map +1 -0
- package/dist/oauth/oauth-token-broker.service.js +258 -0
- package/dist/oauth/oauth-token-broker.service.js.map +1 -0
- package/dist/oauth/oauth.module.d.ts.map +1 -1
- package/dist/oauth/oauth.module.js +3 -1
- package/dist/oauth/oauth.module.js.map +1 -1
- package/dist/oauth/oauth.service.d.ts +2 -0
- package/dist/oauth/oauth.service.d.ts.map +1 -1
- package/dist/oauth/oauth.service.js +6 -3
- package/dist/oauth/oauth.service.js.map +1 -1
- package/dist/pdf/pdf.service.d.ts +8 -0
- package/dist/pdf/pdf.service.d.ts.map +1 -1
- package/dist/pdf/pdf.service.js +52 -0
- package/dist/pdf/pdf.service.js.map +1 -1
- package/dist/presence/presence.controller.d.ts +16 -0
- package/dist/presence/presence.controller.d.ts.map +1 -0
- package/dist/presence/presence.controller.js +60 -0
- package/dist/presence/presence.controller.js.map +1 -0
- package/dist/presence/presence.listener.d.ts +29 -0
- package/dist/presence/presence.listener.d.ts.map +1 -0
- package/dist/presence/presence.listener.js +82 -0
- package/dist/presence/presence.listener.js.map +1 -0
- package/dist/presence/presence.module.d.ts +3 -0
- package/dist/presence/presence.module.d.ts.map +1 -0
- package/dist/presence/presence.module.js +32 -0
- package/dist/presence/presence.module.js.map +1 -0
- package/dist/presence/presence.service.d.ts +42 -0
- package/dist/presence/presence.service.d.ts.map +1 -0
- package/dist/presence/presence.service.js +147 -0
- package/dist/presence/presence.service.js.map +1 -0
- package/dist/profile/dto/delete-account.dto.d.ts +8 -0
- package/dist/profile/dto/delete-account.dto.d.ts.map +1 -0
- package/dist/profile/dto/delete-account.dto.js +22 -0
- package/dist/profile/dto/delete-account.dto.js.map +1 -0
- package/dist/profile/events/profile-account-deleted.event.d.ts +12 -0
- package/dist/profile/events/profile-account-deleted.event.d.ts.map +1 -0
- package/dist/profile/events/profile-account-deleted.event.js +17 -0
- package/dist/profile/events/profile-account-deleted.event.js.map +1 -0
- package/dist/profile/profile.controller.d.ts +21 -15
- package/dist/profile/profile.controller.d.ts.map +1 -1
- package/dist/profile/profile.controller.js +75 -46
- package/dist/profile/profile.controller.js.map +1 -1
- package/dist/profile/profile.service.d.ts +30 -18
- package/dist/profile/profile.service.d.ts.map +1 -1
- package/dist/profile/profile.service.js +113 -37
- package/dist/profile/profile.service.js.map +1 -1
- package/dist/realtime/realtime.gateway.d.ts +48 -0
- package/dist/realtime/realtime.gateway.d.ts.map +1 -0
- package/dist/realtime/realtime.gateway.js +156 -0
- package/dist/realtime/realtime.gateway.js.map +1 -0
- package/dist/realtime/realtime.module.d.ts +8 -0
- package/dist/realtime/realtime.module.d.ts.map +1 -0
- package/dist/realtime/realtime.module.js +29 -0
- package/dist/realtime/realtime.module.js.map +1 -0
- package/dist/realtime/realtime.service.d.ts +51 -0
- package/dist/realtime/realtime.service.d.ts.map +1 -0
- package/dist/realtime/realtime.service.js +177 -0
- package/dist/realtime/realtime.service.js.map +1 -0
- package/dist/redis/redis-pubsub.d.ts +27 -0
- package/dist/redis/redis-pubsub.d.ts.map +1 -0
- package/dist/redis/redis-pubsub.js +140 -0
- package/dist/redis/redis-pubsub.js.map +1 -0
- package/dist/role/role.controller.d.ts +3 -3
- package/dist/role/role.service.d.ts +3 -3
- package/dist/setting/dto/create.dto.d.ts.map +1 -1
- package/dist/setting/dto/create.dto.js +9 -2
- package/dist/setting/dto/create.dto.js.map +1 -1
- package/dist/setting/setting.controller.d.ts +5 -5
- package/dist/setting/setting.service.d.ts +8 -5
- package/dist/setting/setting.service.d.ts.map +1 -1
- package/dist/setting/setting.service.js +25 -1
- package/dist/setting/setting.service.js.map +1 -1
- package/dist/user/dto/create-with-email-and-password.dto.d.ts +2 -0
- package/dist/user/dto/create-with-email-and-password.dto.d.ts.map +1 -1
- package/dist/user/dto/create-with-email-and-password.dto.js +5 -0
- package/dist/user/dto/create-with-email-and-password.dto.js.map +1 -1
- package/dist/user/dto/query-user-mail-list.dto.d.ts +5 -0
- package/dist/user/dto/query-user-mail-list.dto.d.ts.map +1 -0
- package/dist/user/dto/query-user-mail-list.dto.js +25 -0
- package/dist/user/dto/query-user-mail-list.dto.js.map +1 -0
- package/dist/user/user-credential.util.d.ts +19 -0
- package/dist/user/user-credential.util.d.ts.map +1 -0
- package/dist/user/user-credential.util.js +32 -0
- package/dist/user/user-credential.util.js.map +1 -0
- package/dist/user/user.controller.d.ts +17 -5
- package/dist/user/user.controller.d.ts.map +1 -1
- package/dist/user/user.controller.js +18 -3
- package/dist/user/user.controller.js.map +1 -1
- package/dist/user/user.service.d.ts +28 -6
- package/dist/user/user.service.d.ts.map +1 -1
- package/dist/user/user.service.js +204 -13
- package/dist/user/user.service.js.map +1 -1
- package/dist/validators/is-strong-password-with-settings.validator.d.ts.map +1 -1
- package/dist/validators/is-strong-password-with-settings.validator.js +11 -0
- package/dist/validators/is-strong-password-with-settings.validator.js.map +1 -1
- package/dist/validators/service-locator.d.ts +9 -0
- package/dist/validators/service-locator.d.ts.map +1 -1
- package/dist/validators/service-locator.js +12 -0
- package/dist/validators/service-locator.js.map +1 -1
- package/dist/whatsapp-sender/whatsapp-sender.module.d.ts +3 -0
- package/dist/whatsapp-sender/whatsapp-sender.module.d.ts.map +1 -0
- package/dist/whatsapp-sender/whatsapp-sender.module.js +23 -0
- package/dist/whatsapp-sender/whatsapp-sender.module.js.map +1 -0
- package/dist/whatsapp-sender/whatsapp-sender.service.d.ts +50 -0
- package/dist/whatsapp-sender/whatsapp-sender.service.d.ts.map +1 -0
- package/dist/whatsapp-sender/whatsapp-sender.service.js +224 -0
- package/dist/whatsapp-sender/whatsapp-sender.service.js.map +1 -0
- package/hedhog/data/integration_provider.yaml +16 -0
- package/hedhog/data/mail.yaml +88 -61
- package/hedhog/data/mail_layout.yaml +188 -0
- package/hedhog/data/menu.yaml +67 -3
- package/hedhog/data/route.yaml +135 -0
- package/hedhog/data/setting_group.yaml +139 -1
- package/hedhog/frontend/app/account/components/mfa-setup-dialog.tsx.ejs +36 -0
- package/hedhog/frontend/app/account/components/two-factor-auth.tsx.ejs +2 -0
- package/hedhog/frontend/app/account/hooks/use-mfa-setup.ts.ejs +10 -7
- package/hedhog/frontend/app/ai_agent/page.tsx.ejs +7 -4
- package/hedhog/frontend/app/ai_instruction/_components/ai-instruction-form.tsx.ejs +580 -0
- package/hedhog/frontend/app/ai_instruction/_components/ai-instruction-preview.tsx.ejs +150 -0
- package/hedhog/frontend/app/ai_instruction/_components/ai-instruction-versions.tsx.ejs +199 -0
- package/hedhog/frontend/app/ai_instruction/_components/prompt-diff.tsx.ejs +63 -0
- package/hedhog/frontend/app/ai_instruction/_lib/line-diff.spec.ts.ejs +59 -0
- package/hedhog/frontend/app/ai_instruction/_lib/line-diff.ts.ejs +72 -0
- package/hedhog/frontend/app/ai_instruction/_lib/prompt-template.spec.ts.ejs +170 -0
- package/hedhog/frontend/app/ai_instruction/_lib/prompt-template.ts.ejs +167 -0
- package/hedhog/frontend/app/ai_instruction/_lib/types.ts.ejs +99 -0
- package/hedhog/frontend/app/ai_instruction/page.tsx.ejs +422 -0
- package/hedhog/frontend/app/configurations/[slug]/components/setting-field.tsx.ejs +51 -4
- package/hedhog/frontend/app/incidents/page.tsx.ejs +400 -0
- package/hedhog/frontend/app/integration/profiles/page.tsx.ejs +153 -84
- package/hedhog/frontend/app/mail/layout/page.tsx.ejs +344 -0
- package/hedhog/frontend/app/mail/template/page.tsx.ejs +155 -121
- package/hedhog/frontend/app/mcp_chat/page.tsx.ejs +129 -17
- package/hedhog/frontend/app/pages/_components/page-delete-dialog.tsx.ejs +343 -0
- package/hedhog/frontend/app/pages/_components/page-detail-sheet.tsx.ejs +438 -0
- package/hedhog/frontend/app/pages/_components/page-wizard-sheet.tsx.ejs +1009 -0
- package/hedhog/frontend/app/pages/_components/system-page-types.ts.ejs +56 -0
- package/hedhog/frontend/app/pages/_components/use-system-pages.ts.ejs +171 -0
- package/hedhog/frontend/app/pages/page.tsx.ejs +514 -0
- package/hedhog/frontend/app/users/page.tsx.ejs +119 -13
- package/hedhog/frontend/app/users/user-activity-timeline.tsx.ejs +231 -0
- package/hedhog/frontend/app/users/user-mails.tsx.ejs +399 -0
- package/hedhog/frontend/app/users/user-sheet.tsx.ejs +60 -75
- package/hedhog/frontend/messages/en.json +499 -3
- package/hedhog/frontend/messages/pt.json +499 -3
- package/hedhog/table/ai_agent.yaml +1 -0
- package/hedhog/table/ai_instruction.yaml +15 -0
- package/hedhog/table/leaked_password.yaml +18 -0
- package/hedhog/table/mail_layout.yaml +35 -0
- package/hedhog/table/mail_var.yaml +4 -0
- package/hedhog/table/setting.yaml +1 -0
- package/hedhog/table/system_incident.yaml +59 -0
- package/hedhog/table/user_presence.yaml +36 -0
- package/package.json +8 -4
- package/src/access-log/access-log.interceptor.ts +4 -2
- package/src/ai/ai-attachment.fragments.spec.ts +319 -0
- package/src/ai/ai-attachment.fragments.ts +35 -0
- package/src/ai/ai.prompts.ts +38 -0
- package/src/ai/ai.service.spec.ts +280 -0
- package/src/ai/ai.service.ts +338 -82
- package/src/ai/dto/chat.dto.ts +33 -3
- package/src/ai/dto/create-agent.dto.ts +2 -2
- package/src/ai/dto/update-agent.dto.ts +2 -2
- package/src/ai-instruction/ai-instruction.controller.ts +40 -9
- package/src/ai-instruction/ai-instruction.module.ts +13 -2
- package/src/ai-instruction/ai-instruction.service.spec.ts +658 -0
- package/src/ai-instruction/ai-instruction.service.ts +661 -62
- package/src/ai-instruction/ai-prompt-builder.service.ts +10 -1
- package/src/ai-instruction/ai-prompt-registry.ts +87 -0
- package/src/ai-instruction/ai-prompt-resolver.service.spec.ts +375 -0
- package/src/ai-instruction/ai-prompt-resolver.service.ts +295 -0
- package/src/ai-instruction/ai-prompt-template.util.spec.ts +162 -0
- package/src/ai-instruction/ai-prompt-template.util.ts +199 -0
- package/src/ai-instruction/dto/create-ai-instruction.dto.ts +39 -3
- package/src/ai-instruction/dto/preview-ai-instruction.dto.ts +26 -0
- package/src/ai-instruction/dto/update-ai-instruction.dto.ts +42 -1
- package/src/ai-instruction/types/ai-instruction.types.ts +24 -1
- package/src/auth/auth.controller.ts +31 -5
- package/src/auth/auth.service.spec.ts +3 -1
- package/src/auth/auth.service.ts +101 -36
- package/src/captcha/captcha.module.ts +10 -0
- package/src/captcha/captcha.service.spec.ts +210 -0
- package/src/captcha/captcha.service.ts +191 -0
- package/src/challenge/challenge.service.spec.ts +39 -4
- package/src/challenge/challenge.service.ts +72 -17
- package/src/core.module.ts +27 -1
- package/src/file/file.service.spec.ts +105 -0
- package/src/file/file.service.ts +60 -3
- package/src/incident/incident-notifier.service.spec.ts +205 -0
- package/src/incident/incident-notifier.service.ts +241 -0
- package/src/incident/incident.controller.ts +38 -0
- package/src/incident/incident.module.ts +19 -0
- package/src/incident/incident.service.spec.ts +150 -0
- package/src/incident/incident.service.ts +209 -0
- package/src/index.ts +37 -0
- package/src/integration-profile/dto/test.dto.ts +19 -0
- package/src/integration-profile/integration-profile.controller.ts +10 -1
- package/src/integration-profile/integration-profile.module.spec.ts +51 -0
- package/src/integration-profile/integration-profile.module.ts +23 -4
- package/src/integration-profile/integration-profile.secrets.ts +9 -1
- package/src/integration-profile/integration-profile.service.spec.ts +279 -0
- package/src/integration-profile/integration-profile.service.ts +120 -124
- package/src/integration-profile/integration-profile.utils.spec.ts +22 -0
- package/src/integration-profile/integration-profile.utils.ts +40 -3
- package/src/integration-profile/testers/ai.testers.ts +165 -0
- package/src/integration-profile/testers/captcha.testers.spec.ts +92 -0
- package/src/integration-profile/testers/captcha.testers.ts +139 -0
- package/src/integration-profile/testers/email.testers.ts +161 -0
- package/src/integration-profile/testers/http-probe.spec.ts +153 -0
- package/src/integration-profile/testers/http-probe.ts +171 -0
- package/src/integration-profile/testers/index.ts +30 -0
- package/src/integration-profile/testers/infrastructure.testers.ts +122 -0
- package/src/integration-profile/testers/integration-tester.registry.spec.ts +75 -0
- package/src/integration-profile/testers/integration-tester.registry.ts +43 -0
- package/src/integration-profile/testers/integration-tester.types.ts +61 -0
- package/src/integration-profile/testers/messaging.testers.ts +102 -0
- package/src/integration-profile/testers/oauth.testers.spec.ts +220 -0
- package/src/integration-profile/testers/oauth.testers.ts +305 -0
- package/src/integration-profile/testers/payment.testers.ts +185 -0
- package/src/integration-profile/testers/remaining.testers.spec.ts +401 -0
- package/src/integration-profile/testers/storage.testers.spec.ts +185 -0
- package/src/integration-profile/testers/storage.testers.ts +226 -0
- package/src/integration-profile/testers/tester-coverage.spec.ts +58 -0
- package/src/language/en.json +4 -2
- package/src/language/pt.json +4 -2
- package/src/leaked-password/README.md +83 -0
- package/src/leaked-password/leaked-password.controller.ts +52 -0
- package/src/leaked-password/leaked-password.module.ts +18 -0
- package/src/leaked-password/leaked-password.service.ts +242 -0
- package/src/leaked-password/seed/build-seed-sql.mjs +180 -0
- package/src/leaked-password/seed/common-passwords.txt +335 -0
- package/src/mail/dto/preview.dto.ts +50 -0
- package/src/mail/dto/send.dto.ts +14 -1
- package/src/mail/mail-template.spec.ts +197 -0
- package/src/mail/mail.controller.ts +9 -2
- package/src/mail/mail.service.spec.ts +116 -1
- package/src/mail/mail.service.ts +118 -12
- package/src/mail-layout/dto/update.dto.ts +19 -0
- package/src/mail-layout/mail-layout.controller.ts +47 -0
- package/src/mail-layout/mail-layout.module.ts +22 -0
- package/src/mail-layout/mail-layout.service.ts +94 -0
- package/src/mcp-chat/mcp-chat.service.spec.ts +236 -0
- package/src/mcp-chat/mcp-chat.service.ts +122 -26
- package/src/oauth/oauth-token-broker.service.spec.ts +172 -0
- package/src/oauth/oauth-token-broker.service.ts +363 -0
- package/src/oauth/oauth.module.ts +3 -1
- package/src/oauth/oauth.service.ts +8 -2
- package/src/pdf/pdf.service.ts +75 -0
- package/src/presence/presence.controller.ts +29 -0
- package/src/presence/presence.listener.ts +53 -0
- package/src/presence/presence.module.ts +19 -0
- package/src/presence/presence.service.spec.ts +97 -0
- package/src/presence/presence.service.ts +160 -0
- package/src/profile/dto/delete-account.dto.ts +11 -0
- package/src/profile/events/profile-account-deleted.event.ts +13 -0
- package/src/profile/profile.controller.ts +46 -34
- package/src/profile/profile.service.ts +138 -38
- package/src/realtime/realtime.gateway.ts +138 -0
- package/src/realtime/realtime.module.ts +16 -0
- package/src/realtime/realtime.service.spec.ts +50 -0
- package/src/realtime/realtime.service.ts +187 -0
- package/src/redis/redis-pubsub.ts +179 -0
- package/src/setting/dto/create.dto.ts +13 -2
- package/src/setting/setting.service.spec.ts +56 -0
- package/src/setting/setting.service.ts +29 -1
- package/src/user/dto/create-with-email-and-password.dto.ts +6 -1
- package/src/user/dto/query-user-mail-list.dto.ts +10 -0
- package/src/user/user-credential.util.ts +35 -0
- package/src/user/user.controller.ts +17 -2
- package/src/user/user.service.spec.ts +153 -0
- package/src/user/user.service.ts +255 -12
- package/src/validators/is-strong-password-with-settings.validator.ts +12 -0
- package/src/validators/service-locator.ts +15 -0
- package/src/whatsapp-sender/whatsapp-sender.module.ts +10 -0
- package/src/whatsapp-sender/whatsapp-sender.service.ts +313 -0
package/hedhog/data/menu.yaml
CHANGED
|
@@ -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/
|
|
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:
|
|
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/
|
|
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
|
package/hedhog/data/route.yaml
CHANGED
|
@@ -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
|
|
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>
|