@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
|
@@ -41,7 +41,13 @@ function clampSidebarWidth(width: number) {
|
|
|
41
41
|
}
|
|
42
42
|
|
|
43
43
|
export default function McpChatPage() {
|
|
44
|
-
const {
|
|
44
|
+
const {
|
|
45
|
+
request,
|
|
46
|
+
currentLocaleCode,
|
|
47
|
+
refetchUser,
|
|
48
|
+
accessToken,
|
|
49
|
+
getSettingValue,
|
|
50
|
+
} = useApp();
|
|
45
51
|
const t = useTranslations('core.McpChatPage');
|
|
46
52
|
const mcpEnabled = getSettingValue('mcp-enabled') !== false;
|
|
47
53
|
const isMobile = useIsMobile();
|
|
@@ -721,116 +727,61 @@ export default function McpChatPage() {
|
|
|
721
727
|
</aside>
|
|
722
728
|
|
|
723
729
|
<Sheet
|
|
724
|
-
|
|
725
|
-
|
|
726
|
-
>
|
|
727
|
-
<ResizableSheetContent
|
|
728
|
-
sheetId="core-mcp-chat-mobile-conversations-sheet"
|
|
729
|
-
defaultWidth={320}
|
|
730
|
-
minWidth={280}
|
|
731
|
-
maxWidth={560}
|
|
732
|
-
side="left"
|
|
733
|
-
className="w-[85vw] max-w-[320px] p-0 [&>button]:top-2 [&>button]:right-2 [&>button]:z-20"
|
|
730
|
+
open={isMobileConversationsOpen}
|
|
731
|
+
onOpenChange={setIsMobileConversationsOpen}
|
|
734
732
|
>
|
|
735
|
-
<
|
|
736
|
-
|
|
737
|
-
|
|
738
|
-
|
|
739
|
-
|
|
740
|
-
|
|
741
|
-
|
|
742
|
-
|
|
743
|
-
|
|
744
|
-
|
|
745
|
-
|
|
746
|
-
|
|
747
|
-
|
|
748
|
-
|
|
749
|
-
<Button
|
|
750
|
-
variant="ghost"
|
|
751
|
-
size="icon"
|
|
752
|
-
className="h-8 w-8 cursor-pointer"
|
|
753
|
-
onClick={() => setIsMobileConversationsOpen(true)}
|
|
754
|
-
aria-label={t('openConversations')}
|
|
755
|
-
>
|
|
756
|
-
<MessageSquare className="h-4 w-4" />
|
|
757
|
-
</Button>
|
|
758
|
-
<span className="text-sm font-medium truncate">
|
|
759
|
-
{selectedConv?.title || t('title')}
|
|
760
|
-
</span>
|
|
761
|
-
</header>
|
|
762
|
-
)}
|
|
763
|
-
|
|
764
|
-
{!selectedConvId ? (
|
|
765
|
-
/* Empty state */
|
|
766
|
-
<div className="flex flex-1 flex-col items-center justify-center gap-6 px-4 md:gap-8 md:px-6">
|
|
767
|
-
<div className="flex flex-col items-center gap-3 text-center">
|
|
768
|
-
<div className="flex h-16 w-16 items-center justify-center rounded-2xl bg-primary/10 ring-1 ring-primary/20">
|
|
769
|
-
<Bot className="h-8 w-8 text-primary" />
|
|
770
|
-
</div>
|
|
771
|
-
<h1 className="text-2xl font-bold tracking-tight">
|
|
772
|
-
{t('title')}
|
|
773
|
-
</h1>
|
|
774
|
-
<p className="text-sm text-muted-foreground max-w-sm">
|
|
775
|
-
{t('description')}
|
|
776
|
-
</p>
|
|
777
|
-
</div>
|
|
778
|
-
<div className="w-full max-w-2xl px-1 pb-[max(0.5rem,env(safe-area-inset-bottom))] md:px-0 md:pb-0">
|
|
779
|
-
<ChatInput
|
|
780
|
-
textareaRef={textareaRef}
|
|
781
|
-
submitOnEnter={!isMobile}
|
|
782
|
-
input={input}
|
|
783
|
-
isSending={isSending}
|
|
784
|
-
isUploadingFile={isUploadingFile}
|
|
785
|
-
disabled={!mcpEnabled}
|
|
786
|
-
attachments={attachments}
|
|
787
|
-
placeholder={t('placeholder')}
|
|
788
|
-
sendLabel={t('send')}
|
|
789
|
-
sendingLabel={t('sending')}
|
|
790
|
-
attachLabel={t('attachFile')}
|
|
791
|
-
uploadingFileLabel={t('uploadingFile')}
|
|
792
|
-
removeAttachmentLabel={t('removeAttachment')}
|
|
793
|
-
onInputChange={setInput}
|
|
794
|
-
onSend={() => {
|
|
795
|
-
void handleSend();
|
|
796
|
-
}}
|
|
797
|
-
onUploadFiles={handleUploadFiles}
|
|
798
|
-
onRemoveAttachment={handleRemoveAttachment}
|
|
799
|
-
/>
|
|
733
|
+
<ResizableSheetContent
|
|
734
|
+
sheetId="core-mcp-chat-mobile-conversations-sheet"
|
|
735
|
+
defaultWidth={320}
|
|
736
|
+
minWidth={280}
|
|
737
|
+
maxWidth={560}
|
|
738
|
+
side="left"
|
|
739
|
+
className="w-[85vw] max-w-[320px] p-0 [&>button]:top-2 [&>button]:right-2 [&>button]:z-20"
|
|
740
|
+
>
|
|
741
|
+
<SheetHeader className="sr-only">
|
|
742
|
+
<SheetTitle>{t('conversations')}</SheetTitle>
|
|
743
|
+
<SheetDescription>{t('openConversations')}</SheetDescription>
|
|
744
|
+
</SheetHeader>
|
|
745
|
+
<div className="flex h-full flex-col bg-muted/30 pt-11">
|
|
746
|
+
{sidebarContent}
|
|
800
747
|
</div>
|
|
801
|
-
</
|
|
802
|
-
|
|
803
|
-
|
|
804
|
-
|
|
805
|
-
|
|
806
|
-
|
|
807
|
-
|
|
808
|
-
|
|
809
|
-
|
|
810
|
-
|
|
811
|
-
|
|
812
|
-
|
|
813
|
-
|
|
814
|
-
|
|
748
|
+
</ResizableSheetContent>
|
|
749
|
+
</Sheet>
|
|
750
|
+
|
|
751
|
+
{/* Main area */}
|
|
752
|
+
<main className="flex-1 flex min-h-0 min-w-0 flex-col overflow-hidden">
|
|
753
|
+
{isMobile && (
|
|
754
|
+
<header className="h-12 shrink-0 border-b flex items-center px-3 gap-2 bg-background/90 backdrop-blur-sm md:hidden">
|
|
755
|
+
<Button
|
|
756
|
+
variant="ghost"
|
|
757
|
+
size="icon"
|
|
758
|
+
className="h-8 w-8 cursor-pointer"
|
|
759
|
+
onClick={() => setIsMobileConversationsOpen(true)}
|
|
760
|
+
tooltip={t('openConversations')}
|
|
761
|
+
>
|
|
762
|
+
<MessageSquare className="h-4 w-4" />
|
|
763
|
+
</Button>
|
|
764
|
+
<span className="text-sm font-medium truncate">
|
|
765
|
+
{selectedConv?.title || t('title')}
|
|
766
|
+
</span>
|
|
767
|
+
</header>
|
|
768
|
+
)}
|
|
769
|
+
|
|
770
|
+
{!selectedConvId ? (
|
|
771
|
+
/* Empty state */
|
|
772
|
+
<div className="flex flex-1 flex-col items-center justify-center gap-6 px-4 md:gap-8 md:px-6">
|
|
773
|
+
<div className="flex flex-col items-center gap-3 text-center">
|
|
774
|
+
<div className="flex h-16 w-16 items-center justify-center rounded-2xl bg-primary/10 ring-1 ring-primary/20">
|
|
775
|
+
<Bot className="h-8 w-8 text-primary" />
|
|
776
|
+
</div>
|
|
777
|
+
<h1 className="text-2xl font-bold tracking-tight">
|
|
815
778
|
{t('title')}
|
|
816
|
-
</
|
|
779
|
+
</h1>
|
|
780
|
+
<p className="text-sm text-muted-foreground max-w-sm">
|
|
781
|
+
{t('description')}
|
|
782
|
+
</p>
|
|
817
783
|
</div>
|
|
818
|
-
|
|
819
|
-
|
|
820
|
-
{/* Messages */}
|
|
821
|
-
<ScrollArea className="min-h-0 flex-1 px-3 py-4 md:px-4 md:py-6">
|
|
822
|
-
<MessageFeed
|
|
823
|
-
messages={messages}
|
|
824
|
-
isLoadingMessages={isLoadingMessages}
|
|
825
|
-
isSending={isSending}
|
|
826
|
-
isStreamingResponse={isStreamingResponse}
|
|
827
|
-
messagesEndRef={messagesEndRef}
|
|
828
|
-
/>
|
|
829
|
-
</ScrollArea>
|
|
830
|
-
|
|
831
|
-
{/* Input */}
|
|
832
|
-
<div className="shrink-0 border-t bg-background/80 px-3 py-3 pb-[max(0.75rem,env(safe-area-inset-bottom))] backdrop-blur-sm md:px-6 md:py-4">
|
|
833
|
-
<div className="max-w-3xl mx-auto">
|
|
784
|
+
<div className="w-full max-w-2xl px-1 pb-[max(0.5rem,env(safe-area-inset-bottom))] md:px-0 md:pb-0">
|
|
834
785
|
<ChatInput
|
|
835
786
|
textareaRef={textareaRef}
|
|
836
787
|
submitOnEnter={!isMobile}
|
|
@@ -854,9 +805,64 @@ export default function McpChatPage() {
|
|
|
854
805
|
/>
|
|
855
806
|
</div>
|
|
856
807
|
</div>
|
|
857
|
-
|
|
858
|
-
|
|
859
|
-
|
|
808
|
+
) : (
|
|
809
|
+
/* Chat state */
|
|
810
|
+
<>
|
|
811
|
+
{/* Header */}
|
|
812
|
+
<header className="h-14 shrink-0 border-b items-center px-4 md:px-6 gap-3 bg-background/80 backdrop-blur-sm hidden md:flex">
|
|
813
|
+
<div className="flex h-8 w-8 items-center justify-center rounded-full bg-primary/10">
|
|
814
|
+
<Bot className="h-4 w-4 text-primary" />
|
|
815
|
+
</div>
|
|
816
|
+
<div className="flex flex-col leading-tight">
|
|
817
|
+
<span className="text-sm font-semibold">
|
|
818
|
+
{selectedConv?.title || `Chat #${selectedConvId}`}
|
|
819
|
+
</span>
|
|
820
|
+
<span className="text-xs text-muted-foreground">
|
|
821
|
+
{t('title')}
|
|
822
|
+
</span>
|
|
823
|
+
</div>
|
|
824
|
+
</header>
|
|
825
|
+
|
|
826
|
+
{/* Messages */}
|
|
827
|
+
<ScrollArea className="min-h-0 flex-1 px-3 py-4 md:px-4 md:py-6">
|
|
828
|
+
<MessageFeed
|
|
829
|
+
messages={messages}
|
|
830
|
+
isLoadingMessages={isLoadingMessages}
|
|
831
|
+
isSending={isSending}
|
|
832
|
+
isStreamingResponse={isStreamingResponse}
|
|
833
|
+
messagesEndRef={messagesEndRef}
|
|
834
|
+
/>
|
|
835
|
+
</ScrollArea>
|
|
836
|
+
|
|
837
|
+
{/* Input */}
|
|
838
|
+
<div className="shrink-0 border-t bg-background/80 px-3 py-3 pb-[max(0.75rem,env(safe-area-inset-bottom))] backdrop-blur-sm md:px-6 md:py-4">
|
|
839
|
+
<div className="max-w-3xl mx-auto">
|
|
840
|
+
<ChatInput
|
|
841
|
+
textareaRef={textareaRef}
|
|
842
|
+
submitOnEnter={!isMobile}
|
|
843
|
+
input={input}
|
|
844
|
+
isSending={isSending}
|
|
845
|
+
isUploadingFile={isUploadingFile}
|
|
846
|
+
disabled={!mcpEnabled}
|
|
847
|
+
attachments={attachments}
|
|
848
|
+
placeholder={t('placeholder')}
|
|
849
|
+
sendLabel={t('send')}
|
|
850
|
+
sendingLabel={t('sending')}
|
|
851
|
+
attachLabel={t('attachFile')}
|
|
852
|
+
uploadingFileLabel={t('uploadingFile')}
|
|
853
|
+
removeAttachmentLabel={t('removeAttachment')}
|
|
854
|
+
onInputChange={setInput}
|
|
855
|
+
onSend={() => {
|
|
856
|
+
void handleSend();
|
|
857
|
+
}}
|
|
858
|
+
onUploadFiles={handleUploadFiles}
|
|
859
|
+
onRemoveAttachment={handleRemoveAttachment}
|
|
860
|
+
/>
|
|
861
|
+
</div>
|
|
862
|
+
</div>
|
|
863
|
+
</>
|
|
864
|
+
)}
|
|
865
|
+
</main>
|
|
860
866
|
</div>
|
|
861
867
|
|
|
862
868
|
<AlertDialog
|
|
@@ -0,0 +1,245 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
|
|
3
|
+
import { Button } from '@/components/ui/button';
|
|
4
|
+
import { FormActions } from '@/components/ui/form-actions';
|
|
5
|
+
import { Label } from '@/components/ui/label';
|
|
6
|
+
import { ResizableSheetContent } from '@/components/ui/resizable-sheet-content';
|
|
7
|
+
import { ScrollArea } from '@/components/ui/scroll-area';
|
|
8
|
+
import {
|
|
9
|
+
Sheet,
|
|
10
|
+
SheetDescription,
|
|
11
|
+
SheetHeader,
|
|
12
|
+
SheetTitle,
|
|
13
|
+
} from '@/components/ui/sheet';
|
|
14
|
+
import { Switch } from '@/components/ui/switch';
|
|
15
|
+
import { Tabs, TabsContent, TabsList, TabsTrigger } from '@/components/ui/tabs';
|
|
16
|
+
import { Textarea } from '@/components/ui/textarea';
|
|
17
|
+
import { useApp } from '@hed-hog/next-app-provider';
|
|
18
|
+
import { Eye } from 'lucide-react';
|
|
19
|
+
import { useTranslations } from 'next-intl';
|
|
20
|
+
import { useEffect, useRef, useState } from 'react';
|
|
21
|
+
import { toast } from 'sonner';
|
|
22
|
+
import type { MessageTemplate } from '../_lib/types';
|
|
23
|
+
|
|
24
|
+
/** Idiomas que um modelo carrega. */
|
|
25
|
+
const LOCALES = ['pt', 'en'] as const;
|
|
26
|
+
|
|
27
|
+
type LocaleCode = (typeof LOCALES)[number];
|
|
28
|
+
|
|
29
|
+
type MessageTemplateSheetProps = {
|
|
30
|
+
open: boolean;
|
|
31
|
+
template: MessageTemplate | null;
|
|
32
|
+
onOpenChange: (open: boolean) => void;
|
|
33
|
+
onSaved: () => Promise<void> | void;
|
|
34
|
+
};
|
|
35
|
+
|
|
36
|
+
export function MessageTemplateSheet({
|
|
37
|
+
open,
|
|
38
|
+
template,
|
|
39
|
+
onOpenChange,
|
|
40
|
+
onSaved,
|
|
41
|
+
}: MessageTemplateSheetProps) {
|
|
42
|
+
const t = useTranslations('core.MessageTemplatesPage');
|
|
43
|
+
const { request } = useApp();
|
|
44
|
+
|
|
45
|
+
const [isActive, setIsActive] = useState(true);
|
|
46
|
+
const [bodies, setBodies] = useState<Record<LocaleCode, string>>({
|
|
47
|
+
pt: '',
|
|
48
|
+
en: '',
|
|
49
|
+
});
|
|
50
|
+
const [tab, setTab] = useState<LocaleCode>('pt');
|
|
51
|
+
const [preview, setPreview] = useState<string | null>(null);
|
|
52
|
+
const [saving, setSaving] = useState(false);
|
|
53
|
+
|
|
54
|
+
// Guardado por idioma: inserir variável tem que cair no campo que está à
|
|
55
|
+
// vista, e não no último que recebeu foco antes de trocar de aba.
|
|
56
|
+
const bodyRefs = useRef<Partial<Record<LocaleCode, HTMLTextAreaElement | null>>>({});
|
|
57
|
+
|
|
58
|
+
useEffect(() => {
|
|
59
|
+
if (!open || !template) return;
|
|
60
|
+
|
|
61
|
+
// `body` já vem resolvido pela API: o texto editado quando existe, senão o
|
|
62
|
+
// padrão do código. Quem abre um modelo nunca editado começa com o padrão à
|
|
63
|
+
// vista, e não com um campo vazio.
|
|
64
|
+
setBodies({
|
|
65
|
+
pt: template.body?.pt ?? '',
|
|
66
|
+
en: template.body?.en ?? '',
|
|
67
|
+
});
|
|
68
|
+
setIsActive(template.is_active);
|
|
69
|
+
setTab('pt');
|
|
70
|
+
setPreview(null);
|
|
71
|
+
}, [open, template]);
|
|
72
|
+
|
|
73
|
+
const setBody = (code: LocaleCode, body: string) =>
|
|
74
|
+
setBodies((current) => ({ ...current, [code]: body }));
|
|
75
|
+
|
|
76
|
+
/**
|
|
77
|
+
* Insere `{{variavel}}` onde o cursor está, e não no fim do texto: quem está
|
|
78
|
+
* editando o meio do modelo perderia a posição a cada clique.
|
|
79
|
+
*/
|
|
80
|
+
const insertVariable = (name: string) => {
|
|
81
|
+
const field = bodyRefs.current[tab];
|
|
82
|
+
const token = `{{${name}}}`;
|
|
83
|
+
const body = bodies[tab];
|
|
84
|
+
|
|
85
|
+
if (!field) {
|
|
86
|
+
setBody(tab, `${body}${token}`);
|
|
87
|
+
return;
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
const start = field.selectionStart ?? body.length;
|
|
91
|
+
const end = field.selectionEnd ?? body.length;
|
|
92
|
+
|
|
93
|
+
setBody(tab, `${body.slice(0, start)}${token}${body.slice(end)}`);
|
|
94
|
+
|
|
95
|
+
// Depois do re-render, devolve o cursor para depois do que foi inserido.
|
|
96
|
+
requestAnimationFrame(() => {
|
|
97
|
+
field.focus();
|
|
98
|
+
field.setSelectionRange(start + token.length, start + token.length);
|
|
99
|
+
});
|
|
100
|
+
};
|
|
101
|
+
|
|
102
|
+
const handlePreview = async () => {
|
|
103
|
+
if (!template) return;
|
|
104
|
+
|
|
105
|
+
const { data } = await request<{ text: string }>({
|
|
106
|
+
url: `/message-templates/${template.slug}/preview`,
|
|
107
|
+
method: 'POST',
|
|
108
|
+
data: { body: bodies[tab] },
|
|
109
|
+
});
|
|
110
|
+
|
|
111
|
+
setPreview(data?.text ?? '');
|
|
112
|
+
};
|
|
113
|
+
|
|
114
|
+
const handleSubmit = async () => {
|
|
115
|
+
if (!template) return;
|
|
116
|
+
|
|
117
|
+
setSaving(true);
|
|
118
|
+
try {
|
|
119
|
+
await request({
|
|
120
|
+
url: `/message-templates/${template.slug}`,
|
|
121
|
+
method: 'PATCH',
|
|
122
|
+
data: {
|
|
123
|
+
is_active: isActive,
|
|
124
|
+
locale: Object.fromEntries(
|
|
125
|
+
LOCALES.map((code) => [code, { body: bodies[code] }]),
|
|
126
|
+
),
|
|
127
|
+
},
|
|
128
|
+
});
|
|
129
|
+
|
|
130
|
+
toast.success(t('saved'));
|
|
131
|
+
await onSaved();
|
|
132
|
+
} finally {
|
|
133
|
+
setSaving(false);
|
|
134
|
+
}
|
|
135
|
+
};
|
|
136
|
+
|
|
137
|
+
const variables = Object.entries(template?.variables ?? {});
|
|
138
|
+
|
|
139
|
+
return (
|
|
140
|
+
<Sheet open={open} onOpenChange={onOpenChange}>
|
|
141
|
+
<ResizableSheetContent sheetId="core-message-template-sheet">
|
|
142
|
+
<SheetHeader>
|
|
143
|
+
<SheetTitle>{template?.name?.pt ?? t('sheetTitle')}</SheetTitle>
|
|
144
|
+
<SheetDescription>{t('sheetDescription')}</SheetDescription>
|
|
145
|
+
</SheetHeader>
|
|
146
|
+
|
|
147
|
+
<ScrollArea className="flex-1">
|
|
148
|
+
<div className="space-y-5 p-4">
|
|
149
|
+
<div className="flex items-center justify-between gap-3 rounded-lg border p-3">
|
|
150
|
+
<div className="space-y-0.5">
|
|
151
|
+
<Label className="mb-0">{t('fieldActive')}</Label>
|
|
152
|
+
<p className="text-sm text-muted-foreground">
|
|
153
|
+
{t('fieldActiveHint')}
|
|
154
|
+
</p>
|
|
155
|
+
</div>
|
|
156
|
+
<Switch checked={isActive} onCheckedChange={setIsActive} />
|
|
157
|
+
</div>
|
|
158
|
+
|
|
159
|
+
<Tabs value={tab} onValueChange={(value) => setTab(value as LocaleCode)}>
|
|
160
|
+
<TabsList>
|
|
161
|
+
{LOCALES.map((code) => (
|
|
162
|
+
<TabsTrigger key={code} value={code}>
|
|
163
|
+
{t(`locale_${code}`)}
|
|
164
|
+
</TabsTrigger>
|
|
165
|
+
))}
|
|
166
|
+
</TabsList>
|
|
167
|
+
|
|
168
|
+
{LOCALES.map((code) => (
|
|
169
|
+
<TabsContent key={code} value={code} className="space-y-4 pt-4">
|
|
170
|
+
<div className="space-y-2">
|
|
171
|
+
<Label htmlFor={`body-${code}`}>{t('fieldBody')}</Label>
|
|
172
|
+
<Textarea
|
|
173
|
+
id={`body-${code}`}
|
|
174
|
+
ref={(element) => {
|
|
175
|
+
bodyRefs.current[code] = element;
|
|
176
|
+
}}
|
|
177
|
+
rows={16}
|
|
178
|
+
className="font-mono text-sm"
|
|
179
|
+
value={bodies[code]}
|
|
180
|
+
onChange={(event) => setBody(code, event.target.value)}
|
|
181
|
+
/>
|
|
182
|
+
<p className="text-sm text-muted-foreground">
|
|
183
|
+
{t('fieldBodyHint')}
|
|
184
|
+
</p>
|
|
185
|
+
</div>
|
|
186
|
+
</TabsContent>
|
|
187
|
+
))}
|
|
188
|
+
</Tabs>
|
|
189
|
+
|
|
190
|
+
{variables.length > 0 ? (
|
|
191
|
+
<div className="space-y-2">
|
|
192
|
+
<Label className="mb-0">{t('variables')}</Label>
|
|
193
|
+
<div className="flex flex-wrap gap-2">
|
|
194
|
+
{variables.map(([name, spec]) => (
|
|
195
|
+
<Button
|
|
196
|
+
key={name}
|
|
197
|
+
type="button"
|
|
198
|
+
variant="outline"
|
|
199
|
+
size="sm"
|
|
200
|
+
className="font-mono text-xs"
|
|
201
|
+
tooltip={spec.description}
|
|
202
|
+
onClick={() => insertVariable(name)}
|
|
203
|
+
>
|
|
204
|
+
{`{{${name}}}`}
|
|
205
|
+
</Button>
|
|
206
|
+
))}
|
|
207
|
+
</div>
|
|
208
|
+
</div>
|
|
209
|
+
) : null}
|
|
210
|
+
|
|
211
|
+
<div className="space-y-2">
|
|
212
|
+
<Button
|
|
213
|
+
type="button"
|
|
214
|
+
variant="outline"
|
|
215
|
+
size="sm"
|
|
216
|
+
onClick={handlePreview}
|
|
217
|
+
tooltip={t('previewHint')}
|
|
218
|
+
>
|
|
219
|
+
<Eye className="mr-2 h-4 w-4" />
|
|
220
|
+
{t('preview')}
|
|
221
|
+
</Button>
|
|
222
|
+
|
|
223
|
+
{preview !== null ? (
|
|
224
|
+
// Fundo e largura de balão: o que importa é ver onde a mensagem
|
|
225
|
+
// quebra a linha no aparelho, não o texto num bloco largo.
|
|
226
|
+
<pre className="max-w-md whitespace-pre-wrap rounded-lg bg-muted p-3 font-sans text-sm">
|
|
227
|
+
{preview}
|
|
228
|
+
</pre>
|
|
229
|
+
) : null}
|
|
230
|
+
</div>
|
|
231
|
+
</div>
|
|
232
|
+
</ScrollArea>
|
|
233
|
+
|
|
234
|
+
<FormActions
|
|
235
|
+
sheet
|
|
236
|
+
cancelLabel={t('cancel')}
|
|
237
|
+
onCancel={() => onOpenChange(false)}
|
|
238
|
+
onSubmit={handleSubmit}
|
|
239
|
+
submitLoading={saving}
|
|
240
|
+
submitLabel={t('save')}
|
|
241
|
+
/>
|
|
242
|
+
</ResizableSheetContent>
|
|
243
|
+
</Sheet>
|
|
244
|
+
);
|
|
245
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Um modelo de mensagem como a API o entrega: o que a library declarou em
|
|
3
|
+
* código, com o que o banco sobrescreveu por cima.
|
|
4
|
+
*/
|
|
5
|
+
export type MessageTemplateVariable = {
|
|
6
|
+
description?: string;
|
|
7
|
+
sample: string | number | boolean;
|
|
8
|
+
};
|
|
9
|
+
|
|
10
|
+
export type MessageTemplate = {
|
|
11
|
+
slug: string;
|
|
12
|
+
/** Library dona do modelo. É por ele que a tela agrupa. */
|
|
13
|
+
module: string;
|
|
14
|
+
name: Record<string, string>;
|
|
15
|
+
description: Record<string, string>;
|
|
16
|
+
/** O texto em vigor por idioma — o editado quando existe, senão o padrão. */
|
|
17
|
+
body: Record<string, string>;
|
|
18
|
+
/** O texto padrão do código, para comparar e restaurar. */
|
|
19
|
+
fallback: Record<string, string>;
|
|
20
|
+
variables: Record<string, MessageTemplateVariable>;
|
|
21
|
+
is_active: boolean;
|
|
22
|
+
/** Há linha no banco? É o que acende o selo e habilita restaurar. */
|
|
23
|
+
customized: boolean;
|
|
24
|
+
};
|