@hed-hog/core 0.0.399 → 0.0.400
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/dist/ai/ai-agent.sort.d.ts +6 -0
- package/dist/ai/ai-agent.sort.d.ts.map +1 -0
- package/dist/ai/ai-agent.sort.js +21 -0
- package/dist/ai/ai-agent.sort.js.map +1 -0
- package/dist/ai/ai.controller.d.ts +4 -4
- package/dist/ai/ai.service.d.ts +35 -4
- package/dist/ai/ai.service.d.ts.map +1 -1
- package/dist/ai/ai.service.js +51 -137
- package/dist/ai/ai.service.js.map +1 -1
- package/dist/ai-instruction/ai-instruction.service.d.ts.map +1 -1
- package/dist/ai-instruction/ai-instruction.service.js +26 -23
- package/dist/ai-instruction/ai-instruction.service.js.map +1 -1
- package/dist/ai-instruction/ai-instruction.sort.d.ts +16 -0
- package/dist/ai-instruction/ai-instruction.sort.d.ts.map +1 -0
- package/dist/ai-instruction/ai-instruction.sort.js +32 -0
- package/dist/ai-instruction/ai-instruction.sort.js.map +1 -0
- package/dist/auth/auth.controller.d.ts +24 -8
- package/dist/auth/auth.controller.d.ts.map +1 -1
- package/dist/auth/auth.module.d.ts.map +1 -1
- package/dist/auth/auth.module.js +8 -1
- package/dist/auth/auth.module.js.map +1 -1
- package/dist/auth/auth.service.d.ts +72 -25
- package/dist/auth/auth.service.d.ts.map +1 -1
- package/dist/auth/auth.service.js +41 -4
- package/dist/auth/auth.service.js.map +1 -1
- package/dist/auth/guards/auth.guard.d.ts +3 -1
- package/dist/auth/guards/auth.guard.d.ts.map +1 -1
- package/dist/auth/guards/auth.guard.js +12 -3
- package/dist/auth/guards/auth.guard.js.map +1 -1
- package/dist/authorize/authorize.controller.d.ts +29 -5
- package/dist/authorize/authorize.controller.d.ts.map +1 -1
- package/dist/authorize/authorize.controller.js +120 -13
- package/dist/authorize/authorize.controller.js.map +1 -1
- package/dist/authorize/authorize.errors.d.ts +34 -0
- package/dist/authorize/authorize.errors.d.ts.map +1 -0
- package/dist/authorize/authorize.errors.js +37 -0
- package/dist/authorize/authorize.errors.js.map +1 -0
- package/dist/authorize/authorize.module.d.ts.map +1 -1
- package/dist/authorize/authorize.module.js +6 -1
- package/dist/authorize/authorize.module.js.map +1 -1
- package/dist/authorize/authorize.service.d.ts +77 -3
- package/dist/authorize/authorize.service.d.ts.map +1 -1
- package/dist/authorize/authorize.service.js +212 -21
- package/dist/authorize/authorize.service.js.map +1 -1
- package/dist/authorize/dto/authorize-info.dto.d.ts +10 -1
- package/dist/authorize/dto/authorize-info.dto.d.ts.map +1 -1
- package/dist/authorize/dto/authorize-info.dto.js +16 -1
- package/dist/authorize/dto/authorize-info.dto.js.map +1 -1
- package/dist/authorize/dto/consent.dto.d.ts +10 -1
- package/dist/authorize/dto/consent.dto.d.ts.map +1 -1
- package/dist/authorize/dto/consent.dto.js +16 -1
- package/dist/authorize/dto/consent.dto.js.map +1 -1
- package/dist/authorize/dto/token.dto.d.ts +12 -0
- package/dist/authorize/dto/token.dto.d.ts.map +1 -1
- package/dist/authorize/dto/token.dto.js +21 -1
- package/dist/authorize/dto/token.dto.js.map +1 -1
- package/dist/authorize/oauth-exception.filter.d.ts +17 -0
- package/dist/authorize/oauth-exception.filter.d.ts.map +1 -0
- package/dist/authorize/oauth-exception.filter.js +54 -0
- package/dist/authorize/oauth-exception.filter.js.map +1 -0
- package/dist/authorize/oauth-metadata.service.d.ts +39 -0
- package/dist/authorize/oauth-metadata.service.d.ts.map +1 -0
- package/dist/authorize/oauth-metadata.service.js +81 -0
- package/dist/authorize/oauth-metadata.service.js.map +1 -0
- package/dist/authorize/well-known.controller.d.ts +67 -0
- package/dist/authorize/well-known.controller.d.ts.map +1 -0
- package/dist/authorize/well-known.controller.js +126 -0
- package/dist/authorize/well-known.controller.js.map +1 -0
- package/dist/captcha/captcha.service.d.ts +32 -2
- package/dist/captcha/captcha.service.d.ts.map +1 -1
- package/dist/captcha/captcha.service.js +85 -12
- package/dist/captcha/captcha.service.js.map +1 -1
- package/dist/challenge/challenge.service.d.ts +2 -2
- package/dist/core.module.d.ts.map +1 -1
- package/dist/core.module.js +6 -0
- package/dist/core.module.js.map +1 -1
- package/dist/dashboard/dashboard/dashboard.controller.d.ts +9 -9
- package/dist/dashboard/dashboard/dashboard.service.d.ts +9 -9
- package/dist/dashboard/dashboard-component/dashboard-component.controller.d.ts +3 -3
- package/dist/dashboard/dashboard-component/dashboard-component.service.d.ts +3 -3
- package/dist/dashboard/dashboard-component-role/dashboard-component-role.controller.d.ts +3 -3
- package/dist/dashboard/dashboard-component-role/dashboard-component-role.service.d.ts +3 -3
- package/dist/dashboard/dashboard-component-role/dashboard-component-role.service.d.ts.map +1 -1
- package/dist/dashboard/dashboard-component-role/dashboard-component-role.service.js +2 -4
- package/dist/dashboard/dashboard-component-role/dashboard-component-role.service.js.map +1 -1
- package/dist/dashboard/dashboard-component-role/dashboard-component-role.sort.d.ts +8 -0
- package/dist/dashboard/dashboard-component-role/dashboard-component-role.sort.d.ts.map +1 -0
- package/dist/dashboard/dashboard-component-role/dashboard-component-role.sort.js +18 -0
- package/dist/dashboard/dashboard-component-role/dashboard-component-role.sort.js.map +1 -0
- package/dist/dashboard/dashboard-item/dashboard-item.service.d.ts.map +1 -1
- package/dist/dashboard/dashboard-item/dashboard-item.service.js +2 -4
- package/dist/dashboard/dashboard-item/dashboard-item.service.js.map +1 -1
- package/dist/dashboard/dashboard-item/dashboard-item.sort.d.ts +9 -0
- package/dist/dashboard/dashboard-item/dashboard-item.sort.d.ts.map +1 -0
- package/dist/dashboard/dashboard-item/dashboard-item.sort.js +19 -0
- package/dist/dashboard/dashboard-item/dashboard-item.sort.js.map +1 -0
- package/dist/dashboard/dashboard-role/dashboard-role.controller.d.ts +3 -3
- package/dist/dashboard/dashboard-role/dashboard-role.service.d.ts +3 -3
- package/dist/dashboard/dashboard-role/dashboard-role.service.d.ts.map +1 -1
- package/dist/dashboard/dashboard-role/dashboard-role.service.js +2 -4
- package/dist/dashboard/dashboard-role/dashboard-role.service.js.map +1 -1
- package/dist/dashboard/dashboard-role/dashboard-role.sort.d.ts +8 -0
- package/dist/dashboard/dashboard-role/dashboard-role.sort.d.ts.map +1 -0
- package/dist/dashboard/dashboard-role/dashboard-role.sort.js +16 -0
- package/dist/dashboard/dashboard-role/dashboard-role.sort.js.map +1 -0
- package/dist/file/file-upload-ticket.service.d.ts +160 -0
- package/dist/file/file-upload-ticket.service.d.ts.map +1 -0
- package/dist/file/file-upload-ticket.service.js +382 -0
- package/dist/file/file-upload-ticket.service.js.map +1 -0
- package/dist/file/file.controller.d.ts +24 -1
- package/dist/file/file.controller.d.ts.map +1 -1
- package/dist/file/file.controller.js +63 -2
- package/dist/file/file.controller.js.map +1 -1
- package/dist/file/file.module.d.ts.map +1 -1
- package/dist/file/file.module.js +14 -2
- package/dist/file/file.module.js.map +1 -1
- package/dist/file/file.service.d.ts +182 -6
- package/dist/file/file.service.d.ts.map +1 -1
- package/dist/file/file.service.js +386 -54
- package/dist/file/file.service.js.map +1 -1
- package/dist/file/filename-encoding.util.d.ts +24 -0
- package/dist/file/filename-encoding.util.d.ts.map +1 -0
- package/dist/file/filename-encoding.util.js +63 -0
- package/dist/file/filename-encoding.util.js.map +1 -0
- package/dist/file/image-optimization.service.d.ts +27 -0
- package/dist/file/image-optimization.service.d.ts.map +1 -1
- package/dist/file/image-optimization.service.js +63 -14
- package/dist/file/image-optimization.service.js.map +1 -1
- package/dist/file/mcp-file-source.schema.d.ts +33 -0
- package/dist/file/mcp-file-source.schema.d.ts.map +1 -0
- package/dist/file/mcp-file-source.schema.js +75 -0
- package/dist/file/mcp-file-source.schema.js.map +1 -0
- package/dist/file/mcp-file-source.service.d.ts +124 -0
- package/dist/file/mcp-file-source.service.d.ts.map +1 -0
- package/dist/file/mcp-file-source.service.js +262 -0
- package/dist/file/mcp-file-source.service.js.map +1 -0
- package/dist/file/mimetype-sniff.util.d.ts +62 -0
- package/dist/file/mimetype-sniff.util.d.ts.map +1 -0
- package/dist/file/mimetype-sniff.util.js +226 -0
- package/dist/file/mimetype-sniff.util.js.map +1 -0
- package/dist/file/remote-fetch.util.d.ts +35 -0
- package/dist/file/remote-fetch.util.d.ts.map +1 -0
- package/dist/file/remote-fetch.util.js +236 -0
- package/dist/file/remote-fetch.util.js.map +1 -0
- package/dist/impersonation/dto/start-impersonation.dto.d.ts +4 -1
- package/dist/impersonation/dto/start-impersonation.dto.d.ts.map +1 -1
- package/dist/impersonation/dto/start-impersonation.dto.js +1 -1
- package/dist/impersonation/dto/start-impersonation.dto.js.map +1 -1
- package/dist/impersonation/impersonation.service.d.ts +8 -3
- package/dist/impersonation/impersonation.service.d.ts.map +1 -1
- package/dist/impersonation/impersonation.service.js +14 -4
- package/dist/impersonation/impersonation.service.js.map +1 -1
- package/dist/incident/incident.controller.d.ts +2 -1
- package/dist/incident/incident.controller.d.ts.map +1 -1
- package/dist/incident/incident.controller.js +10 -6
- package/dist/incident/incident.controller.js.map +1 -1
- package/dist/incident/incident.service.d.ts +2 -0
- package/dist/incident/incident.service.d.ts.map +1 -1
- package/dist/incident/incident.service.js +4 -0
- package/dist/incident/incident.service.js.map +1 -1
- package/dist/index.d.ts +17 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +17 -0
- package/dist/index.js.map +1 -1
- package/dist/integration-profile/integration-profile.secrets.d.ts.map +1 -1
- package/dist/integration-profile/integration-profile.secrets.js +7 -0
- package/dist/integration-profile/integration-profile.secrets.js.map +1 -1
- package/dist/integration-profile/integration-profile.service.d.ts +0 -13
- package/dist/integration-profile/integration-profile.service.d.ts.map +1 -1
- package/dist/integration-profile/integration-profile.service.js +5 -40
- package/dist/integration-profile/integration-profile.service.js.map +1 -1
- package/dist/integration-profile/integration-profile.utils.js +5 -5
- package/dist/integration-profile/integration-profile.utils.js.map +1 -1
- package/dist/integration-profile/testers/index.d.ts.map +1 -1
- package/dist/integration-profile/testers/index.js +2 -0
- package/dist/integration-profile/testers/index.js.map +1 -1
- package/dist/integration-profile/testers/shipping.testers.d.ts +3 -0
- package/dist/integration-profile/testers/shipping.testers.d.ts.map +1 -0
- package/dist/integration-profile/testers/shipping.testers.js +71 -0
- package/dist/integration-profile/testers/shipping.testers.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/send.dto.d.ts +6 -1
- package/dist/mail/dto/send.dto.d.ts.map +1 -1
- package/dist/mail/dto/send.dto.js.map +1 -1
- package/dist/mail/mail.service.d.ts +9 -0
- package/dist/mail/mail.service.d.ts.map +1 -1
- package/dist/mail/mail.service.js +34 -14
- package/dist/mail/mail.service.js.map +1 -1
- package/dist/mail-sent/mail-sent.controller.d.ts +1 -1
- package/dist/mail-sent/mail-sent.service.d.ts +1 -1
- package/dist/mail-sent/mail-sent.service.d.ts.map +1 -1
- package/dist/mail-sent/mail-sent.service.js +2 -1
- package/dist/mail-sent/mail-sent.service.js.map +1 -1
- package/dist/mail-sent/mail-sent.sort.d.ts +9 -0
- package/dist/mail-sent/mail-sent.sort.d.ts.map +1 -0
- package/dist/mail-sent/mail-sent.sort.js +19 -0
- package/dist/mail-sent/mail-sent.sort.js.map +1 -0
- package/dist/mcp/filters/mcp-challenge.filter.d.ts +20 -0
- package/dist/mcp/filters/mcp-challenge.filter.d.ts.map +1 -0
- package/dist/mcp/filters/mcp-challenge.filter.js +69 -0
- package/dist/mcp/filters/mcp-challenge.filter.js.map +1 -0
- package/dist/mcp/guards/mcp-auth.guard.d.ts +4 -1
- package/dist/mcp/guards/mcp-auth.guard.d.ts.map +1 -1
- package/dist/mcp/guards/mcp-auth.guard.js +19 -5
- package/dist/mcp/guards/mcp-auth.guard.js.map +1 -1
- package/dist/mcp/guards/mcp-permission.guard.d.ts +25 -3
- package/dist/mcp/guards/mcp-permission.guard.d.ts.map +1 -1
- package/dist/mcp/guards/mcp-permission.guard.js +46 -26
- package/dist/mcp/guards/mcp-permission.guard.js.map +1 -1
- package/dist/mcp/mcp-audit.service.d.ts +17 -0
- package/dist/mcp/mcp-audit.service.d.ts.map +1 -1
- package/dist/mcp/mcp-audit.service.js +32 -3
- package/dist/mcp/mcp-audit.service.js.map +1 -1
- package/dist/mcp/mcp-permission.service.d.ts +64 -0
- package/dist/mcp/mcp-permission.service.d.ts.map +1 -0
- package/dist/mcp/mcp-permission.service.js +178 -0
- package/dist/mcp/mcp-permission.service.js.map +1 -0
- package/dist/mcp/mcp-server.service.d.ts +3 -1
- package/dist/mcp/mcp-server.service.d.ts.map +1 -1
- package/dist/mcp/mcp-server.service.js +36 -15
- package/dist/mcp/mcp-server.service.js.map +1 -1
- package/dist/mcp/mcp.controller.d.ts.map +1 -1
- package/dist/mcp/mcp.controller.js +10 -2
- package/dist/mcp/mcp.controller.js.map +1 -1
- package/dist/mcp/mcp.module.d.ts.map +1 -1
- package/dist/mcp/mcp.module.js +5 -1
- package/dist/mcp/mcp.module.js.map +1 -1
- package/dist/mcp/tools/core-ai.mcp-tools.js +2 -9
- package/dist/mcp/tools/core-ai.mcp-tools.js.map +1 -1
- package/dist/mcp/tools/core-dashboard-items.mcp-tools.js +1 -1
- package/dist/mcp/tools/core-dashboard-items.mcp-tools.js.map +1 -1
- package/dist/mcp/tools/core-dashboard.mcp-tools.js +2 -9
- package/dist/mcp/tools/core-dashboard.mcp-tools.js.map +1 -1
- package/dist/mcp/tools/core-event-webhooks.mcp-tools.d.ts.map +1 -1
- package/dist/mcp/tools/core-event-webhooks.mcp-tools.js +2 -10
- package/dist/mcp/tools/core-event-webhooks.mcp-tools.js.map +1 -1
- package/dist/mcp/tools/core-files.mcp-tools.d.ts +17 -5
- package/dist/mcp/tools/core-files.mcp-tools.d.ts.map +1 -1
- package/dist/mcp/tools/core-files.mcp-tools.js +186 -24
- package/dist/mcp/tools/core-files.mcp-tools.js.map +1 -1
- package/dist/mcp/tools/core-integration-events.mcp-tools.js +2 -9
- package/dist/mcp/tools/core-integration-events.mcp-tools.js.map +1 -1
- package/dist/mcp/tools/core-mail-sent.mcp-tools.js +2 -14
- package/dist/mcp/tools/core-mail-sent.mcp-tools.js.map +1 -1
- package/dist/mcp/tools/core-mail.mcp-tools.js +2 -9
- package/dist/mcp/tools/core-mail.mcp-tools.js.map +1 -1
- package/dist/mcp/tools/core-menus.mcp-tools.d.ts.map +1 -1
- package/dist/mcp/tools/core-menus.mcp-tools.js +2 -10
- package/dist/mcp/tools/core-menus.mcp-tools.js.map +1 -1
- package/dist/mcp/tools/core-notifications.mcp-tools.d.ts.map +1 -1
- package/dist/mcp/tools/core-notifications.mcp-tools.js +0 -1
- package/dist/mcp/tools/core-notifications.mcp-tools.js.map +1 -1
- package/dist/mcp/tools/core-roles.mcp-tools.d.ts.map +1 -1
- package/dist/mcp/tools/core-roles.mcp-tools.js +2 -13
- package/dist/mcp/tools/core-roles.mcp-tools.js.map +1 -1
- package/dist/mcp/tools/core-routes.mcp-tools.d.ts.map +1 -1
- package/dist/mcp/tools/core-routes.mcp-tools.js +2 -11
- package/dist/mcp/tools/core-routes.mcp-tools.js.map +1 -1
- package/dist/mcp/tools/core-screens.mcp-tools.d.ts.map +1 -1
- package/dist/mcp/tools/core-screens.mcp-tools.js +2 -11
- package/dist/mcp/tools/core-screens.mcp-tools.js.map +1 -1
- package/dist/mcp/tools/core-sessions.mcp-tools.d.ts.map +1 -1
- package/dist/mcp/tools/core-sessions.mcp-tools.js +0 -2
- package/dist/mcp/tools/core-sessions.mcp-tools.js.map +1 -1
- package/dist/mcp/tools/core-settings.mcp-tools.d.ts.map +1 -1
- package/dist/mcp/tools/core-settings.mcp-tools.js +2 -10
- package/dist/mcp/tools/core-settings.mcp-tools.js.map +1 -1
- package/dist/mcp/tools/core-users.mcp-tools.js +2 -9
- package/dist/mcp/tools/core-users.mcp-tools.js.map +1 -1
- package/dist/mcp/tools/core-webhooks.mcp-tools.d.ts.map +1 -1
- package/dist/mcp/tools/core-webhooks.mcp-tools.js +2 -10
- package/dist/mcp/tools/core-webhooks.mcp-tools.js.map +1 -1
- package/dist/mcp/types/mcp-context.type.d.ts +9 -0
- package/dist/mcp/types/mcp-context.type.d.ts.map +1 -1
- package/dist/mcp-chat/mcp-chat.service.d.ts.map +1 -1
- package/dist/mcp-chat/mcp-chat.service.js +8 -0
- package/dist/mcp-chat/mcp-chat.service.js.map +1 -1
- package/dist/meeting/meeting-provider.registry.d.ts +115 -0
- package/dist/meeting/meeting-provider.registry.d.ts.map +1 -1
- package/dist/meeting/meeting-provider.registry.js.map +1 -1
- package/dist/meeting/meeting.constants.d.ts +70 -0
- package/dist/meeting/meeting.constants.d.ts.map +1 -1
- package/dist/meeting/meeting.constants.js +9 -1
- package/dist/meeting/meeting.constants.js.map +1 -1
- package/dist/menu/menu.service.d.ts.map +1 -1
- package/dist/menu/menu.service.js +29 -9
- package/dist/menu/menu.service.js.map +1 -1
- package/dist/message-template/dto/update-message-template.dto.d.ts +18 -0
- package/dist/message-template/dto/update-message-template.dto.d.ts.map +1 -0
- package/dist/message-template/dto/update-message-template.dto.js +38 -0
- package/dist/message-template/dto/update-message-template.dto.js.map +1 -0
- package/dist/message-template/message-template-admin.service.d.ts +70 -0
- package/dist/message-template/message-template-admin.service.d.ts.map +1 -0
- package/dist/message-template/message-template-admin.service.js +226 -0
- package/dist/message-template/message-template-admin.service.js.map +1 -0
- package/dist/message-template/message-template.controller.d.ts +29 -0
- package/dist/message-template/message-template.controller.d.ts.map +1 -0
- package/dist/message-template/message-template.controller.js +101 -0
- package/dist/message-template/message-template.controller.js.map +1 -0
- package/dist/message-template/message-template.module.d.ts +10 -0
- package/dist/message-template/message-template.module.d.ts.map +1 -0
- package/dist/message-template/message-template.module.js +33 -0
- package/dist/message-template/message-template.module.js.map +1 -0
- package/dist/message-template/message-template.registry.d.ts +55 -0
- package/dist/message-template/message-template.registry.d.ts.map +1 -0
- package/dist/message-template/message-template.registry.js +64 -0
- package/dist/message-template/message-template.registry.js.map +1 -0
- package/dist/message-template/message-template.service.d.ts +59 -0
- package/dist/message-template/message-template.service.d.ts.map +1 -0
- package/dist/message-template/message-template.service.js +166 -0
- package/dist/message-template/message-template.service.js.map +1 -0
- package/dist/notification/notification.constants.d.ts +11 -0
- package/dist/notification/notification.constants.d.ts.map +1 -0
- package/dist/notification/notification.constants.js +14 -0
- package/dist/notification/notification.constants.js.map +1 -0
- package/dist/notification/notification.controller.d.ts +20 -20
- package/dist/notification/notification.module.d.ts.map +1 -1
- package/dist/notification/notification.module.js +3 -0
- package/dist/notification/notification.module.js.map +1 -1
- package/dist/notification/notification.service.d.ts +33 -21
- package/dist/notification/notification.service.d.ts.map +1 -1
- package/dist/notification/notification.service.js +36 -2
- package/dist/notification/notification.service.js.map +1 -1
- package/dist/oauth/oauth.controller.d.ts +4 -6
- package/dist/oauth/oauth.controller.d.ts.map +1 -1
- package/dist/oauth/oauth.controller.js +0 -1
- package/dist/oauth/oauth.controller.js.map +1 -1
- package/dist/oauth/oauth.errors.d.ts +15 -1
- package/dist/oauth/oauth.errors.d.ts.map +1 -1
- package/dist/oauth/oauth.errors.js +9 -1
- package/dist/oauth/oauth.errors.js.map +1 -1
- package/dist/oauth/oauth.module.d.ts.map +1 -1
- package/dist/oauth/oauth.module.js +6 -1
- package/dist/oauth/oauth.module.js.map +1 -1
- package/dist/oauth/oauth.service.d.ts +25 -5
- package/dist/oauth/oauth.service.d.ts.map +1 -1
- package/dist/oauth/oauth.service.js +63 -27
- package/dist/oauth/oauth.service.js.map +1 -1
- package/dist/oauth/providers/abstract.provider.d.ts +10 -0
- package/dist/oauth/providers/abstract.provider.d.ts.map +1 -1
- package/dist/oauth/providers/abstract.provider.js +39 -12
- package/dist/oauth/providers/abstract.provider.js.map +1 -1
- package/dist/oauth/providers/github.provider.d.ts +1 -1
- package/dist/oauth/providers/github.provider.d.ts.map +1 -1
- package/dist/oauth/providers/github.provider.js +48 -22
- package/dist/oauth/providers/github.provider.js.map +1 -1
- package/dist/oauth/providers/microsoft-entra-id.provider.d.ts.map +1 -1
- package/dist/oauth/providers/microsoft-entra-id.provider.js +6 -0
- package/dist/oauth/providers/microsoft-entra-id.provider.js.map +1 -1
- package/dist/observability/monitored-cron.d.ts +29 -12
- package/dist/observability/monitored-cron.d.ts.map +1 -1
- package/dist/observability/monitored-cron.js +131 -46
- package/dist/observability/monitored-cron.js.map +1 -1
- package/dist/pairing/pairing.service.d.ts +6 -2
- package/dist/pairing/pairing.service.d.ts.map +1 -1
- package/dist/profile/dto/change-password.dto.d.ts.map +1 -1
- package/dist/profile/dto/change-password.dto.js +4 -6
- package/dist/profile/dto/change-password.dto.js.map +1 -1
- package/dist/profile/profile.controller.d.ts +1 -1
- package/dist/profile/profile.service.d.ts +1 -1
- package/dist/profile/profile.service.d.ts.map +1 -1
- package/dist/profile/profile.service.js +9 -3
- package/dist/profile/profile.service.js.map +1 -1
- package/dist/realtime/realtime-tick.coalescer.d.ts +34 -0
- package/dist/realtime/realtime-tick.coalescer.d.ts.map +1 -0
- package/dist/realtime/realtime-tick.coalescer.js +60 -0
- package/dist/realtime/realtime-tick.coalescer.js.map +1 -0
- package/dist/realtime/realtime.service.d.ts +2 -0
- package/dist/realtime/realtime.service.d.ts.map +1 -1
- package/dist/realtime/realtime.service.js +22 -2
- package/dist/realtime/realtime.service.js.map +1 -1
- package/dist/redis/redis-kv.service.d.ts +90 -0
- package/dist/redis/redis-kv.service.d.ts.map +1 -0
- package/dist/redis/redis-kv.service.js +247 -0
- package/dist/redis/redis-kv.service.js.map +1 -0
- package/dist/redis/redis-master.d.ts +29 -0
- package/dist/redis/redis-master.d.ts.map +1 -0
- package/dist/redis/redis-master.js +81 -0
- package/dist/redis/redis-master.js.map +1 -0
- package/dist/redis/redis-pubsub.d.ts +12 -0
- package/dist/redis/redis-pubsub.d.ts.map +1 -1
- package/dist/redis/redis-pubsub.js +25 -2
- package/dist/redis/redis-pubsub.js.map +1 -1
- package/dist/redis/redis.module.d.ts +11 -0
- package/dist/redis/redis.module.d.ts.map +1 -0
- package/dist/redis/redis.module.js +30 -0
- package/dist/redis/redis.module.js.map +1 -0
- package/dist/session/session.controller.d.ts +6 -2
- package/dist/session/session.controller.d.ts.map +1 -1
- package/dist/session/session.service.d.ts +118 -15
- package/dist/session/session.service.d.ts.map +1 -1
- package/dist/session/session.service.js +251 -77
- package/dist/session/session.service.js.map +1 -1
- package/dist/setting/setting.controller.d.ts +5 -0
- package/dist/setting/setting.controller.d.ts.map +1 -1
- package/dist/setting/setting.service.d.ts +7 -0
- package/dist/setting/setting.service.d.ts.map +1 -1
- package/dist/setting/setting.service.js +38 -3
- package/dist/setting/setting.service.js.map +1 -1
- package/dist/task/task.service.d.ts +17 -0
- package/dist/task/task.service.d.ts.map +1 -1
- package/dist/task/task.service.js +48 -13
- package/dist/task/task.service.js.map +1 -1
- package/dist/token/token.service.d.ts +19 -1
- package/dist/token/token.service.d.ts.map +1 -1
- package/dist/token/token.service.js +39 -2
- package/dist/token/token.service.js.map +1 -1
- package/dist/user/user-credential.util.d.ts +10 -0
- package/dist/user/user-credential.util.d.ts.map +1 -1
- package/dist/user/user-credential.util.js +14 -1
- package/dist/user/user-credential.util.js.map +1 -1
- package/dist/user/user.service.d.ts +12 -4
- package/dist/user/user.service.d.ts.map +1 -1
- package/dist/user/user.service.js +2 -11
- package/dist/user/user.service.js.map +1 -1
- package/dist/user/user.sort.d.ts +16 -0
- package/dist/user/user.sort.d.ts.map +1 -0
- package/dist/user/user.sort.js +25 -0
- package/dist/user/user.sort.js.map +1 -0
- package/dist/utils/abbreviate-name.d.ts +13 -0
- package/dist/utils/abbreviate-name.d.ts.map +1 -0
- package/dist/utils/abbreviate-name.js +42 -0
- package/dist/utils/abbreviate-name.js.map +1 -0
- package/dist/utils/date-range-query.dto.d.ts +11 -0
- package/dist/utils/date-range-query.dto.d.ts.map +1 -0
- package/dist/utils/date-range-query.dto.js +63 -0
- package/dist/utils/date-range-query.dto.js.map +1 -0
- package/dist/utils/date-range.d.ts +96 -0
- package/dist/utils/date-range.d.ts.map +1 -0
- package/dist/utils/date-range.js +172 -0
- package/dist/utils/date-range.js.map +1 -0
- package/dist/webhook-integration/webhook-utils.d.ts.map +1 -1
- package/dist/webhook-integration/webhook-utils.js +24 -0
- package/dist/webhook-integration/webhook-utils.js.map +1 -1
- package/dist/whatsapp-sender/whatsapp-recipients.d.ts +49 -0
- package/dist/whatsapp-sender/whatsapp-recipients.d.ts.map +1 -0
- package/dist/whatsapp-sender/whatsapp-recipients.js +66 -0
- package/dist/whatsapp-sender/whatsapp-recipients.js.map +1 -0
- package/dist/whatsapp-sender/whatsapp-sender.service.d.ts +25 -0
- package/dist/whatsapp-sender/whatsapp-sender.service.d.ts.map +1 -1
- package/dist/whatsapp-sender/whatsapp-sender.service.js +46 -5
- package/dist/whatsapp-sender/whatsapp-sender.service.js.map +1 -1
- package/hedhog/data/integration_provider.yaml +9 -0
- package/hedhog/data/integration_type.yaml +6 -0
- package/hedhog/data/locale.yaml +0 -1
- package/hedhog/data/mail.yaml +2 -2
- package/hedhog/data/mail_layout.yaml +6 -3
- package/hedhog/data/menu.yaml +25 -5
- package/hedhog/data/route.yaml +140 -0
- package/hedhog/data/setting_group.yaml +137 -3
- package/hedhog/frontend/app/access-log/page.tsx.ejs +47 -53
- package/hedhog/frontend/app/account/components/active-sessions.tsx.ejs +33 -8
- package/hedhog/frontend/app/account/components/mcp-tokens.tsx.ejs +54 -13
- package/hedhog/frontend/app/account/components/mfa-method-card.tsx.ejs +7 -1
- package/hedhog/frontend/app/account/components/recovery-codes-dialog.tsx.ejs +1 -0
- package/hedhog/frontend/app/account/components/tokens.tsx.ejs +47 -17
- package/hedhog/frontend/app/ai_agent/page.tsx.ejs +46 -5
- package/hedhog/frontend/app/ai_instruction/_components/ai-instruction-form.tsx.ejs +101 -30
- package/hedhog/frontend/app/ai_instruction/_components/ai-instruction-versions.tsx.ejs +24 -8
- package/hedhog/frontend/app/ai_instruction/page.tsx.ejs +80 -15
- package/hedhog/frontend/app/configurations/[slug]/components/image-optimization-action.tsx.ejs +166 -0
- package/hedhog/frontend/app/configurations/[slug]/components/setting-field.test.tsx.ejs +145 -45
- package/hedhog/frontend/app/configurations/[slug]/components/setting-field.tsx.ejs +99 -219
- package/hedhog/frontend/app/configurations/[slug]/page.tsx.ejs +19 -1
- package/hedhog/frontend/app/configurations/layout.tsx.ejs +19 -5
- package/hedhog/frontend/app/dashboard/[slug]/widget-renderer.tsx.ejs +2 -8
- package/hedhog/frontend/app/dashboard/components/dynamic-widget.tsx.ejs +3 -0
- package/hedhog/frontend/app/dashboard/components/widget-wrapper.tsx.ejs +4 -0
- package/hedhog/frontend/app/dashboard/dashboard-home-tabs.tsx.ejs +43 -44
- package/hedhog/frontend/app/dashboard/management/tabs/component-roles-tab.tsx.ejs +41 -3
- package/hedhog/frontend/app/dashboard/management/tabs/components-tab.tsx.ejs +42 -2
- package/hedhog/frontend/app/dashboard/management/tabs/dashboard-roles-tab.tsx.ejs +41 -3
- package/hedhog/frontend/app/dashboard/management/tabs/dashboards-tab.tsx.ejs +39 -4
- package/hedhog/frontend/app/dashboard/management/tabs/items-tab.tsx.ejs +42 -3
- package/hedhog/frontend/app/incidents/page.tsx.ejs +60 -31
- package/hedhog/frontend/app/integration/profiles/page.tsx.ejs +45 -5
- package/hedhog/frontend/app/integrations-webhooks/page.tsx.ejs +92 -15
- package/hedhog/frontend/app/mail/log/page.tsx.ejs +109 -61
- package/hedhog/frontend/app/mail/template/page.tsx.ejs +125 -23
- package/hedhog/frontend/app/mcp_chat/chat-components.tsx.ejs +13 -15
- package/hedhog/frontend/app/mcp_chat/page.tsx.ejs +116 -110
- package/hedhog/frontend/app/message-templates/_components/message-template-sheet.tsx.ejs +245 -0
- package/hedhog/frontend/app/message-templates/_lib/types.ts.ejs +24 -0
- package/hedhog/frontend/app/message-templates/page.tsx.ejs +182 -0
- package/hedhog/frontend/app/pages/_components/page-wizard-sheet.tsx.ejs +1 -0
- package/hedhog/frontend/app/pages/page.tsx.ejs +94 -9
- package/hedhog/frontend/app/roles/menus.tsx.ejs +4 -4
- package/hedhog/frontend/app/roles/routes.tsx.ejs +4 -4
- package/hedhog/frontend/app/roles/users.tsx.ejs +4 -4
- package/hedhog/frontend/app/setting-list/page.tsx.ejs +71 -9
- package/hedhog/frontend/app/users/page.tsx.ejs +77 -67
- package/hedhog/frontend/messages/en.json +183 -36
- package/hedhog/frontend/messages/pt.json +183 -36
- package/hedhog/table/cron_lock.yaml +17 -0
- package/hedhog/table/file.yaml +13 -1
- package/hedhog/table/file_upload_chunk.yaml +23 -0
- package/hedhog/table/file_upload_ticket.yaml +67 -0
- package/hedhog/table/mcp_tool_call_log.yaml +30 -22
- package/hedhog/table/message_template.yaml +33 -0
- package/hedhog/table/setting.yaml +8 -0
- package/hedhog/table/user_session.yaml +36 -1
- package/package.json +7 -5
- package/src/ai/ai-agent.sort.ts +21 -0
- package/src/ai/ai.service.spec.ts +173 -1
- package/src/ai/ai.service.ts +64 -193
- package/src/ai-instruction/ai-instruction.service.ts +32 -28
- package/src/ai-instruction/ai-instruction.sort.ts +32 -0
- package/src/auth/auth.module.ts +8 -1
- package/src/auth/auth.service.spec.ts +108 -1
- package/src/auth/auth.service.ts +59 -5
- package/src/auth/guards/auth.guard.ts +9 -1
- package/src/authorize/authorize.controller.ts +126 -11
- package/src/authorize/authorize.errors.ts +55 -0
- package/src/authorize/authorize.module.ts +6 -1
- package/src/authorize/authorize.service.spec.ts +379 -7
- package/src/authorize/authorize.service.ts +309 -23
- package/src/authorize/dto/authorize-info.dto.ts +21 -3
- package/src/authorize/dto/consent.dto.ts +21 -3
- package/src/authorize/dto/token.dto.ts +24 -2
- package/src/authorize/oauth-exception.filter.ts +58 -0
- package/src/authorize/oauth-metadata.service.ts +67 -0
- package/src/authorize/well-known.controller.spec.ts +84 -0
- package/src/authorize/well-known.controller.ts +96 -0
- package/src/captcha/captcha.service.spec.ts +211 -4
- package/src/captcha/captcha.service.ts +127 -10
- package/src/core.module.ts +6 -0
- package/src/dashboard/dashboard-component-role/dashboard-component-role.service.ts +2 -3
- package/src/dashboard/dashboard-component-role/dashboard-component-role.sort.ts +18 -0
- package/src/dashboard/dashboard-item/dashboard-item.service.ts +2 -3
- package/src/dashboard/dashboard-item/dashboard-item.sort.ts +19 -0
- package/src/dashboard/dashboard-role/dashboard-role.service.ts +2 -3
- package/src/dashboard/dashboard-role/dashboard-role.sort.ts +16 -0
- package/src/file/file-upload-ticket.service.spec.ts +422 -0
- package/src/file/file-upload-ticket.service.ts +513 -0
- package/src/file/file.controller.ts +65 -0
- package/src/file/file.module.ts +14 -2
- package/src/file/file.service.spec.ts +94 -0
- package/src/file/file.service.ts +433 -53
- package/src/file/filename-encoding.util.spec.ts +54 -0
- package/src/file/filename-encoding.util.ts +67 -0
- package/src/file/image-optimization.service.spec.ts +156 -19
- package/src/file/image-optimization.service.ts +106 -21
- package/src/file/mcp-file-source.schema.ts +83 -0
- package/src/file/mcp-file-source.service.spec.ts +473 -0
- package/src/file/mcp-file-source.service.ts +445 -0
- package/src/file/mimetype-sniff.util.spec.ts +126 -0
- package/src/file/mimetype-sniff.util.ts +265 -0
- package/src/file/remote-fetch.util.spec.ts +117 -0
- package/src/file/remote-fetch.util.ts +330 -0
- package/src/impersonation/dto/start-impersonation.dto.ts +5 -2
- package/src/impersonation/impersonation.service.spec.ts +24 -1
- package/src/impersonation/impersonation.service.ts +14 -4
- package/src/incident/incident.controller.ts +9 -1
- package/src/incident/incident.service.ts +7 -0
- package/src/index.ts +17 -0
- package/src/integration-profile/integration-profile.secrets.ts +7 -0
- package/src/integration-profile/integration-profile.service.ts +7 -64
- package/src/integration-profile/integration-profile.utils.spec.ts +9 -0
- package/src/integration-profile/integration-profile.utils.ts +5 -5
- package/src/integration-profile/testers/index.ts +2 -0
- package/src/integration-profile/testers/remaining.testers.spec.ts +79 -0
- package/src/integration-profile/testers/shipping.testers.ts +94 -0
- package/src/mail/dto/send.dto.ts +6 -1
- package/src/mail/mail-template.spec.ts +58 -1
- package/src/mail/mail.service.spec.ts +112 -0
- package/src/mail/mail.service.ts +42 -4
- package/src/mail-sent/mail-sent.service.ts +3 -0
- package/src/mail-sent/mail-sent.sort.ts +19 -0
- package/src/mcp/filters/mcp-challenge.filter.spec.ts +76 -0
- package/src/mcp/filters/mcp-challenge.filter.ts +70 -0
- package/src/mcp/guards/mcp-auth.guard.spec.ts +51 -2
- package/src/mcp/guards/mcp-auth.guard.ts +24 -1
- package/src/mcp/guards/mcp-permission.guard.spec.ts +109 -15
- package/src/mcp/guards/mcp-permission.guard.ts +76 -51
- package/src/mcp/mcp-audit.service.spec.ts +107 -0
- package/src/mcp/mcp-audit.service.ts +37 -1
- package/src/mcp/mcp-permission.service.spec.ts +197 -0
- package/src/mcp/mcp-permission.service.ts +184 -0
- package/src/mcp/mcp-server.service.spec.ts +84 -2
- package/src/mcp/mcp-server.service.ts +111 -87
- package/src/mcp/mcp.controller.ts +8 -1
- package/src/mcp/mcp.module.ts +5 -1
- package/src/mcp/tools/core-ai.mcp-tools.ts +1 -1
- package/src/mcp/tools/core-dashboard-items.mcp-tools.ts +1 -1
- package/src/mcp/tools/core-dashboard.mcp-tools.ts +1 -1
- package/src/mcp/tools/core-event-webhooks.mcp-tools.ts +1 -2
- package/src/mcp/tools/core-files.mcp-tools.ts +202 -22
- package/src/mcp/tools/core-integration-events.mcp-tools.ts +1 -1
- package/src/mcp/tools/core-mail-sent.mcp-tools.ts +1 -1
- package/src/mcp/tools/core-mail.mcp-tools.ts +1 -1
- package/src/mcp/tools/core-menus.mcp-tools.ts +1 -2
- package/src/mcp/tools/core-notifications.mcp-tools.ts +0 -1
- package/src/mcp/tools/core-roles.mcp-tools.ts +1 -5
- package/src/mcp/tools/core-routes.mcp-tools.ts +1 -3
- package/src/mcp/tools/core-screens.mcp-tools.ts +1 -3
- package/src/mcp/tools/core-sessions.mcp-tools.ts +0 -2
- package/src/mcp/tools/core-settings.mcp-tools.ts +1 -2
- package/src/mcp/tools/core-users.mcp-tools.ts +1 -1
- package/src/mcp/tools/core-webhooks.mcp-tools.ts +1 -2
- package/src/mcp/types/mcp-context.type.ts +15 -6
- package/src/mcp-chat/mcp-chat.service.ts +8 -0
- package/src/meeting/meeting-provider.registry.ts +121 -0
- package/src/meeting/meeting.constants.ts +74 -0
- package/src/menu/menu.service.spec.ts +89 -0
- package/src/menu/menu.service.ts +29 -11
- package/src/message-template/dto/update-message-template.dto.ts +22 -0
- package/src/message-template/message-template-admin.service.spec.ts +163 -0
- package/src/message-template/message-template-admin.service.ts +239 -0
- package/src/message-template/message-template.controller.ts +52 -0
- package/src/message-template/message-template.module.ts +21 -0
- package/src/message-template/message-template.registry.spec.ts +62 -0
- package/src/message-template/message-template.registry.ts +125 -0
- package/src/message-template/message-template.service.spec.ts +149 -0
- package/src/message-template/message-template.service.ts +149 -0
- package/src/notification/notification.constants.ts +10 -0
- package/src/notification/notification.module.ts +3 -0
- package/src/notification/notification.service.spec.ts +75 -1
- package/src/notification/notification.service.ts +39 -1
- package/src/oauth/oauth.controller.ts +0 -1
- package/src/oauth/oauth.errors.ts +7 -0
- package/src/oauth/oauth.module.ts +6 -1
- package/src/oauth/oauth.service.spec.ts +58 -7
- package/src/oauth/oauth.service.ts +71 -32
- package/src/oauth/providers/abstract.provider.spec.ts +192 -0
- package/src/oauth/providers/abstract.provider.ts +46 -14
- package/src/oauth/providers/github.provider.ts +57 -34
- package/src/oauth/providers/microsoft-entra-id.provider.ts +8 -1
- package/src/observability/monitored-cron.spec.ts +164 -31
- package/src/observability/monitored-cron.ts +154 -62
- package/src/profile/dto/change-password.dto.ts +25 -7
- package/src/profile/profile.service.spec.ts +97 -0
- package/src/profile/profile.service.ts +9 -3
- package/src/realtime/realtime-tick.coalescer.spec.ts +92 -0
- package/src/realtime/realtime-tick.coalescer.ts +60 -0
- package/src/realtime/realtime.service.spec.ts +33 -0
- package/src/realtime/realtime.service.ts +28 -2
- package/src/redis/redis-kv.service.ts +261 -0
- package/src/redis/redis-master.spec.ts +111 -0
- package/src/redis/redis-master.ts +86 -0
- package/src/redis/redis-pubsub.ts +27 -3
- package/src/redis/redis.module.ts +17 -0
- package/src/session/session.service.spec.ts +121 -42
- package/src/session/session.service.ts +279 -82
- package/src/setting/setting.service.ts +44 -3
- package/src/task/task.service.spec.ts +41 -0
- package/src/task/task.service.ts +53 -13
- package/src/token/token.service.spec.ts +90 -0
- package/src/token/token.service.ts +48 -2
- package/src/user/user-credential.util.ts +14 -5
- package/src/user/user.service.ts +2 -12
- package/src/user/user.sort.ts +25 -0
- package/src/utils/abbreviate-name.spec.ts +50 -0
- package/src/utils/abbreviate-name.ts +44 -0
- package/src/utils/date-range-query.dto.ts +56 -0
- package/src/utils/date-range.spec.ts +175 -0
- package/src/utils/date-range.ts +246 -0
- package/src/webhook-integration/webhook-utils.spec.ts +67 -0
- package/src/webhook-integration/webhook-utils.ts +26 -0
- package/src/whatsapp-sender/whatsapp-recipients.spec.ts +89 -0
- package/src/whatsapp-sender/whatsapp-recipients.ts +83 -0
- package/src/whatsapp-sender/whatsapp-sender.service.spec.ts +112 -0
- package/src/whatsapp-sender/whatsapp-sender.service.ts +58 -5
- package/hedhog/query/device_pairing_request.sql +0 -46
- package/hedhog/query/impersonation_grant.sql +0 -71
- package/hedhog/query/oauth_authorize_pkce.sql +0 -58
- package/hedhog/query/oauth_mobile_state_token.sql +0 -30
- package/hedhog/query/oauth_web_ref_token.sql +0 -25
|
@@ -35,11 +35,27 @@ export type WhatsappSendInput = {
|
|
|
35
35
|
};
|
|
36
36
|
|
|
37
37
|
type ResolvedProfile = {
|
|
38
|
+
id: number;
|
|
38
39
|
slug: string;
|
|
39
40
|
providerSlug: string;
|
|
40
41
|
config: Record<string, unknown>;
|
|
41
42
|
};
|
|
42
43
|
|
|
44
|
+
/**
|
|
45
|
+
* Erro de envio classificado: `retryable` diz se tentar de novo pode dar
|
|
46
|
+
* resultado diferente. Um HTTP 4xx da Graph API (id inexistente, sem
|
|
47
|
+
* permissão, token ruim) não muda em cinco minutos; um 5xx ou falha de rede
|
|
48
|
+
* pode ser uma instabilidade passageira do provedor.
|
|
49
|
+
*/
|
|
50
|
+
export class WhatsappSendError extends BadRequestException {
|
|
51
|
+
constructor(
|
|
52
|
+
message: string,
|
|
53
|
+
public readonly retryable: boolean,
|
|
54
|
+
) {
|
|
55
|
+
super(message);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
|
|
43
59
|
/**
|
|
44
60
|
* Envio de WhatsApp usando um perfil de integração escolhido pelo usuário.
|
|
45
61
|
*
|
|
@@ -92,6 +108,22 @@ export class WhatsappSenderService {
|
|
|
92
108
|
}
|
|
93
109
|
}
|
|
94
110
|
|
|
111
|
+
/**
|
|
112
|
+
* Identidade do perfil que o `send` usaria, sem o `config`.
|
|
113
|
+
*
|
|
114
|
+
* Quem envia pelo provider oficial precisa dizer por qual número a mensagem
|
|
115
|
+
* sai, e cada módulo guarda esse id no próprio cadastro. Para achar o cadastro
|
|
116
|
+
* certo é preciso saber qual perfil foi resolvido — inclusive quando o slug
|
|
117
|
+
* veio vazio e a escolha coube a este serviço. O `config` fica de fora de
|
|
118
|
+
* propósito: é onde moram `access_token` e `app_secret`.
|
|
119
|
+
*/
|
|
120
|
+
async describeProfile(
|
|
121
|
+
profileSlug?: string,
|
|
122
|
+
): Promise<{ id: number; slug: string; providerSlug: string }> {
|
|
123
|
+
const { id, slug, providerSlug } = await this.resolveProfile(profileSlug);
|
|
124
|
+
return { id, slug, providerSlug };
|
|
125
|
+
}
|
|
126
|
+
|
|
95
127
|
/**
|
|
96
128
|
* Normaliza o destino: número vira só dígitos, id de grupo passa intacto
|
|
97
129
|
* (grupos do WhatsApp têm sufixo `@g.us`, que seria destruído por um strip).
|
|
@@ -153,6 +185,7 @@ export class WhatsappSenderService {
|
|
|
153
185
|
}
|
|
154
186
|
|
|
155
187
|
return {
|
|
188
|
+
id: profile.id,
|
|
156
189
|
slug: profile.slug,
|
|
157
190
|
providerSlug: String((profile as any).integration_provider?.slug ?? ''),
|
|
158
191
|
config: ((profile.config ?? {}) as Record<string, unknown>),
|
|
@@ -226,6 +259,19 @@ export class WhatsappSenderService {
|
|
|
226
259
|
): Promise<void> {
|
|
227
260
|
const cfg = buildWhatsappOfficialConfigFromIntegration(profile.config);
|
|
228
261
|
|
|
262
|
+
// A Cloud API da Meta não envia para grupo — não há endpoint para isso. Sem
|
|
263
|
+
// esta guarda o `normalizeTarget(..., 'phone')` logo abaixo arrancaria o
|
|
264
|
+
// sufixo `@g.us` e a Graph API receberia o id do grupo como se fosse um
|
|
265
|
+
// telefone: ou erro genérico de número inválido, ou (pior) entrega a um
|
|
266
|
+
// número que por acaso exista. `retryable: false` porque trocar de provider
|
|
267
|
+
// é decisão de configuração, não instabilidade.
|
|
268
|
+
if (input.targetType === 'group') {
|
|
269
|
+
throw new WhatsappSendError(
|
|
270
|
+
`Perfil de integração "${profile.slug}" usa a Cloud API oficial da Meta, que não envia mensagem para grupo. Use um perfil evolution-api para esse destino.`,
|
|
271
|
+
false,
|
|
272
|
+
);
|
|
273
|
+
}
|
|
274
|
+
|
|
229
275
|
if (!cfg.accessToken) {
|
|
230
276
|
throw new BadRequestException(
|
|
231
277
|
`Perfil de WhatsApp "${profile.slug}" está sem access_token.`,
|
|
@@ -290,17 +336,24 @@ export class WhatsappSenderService {
|
|
|
290
336
|
|
|
291
337
|
if (!response.ok) {
|
|
292
338
|
const payload = (await response.json().catch(() => ({}))) as {
|
|
293
|
-
error?: { message?: string };
|
|
339
|
+
error?: { message?: string; code?: number };
|
|
294
340
|
};
|
|
295
341
|
|
|
296
|
-
|
|
342
|
+
// Código documentado pela Meta para "business-initiated message fora da
|
|
343
|
+
// janela de 24h sem template" (re-engagement). Outros 4xx (id inválido,
|
|
344
|
+
// sem permissão, token ruim) não têm nada a ver com template e não
|
|
345
|
+
// devem exibir essa dica.
|
|
346
|
+
const isReengagementWindowError = payload?.error?.code === 131047;
|
|
347
|
+
|
|
348
|
+
throw new WhatsappSendError(
|
|
297
349
|
`WhatsApp recusou o envio (HTTP ${response.status}): ${
|
|
298
350
|
payload?.error?.message ?? 'sem detalhe'
|
|
299
351
|
}${
|
|
300
|
-
input.template?.name
|
|
301
|
-
? ''
|
|
302
|
-
: '
|
|
352
|
+
!input.template?.name && isReengagementWindowError
|
|
353
|
+
? ' — sem template configurado, a entrega só funciona na janela de 24h'
|
|
354
|
+
: ''
|
|
303
355
|
}`,
|
|
356
|
+
response.status >= 500,
|
|
304
357
|
);
|
|
305
358
|
}
|
|
306
359
|
}
|
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
-- Pareamento de dispositivo (QR entre celular e navegador).
|
|
2
|
-
--
|
|
3
|
-
-- Tabela de infra de auth: vive so aqui, sem YAML em hedhog/table (ver
|
|
4
|
-
-- oauth_mobile_state_token.sql).
|
|
5
|
-
--
|
|
6
|
-
-- Usada por libraries/core/src/pairing/pairing.service.ts. A FK para "user"
|
|
7
|
-
-- resolve porque os arquivos de hedhog/query sao anexados DEPOIS de todos os
|
|
8
|
-
-- CREATE TABLE (ver docs/YAML-SPEC.md secao 7).
|
|
9
|
-
CREATE TABLE IF NOT EXISTS device_pairing_request (
|
|
10
|
-
id BIGSERIAL PRIMARY KEY,
|
|
11
|
-
direction VARCHAR(20) NOT NULL,
|
|
12
|
-
-- Só o hash do token de resgate/poll: um dump do banco não permite reivindicar
|
|
13
|
-
-- nem consumir pareamento nenhum.
|
|
14
|
-
auth_hash VARCHAR(255) NOT NULL UNIQUE,
|
|
15
|
-
-- NULL em 'device-to-browser' até a aprovação: o navegador que pede ainda não
|
|
16
|
-
-- é ninguém. Preenchido pelo aparelho que aprova.
|
|
17
|
-
user_id INTEGER NULL REFERENCES "user"(id) ON DELETE CASCADE,
|
|
18
|
-
client_id VARCHAR(100) NOT NULL,
|
|
19
|
-
purpose VARCHAR(50) NOT NULL DEFAULT 'vaults',
|
|
20
|
-
-- 'device-to-browser': ponto EC não comprimido (65 bytes) em base64. É a chave
|
|
21
|
-
-- para a qual o celular cifra; a privada correspondente nunca sai da aba.
|
|
22
|
-
eph_public_key TEXT NULL,
|
|
23
|
-
-- 'device-to-browser': o navegador também precisa de sessão (computador novo,
|
|
24
|
-
-- ninguém logado) ou só das chaves do cofre (sessão já existe, cofre travado).
|
|
25
|
-
want_session BOOLEAN NOT NULL DEFAULT TRUE,
|
|
26
|
-
-- OPACO para o servidor: AES-256-GCM feito no cliente com uma chave que nunca
|
|
27
|
-
-- chega aqui (fragmento do QR ou par efêmero da aba). Fica NULL até a
|
|
28
|
-
-- aprovação, então um pareamento não aprovado nunca guarda material de chave.
|
|
29
|
-
payload_enc TEXT NULL,
|
|
30
|
-
issued_ip VARCHAR(64) NULL,
|
|
31
|
-
issued_user_agent TEXT NULL,
|
|
32
|
-
claimed_at TIMESTAMPTZ NULL,
|
|
33
|
-
claim_ip VARCHAR(64) NULL,
|
|
34
|
-
claim_user_agent TEXT NULL,
|
|
35
|
-
confirmed_at TIMESTAMPTZ NULL,
|
|
36
|
-
cancelled_at TIMESTAMPTZ NULL,
|
|
37
|
-
consumed_at TIMESTAMPTZ NULL,
|
|
38
|
-
expires_at TIMESTAMPTZ NOT NULL,
|
|
39
|
-
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
|
|
40
|
-
);
|
|
41
|
-
|
|
42
|
-
CREATE INDEX IF NOT EXISTS idx_device_pairing_request_expires_at
|
|
43
|
-
ON device_pairing_request (expires_at);
|
|
44
|
-
|
|
45
|
-
CREATE INDEX IF NOT EXISTS idx_device_pairing_request_user
|
|
46
|
-
ON device_pairing_request (user_id, created_at DESC);
|
|
@@ -1,71 +0,0 @@
|
|
|
1
|
-
-- Simulacao de acesso ("simular login"): um operador abre uma sessao curta,
|
|
2
|
-
-- auditada e nao renovavel como outro usuario.
|
|
3
|
-
--
|
|
4
|
-
-- Tabela de infra de auth: vive so aqui, sem YAML em hedhog/table (ver
|
|
5
|
-
-- oauth_mobile_state_token.sql).
|
|
6
|
-
--
|
|
7
|
-
-- Usada por libraries/core/src/impersonation/impersonation.service.ts.
|
|
8
|
-
--
|
|
9
|
-
-- POR QUE impersonator_user_id E target_user_id SAO INTEGER SEM FOREIGN KEY:
|
|
10
|
-
-- as tabelas marcadas mais abaixo ja tem uma FK para "user". Uma segunda FK faz
|
|
11
|
-
-- o `prisma db pull` desambiguar os nomes das relacoes NOS DOIS LADOS, o que
|
|
12
|
-
-- renomearia `user.user_session`, `user.access_log` e `user.user_activity` e
|
|
13
|
-
-- quebraria UserService, packages/api-types e a tela de sessoes do admin. O nome
|
|
14
|
-
-- do operador e resolvido por uma segunda consulta.
|
|
15
|
-
CREATE TABLE IF NOT EXISTS impersonation_grant (
|
|
16
|
-
id SERIAL PRIMARY KEY,
|
|
17
|
-
code_hash VARCHAR(255) NOT NULL UNIQUE,
|
|
18
|
-
-- Sem FK de proposito — ver a nota no topo do arquivo.
|
|
19
|
-
impersonator_user_id INTEGER NOT NULL,
|
|
20
|
-
target_user_id INTEGER NOT NULL,
|
|
21
|
-
-- Chave do app de destino ('admin', 'class', 'partners'), resolvida contra a
|
|
22
|
-
-- setting app-urls.
|
|
23
|
-
app VARCHAR(50) NOT NULL,
|
|
24
|
-
reason VARCHAR(255) NULL,
|
|
25
|
-
-- Preenchido no resgate: aponta para a user_session simulada que nasceu daqui.
|
|
26
|
-
session_id INTEGER NULL,
|
|
27
|
-
issued_ip VARCHAR(64) NULL,
|
|
28
|
-
issued_user_agent TEXT NULL,
|
|
29
|
-
redeemed_ip VARCHAR(64) NULL,
|
|
30
|
-
redeemed_user_agent TEXT NULL,
|
|
31
|
-
consumed_at TIMESTAMPTZ NULL,
|
|
32
|
-
ended_at TIMESTAMPTZ NULL,
|
|
33
|
-
expires_at TIMESTAMPTZ NOT NULL,
|
|
34
|
-
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
|
|
35
|
-
);
|
|
36
|
-
|
|
37
|
-
CREATE INDEX IF NOT EXISTS idx_impersonation_grant_impersonator
|
|
38
|
-
ON impersonation_grant (impersonator_user_id, created_at DESC);
|
|
39
|
-
|
|
40
|
-
CREATE INDEX IF NOT EXISTS idx_impersonation_grant_target
|
|
41
|
-
ON impersonation_grant (target_user_id, created_at DESC);
|
|
42
|
-
|
|
43
|
-
CREATE INDEX IF NOT EXISTS idx_impersonation_grant_expires
|
|
44
|
-
ON impersonation_grant (expires_at);
|
|
45
|
-
|
|
46
|
-
CREATE INDEX IF NOT EXISTS idx_impersonation_grant_session
|
|
47
|
-
ON impersonation_grant (session_id)
|
|
48
|
-
WHERE session_id IS NOT NULL;
|
|
49
|
-
|
|
50
|
-
-- ---------------------------------------------------------------------------
|
|
51
|
-
-- Indices das colunas de simulacao nas tabelas que TEM YAML.
|
|
52
|
-
--
|
|
53
|
-
-- As colunas em si vem de hedhog/table/{user_session,access_log,user_activity}.yaml
|
|
54
|
-
-- e o CLI as cria; os indices NAO — o gerador nao emite indice para elas, e a
|
|
55
|
-
-- semantica parcial (WHERE ... IS NOT NULL) nao e exprimivel em YAML.
|
|
56
|
-
--
|
|
57
|
-
-- Parciais de proposito: a esmagadora maioria das linhas nao tem simulacao
|
|
58
|
-
-- nenhuma, entao um indice cheio numa coluna quase toda NULL seria bem maior sem
|
|
59
|
-
-- servir a nenhuma consulta.
|
|
60
|
-
-- ---------------------------------------------------------------------------
|
|
61
|
-
CREATE INDEX IF NOT EXISTS "user_session_impersonator_user_id_idx"
|
|
62
|
-
ON "user_session" ("impersonator_user_id")
|
|
63
|
-
WHERE "impersonator_user_id" IS NOT NULL;
|
|
64
|
-
|
|
65
|
-
CREATE INDEX IF NOT EXISTS "access_log_impersonator_user_id_idx"
|
|
66
|
-
ON "access_log" ("impersonator_user_id")
|
|
67
|
-
WHERE "impersonator_user_id" IS NOT NULL;
|
|
68
|
-
|
|
69
|
-
CREATE INDEX IF NOT EXISTS "user_activity_actor_user_id_idx"
|
|
70
|
-
ON "user_activity" ("actor_user_id")
|
|
71
|
-
WHERE "actor_user_id" IS NOT NULL;
|
|
@@ -1,58 +0,0 @@
|
|
|
1
|
-
-- OAuth authorization code + PKCE: a API como PROVEDORA de identidade.
|
|
2
|
-
--
|
|
3
|
-
-- Tabelas de infra de auth: vivem so aqui, sem YAML em hedhog/table (ver
|
|
4
|
-
-- oauth_mobile_state_token.sql).
|
|
5
|
-
--
|
|
6
|
-
-- Usadas por libraries/core/src/authorize/authorize.service.ts e
|
|
7
|
-
-- libraries/core/src/pairing/pairing.service.ts.
|
|
8
|
-
--
|
|
9
|
-
-- A ordem interna importa: oauth_authorization_code.client_id aponta para
|
|
10
|
-
-- oauth_app_client.client_id. A FK para "user" resolve porque os arquivos de
|
|
11
|
-
-- hedhog/query sao anexados DEPOIS de todos os CREATE TABLE (ver docs/YAML-SPEC.md
|
|
12
|
-
-- secao 7).
|
|
13
|
-
CREATE TABLE IF NOT EXISTS oauth_app_client (
|
|
14
|
-
id SERIAL PRIMARY KEY,
|
|
15
|
-
client_id VARCHAR(100) NOT NULL UNIQUE,
|
|
16
|
-
name VARCHAR(255) NOT NULL,
|
|
17
|
-
-- 'public' = sem client_secret, PKCE obrigatorio (o caso de uma extensao, que
|
|
18
|
-
-- nao consegue guardar segredo).
|
|
19
|
-
client_type VARCHAR(20) NOT NULL DEFAULT 'public',
|
|
20
|
-
-- Allowlist de URIs exatas, uma por linha. A comparacao e igualdade de string:
|
|
21
|
-
-- parsing de origin quebraria para esquemas nao-http.
|
|
22
|
-
redirect_uris TEXT NOT NULL,
|
|
23
|
-
scopes TEXT NOT NULL DEFAULT 'vaults',
|
|
24
|
-
-- Reservado: hoje NAO pula a tela de consent. Pular economizaria um clique e
|
|
25
|
-
-- custaria um authorize silencioso disparavel por qualquer pagina.
|
|
26
|
-
is_first_party BOOLEAN NOT NULL DEFAULT TRUE,
|
|
27
|
-
enabled BOOLEAN NOT NULL DEFAULT TRUE,
|
|
28
|
-
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
|
29
|
-
updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
|
|
30
|
-
);
|
|
31
|
-
|
|
32
|
-
-- Authorization codes de vida curta (60s), consumidos atomicamente uma unica vez.
|
|
33
|
-
CREATE TABLE IF NOT EXISTS oauth_authorization_code (
|
|
34
|
-
id BIGSERIAL PRIMARY KEY,
|
|
35
|
-
-- Guardamos so o hash: um dump do banco nao permite trocar codes por tokens.
|
|
36
|
-
code_hash VARCHAR(255) NOT NULL UNIQUE,
|
|
37
|
-
client_id VARCHAR(100) NOT NULL,
|
|
38
|
-
user_id INTEGER NOT NULL REFERENCES "user"(id) ON DELETE CASCADE,
|
|
39
|
-
redirect_uri TEXT NOT NULL,
|
|
40
|
-
scope TEXT NOT NULL,
|
|
41
|
-
code_challenge VARCHAR(255) NOT NULL,
|
|
42
|
-
code_challenge_method VARCHAR(10) NOT NULL DEFAULT 'S256',
|
|
43
|
-
expires_at TIMESTAMPTZ NOT NULL,
|
|
44
|
-
consumed_at TIMESTAMPTZ NULL,
|
|
45
|
-
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
|
|
46
|
-
);
|
|
47
|
-
|
|
48
|
-
CREATE INDEX IF NOT EXISTS idx_oauth_authorization_code_expires_at
|
|
49
|
-
ON oauth_authorization_code (expires_at);
|
|
50
|
-
|
|
51
|
-
CREATE INDEX IF NOT EXISTS idx_oauth_authorization_code_client
|
|
52
|
-
ON oauth_authorization_code (client_id);
|
|
53
|
-
|
|
54
|
-
-- NOTA: o repositorio de referencia semeia aqui um oauth_app_client para a
|
|
55
|
-
-- extensao "HedHog Vaults" (client_id 'hedhog-extension', scope 'vaults'). Esse
|
|
56
|
-
-- seed NAO foi trazido de proposito: e dado de aplicacao, nao estrutura; depende
|
|
57
|
-
-- da library `vaults`; e o proprio redirect_uri de la ja mudou depois daquela
|
|
58
|
-
-- migration. Cada instalacao cadastra os proprios clients.
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
-- Estado do fluxo OAuth mobile, duravel entre replicas da API.
|
|
2
|
-
--
|
|
3
|
-
-- Tabela de infra de auth: vive so aqui, sem YAML em hedhog/table, porque nao e
|
|
4
|
-
-- entidade de negocio e nao tem CRUD administravel. hedhog/table e para o que
|
|
5
|
-
-- ganha scaffolding.
|
|
6
|
-
--
|
|
7
|
-
-- O `state` opaco nao pode viver em memoria de processo: com mais de uma replica,
|
|
8
|
-
-- o callback do provedor cai em qualquer pod. O token e gravado com hash, amarrado
|
|
9
|
-
-- a provider + redirect_uri + flow_type, e consumido uma unica vez (consumed_at)
|
|
10
|
-
-- antes de expirar (expires_at).
|
|
11
|
-
--
|
|
12
|
-
-- Usada por libraries/core/src/oauth/oauth.service.ts.
|
|
13
|
-
CREATE TABLE IF NOT EXISTS oauth_mobile_state_token (
|
|
14
|
-
id BIGSERIAL PRIMARY KEY,
|
|
15
|
-
token_hash VARCHAR(255) NOT NULL UNIQUE,
|
|
16
|
-
provider VARCHAR(100) NOT NULL,
|
|
17
|
-
redirect_uri TEXT NOT NULL,
|
|
18
|
-
flow_type VARCHAR(20) NOT NULL,
|
|
19
|
-
expires_at TIMESTAMPTZ NOT NULL,
|
|
20
|
-
consumed_at TIMESTAMPTZ NULL,
|
|
21
|
-
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
|
|
22
|
-
);
|
|
23
|
-
|
|
24
|
-
-- Lookup do callback: casa o state com o par provider + redirect_uri.
|
|
25
|
-
CREATE INDEX IF NOT EXISTS idx_oauth_mobile_state_token_provider_redirect
|
|
26
|
-
ON oauth_mobile_state_token (provider, redirect_uri);
|
|
27
|
-
|
|
28
|
-
-- Varredura de expirados.
|
|
29
|
-
CREATE INDEX IF NOT EXISTS idx_oauth_mobile_state_token_expires_at
|
|
30
|
-
ON oauth_mobile_state_token (expires_at);
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
-- Referencia curta de uso unico para o retorno do OAuth web (Microsoft Entra ID).
|
|
2
|
-
--
|
|
3
|
-
-- Tabela de infra de auth: vive so aqui, sem YAML em hedhog/table (ver
|
|
4
|
-
-- oauth_mobile_state_token.sql).
|
|
5
|
-
--
|
|
6
|
-
-- A API troca o authorization code (~2KB) do provedor no servidor, guarda o perfil
|
|
7
|
-
-- resultante cifrado sob um id curto e opaco, e devolve so esse id ao front-end,
|
|
8
|
-
-- que o resgata. Modelada a partir de oauth_mobile_state_token, pelo mesmo motivo:
|
|
9
|
-
-- ser duravel entre replicas.
|
|
10
|
-
--
|
|
11
|
-
-- Usada por libraries/core/src/oauth/oauth.service.ts.
|
|
12
|
-
CREATE TABLE IF NOT EXISTS oauth_web_ref_token (
|
|
13
|
-
id BIGSERIAL PRIMARY KEY,
|
|
14
|
-
token_hash VARCHAR(255) NOT NULL UNIQUE,
|
|
15
|
-
provider VARCHAR(100) NOT NULL,
|
|
16
|
-
flow_type VARCHAR(20) NOT NULL,
|
|
17
|
-
app_origin TEXT NULL,
|
|
18
|
-
profile_enc TEXT NOT NULL,
|
|
19
|
-
expires_at TIMESTAMPTZ NOT NULL,
|
|
20
|
-
consumed_at TIMESTAMPTZ NULL,
|
|
21
|
-
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
|
|
22
|
-
);
|
|
23
|
-
|
|
24
|
-
CREATE INDEX IF NOT EXISTS idx_oauth_web_ref_token_expires_at
|
|
25
|
-
ON oauth_web_ref_token (expires_at);
|