@hed-hog/core 0.0.387 → 0.0.393
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 +51 -11
- package/dist/access-log/access-log.controller.d.ts.map +1 -1
- package/dist/access-log/access-log.controller.js +1 -1
- package/dist/access-log/access-log.controller.js.map +1 -1
- package/dist/access-log/access-log.interceptor.d.ts.map +1 -1
- package/dist/access-log/access-log.interceptor.js +11 -6
- package/dist/access-log/access-log.interceptor.js.map +1 -1
- package/dist/access-log/access-log.service.d.ts +4 -0
- package/dist/access-log/access-log.service.d.ts.map +1 -1
- package/dist/access-log/access-log.service.js +31 -4
- package/dist/access-log/access-log.service.js.map +1 -1
- package/dist/access-log/dto/query-access-log.dto.d.ts +2 -0
- package/dist/access-log/dto/query-access-log.dto.d.ts.map +1 -1
- package/dist/access-log/dto/query-access-log.dto.js +5 -0
- package/dist/access-log/dto/query-access-log.dto.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 +12 -17
- package/dist/ai/ai.controller.d.ts.map +1 -1
- package/dist/ai/ai.controller.js +17 -2
- package/dist/ai/ai.controller.js.map +1 -1
- package/dist/ai/ai.module.d.ts.map +1 -1
- package/dist/ai/ai.module.js +3 -2
- package/dist/ai/ai.module.js.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 +92 -12
- package/dist/ai/ai.service.d.ts.map +1 -1
- package/dist/ai/ai.service.js +309 -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/richtext-edit-html.dto.d.ts +5 -0
- package/dist/ai/dto/richtext-edit-html.dto.d.ts.map +1 -0
- package/dist/ai/dto/richtext-edit-html.dto.js +27 -0
- package/dist/ai/dto/richtext-edit-html.dto.js.map +1 -0
- 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/richtext-ai.prompts.d.ts +5 -0
- package/dist/ai/richtext-ai.prompts.d.ts.map +1 -0
- package/dist/ai/richtext-ai.prompts.js +57 -0
- package/dist/ai/richtext-ai.prompts.js.map +1 -0
- package/dist/ai/richtext-ai.service.d.ts +34 -0
- package/dist/ai/richtext-ai.service.d.ts.map +1 -0
- package/dist/ai/richtext-ai.service.js +95 -0
- package/dist/ai/richtext-ai.service.js.map +1 -0
- package/dist/ai-instruction/ai-instruction.controller.d.ts +59 -5
- 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 +89 -15
- package/dist/auth/auth.controller.d.ts.map +1 -1
- package/dist/auth/auth.controller.js +116 -44
- package/dist/auth/auth.controller.js.map +1 -1
- package/dist/auth/auth.module.d.ts.map +1 -1
- package/dist/auth/auth.module.js +2 -0
- package/dist/auth/auth.module.js.map +1 -1
- package/dist/auth/auth.service.d.ts +169 -12
- package/dist/auth/auth.service.d.ts.map +1 -1
- package/dist/auth/auth.service.js +314 -67
- package/dist/auth/auth.service.js.map +1 -1
- package/dist/auth/dto/confirm-email.dto.d.ts +4 -0
- package/dist/auth/dto/confirm-email.dto.d.ts.map +1 -0
- package/dist/auth/dto/confirm-email.dto.js +22 -0
- package/dist/auth/dto/confirm-email.dto.js.map +1 -0
- package/dist/auth/dto/resend-confirmation.dto.d.ts +8 -0
- package/dist/auth/dto/resend-confirmation.dto.d.ts.map +1 -0
- package/dist/auth/dto/resend-confirmation.dto.js +36 -0
- package/dist/auth/dto/resend-confirmation.dto.js.map +1 -0
- package/dist/authorize/authorize.controller.d.ts +1 -1
- package/dist/authorize/authorize.controller.d.ts.map +1 -1
- package/dist/authorize/authorize.controller.js +4 -2
- package/dist/authorize/authorize.controller.js.map +1 -1
- package/dist/authorize/authorize.service.d.ts +7 -0
- package/dist/authorize/authorize.service.d.ts.map +1 -1
- package/dist/authorize/authorize.service.js +1 -1
- package/dist/authorize/authorize.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 +31 -9
- package/dist/challenge/challenge.service.d.ts.map +1 -1
- package/dist/challenge/challenge.service.js +111 -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 +46 -2
- package/dist/core.module.js.map +1 -1
- package/dist/dashboard/dashboard/dashboard.controller.d.ts +21 -21
- package/dist/dashboard/dashboard/dashboard.service.d.ts +21 -21
- package/dist/dashboard/dashboard-component/dashboard-component.controller.d.ts +10 -10
- package/dist/dashboard/dashboard-component/dashboard-component.service.d.ts +10 -10
- 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 +3 -3
- package/dist/dashboard/dashboard-core/dashboard-core.service.d.ts +3 -3
- package/dist/dashboard/dashboard-item/dashboard-item.controller.d.ts +2 -2
- package/dist/dashboard/dashboard-item/dashboard-item.service.d.ts +2 -2
- 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.controller.d.ts +8 -1
- package/dist/file/file.controller.d.ts.map +1 -1
- package/dist/file/file.controller.js +45 -7
- package/dist/file/file.controller.js.map +1 -1
- package/dist/file/file.service.d.ts +134 -1
- package/dist/file/file.service.d.ts.map +1 -1
- package/dist/file/file.service.js +363 -12
- package/dist/file/file.service.js.map +1 -1
- package/dist/file/image-optimization.service.d.ts +43 -0
- package/dist/file/image-optimization.service.d.ts.map +1 -1
- package/dist/file/image-optimization.service.js +154 -0
- package/dist/file/image-optimization.service.js.map +1 -1
- package/dist/file/provider/abstract.provider.d.ts +16 -0
- package/dist/file/provider/abstract.provider.d.ts.map +1 -1
- package/dist/file/provider/abstract.provider.js +4 -0
- package/dist/file/provider/abstract.provider.js.map +1 -1
- package/dist/file/provider/gcs.provider.d.ts +2 -0
- package/dist/file/provider/gcs.provider.d.ts.map +1 -1
- package/dist/file/provider/gcs.provider.js +10 -0
- package/dist/file/provider/gcs.provider.js.map +1 -1
- package/dist/file/provider/local.provider.d.ts +1 -0
- package/dist/file/provider/local.provider.d.ts.map +1 -1
- package/dist/file/provider/local.provider.js +13 -0
- package/dist/file/provider/local.provider.js.map +1 -1
- package/dist/file/provider/s3.provider.d.ts +5 -0
- package/dist/file/provider/s3.provider.d.ts.map +1 -1
- package/dist/file/provider/s3.provider.js +15 -0
- package/dist/file/provider/s3.provider.js.map +1 -1
- package/dist/file/provider/spaces.provider.d.ts +5 -0
- package/dist/file/provider/spaces.provider.d.ts.map +1 -1
- package/dist/file/provider/spaces.provider.js +16 -0
- package/dist/file/provider/spaces.provider.js.map +1 -1
- package/dist/impersonation/dto/redeem-impersonation.dto.d.ts +4 -0
- package/dist/impersonation/dto/redeem-impersonation.dto.d.ts.map +1 -0
- package/dist/impersonation/dto/redeem-impersonation.dto.js +23 -0
- package/dist/impersonation/dto/redeem-impersonation.dto.js.map +1 -0
- package/dist/impersonation/dto/start-impersonation.dto.d.ts +7 -0
- package/dist/impersonation/dto/start-impersonation.dto.d.ts.map +1 -0
- package/dist/impersonation/dto/start-impersonation.dto.js +27 -0
- package/dist/impersonation/dto/start-impersonation.dto.js.map +1 -0
- package/dist/impersonation/impersonation-restrictions.d.ts +26 -0
- package/dist/impersonation/impersonation-restrictions.d.ts.map +1 -0
- package/dist/impersonation/impersonation-restrictions.js +76 -0
- package/dist/impersonation/impersonation-restrictions.js.map +1 -0
- package/dist/impersonation/impersonation.controller.d.ts +90 -0
- package/dist/impersonation/impersonation.controller.d.ts.map +1 -0
- package/dist/impersonation/impersonation.controller.js +135 -0
- package/dist/impersonation/impersonation.controller.js.map +1 -0
- package/dist/impersonation/impersonation.module.d.ts +8 -0
- package/dist/impersonation/impersonation.module.d.ts.map +1 -0
- package/dist/impersonation/impersonation.module.js +44 -0
- package/dist/impersonation/impersonation.module.js.map +1 -0
- package/dist/impersonation/impersonation.service.d.ts +164 -0
- package/dist/impersonation/impersonation.service.d.ts.map +1 -0
- package/dist/impersonation/impersonation.service.js +408 -0
- package/dist/impersonation/impersonation.service.js.map +1 -0
- 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 +43 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +49 -0
- package/dist/index.js.map +1 -1
- package/dist/integration/services/outbox-polling.coordinator.d.ts +2 -0
- package/dist/integration/services/outbox-polling.coordinator.d.ts.map +1 -1
- package/dist/integration/services/outbox-polling.coordinator.js +50 -30
- package/dist/integration/services/outbox-polling.coordinator.js.map +1 -1
- package/dist/integration/services/outbox.service.d.ts.map +1 -1
- package/dist/integration/services/outbox.service.js +5 -1
- package/dist/integration/services/outbox.service.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 +12 -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 +27 -1
- package/dist/integration-profile/integration-profile.utils.d.ts.map +1 -1
- package/dist/integration-profile/integration-profile.utils.js +46 -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 +156 -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 +15 -2
- package/dist/language/pt.json +15 -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 +44 -0
- package/dist/mail/dto/send.dto.d.ts.map +1 -1
- package/dist/mail/dto/send.dto.js +20 -0
- package/dist/mail/dto/send.dto.js.map +1 -1
- package/dist/mail/mail.controller.d.ts +5 -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.module.d.ts.map +1 -1
- package/dist/mail/mail.module.js +2 -0
- package/dist/mail/mail.module.js.map +1 -1
- package/dist/mail/mail.service.d.ts +69 -4
- package/dist/mail/mail.service.d.ts.map +1 -1
- package/dist/mail/mail.service.js +278 -37
- package/dist/mail/mail.service.js.map +1 -1
- package/dist/mail-delivery/mail-delivery-provision.service.d.ts +21 -0
- package/dist/mail-delivery/mail-delivery-provision.service.d.ts.map +1 -0
- package/dist/mail-delivery/mail-delivery-provision.service.js +64 -0
- package/dist/mail-delivery/mail-delivery-provision.service.js.map +1 -0
- package/dist/mail-delivery/mail-delivery.constants.d.ts +17 -0
- package/dist/mail-delivery/mail-delivery.constants.d.ts.map +1 -0
- package/dist/mail-delivery/mail-delivery.constants.js +31 -0
- package/dist/mail-delivery/mail-delivery.constants.js.map +1 -0
- package/dist/mail-delivery/mail-delivery.controller.d.ts +19 -0
- package/dist/mail-delivery/mail-delivery.controller.d.ts.map +1 -0
- package/dist/mail-delivery/mail-delivery.controller.js +53 -0
- package/dist/mail-delivery/mail-delivery.controller.js.map +1 -0
- package/dist/mail-delivery/mail-delivery.module.d.ts +7 -0
- package/dist/mail-delivery/mail-delivery.module.d.ts.map +1 -0
- package/dist/mail-delivery/mail-delivery.module.js +36 -0
- package/dist/mail-delivery/mail-delivery.module.js.map +1 -0
- package/dist/mail-delivery/mail-delivery.service.d.ts +38 -0
- package/dist/mail-delivery/mail-delivery.service.d.ts.map +1 -0
- package/dist/mail-delivery/mail-delivery.service.js +140 -0
- package/dist/mail-delivery/mail-delivery.service.js.map +1 -0
- package/dist/mail-delivery/ses-event.parser.d.ts +27 -0
- package/dist/mail-delivery/ses-event.parser.d.ts.map +1 -0
- package/dist/mail-delivery/ses-event.parser.js +131 -0
- package/dist/mail-delivery/ses-event.parser.js.map +1 -0
- package/dist/mail-delivery/ses-webhook.service.d.ts +58 -0
- package/dist/mail-delivery/ses-webhook.service.d.ts.map +1 -0
- package/dist/mail-delivery/ses-webhook.service.js +214 -0
- package/dist/mail-delivery/ses-webhook.service.js.map +1 -0
- package/dist/mail-delivery/sns-message.util.d.ts +38 -0
- package/dist/mail-delivery/sns-message.util.d.ts.map +1 -0
- package/dist/mail-delivery/sns-message.util.js +109 -0
- package/dist/mail-delivery/sns-message.util.js.map +1 -0
- 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/mail-sent/dto/query-mail-sent-list.dto.d.ts +5 -0
- package/dist/mail-sent/dto/query-mail-sent-list.dto.d.ts.map +1 -1
- package/dist/mail-sent/dto/query-mail-sent-list.dto.js +6 -0
- package/dist/mail-sent/dto/query-mail-sent-list.dto.js.map +1 -1
- package/dist/mail-sent/mail-sent.controller.d.ts +39 -0
- package/dist/mail-sent/mail-sent.controller.d.ts.map +1 -1
- package/dist/mail-sent/mail-sent.service.d.ts +39 -0
- package/dist/mail-sent/mail-sent.service.d.ts.map +1 -1
- package/dist/mail-sent/mail-sent.service.js +45 -4
- package/dist/mail-sent/mail-sent.service.js.map +1 -1
- package/dist/mailbox/mailbox-fetcher.registry.d.ts +100 -0
- package/dist/mailbox/mailbox-fetcher.registry.d.ts.map +1 -0
- package/dist/mailbox/mailbox-fetcher.registry.js +59 -0
- package/dist/mailbox/mailbox-fetcher.registry.js.map +1 -0
- package/dist/mailbox/mailbox.module.d.ts +8 -0
- package/dist/mailbox/mailbox.module.d.ts.map +1 -0
- package/dist/mailbox/mailbox.module.js +27 -0
- package/dist/mailbox/mailbox.module.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/meeting/meeting-provider.registry.d.ts +155 -0
- package/dist/meeting/meeting-provider.registry.d.ts.map +1 -0
- package/dist/meeting/meeting-provider.registry.js +53 -0
- package/dist/meeting/meeting-provider.registry.js.map +1 -0
- package/dist/meeting/meeting.constants.d.ts +47 -0
- package/dist/meeting/meeting.constants.d.ts.map +1 -0
- package/dist/meeting/meeting.constants.js +21 -0
- package/dist/meeting/meeting.constants.js.map +1 -0
- package/dist/meeting/meeting.module.d.ts +7 -0
- package/dist/meeting/meeting.module.d.ts.map +1 -0
- package/dist/meeting/meeting.module.js +26 -0
- package/dist/meeting/meeting.module.js.map +1 -0
- package/dist/menu/menu.controller.d.ts +3 -3
- package/dist/menu/menu.service.d.ts +3 -3
- package/dist/middlewares/locale-injection.middleware.d.ts +12 -0
- package/dist/middlewares/locale-injection.middleware.d.ts.map +1 -1
- package/dist/middlewares/locale-injection.middleware.js +20 -4
- package/dist/middlewares/locale-injection.middleware.js.map +1 -1
- 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/oauth/providers/google.provider.d.ts +7 -0
- package/dist/oauth/providers/google.provider.d.ts.map +1 -1
- package/dist/oauth/providers/google.provider.js +43 -13
- package/dist/oauth/providers/google.provider.js.map +1 -1
- package/dist/observability/monitored-cron.d.ts +34 -0
- package/dist/observability/monitored-cron.d.ts.map +1 -0
- package/dist/observability/monitored-cron.js +118 -0
- package/dist/observability/monitored-cron.js.map +1 -0
- package/dist/pairing/dto/approve-reverse-pairing.dto.d.ts +12 -0
- package/dist/pairing/dto/approve-reverse-pairing.dto.d.ts.map +1 -0
- package/dist/pairing/dto/approve-reverse-pairing.dto.js +30 -0
- package/dist/pairing/dto/approve-reverse-pairing.dto.js.map +1 -0
- package/dist/pairing/dto/claim-pairing.dto.d.ts +11 -0
- package/dist/pairing/dto/claim-pairing.dto.d.ts.map +1 -0
- package/dist/pairing/dto/claim-pairing.dto.js +35 -0
- package/dist/pairing/dto/claim-pairing.dto.js.map +1 -0
- package/dist/pairing/dto/confirm-pairing.dto.d.ts +10 -0
- package/dist/pairing/dto/confirm-pairing.dto.d.ts.map +1 -0
- package/dist/pairing/dto/confirm-pairing.dto.js +24 -0
- package/dist/pairing/dto/confirm-pairing.dto.js.map +1 -0
- package/dist/pairing/dto/poll-reverse-pairing.dto.d.ts +5 -0
- package/dist/pairing/dto/poll-reverse-pairing.dto.d.ts.map +1 -0
- package/dist/pairing/dto/poll-reverse-pairing.dto.js +24 -0
- package/dist/pairing/dto/poll-reverse-pairing.dto.js.map +1 -0
- package/dist/pairing/dto/start-pairing.dto.d.ts +11 -0
- package/dist/pairing/dto/start-pairing.dto.d.ts.map +1 -0
- package/dist/pairing/dto/start-pairing.dto.js +30 -0
- package/dist/pairing/dto/start-pairing.dto.js.map +1 -0
- package/dist/pairing/dto/start-reverse-pairing.dto.d.ts +24 -0
- package/dist/pairing/dto/start-reverse-pairing.dto.d.ts.map +1 -0
- package/dist/pairing/dto/start-reverse-pairing.dto.js +47 -0
- package/dist/pairing/dto/start-reverse-pairing.dto.js.map +1 -0
- package/dist/pairing/pairing.controller.d.ts +118 -0
- package/dist/pairing/pairing.controller.d.ts.map +1 -0
- package/dist/pairing/pairing.controller.js +296 -0
- package/dist/pairing/pairing.controller.js.map +1 -0
- package/dist/pairing/pairing.module.d.ts +10 -0
- package/dist/pairing/pairing.module.d.ts.map +1 -0
- package/dist/pairing/pairing.module.js +40 -0
- package/dist/pairing/pairing.module.js.map +1 -0
- package/dist/pairing/pairing.service.d.ts +238 -0
- package/dist/pairing/pairing.service.d.ts.map +1 -0
- package/dist/pairing/pairing.service.js +495 -0
- package/dist/pairing/pairing.service.js.map +1 -0
- package/dist/pdf/pdf.service.d.ts +11 -6
- package/dist/pdf/pdf.service.d.ts.map +1 -1
- package/dist/pdf/pdf.service.js +60 -20
- 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 +32 -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 +41 -18
- package/dist/profile/profile.service.d.ts.map +1 -1
- package/dist/profile/profile.service.js +133 -48
- 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 +184 -0
- package/dist/redis/redis-pubsub.js.map +1 -0
- package/dist/role/guards/role.guard.d.ts +5 -0
- package/dist/role/guards/role.guard.d.ts.map +1 -1
- package/dist/role/guards/role.guard.js +41 -39
- package/dist/role/guards/role.guard.js.map +1 -1
- package/dist/role/role.controller.d.ts +3 -3
- package/dist/role/role.service.d.ts +3 -3
- package/dist/session/session.controller.d.ts +2 -0
- package/dist/session/session.controller.d.ts.map +1 -1
- package/dist/session/session.service.d.ts +39 -0
- package/dist/session/session.service.d.ts.map +1 -1
- package/dist/session/session.service.js +91 -8
- package/dist/session/session.service.js.map +1 -1
- package/dist/setting/brand-asset.service.d.ts +48 -0
- package/dist/setting/brand-asset.service.d.ts.map +1 -0
- package/dist/setting/brand-asset.service.js +130 -0
- package/dist/setting/brand-asset.service.js.map +1 -0
- 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.module.d.ts.map +1 -1
- package/dist/setting/setting.module.js +3 -2
- package/dist/setting/setting.module.js.map +1 -1
- package/dist/setting/setting.service.d.ts +41 -5
- package/dist/setting/setting.service.d.ts.map +1 -1
- package/dist/setting/setting.service.js +113 -1
- package/dist/setting/setting.service.js.map +1 -1
- package/dist/token/token.service.d.ts +23 -2
- package/dist/token/token.service.d.ts.map +1 -1
- package/dist/token/token.service.js +39 -4
- package/dist/token/token.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 +24 -26
- 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 +71 -29
- package/dist/user/user.service.d.ts.map +1 -1
- package/dist/user/user.service.js +291 -17
- package/dist/user/user.service.js.map +1 -1
- package/dist/user-device/user-device.controller.d.ts +54 -0
- package/dist/user-device/user-device.controller.d.ts.map +1 -0
- package/dist/user-device/user-device.controller.js +103 -0
- package/dist/user-device/user-device.controller.js.map +1 -0
- package/dist/user-device/user-device.module.d.ts +3 -0
- package/dist/user-device/user-device.module.d.ts.map +1 -0
- package/dist/user-device/user-device.module.js +26 -0
- package/dist/user-device/user-device.module.js.map +1 -0
- package/dist/user-device/user-device.service.d.ts +71 -0
- package/dist/user-device/user-device.service.d.ts.map +1 -0
- package/dist/user-device/user-device.service.js +158 -0
- package/dist/user-device/user-device.service.js.map +1 -0
- package/dist/utils/device-key.d.ts +23 -0
- package/dist/utils/device-key.d.ts.map +1 -0
- package/dist/utils/device-key.js +31 -0
- package/dist/utils/device-key.js.map +1 -0
- package/dist/utils/geo-ip.d.ts +38 -0
- package/dist/utils/geo-ip.d.ts.map +1 -0
- package/dist/utils/geo-ip.js +122 -0
- package/dist/utils/geo-ip.js.map +1 -0
- package/dist/utils/locale-context.d.ts +10 -7
- package/dist/utils/locale-context.d.ts.map +1 -1
- package/dist/utils/locale-context.js +14 -8
- package/dist/utils/locale-context.js.map +1 -1
- package/dist/utils/security-event-vars.d.ts +56 -0
- package/dist/utils/security-event-vars.d.ts.map +1 -0
- package/dist/utils/security-event-vars.js +109 -0
- package/dist/utils/security-event-vars.js.map +1 -0
- package/dist/utils/user-agent.d.ts +19 -0
- package/dist/utils/user-agent.d.ts.map +1 -0
- package/dist/utils/user-agent.js +36 -0
- package/dist/utils/user-agent.js.map +1 -0
- 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/webhook-integration/webhook-integration.service.d.ts +5 -0
- package/dist/webhook-integration/webhook-integration.service.d.ts.map +1 -1
- package/dist/webhook-integration/webhook-integration.service.js +50 -4
- package/dist/webhook-integration/webhook-integration.service.js.map +1 -1
- package/dist/webhook-integration/webhook-protocol.registry.d.ts +6 -0
- package/dist/webhook-integration/webhook-protocol.registry.d.ts.map +1 -1
- package/dist/webhook-integration/webhook-protocol.registry.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 +25 -0
- package/hedhog/data/mail.yaml +275 -112
- package/hedhog/data/mail_layout.yaml +198 -0
- package/hedhog/data/menu.yaml +69 -3
- package/hedhog/data/role.yaml +16 -0
- package/hedhog/data/route.yaml +307 -3
- package/hedhog/data/setting_group.yaml +315 -1
- package/hedhog/data/setting_subgroup.yaml +8 -0
- package/hedhog/frontend/app/_lib/hooks/use-core-access.test.tsx.ejs +125 -0
- package/hedhog/frontend/app/_lib/hooks/use-core-access.ts.ejs +29 -0
- package/hedhog/frontend/app/_lib/hooks/use-impersonation-access.test.ts.ejs +71 -0
- package/hedhog/frontend/app/_lib/hooks/use-impersonation-access.ts.ejs +32 -0
- package/hedhog/frontend/app/access-log/page.tsx.ejs +96 -22
- package/hedhog/frontend/app/account/components/active-sessions.tsx.ejs +17 -1
- package/hedhog/frontend/app/account/components/known-devices.tsx.ejs +89 -0
- package/hedhog/frontend/app/account/components/mfa-setup-dialog.tsx.ejs +36 -0
- package/hedhog/frontend/app/account/components/profile-form.tsx.ejs +2 -1
- package/hedhog/frontend/app/account/components/two-factor-auth.tsx.ejs +2 -0
- package/hedhog/frontend/app/account/components/user-devices-list.tsx.ejs +186 -0
- package/hedhog/frontend/app/account/devices/page.tsx.ejs +5 -0
- package/hedhog/frontend/app/account/hooks/use-mfa-setup.ts.ejs +10 -7
- package/hedhog/frontend/app/account/layout.tsx.ejs +2 -0
- 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.test.tsx.ejs +298 -0
- package/hedhog/frontend/app/configurations/[slug]/components/setting-field.tsx.ejs +410 -1223
- 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/log/page.tsx.ejs +210 -3
- package/hedhog/frontend/app/mail/template/page.tsx.ejs +292 -200
- 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/active-session.tsx.ejs +58 -11
- package/hedhog/frontend/app/users/page.tsx.ejs +186 -21
- package/hedhog/frontend/app/users/simulate-access-dialog.test.tsx.ejs +202 -0
- package/hedhog/frontend/app/users/simulate-access-dialog.tsx.ejs +170 -0
- package/hedhog/frontend/app/users/user-activity-timeline.tsx.ejs +250 -0
- package/hedhog/frontend/app/users/user-devices.tsx.ejs +89 -0
- package/hedhog/frontend/app/users/user-logs.tsx.ejs +13 -1
- package/hedhog/frontend/app/users/user-mails.tsx.ejs +399 -0
- package/hedhog/frontend/app/users/user-sheet.tsx.ejs +106 -99
- package/hedhog/frontend/messages/en.json +643 -49
- package/hedhog/frontend/messages/pt.json +643 -49
- package/hedhog/table/access_log.yaml +7 -0
- package/hedhog/table/ai_agent.yaml +1 -0
- package/hedhog/table/ai_instruction.yaml +15 -0
- package/hedhog/table/file.yaml +8 -0
- package/hedhog/table/leaked_password.yaml +18 -0
- package/hedhog/table/mail_delivery_event.yaml +76 -0
- package/hedhog/table/mail_layout.yaml +35 -0
- package/hedhog/table/mail_sent.yaml +23 -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_activity.yaml +9 -0
- package/hedhog/table/user_device.yaml +52 -0
- package/hedhog/table/user_presence.yaml +36 -0
- package/hedhog/table/user_session.yaml +20 -1
- package/package.json +7 -2
- package/src/access-log/access-log.controller.ts +1 -0
- package/src/access-log/access-log.interceptor.ts +9 -3
- package/src/access-log/access-log.service.spec.ts +33 -2
- package/src/access-log/access-log.service.ts +38 -0
- package/src/access-log/dto/query-access-log.dto.ts +5 -0
- package/src/ai/ai-attachment.fragments.spec.ts +319 -0
- package/src/ai/ai-attachment.fragments.ts +35 -0
- package/src/ai/ai.controller.ts +9 -0
- package/src/ai/ai.module.ts +3 -2
- package/src/ai/ai.prompts.ts +38 -0
- package/src/ai/ai.service.spec.ts +280 -0
- package/src/ai/ai.service.ts +475 -82
- package/src/ai/dto/chat.dto.ts +33 -3
- package/src/ai/dto/create-agent.dto.ts +2 -2
- package/src/ai/dto/richtext-edit-html.dto.ts +11 -0
- package/src/ai/dto/update-agent.dto.ts +2 -2
- package/src/ai/richtext-ai.prompts.ts +57 -0
- package/src/ai/richtext-ai.service.ts +109 -0
- 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 +78 -13
- package/src/auth/auth.module.ts +2 -0
- package/src/auth/auth.service.spec.ts +386 -7
- package/src/auth/auth.service.ts +435 -81
- package/src/auth/dto/confirm-email.dto.ts +7 -0
- package/src/auth/dto/resend-confirmation.dto.ts +20 -0
- package/src/authorize/authorize.controller.ts +2 -0
- package/src/authorize/authorize.service.spec.ts +23 -0
- package/src/authorize/authorize.service.ts +8 -0
- 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 +112 -4
- package/src/challenge/challenge.service.ts +131 -17
- package/src/core.module.ts +46 -1
- package/src/file/file.controller.ts +54 -4
- package/src/file/file.service.spec.ts +275 -0
- package/src/file/file.service.ts +468 -16
- package/src/file/image-optimization.service.spec.ts +92 -0
- package/src/file/image-optimization.service.ts +202 -0
- package/src/file/provider/abstract.provider.ts +23 -0
- package/src/file/provider/gcs.provider.ts +17 -0
- package/src/file/provider/local.provider.ts +21 -0
- package/src/file/provider/s3.provider.ts +25 -0
- package/src/file/provider/spaces.provider.ts +26 -0
- package/src/impersonation/dto/redeem-impersonation.dto.ts +8 -0
- package/src/impersonation/dto/start-impersonation.dto.ts +13 -0
- package/src/impersonation/impersonation-restrictions.ts +84 -0
- package/src/impersonation/impersonation.controller.ts +109 -0
- package/src/impersonation/impersonation.module.ts +31 -0
- package/src/impersonation/impersonation.service.spec.ts +427 -0
- package/src/impersonation/impersonation.service.ts +577 -0
- 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 +58 -0
- package/src/integration/services/outbox-polling.coordinator.spec.ts +90 -0
- package/src/integration/services/outbox-polling.coordinator.ts +62 -40
- package/src/integration/services/outbox.service.spec.ts +8 -0
- package/src/integration/services/outbox.service.ts +19 -13
- 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 +12 -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 +78 -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 +194 -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 +15 -2
- package/src/language/pt.json +15 -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 +58 -1
- package/src/mail/mail-template.spec.ts +274 -0
- package/src/mail/mail.controller.ts +9 -2
- package/src/mail/mail.module.ts +2 -0
- package/src/mail/mail.service.spec.ts +422 -6
- package/src/mail/mail.service.ts +337 -34
- package/src/mail-delivery/mail-delivery-provision.service.ts +66 -0
- package/src/mail-delivery/mail-delivery.constants.ts +31 -0
- package/src/mail-delivery/mail-delivery.controller.ts +38 -0
- package/src/mail-delivery/mail-delivery.module.ts +23 -0
- package/src/mail-delivery/mail-delivery.service.spec.ts +136 -0
- package/src/mail-delivery/mail-delivery.service.ts +152 -0
- package/src/mail-delivery/ses-event.parser.spec.ts +140 -0
- package/src/mail-delivery/ses-event.parser.ts +191 -0
- package/src/mail-delivery/ses-webhook.service.spec.ts +170 -0
- package/src/mail-delivery/ses-webhook.service.ts +240 -0
- package/src/mail-delivery/sns-message.util.spec.ts +163 -0
- package/src/mail-delivery/sns-message.util.ts +125 -0
- 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/mail-sent/dto/query-mail-sent-list.dto.ts +15 -0
- package/src/mail-sent/mail-sent.service.ts +46 -2
- package/src/mailbox/mailbox-fetcher.registry.ts +132 -0
- package/src/mailbox/mailbox.module.ts +14 -0
- package/src/mcp-chat/mcp-chat.service.spec.ts +236 -0
- package/src/mcp-chat/mcp-chat.service.ts +122 -26
- package/src/meeting/meeting-provider.registry.ts +193 -0
- package/src/meeting/meeting.constants.ts +53 -0
- package/src/meeting/meeting.module.ts +13 -0
- package/src/middlewares/locale-injection.middleware.ts +25 -6
- 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/oauth/providers/google.provider.ts +49 -15
- package/src/observability/monitored-cron.spec.ts +102 -0
- package/src/observability/monitored-cron.ts +110 -0
- package/src/pairing/dto/approve-reverse-pairing.dto.ts +20 -0
- package/src/pairing/dto/claim-pairing.dto.ts +19 -0
- package/src/pairing/dto/confirm-pairing.dto.ts +14 -0
- package/src/pairing/dto/poll-reverse-pairing.dto.ts +9 -0
- package/src/pairing/dto/start-pairing.dto.ts +19 -0
- package/src/pairing/dto/start-reverse-pairing.dto.ts +45 -0
- package/src/pairing/pairing.controller.ts +246 -0
- package/src/pairing/pairing.module.ts +27 -0
- package/src/pairing/pairing.service.spec.ts +462 -0
- package/src/pairing/pairing.service.ts +614 -0
- package/src/pdf/pdf.service.ts +81 -24
- 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 +164 -46
- 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 +190 -0
- package/src/role/guards/role.guard.spec.ts +75 -0
- package/src/role/guards/role.guard.ts +64 -46
- package/src/session/session.service.spec.ts +81 -0
- package/src/session/session.service.ts +93 -6
- package/src/setting/brand-asset.service.ts +137 -0
- package/src/setting/dto/create.dto.ts +13 -2
- package/src/setting/setting.module.ts +3 -2
- package/src/setting/setting.service.spec.ts +135 -1
- package/src/setting/setting.service.ts +138 -2
- package/src/token/token.service.spec.ts +62 -0
- package/src/token/token.service.ts +57 -3
- 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 +186 -2
- package/src/user/user.service.ts +361 -16
- package/src/user-device/user-device.controller.ts +77 -0
- package/src/user-device/user-device.module.ts +13 -0
- package/src/user-device/user-device.service.spec.ts +234 -0
- package/src/user-device/user-device.service.ts +168 -0
- package/src/utils/device-key.spec.ts +57 -0
- package/src/utils/device-key.ts +32 -0
- package/src/utils/geo-ip.spec.ts +134 -0
- package/src/utils/geo-ip.ts +93 -0
- package/src/utils/locale-context.spec.ts +27 -1
- package/src/utils/locale-context.ts +15 -12
- package/src/utils/security-event-vars.spec.ts +161 -0
- package/src/utils/security-event-vars.ts +153 -0
- package/src/utils/user-agent.spec.ts +37 -0
- package/src/utils/user-agent.ts +46 -0
- package/src/validators/is-strong-password-with-settings.validator.ts +12 -0
- package/src/validators/service-locator.ts +15 -0
- package/src/webhook-integration/webhook-integration.service.ts +57 -3
- package/src/webhook-integration/webhook-protocol.registry.ts +6 -0
- package/src/whatsapp-sender/whatsapp-sender.module.ts +10 -0
- package/src/whatsapp-sender/whatsapp-sender.service.ts +313 -0
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Uma mensagem recebida, ainda crua.
|
|
3
|
+
*
|
|
4
|
+
* O fetcher devolve o MIME e nada mais. Interpretar (parsear cabeçalhos, cortar
|
|
5
|
+
* citação, decidir se é autoresposta) é do consumidor — assim os dois provedores
|
|
6
|
+
* compartilham exatamente o mesmo caminho de leitura, e o core não precisa
|
|
7
|
+
* conhecer mailparser nem as regras de atendimento.
|
|
8
|
+
*/
|
|
9
|
+
export interface RawInboundMessage {
|
|
10
|
+
/**
|
|
11
|
+
* Identidade da mensagem no provedor (Message-Id, id do Graph).
|
|
12
|
+
* É a chave de idempotência de quem consome.
|
|
13
|
+
*/
|
|
14
|
+
externalId: string;
|
|
15
|
+
/** Mensagem RFC 822 completa. */
|
|
16
|
+
source: Buffer;
|
|
17
|
+
receivedAt: Date;
|
|
18
|
+
}
|
|
19
|
+
export interface MailboxFetchTarget {
|
|
20
|
+
/** Perfil de integração com as credenciais. */
|
|
21
|
+
integrationProfileId: number;
|
|
22
|
+
/** Endereço monitorado. No Graph, é também o alvo do acesso app-only. */
|
|
23
|
+
address: string;
|
|
24
|
+
folder: string;
|
|
25
|
+
/**
|
|
26
|
+
* Cursor OPACO, como o fetcher o gravou da última vez.
|
|
27
|
+
*
|
|
28
|
+
* Cada provedor escolhe o formato — UID + UIDVALIDITY no IMAP, deltaLink no
|
|
29
|
+
* Graph. Manter isso opaco é o que permite um campo só no banco servir aos
|
|
30
|
+
* dois sem o consumidor entender nenhum dos dois.
|
|
31
|
+
*/
|
|
32
|
+
cursor: string | null;
|
|
33
|
+
markAsRead: boolean;
|
|
34
|
+
/** Teto por ciclo, para uma caixa esquecida não virar um poll infinito. */
|
|
35
|
+
maxMessages: number;
|
|
36
|
+
}
|
|
37
|
+
export interface MailboxFetchResult {
|
|
38
|
+
messages: RawInboundMessage[];
|
|
39
|
+
/** Cursor a gravar DEPOIS que as mensagens forem persistidas. */
|
|
40
|
+
cursor: string | null;
|
|
41
|
+
/**
|
|
42
|
+
* O provedor invalidou o cursor anterior (UIDVALIDITY novo, delta expirado).
|
|
43
|
+
* Serve para o consumidor registrar o fato — a releitura em si já vem
|
|
44
|
+
* resolvida no resultado.
|
|
45
|
+
*/
|
|
46
|
+
cursorReset: boolean;
|
|
47
|
+
}
|
|
48
|
+
/** Resultado de um teste de leitura, no mesmo formato do `MailVerifyResult`. */
|
|
49
|
+
export interface MailboxVerifyResult {
|
|
50
|
+
ok: boolean;
|
|
51
|
+
/** Evidência legível do sucesso. Nunca contém credencial. */
|
|
52
|
+
info?: string;
|
|
53
|
+
/** Motivo legível da falha. Nunca contém credencial. */
|
|
54
|
+
error?: string;
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Lê uma caixa de correio.
|
|
58
|
+
*
|
|
59
|
+
* Implementações vivem nas libraries donas do protocolo (IMAP no `sac`,
|
|
60
|
+
* Microsoft Graph no `microsoft`) e se registram aqui no boot.
|
|
61
|
+
*/
|
|
62
|
+
export interface IMailboxFetcher {
|
|
63
|
+
/** Falso quando o provedor está desligado ou mal configurado nesta instalação. */
|
|
64
|
+
isAvailable(): Promise<boolean>;
|
|
65
|
+
fetch(target: MailboxFetchTarget): Promise<MailboxFetchResult>;
|
|
66
|
+
/**
|
|
67
|
+
* Confere se ESTA caixa pode ser lida agora, exercitando o caminho real.
|
|
68
|
+
*
|
|
69
|
+
* Existe porque testar o perfil de integração não é a mesma coisa que testar a
|
|
70
|
+
* caixa: para o Entra, o teste do perfil só pede um token e passa mesmo sem
|
|
71
|
+
* permissão de e-mail, sem acesso àquele endereço e sem a pasta existir — ou
|
|
72
|
+
* seja, aprovaria uma caixa que nunca vai receber nada.
|
|
73
|
+
*
|
|
74
|
+
* Opcional: sem ela, o chamador cai no testador do perfil (o que basta para o
|
|
75
|
+
* IMAP, onde autenticar já prova o acesso).
|
|
76
|
+
*/
|
|
77
|
+
verify?(target: MailboxFetchTarget): Promise<MailboxVerifyResult>;
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Registro dos leitores de caixa, no mesmo padrão do MeetingProviderRegistry.
|
|
81
|
+
*
|
|
82
|
+
* Existe pelo mesmo motivo daquele: permitir que um módulo de negócio leia uma
|
|
83
|
+
* caixa do Microsoft 365 sem depender de `@hed-hog-pro/microsoft` — o que
|
|
84
|
+
* arrastaria as tabelas, as rotas e os crons daquela library para toda
|
|
85
|
+
* instalação, só para obter um token.
|
|
86
|
+
*
|
|
87
|
+
* A chave é o SLUG DO PROVIDER DE INTEGRAÇÃO (`imap`,
|
|
88
|
+
* `microsoft-entra-id-oauth`), então o caminho perfil → fetcher se resolve sem
|
|
89
|
+
* nenhuma tabela de-para.
|
|
90
|
+
*/
|
|
91
|
+
export declare class MailboxFetcherRegistry {
|
|
92
|
+
private readonly logger;
|
|
93
|
+
private readonly fetchers;
|
|
94
|
+
register(providerSlug: string, implementation: IMailboxFetcher): void;
|
|
95
|
+
get(providerSlug: string | null | undefined): IMailboxFetcher | null;
|
|
96
|
+
has(providerSlug: string | null | undefined): boolean;
|
|
97
|
+
/** Providers que sabem ler caixa nesta instalação (a UI filtra por isto). */
|
|
98
|
+
list(): string[];
|
|
99
|
+
}
|
|
100
|
+
//# sourceMappingURL=mailbox-fetcher.registry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mailbox-fetcher.registry.d.ts","sourceRoot":"","sources":["../../src/mailbox/mailbox-fetcher.registry.ts"],"names":[],"mappings":"AAEA;;;;;;;GAOG;AACH,MAAM,WAAW,iBAAiB;IAChC;;;OAGG;IACH,UAAU,EAAE,MAAM,CAAC;IACnB,iCAAiC;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,IAAI,CAAC;CAClB;AAED,MAAM,WAAW,kBAAkB;IACjC,+CAA+C;IAC/C,oBAAoB,EAAE,MAAM,CAAC;IAC7B,yEAAyE;IACzE,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf;;;;;;OAMG;IACH,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,UAAU,EAAE,OAAO,CAAC;IACpB,2EAA2E;IAC3E,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,iBAAiB,EAAE,CAAC;IAC9B,iEAAiE;IACjE,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB;;;;OAIG;IACH,WAAW,EAAE,OAAO,CAAC;CACtB;AAED,gFAAgF;AAChF,MAAM,WAAW,mBAAmB;IAClC,EAAE,EAAE,OAAO,CAAC;IACZ,6DAA6D;IAC7D,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,wDAAwD;IACxD,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;;;GAKG;AACH,MAAM,WAAW,eAAe;IAC9B,kFAAkF;IAClF,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;IAChC,KAAK,CAAC,MAAM,EAAE,kBAAkB,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAAC;IAC/D;;;;;;;;;;OAUG;IACH,MAAM,CAAC,CAAC,MAAM,EAAE,kBAAkB,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAAC;CACnE;AAED;;;;;;;;;;;GAWG;AACH,qBACa,sBAAsB;IACjC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA2C;IAClE,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAsC;IAE/D,QAAQ,CAAC,YAAY,EAAE,MAAM,EAAE,cAAc,EAAE,eAAe,GAAG,IAAI;IAYrE,GAAG,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,eAAe,GAAG,IAAI;IAKpE,GAAG,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,OAAO;IAIrD,6EAA6E;IAC7E,IAAI,IAAI,MAAM,EAAE;CAGjB"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var MailboxFetcherRegistry_1;
|
|
9
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
+
exports.MailboxFetcherRegistry = void 0;
|
|
11
|
+
const common_1 = require("@nestjs/common");
|
|
12
|
+
/**
|
|
13
|
+
* Registro dos leitores de caixa, no mesmo padrão do MeetingProviderRegistry.
|
|
14
|
+
*
|
|
15
|
+
* Existe pelo mesmo motivo daquele: permitir que um módulo de negócio leia uma
|
|
16
|
+
* caixa do Microsoft 365 sem depender de `@hed-hog-pro/microsoft` — o que
|
|
17
|
+
* arrastaria as tabelas, as rotas e os crons daquela library para toda
|
|
18
|
+
* instalação, só para obter um token.
|
|
19
|
+
*
|
|
20
|
+
* A chave é o SLUG DO PROVIDER DE INTEGRAÇÃO (`imap`,
|
|
21
|
+
* `microsoft-entra-id-oauth`), então o caminho perfil → fetcher se resolve sem
|
|
22
|
+
* nenhuma tabela de-para.
|
|
23
|
+
*/
|
|
24
|
+
let MailboxFetcherRegistry = MailboxFetcherRegistry_1 = class MailboxFetcherRegistry {
|
|
25
|
+
constructor() {
|
|
26
|
+
this.logger = new common_1.Logger(MailboxFetcherRegistry_1.name);
|
|
27
|
+
this.fetchers = new Map();
|
|
28
|
+
}
|
|
29
|
+
register(providerSlug, implementation) {
|
|
30
|
+
const key = normalizeProvider(providerSlug);
|
|
31
|
+
if (!key)
|
|
32
|
+
throw new Error('Mailbox fetcher provider key is required.');
|
|
33
|
+
if (this.fetchers.has(key)) {
|
|
34
|
+
this.logger.warn(`Mailbox fetcher "${key}" was overwritten.`);
|
|
35
|
+
}
|
|
36
|
+
this.fetchers.set(key, implementation);
|
|
37
|
+
this.logger.log(`Registered mailbox fetcher "${key}"`);
|
|
38
|
+
}
|
|
39
|
+
get(providerSlug) {
|
|
40
|
+
var _a;
|
|
41
|
+
const key = normalizeProvider(providerSlug);
|
|
42
|
+
return key ? ((_a = this.fetchers.get(key)) !== null && _a !== void 0 ? _a : null) : null;
|
|
43
|
+
}
|
|
44
|
+
has(providerSlug) {
|
|
45
|
+
return this.get(providerSlug) !== null;
|
|
46
|
+
}
|
|
47
|
+
/** Providers que sabem ler caixa nesta instalação (a UI filtra por isto). */
|
|
48
|
+
list() {
|
|
49
|
+
return [...this.fetchers.keys()].sort();
|
|
50
|
+
}
|
|
51
|
+
};
|
|
52
|
+
exports.MailboxFetcherRegistry = MailboxFetcherRegistry;
|
|
53
|
+
exports.MailboxFetcherRegistry = MailboxFetcherRegistry = MailboxFetcherRegistry_1 = __decorate([
|
|
54
|
+
(0, common_1.Injectable)()
|
|
55
|
+
], MailboxFetcherRegistry);
|
|
56
|
+
function normalizeProvider(providerSlug) {
|
|
57
|
+
return String(providerSlug !== null && providerSlug !== void 0 ? providerSlug : '').trim().toLowerCase();
|
|
58
|
+
}
|
|
59
|
+
//# sourceMappingURL=mailbox-fetcher.registry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mailbox-fetcher.registry.js","sourceRoot":"","sources":["../../src/mailbox/mailbox-fetcher.registry.ts"],"names":[],"mappings":";;;;;;;;;;AAAA,2CAAoD;AAqFpD;;;;;;;;;;;GAWG;AAEI,IAAM,sBAAsB,8BAA5B,MAAM,sBAAsB;IAA5B;QACY,WAAM,GAAG,IAAI,eAAM,CAAC,wBAAsB,CAAC,IAAI,CAAC,CAAC;QACjD,aAAQ,GAAG,IAAI,GAAG,EAA2B,CAAC;IA2BjE,CAAC;IAzBC,QAAQ,CAAC,YAAoB,EAAE,cAA+B;QAC5D,MAAM,GAAG,GAAG,iBAAiB,CAAC,YAAY,CAAC,CAAC;QAC5C,IAAI,CAAC,GAAG;YAAE,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;QAEvE,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YAC3B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,oBAAoB,GAAG,oBAAoB,CAAC,CAAC;QAChE,CAAC;QAED,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC;QACvC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,+BAA+B,GAAG,GAAG,CAAC,CAAC;IACzD,CAAC;IAED,GAAG,CAAC,YAAuC;;QACzC,MAAM,GAAG,GAAG,iBAAiB,CAAC,YAAY,CAAC,CAAC;QAC5C,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,MAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,mCAAI,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACvD,CAAC;IAED,GAAG,CAAC,YAAuC;QACzC,OAAO,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,KAAK,IAAI,CAAC;IACzC,CAAC;IAED,6EAA6E;IAC7E,IAAI;QACF,OAAO,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IAC1C,CAAC;CACF,CAAA;AA7BY,wDAAsB;iCAAtB,sBAAsB;IADlC,IAAA,mBAAU,GAAE;GACA,sBAAsB,CA6BlC;AAED,SAAS,iBAAiB,CAAC,YAAuC;IAChE,OAAO,MAAM,CAAC,YAAY,aAAZ,YAAY,cAAZ,YAAY,GAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;AACzD,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Porta genérica de leitura de caixa de correio. Só carrega o registro — as
|
|
3
|
+
* implementações vêm de quem se registrar no boot (a library `sac` com a chave
|
|
4
|
+
* `imap`, a library `microsoft` com `microsoft-entra-id-oauth`).
|
|
5
|
+
*/
|
|
6
|
+
export declare class MailboxModule {
|
|
7
|
+
}
|
|
8
|
+
//# sourceMappingURL=mailbox.module.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mailbox.module.d.ts","sourceRoot":"","sources":["../../src/mailbox/mailbox.module.ts"],"names":[],"mappings":"AAGA;;;;GAIG;AACH,qBAKa,aAAa;CAAG"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.MailboxModule = void 0;
|
|
10
|
+
const common_1 = require("@nestjs/common");
|
|
11
|
+
const mailbox_fetcher_registry_1 = require("./mailbox-fetcher.registry");
|
|
12
|
+
/**
|
|
13
|
+
* Porta genérica de leitura de caixa de correio. Só carrega o registro — as
|
|
14
|
+
* implementações vêm de quem se registrar no boot (a library `sac` com a chave
|
|
15
|
+
* `imap`, a library `microsoft` com `microsoft-entra-id-oauth`).
|
|
16
|
+
*/
|
|
17
|
+
let MailboxModule = class MailboxModule {
|
|
18
|
+
};
|
|
19
|
+
exports.MailboxModule = MailboxModule;
|
|
20
|
+
exports.MailboxModule = MailboxModule = __decorate([
|
|
21
|
+
(0, common_1.Global)(),
|
|
22
|
+
(0, common_1.Module)({
|
|
23
|
+
providers: [mailbox_fetcher_registry_1.MailboxFetcherRegistry],
|
|
24
|
+
exports: [mailbox_fetcher_registry_1.MailboxFetcherRegistry],
|
|
25
|
+
})
|
|
26
|
+
], MailboxModule);
|
|
27
|
+
//# sourceMappingURL=mailbox.module.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mailbox.module.js","sourceRoot":"","sources":["../../src/mailbox/mailbox.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAAgD;AAChD,yEAAoE;AAEpE;;;;GAIG;AAMI,IAAM,aAAa,GAAnB,MAAM,aAAa;CAAG,CAAA;AAAhB,sCAAa;wBAAb,aAAa;IALzB,IAAA,eAAM,GAAE;IACR,IAAA,eAAM,EAAC;QACN,SAAS,EAAE,CAAC,iDAAsB,CAAC;QACnC,OAAO,EAAE,CAAC,iDAAsB,CAAC;KAClC,CAAC;GACW,aAAa,CAAG"}
|
|
@@ -34,8 +34,8 @@ export declare class McpChatController {
|
|
|
34
34
|
id: number;
|
|
35
35
|
created_at: Date;
|
|
36
36
|
updated_at: Date;
|
|
37
|
-
content: string;
|
|
38
37
|
role: import("@prisma/client").$Enums.mcp_conversation_message_role_422a6ea954_enum;
|
|
38
|
+
content: string;
|
|
39
39
|
tool_name: string | null;
|
|
40
40
|
conversation_id: number;
|
|
41
41
|
tool_call_id: string | null;
|
|
@@ -46,8 +46,8 @@ export declare class McpChatController {
|
|
|
46
46
|
id: number;
|
|
47
47
|
created_at: Date;
|
|
48
48
|
updated_at: Date;
|
|
49
|
-
content: string;
|
|
50
49
|
role: import("@prisma/client").$Enums.mcp_conversation_message_role_422a6ea954_enum;
|
|
50
|
+
content: string;
|
|
51
51
|
tool_name: string | null;
|
|
52
52
|
conversation_id: number;
|
|
53
53
|
tool_call_id: string | null;
|
|
@@ -32,8 +32,8 @@ export declare class McpChatService {
|
|
|
32
32
|
id: number;
|
|
33
33
|
created_at: Date;
|
|
34
34
|
updated_at: Date;
|
|
35
|
-
content: string;
|
|
36
35
|
role: import("@prisma/client").$Enums.mcp_conversation_message_role_422a6ea954_enum;
|
|
36
|
+
content: string;
|
|
37
37
|
tool_name: string | null;
|
|
38
38
|
conversation_id: number;
|
|
39
39
|
tool_call_id: string | null;
|
|
@@ -42,18 +42,40 @@ export declare class McpChatService {
|
|
|
42
42
|
id: number;
|
|
43
43
|
created_at: Date;
|
|
44
44
|
updated_at: Date;
|
|
45
|
-
content: string;
|
|
46
45
|
role: import("@prisma/client").$Enums.mcp_conversation_message_role_422a6ea954_enum;
|
|
46
|
+
content: string;
|
|
47
47
|
tool_name: string | null;
|
|
48
48
|
conversation_id: number;
|
|
49
49
|
tool_call_id: string | null;
|
|
50
50
|
}[]>;
|
|
51
|
+
/**
|
|
52
|
+
* Composes the system prompt from the stored layers.
|
|
53
|
+
*
|
|
54
|
+
* `moduleSlug`/`agentSlug` activate the L3/L4 layers; without them the seeded
|
|
55
|
+
* `module.*` and `agent.*` instructions are never read. `SYSTEM_PROMPT_FALLBACK`
|
|
56
|
+
* used to be duplicated here — it now comes from `AiInstructionService`, which
|
|
57
|
+
* already falls back internally, so this only guards against the whole build
|
|
58
|
+
* throwing.
|
|
59
|
+
*/
|
|
51
60
|
private getSystemPrompt;
|
|
61
|
+
/**
|
|
62
|
+
* Loop de tool calling no formato OpenAI. Serve tanto para a OpenAI quanto
|
|
63
|
+
* para o DeepSeek, que expõe a mesma API de `/chat/completions` (inclusive
|
|
64
|
+
* `tools`/`tool_calls`) — muda só a base URL, o modelo e a chave.
|
|
65
|
+
*/
|
|
52
66
|
private runOpenAiLoop;
|
|
53
67
|
private runGeminiLoop;
|
|
54
68
|
private toOpenAiMessages;
|
|
55
69
|
private toGeminiContents;
|
|
56
70
|
private assertOwnership;
|
|
71
|
+
/**
|
|
72
|
+
* Resolve credenciais e modelo do chat MCP a partir do perfil de integração
|
|
73
|
+
* apontado pela setting `mcp-ai-profile-id`.
|
|
74
|
+
*
|
|
75
|
+
* O `model` segue a mesma precedência do resto do codebase — aqui sem o degrau
|
|
76
|
+
* de `ai_instruction`, porque este fluxo não tem prompt de task próprio:
|
|
77
|
+
* `integration_profile.config.model` > constante de default do provider.
|
|
78
|
+
*/
|
|
57
79
|
private getProviderKey;
|
|
58
80
|
private buildOpenAiTools;
|
|
59
81
|
private buildGeminiTools;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp-chat.service.d.ts","sourceRoot":"","sources":["../../src/mcp-chat/mcp-chat.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAapD,OAAO,EAAE,kBAAkB,EAAE,MAAM,wCAAwC,CAAC;
|
|
1
|
+
{"version":3,"file":"mcp-chat.service.d.ts","sourceRoot":"","sources":["../../src/mcp-chat/mcp-chat.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAapD,OAAO,EAAE,kBAAkB,EAAE,MAAM,wCAAwC,CAAC;AAE5E,OAAO,EAAE,sBAAsB,EAAE,MAAM,6CAA6C,CAAC;AAMrF,OAAO,EAAE,kBAAkB,EAAgB,MAAM,6BAA6B,CAAC;AAE/E,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AA+NtE,qBACa,cAAc;IAKvB,OAAO,CAAC,QAAQ,CAAC,MAAM;IAEvB,OAAO,CAAC,QAAQ,CAAC,OAAO;IAExB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IAEzB,OAAO,CAAC,QAAQ,CAAC,aAAa;IAE9B,OAAO,CAAC,QAAQ,CAAC,WAAW;IAZ9B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAmC;gBAIvC,MAAM,EAAE,aAAa,EAErB,OAAO,EAAE,cAAc,EAEvB,QAAQ,EAAE,kBAAkB,EAE5B,aAAa,EAAE,sBAAsB,EAErC,WAAW,EAAE,kBAAkB;IAG5C,iBAAiB,CAAC,MAAM,EAAE,MAAM;;;;;;IAQhC,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,qBAAqB;;;;;;;IAS7D,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE;;;IAOjD,WAAW,CAAC,cAAc,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;;;;;;;;;;IAQlD,WAAW,CACf,cAAc,EAAE,MAAM,EACtB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM;;;;;;;;;;IAmEjB;;;;;;;;OAQG;YACW,eAAe;IAkB7B;;;;OAIG;YACW,aAAa;YA2Nb,aAAa;IA0L3B,OAAO,CAAC,gBAAgB;IA0CxB,OAAO,CAAC,gBAAgB;YAyDV,eAAe;IAa7B;;;;;;;OAOG;YACW,cAAc;YA6Dd,gBAAgB;YAShB,gBAAgB;YAmBhB,iBAAiB;YAoIjB,sBAAsB;IAyBpC,OAAO,CAAC,uBAAuB;IAa/B,OAAO,CAAC,eAAe;IAuCvB,OAAO,CAAC,mBAAmB;IAgB3B,OAAO,CAAC,aAAa;IAUrB,OAAO,CAAC,aAAa;IAIrB,OAAO,CAAC,gBAAgB;IAyCxB,OAAO,CAAC,mBAAmB;IAe3B,OAAO,CAAC,6BAA6B;IAwCrC,OAAO,CAAC,cAAc;IA6BtB,OAAO,CAAC,aAAa;IAWrB,OAAO,CAAC,uBAAuB;IA8B/B,OAAO,CAAC,2BAA2B;IAMnC,OAAO,CAAC,iCAAiC;IAwBzC,OAAO,CAAC,OAAO;IAIf,OAAO,CAAC,WAAW;IAInB,OAAO,CAAC,cAAc;IAetB,OAAO,CAAC,kBAAkB;IAM1B,OAAO,CAAC,kBAAkB;YAUZ,+BAA+B;IAkB7C,OAAO,CAAC,oBAAoB;CAsB7B"}
|
|
@@ -21,10 +21,19 @@ const api_prisma_1 = require("@hed-hog/api-prisma");
|
|
|
21
21
|
const common_1 = require("@nestjs/common");
|
|
22
22
|
const axios_1 = __importDefault(require("axios"));
|
|
23
23
|
const ai_execution_service_1 = require("../ai-instruction/ai-execution.service");
|
|
24
|
+
const ai_instruction_service_1 = require("../ai-instruction/ai-instruction.service");
|
|
24
25
|
const ai_prompt_builder_service_1 = require("../ai-instruction/ai-prompt-builder.service");
|
|
25
26
|
const integration_profile_utils_1 = require("../integration-profile/integration-profile.utils");
|
|
26
27
|
const mcp_registry_service_1 = require("../mcp/mcp-registry.service");
|
|
27
28
|
const setting_service_1 = require("../setting/setting.service");
|
|
29
|
+
const OPENAI_API_BASE_URL = 'https://api.openai.com/v1';
|
|
30
|
+
/**
|
|
31
|
+
* Modelos usados quando o perfil de integração não declara `config.model`.
|
|
32
|
+
* São o comportamento histórico do chat MCP, de quando o modelo era literal:
|
|
33
|
+
* mudar aqui muda o padrão de toda instalação que ainda não preencheu o campo.
|
|
34
|
+
*/
|
|
35
|
+
const OPENAI_CHAT_MODEL = 'gpt-4o-mini';
|
|
36
|
+
const GEMINI_CHAT_MODEL = 'gemini-2.0-flash';
|
|
28
37
|
const MAX_OPENAI_TOOLS = 128;
|
|
29
38
|
const TARGET_SELECTED_TOOLS = 112;
|
|
30
39
|
const MAX_ITERATIONS = 20;
|
|
@@ -34,11 +43,6 @@ const HISTORY_MESSAGE_LIMIT = 40;
|
|
|
34
43
|
const FORCE_FINISH_THRESHOLD = 2;
|
|
35
44
|
const MIN_DOMAIN_CONFIDENCE = 2;
|
|
36
45
|
const AMBIGUOUS_DOMAIN_DELTA = 1;
|
|
37
|
-
// SYSTEM_PROMPT is now managed via AiInstructionService (slug: system.global).
|
|
38
|
-
// This fallback is used only if the DB is unreachable during startup.
|
|
39
|
-
const SYSTEM_PROMPT_FALLBACK = 'You are a helpful assistant with access to tools from the HedHog system. ' +
|
|
40
|
-
"Use the available tools to answer the user's questions accurately. " +
|
|
41
|
-
'Always respond in the same language the user writes in.';
|
|
42
46
|
const sanitize = (n) => n.replace(/\./g, '__');
|
|
43
47
|
const restore = (n) => n.replace(/__/g, '.');
|
|
44
48
|
const DOMAIN_KEYWORDS = {
|
|
@@ -221,7 +225,7 @@ let McpChatService = McpChatService_1 = class McpChatService {
|
|
|
221
225
|
throw new common_1.BadRequestException('MCP server is disabled.');
|
|
222
226
|
}
|
|
223
227
|
await this.assertOwnership(conversationId, userId);
|
|
224
|
-
const { provider, apiKey } = await this.getProviderKey();
|
|
228
|
+
const { provider, apiKey, baseUrl, model } = await this.getProviderKey();
|
|
225
229
|
// Save user message
|
|
226
230
|
await this.prisma.mcp_conversation_message.create({
|
|
227
231
|
data: {
|
|
@@ -248,28 +252,44 @@ let McpChatService = McpChatService_1 = class McpChatService {
|
|
|
248
252
|
});
|
|
249
253
|
try {
|
|
250
254
|
if (provider === 'gemini') {
|
|
251
|
-
return await this.runGeminiLoop(conversationId, userId, locale, message, apiKey, executionId);
|
|
255
|
+
return await this.runGeminiLoop(conversationId, userId, locale, message, apiKey, executionId, model);
|
|
252
256
|
}
|
|
253
|
-
return await this.runOpenAiLoop(conversationId, userId, locale, message, apiKey, executionId);
|
|
257
|
+
return await this.runOpenAiLoop(conversationId, userId, locale, message, apiKey, executionId, provider, baseUrl, model);
|
|
254
258
|
}
|
|
255
259
|
catch (err) {
|
|
256
260
|
await this.aiExecution.finish(executionId, 'failed', String(err));
|
|
257
261
|
throw err;
|
|
258
262
|
}
|
|
259
263
|
}
|
|
260
|
-
|
|
264
|
+
/**
|
|
265
|
+
* Composes the system prompt from the stored layers.
|
|
266
|
+
*
|
|
267
|
+
* `moduleSlug`/`agentSlug` activate the L3/L4 layers; without them the seeded
|
|
268
|
+
* `module.*` and `agent.*` instructions are never read. `SYSTEM_PROMPT_FALLBACK`
|
|
269
|
+
* used to be duplicated here — it now comes from `AiInstructionService`, which
|
|
270
|
+
* already falls back internally, so this only guards against the whole build
|
|
271
|
+
* throwing.
|
|
272
|
+
*/
|
|
273
|
+
async getSystemPrompt(locale, context) {
|
|
261
274
|
try {
|
|
262
275
|
const built = await this.promptBuilder.build({
|
|
263
276
|
locale,
|
|
277
|
+
moduleSlug: context === null || context === void 0 ? void 0 : context.moduleSlug,
|
|
278
|
+
agentSlug: context === null || context === void 0 ? void 0 : context.agentSlug,
|
|
264
279
|
});
|
|
265
|
-
return built.systemPrompt ||
|
|
280
|
+
return built.systemPrompt || ai_instruction_service_1.FALLBACK_SYSTEM_PROMPT;
|
|
266
281
|
}
|
|
267
282
|
catch (_a) {
|
|
268
|
-
return
|
|
283
|
+
return ai_instruction_service_1.FALLBACK_SYSTEM_PROMPT;
|
|
269
284
|
}
|
|
270
285
|
}
|
|
271
286
|
// ── OpenAI loop ──────────────────────────────────────────────────────────
|
|
272
|
-
|
|
287
|
+
/**
|
|
288
|
+
* Loop de tool calling no formato OpenAI. Serve tanto para a OpenAI quanto
|
|
289
|
+
* para o DeepSeek, que expõe a mesma API de `/chat/completions` (inclusive
|
|
290
|
+
* `tools`/`tool_calls`) — muda só a base URL, o modelo e a chave.
|
|
291
|
+
*/
|
|
292
|
+
async runOpenAiLoop(conversationId, userId, locale, message, apiKey, executionId, provider = 'openai', baseUrl = OPENAI_API_BASE_URL, model = OPENAI_CHAT_MODEL) {
|
|
273
293
|
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q;
|
|
274
294
|
const systemPrompt = await this.getSystemPrompt(locale);
|
|
275
295
|
const allHistory = await this.prisma.mcp_conversation_message.findMany({
|
|
@@ -287,6 +307,9 @@ let McpChatService = McpChatService_1 = class McpChatService {
|
|
|
287
307
|
];
|
|
288
308
|
const toolSelection = await this.buildOpenAiTools(message, conversationId, userId, history);
|
|
289
309
|
if (toolSelection.clarification) {
|
|
310
|
+
// Sem o finish a execução fica presa em `running` para sempre — o caminho
|
|
311
|
+
// Gemini já fechava aqui.
|
|
312
|
+
await this.aiExecution.finish(executionId, 'completed');
|
|
290
313
|
return this.recordAssistantAndReturnHistory(conversationId, toolSelection.clarification);
|
|
291
314
|
}
|
|
292
315
|
const tools = toolSelection.tools;
|
|
@@ -298,8 +321,8 @@ let McpChatService = McpChatService_1 = class McpChatService {
|
|
|
298
321
|
let response;
|
|
299
322
|
const stepStart = Date.now();
|
|
300
323
|
try {
|
|
301
|
-
response = await axios_1.default.post(
|
|
302
|
-
model
|
|
324
|
+
response = await axios_1.default.post(`${baseUrl}/chat/completions`, {
|
|
325
|
+
model,
|
|
303
326
|
messages: openAiMessages,
|
|
304
327
|
tools: !forceFinish && tools.length > 0 ? tools : undefined,
|
|
305
328
|
tool_choice: !forceFinish && tools.length > 0 ? 'auto' : undefined,
|
|
@@ -313,21 +336,22 @@ let McpChatService = McpChatService_1 = class McpChatService {
|
|
|
313
336
|
catch (err) {
|
|
314
337
|
const status = (_a = err === null || err === void 0 ? void 0 : err.response) === null || _a === void 0 ? void 0 : _a.status;
|
|
315
338
|
const errBody = (_c = (_b = err === null || err === void 0 ? void 0 : err.response) === null || _b === void 0 ? void 0 : _b.data) === null || _c === void 0 ? void 0 : _c.error;
|
|
339
|
+
const providerName = provider === 'deepseek' ? 'DeepSeek' : 'OpenAI';
|
|
316
340
|
if (status === 429) {
|
|
317
|
-
throw new common_1.HttpException((_d = errBody === null || errBody === void 0 ? void 0 : errBody.message) !== null && _d !== void 0 ? _d :
|
|
341
|
+
throw new common_1.HttpException((_d = errBody === null || errBody === void 0 ? void 0 : errBody.message) !== null && _d !== void 0 ? _d : `${providerName} rate limit exceeded. Please try again later.`, common_1.HttpStatus.TOO_MANY_REQUESTS);
|
|
318
342
|
}
|
|
319
343
|
if (status === 401) {
|
|
320
|
-
throw new common_1.BadRequestException(
|
|
344
|
+
throw new common_1.BadRequestException(`Invalid ${providerName} API key.`);
|
|
321
345
|
}
|
|
322
|
-
throw new common_1.HttpException((_e = errBody === null || errBody === void 0 ? void 0 : errBody.message) !== null && _e !== void 0 ? _e :
|
|
346
|
+
throw new common_1.HttpException((_e = errBody === null || errBody === void 0 ? void 0 : errBody.message) !== null && _e !== void 0 ? _e : `${providerName} API error.`, status !== null && status !== void 0 ? status : common_1.HttpStatus.BAD_GATEWAY);
|
|
323
347
|
}
|
|
324
348
|
const usage = (_f = response.data) === null || _f === void 0 ? void 0 : _f.usage;
|
|
325
349
|
await this.aiExecution.recordStep({
|
|
326
350
|
executionId,
|
|
327
351
|
stepOrder: stepOrder++,
|
|
328
352
|
type: 'prompt',
|
|
329
|
-
provider
|
|
330
|
-
model
|
|
353
|
+
provider,
|
|
354
|
+
model,
|
|
331
355
|
durationMs: Date.now() - stepStart,
|
|
332
356
|
usage: usage
|
|
333
357
|
? { input: (_g = usage.prompt_tokens) !== null && _g !== void 0 ? _g : 0, output: (_h = usage.completion_tokens) !== null && _h !== void 0 ? _h : 0, total: (_j = usage.total_tokens) !== null && _j !== void 0 ? _j : 0 }
|
|
@@ -438,8 +462,11 @@ let McpChatService = McpChatService_1 = class McpChatService {
|
|
|
438
462
|
throw new common_1.BadRequestException('Maximum tool call iterations exceeded.');
|
|
439
463
|
}
|
|
440
464
|
// ── Gemini loop ──────────────────────────────────────────────────────────
|
|
441
|
-
async runGeminiLoop(conversationId, userId, locale, message, apiKey, executionId) {
|
|
465
|
+
async runGeminiLoop(conversationId, userId, locale, message, apiKey, executionId, model = GEMINI_CHAT_MODEL) {
|
|
442
466
|
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r;
|
|
467
|
+
// O perfil pode trazer o nome no formato da API ("models/gemini-2.0-flash");
|
|
468
|
+
// a URL abaixo já inclui o segmento `/models/`.
|
|
469
|
+
const modelId = model.replace(/^models\//, '');
|
|
443
470
|
const systemPrompt = await this.getSystemPrompt(locale);
|
|
444
471
|
const allHistory = await this.prisma.mcp_conversation_message.findMany({
|
|
445
472
|
where: { conversation_id: conversationId },
|
|
@@ -463,7 +490,7 @@ let McpChatService = McpChatService_1 = class McpChatService {
|
|
|
463
490
|
let response;
|
|
464
491
|
const stepStart = Date.now();
|
|
465
492
|
try {
|
|
466
|
-
response = await axios_1.default.post(`https://generativelanguage.googleapis.com/v1beta/models
|
|
493
|
+
response = await axios_1.default.post(`https://generativelanguage.googleapis.com/v1beta/models/${encodeURIComponent(modelId)}:generateContent?key=${apiKey}`, {
|
|
467
494
|
systemInstruction: { parts: [{ text: systemPrompt }] },
|
|
468
495
|
contents: geminiContents,
|
|
469
496
|
tools: !forceFinish && functionDeclarations.length > 0
|
|
@@ -491,7 +518,7 @@ let McpChatService = McpChatService_1 = class McpChatService {
|
|
|
491
518
|
stepOrder: stepOrder++,
|
|
492
519
|
type: 'prompt',
|
|
493
520
|
provider: 'gemini',
|
|
494
|
-
model:
|
|
521
|
+
model: modelId,
|
|
495
522
|
durationMs: Date.now() - stepStart,
|
|
496
523
|
usage: geminiUsage
|
|
497
524
|
? { input: (_k = geminiUsage.promptTokenCount) !== null && _k !== void 0 ? _k : 0, output: (_l = geminiUsage.candidatesTokenCount) !== null && _l !== void 0 ? _l : 0, total: (_m = geminiUsage.totalTokenCount) !== null && _m !== void 0 ? _m : 0 }
|
|
@@ -674,6 +701,14 @@ let McpChatService = McpChatService_1 = class McpChatService {
|
|
|
674
701
|
throw new common_1.ForbiddenException('Access denied to this conversation.');
|
|
675
702
|
}
|
|
676
703
|
}
|
|
704
|
+
/**
|
|
705
|
+
* Resolve credenciais e modelo do chat MCP a partir do perfil de integração
|
|
706
|
+
* apontado pela setting `mcp-ai-profile-id`.
|
|
707
|
+
*
|
|
708
|
+
* O `model` segue a mesma precedência do resto do codebase — aqui sem o degrau
|
|
709
|
+
* de `ai_instruction`, porque este fluxo não tem prompt de task próprio:
|
|
710
|
+
* `integration_profile.config.model` > constante de default do provider.
|
|
711
|
+
*/
|
|
677
712
|
async getProviderKey() {
|
|
678
713
|
var _a;
|
|
679
714
|
const settings = await this.setting.getSettingValues(['mcp-ai-profile-id']);
|
|
@@ -689,11 +724,32 @@ let McpChatService = McpChatService_1 = class McpChatService {
|
|
|
689
724
|
throw new common_1.BadRequestException(`MCP AI profile "${profileSlug}" not found.`);
|
|
690
725
|
}
|
|
691
726
|
const providerSlug = profile.integration_provider.slug;
|
|
692
|
-
const { apiKey } = (0, integration_profile_utils_1.buildAiConfigFromIntegration)(providerSlug, profile.config);
|
|
727
|
+
const { apiKey, model, baseUrl } = (0, integration_profile_utils_1.buildAiConfigFromIntegration)(providerSlug, profile.config);
|
|
693
728
|
if (!apiKey) {
|
|
694
729
|
throw new common_1.BadRequestException(`MCP AI profile "${profileSlug}" has no API key configured.`);
|
|
695
730
|
}
|
|
696
|
-
|
|
731
|
+
if (providerSlug === 'gemini') {
|
|
732
|
+
return {
|
|
733
|
+
provider: 'gemini',
|
|
734
|
+
apiKey,
|
|
735
|
+
baseUrl: '',
|
|
736
|
+
model: model || GEMINI_CHAT_MODEL,
|
|
737
|
+
};
|
|
738
|
+
}
|
|
739
|
+
if (providerSlug === 'deepseek') {
|
|
740
|
+
return {
|
|
741
|
+
provider: 'deepseek',
|
|
742
|
+
apiKey,
|
|
743
|
+
baseUrl: baseUrl || integration_profile_utils_1.DEEPSEEK_API_BASE_URL,
|
|
744
|
+
model: model || integration_profile_utils_1.DEEPSEEK_DEFAULT_MODEL,
|
|
745
|
+
};
|
|
746
|
+
}
|
|
747
|
+
return {
|
|
748
|
+
provider: 'openai',
|
|
749
|
+
apiKey,
|
|
750
|
+
baseUrl: OPENAI_API_BASE_URL,
|
|
751
|
+
model: model || OPENAI_CHAT_MODEL,
|
|
752
|
+
};
|
|
697
753
|
}
|
|
698
754
|
async buildOpenAiTools(message, conversationId, userId, history) {
|
|
699
755
|
return this.selectOpenAiTools(message, conversationId, userId, history);
|