@hexabot-ai/api 3.1.3-alpha.0 → 3.2.0-alpha.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -0
- package/dist/analytics/controllers/stats.controller.d.ts +3 -1
- package/dist/analytics/controllers/stats.controller.js +21 -0
- package/dist/analytics/controllers/stats.controller.js.map +1 -1
- package/dist/analytics/dto/stats.dto.d.ts +16 -11
- package/dist/analytics/dto/stats.dto.js +1 -31
- package/dist/analytics/dto/stats.dto.js.map +1 -1
- package/dist/analytics/entities/stats.entity.d.ts +20 -3
- package/dist/analytics/entities/stats.entity.js +3 -3
- package/dist/analytics/entities/stats.entity.js.map +1 -1
- package/dist/analytics/enums/stats-type.enum.d.ts +1 -9
- package/dist/analytics/enums/stats-type.enum.js +2 -10
- package/dist/analytics/enums/stats-type.enum.js.map +1 -1
- package/dist/analytics/repositories/stats.repository.d.ts +1 -1
- package/dist/analytics/repositories/stats.repository.js.map +1 -1
- package/dist/analytics/services/stats.service.d.ts +7 -2
- package/dist/analytics/services/stats.service.js +95 -8
- package/dist/analytics/services/stats.service.js.map +1 -1
- package/dist/app.controller.d.ts +13 -0
- package/dist/app.controller.js +9 -0
- package/dist/app.controller.js.map +1 -1
- package/dist/app.module.js +4 -0
- package/dist/app.module.js.map +1 -1
- package/dist/app.service.d.ts +5 -1
- package/dist/app.service.js +8 -2
- package/dist/app.service.js.map +1 -1
- package/dist/attachment/attachment.module.js +4 -1
- package/dist/attachment/attachment.module.js.map +1 -1
- package/dist/attachment/controllers/attachment.controller.d.ts +65 -2
- package/dist/attachment/controllers/attachment.controller.js.map +1 -1
- package/dist/attachment/dto/attachment.dto.d.ts +4 -23
- package/dist/attachment/dto/attachment.dto.js +1 -72
- package/dist/attachment/dto/attachment.dto.js.map +1 -1
- package/dist/attachment/entities/attachment.entity.d.ts +113 -6
- package/dist/attachment/entities/attachment.entity.js +16 -21
- package/dist/attachment/entities/attachment.entity.js.map +1 -1
- package/dist/attachment/guards/attachment-ability.guard.js.map +1 -1
- package/dist/attachment/mocks/attachment.mock.d.ts +1 -1
- package/dist/attachment/mocks/attachment.mock.js +7 -2
- package/dist/attachment/mocks/attachment.mock.js.map +1 -1
- package/dist/attachment/services/attachment.service.d.ts +2 -1
- package/dist/attachment/services/attachment.service.js.map +1 -1
- package/dist/attachment/types/index.d.ts +1 -15
- package/dist/attachment/types/index.js +5 -19
- package/dist/attachment/types/index.js.map +1 -1
- package/dist/audit/audit-core.module.d.ts +2 -0
- package/dist/audit/audit-core.module.js +39 -0
- package/dist/audit/audit-core.module.js.map +1 -0
- package/dist/audit/audit.module.d.ts +2 -0
- package/dist/audit/audit.module.js +62 -0
- package/dist/audit/audit.module.js.map +1 -0
- package/dist/audit/controllers/audit-log.controller.d.ts +16 -0
- package/dist/audit/controllers/audit-log.controller.js +85 -0
- package/dist/audit/controllers/audit-log.controller.js.map +1 -0
- package/dist/audit/decorators/audit-label.decorator.d.ts +4 -0
- package/dist/audit/decorators/audit-label.decorator.js +23 -0
- package/dist/audit/decorators/audit-label.decorator.js.map +1 -0
- package/dist/audit/decorators/audit-log.decorators.d.ts +2 -0
- package/dist/audit/decorators/audit-log.decorators.js +31 -0
- package/dist/audit/decorators/audit-log.decorators.js.map +1 -0
- package/dist/audit/dto/audit-log.dto.d.ts +33 -0
- package/dist/audit/dto/audit-log.dto.js +132 -0
- package/dist/audit/dto/audit-log.dto.js.map +1 -0
- package/dist/audit/entities/audit-log.entity.d.ts +76 -0
- package/dist/audit/entities/audit-log.entity.js +104 -0
- package/dist/audit/entities/audit-log.entity.js.map +1 -0
- package/dist/audit/exporters/audit-backend.factory.d.ts +10 -0
- package/dist/audit/exporters/audit-backend.factory.js +60 -0
- package/dist/audit/exporters/audit-backend.factory.js.map +1 -0
- package/dist/audit/exporters/audit-database.exporter.d.ts +13 -0
- package/dist/audit/exporters/audit-database.exporter.js +89 -0
- package/dist/audit/exporters/audit-database.exporter.js.map +1 -0
- package/dist/audit/exporters/audit-noop.exporter.d.ts +8 -0
- package/dist/audit/exporters/audit-noop.exporter.js +22 -0
- package/dist/audit/exporters/audit-noop.exporter.js.map +1 -0
- package/dist/audit/exporters/audit-safe.exporter.d.ts +14 -0
- package/dist/audit/exporters/audit-safe.exporter.js +38 -0
- package/dist/audit/exporters/audit-safe.exporter.js.map +1 -0
- package/dist/audit/index.d.ts +9 -0
- package/dist/audit/index.js +26 -0
- package/dist/audit/index.js.map +1 -0
- package/dist/audit/interceptors/audit-context.interceptor.d.ts +8 -0
- package/dist/audit/interceptors/audit-context.interceptor.js +32 -0
- package/dist/audit/interceptors/audit-context.interceptor.js.map +1 -0
- package/dist/audit/repositories/audit-log.repository.d.ts +6 -0
- package/dist/audit/repositories/audit-log.repository.js +32 -0
- package/dist/audit/repositories/audit-log.repository.js.map +1 -0
- package/dist/audit/services/audit-context.service.d.ts +13 -0
- package/dist/audit/services/audit-context.service.js +84 -0
- package/dist/audit/services/audit-context.service.js.map +1 -0
- package/dist/audit/services/audit-log-record.service.d.ts +16 -0
- package/dist/audit/services/audit-log-record.service.js +69 -0
- package/dist/audit/services/audit-log-record.service.js.map +1 -0
- package/dist/audit/subscribers/audit-log.subscriber.d.ts +25 -0
- package/dist/audit/subscribers/audit-log.subscriber.js +209 -0
- package/dist/audit/subscribers/audit-log.subscriber.js.map +1 -0
- package/dist/audit/types/audit-context.type.d.ts +13 -0
- package/dist/audit/types/audit-context.type.js +3 -0
- package/dist/audit/types/audit-context.type.js.map +1 -0
- package/dist/audit/utils/request-context.d.ts +5 -0
- package/dist/audit/utils/request-context.js +33 -0
- package/dist/audit/utils/request-context.js.map +1 -0
- package/dist/channel/channel.controller.d.ts +5 -4
- package/dist/channel/channel.controller.js +11 -3
- package/dist/channel/channel.controller.js.map +1 -1
- package/dist/channel/channel.module.js +22 -3
- package/dist/channel/channel.module.js.map +1 -1
- package/dist/channel/channel.service.d.ts +15 -8
- package/dist/channel/channel.service.js +74 -59
- package/dist/channel/channel.service.js.map +1 -1
- package/dist/channel/dto/source.dto.d.ts +20 -0
- package/dist/channel/dto/source.dto.js +66 -0
- package/dist/channel/dto/source.dto.js.map +1 -0
- package/dist/channel/entities/source.entity.d.ts +85 -0
- package/dist/channel/entities/source.entity.js +63 -0
- package/dist/channel/entities/source.entity.js.map +1 -0
- package/dist/channel/index.d.ts +12 -0
- package/dist/channel/index.js +12 -0
- package/dist/channel/index.js.map +1 -1
- package/dist/channel/lib/Handler.d.ts +21 -15
- package/dist/channel/lib/Handler.js +43 -24
- package/dist/channel/lib/Handler.js.map +1 -1
- package/dist/channel/lib/__test__/common.mock.d.ts +7 -7
- package/dist/channel/lib/__test__/common.mock.js +12 -14
- package/dist/channel/lib/__test__/common.mock.js.map +1 -1
- package/dist/channel/lib/__test__/label.mock.d.ts +1 -1
- package/dist/channel/lib/__test__/subscriber.mock.d.ts +1 -1
- package/dist/channel/lib/__test__/subscriber.mock.js +1 -0
- package/dist/channel/lib/__test__/subscriber.mock.js.map +1 -1
- package/dist/channel/lib/channel-capabilities.d.ts +12 -0
- package/dist/channel/lib/channel-capabilities.js +15 -0
- package/dist/channel/lib/channel-capabilities.js.map +1 -0
- package/dist/channel/lib/channel-codec.d.ts +7 -0
- package/dist/channel/lib/channel-codec.js +3 -0
- package/dist/channel/lib/channel-codec.js.map +1 -0
- package/dist/channel/lib/channel-event-bus.d.ts +22 -0
- package/dist/channel/lib/channel-event-bus.js +47 -0
- package/dist/channel/lib/channel-event-bus.js.map +1 -0
- package/dist/channel/lib/extension-inject.decorator.d.ts +9 -0
- package/dist/channel/lib/extension-inject.decorator.js +25 -0
- package/dist/channel/lib/extension-inject.decorator.js.map +1 -0
- package/dist/channel/lib/inbound-events/channel-inbound-event-context.d.ts +7 -1
- package/dist/channel/lib/inbound-events/channel-inbound-event-context.js +15 -1
- package/dist/channel/lib/inbound-events/channel-inbound-event-context.js.map +1 -1
- package/dist/channel/lib/inbound-events/channel-inbound-event.d.ts +6 -2
- package/dist/channel/lib/inbound-events/channel-inbound-event.js +19 -0
- package/dist/channel/lib/inbound-events/channel-inbound-event.js.map +1 -1
- package/dist/channel/lib/inbound-events/message-inbound-event.d.ts +1 -2
- package/dist/channel/lib/inbound-events/message-inbound-event.js +8 -6
- package/dist/channel/lib/inbound-events/message-inbound-event.js.map +1 -1
- package/dist/channel/lib/inbound-events/synthetic-message-inbound-event.d.ts +1 -2
- package/dist/channel/lib/inbound-events/synthetic-message-inbound-event.js +23 -24
- package/dist/channel/lib/inbound-events/synthetic-message-inbound-event.js.map +1 -1
- package/dist/channel/lib/outbound/channel-outbound-encoder.d.ts +21 -10
- package/dist/channel/lib/outbound/channel-outbound-encoder.js +19 -55
- package/dist/channel/lib/outbound/channel-outbound-encoder.js.map +1 -1
- package/dist/channel/lib/transports/http-channel-handler.d.ts +17 -0
- package/dist/channel/lib/transports/http-channel-handler.js +85 -0
- package/dist/channel/lib/transports/http-channel-handler.js.map +1 -0
- package/dist/channel/lib/transports/index.d.ts +2 -0
- package/dist/channel/lib/transports/index.js +19 -0
- package/dist/channel/lib/transports/index.js.map +1 -0
- package/dist/channel/lib/transports/websocket-channel-handler.d.ts +17 -0
- package/dist/channel/lib/transports/websocket-channel-handler.js +65 -0
- package/dist/channel/lib/transports/websocket-channel-handler.js.map +1 -0
- package/dist/channel/repositories/source.repository.d.ts +6 -0
- package/dist/channel/repositories/source.repository.js +32 -0
- package/dist/channel/repositories/source.repository.js.map +1 -0
- package/dist/channel/services/channel-attachment.service.d.ts +3 -3
- package/dist/channel/services/channel-attachment.service.js +19 -13
- package/dist/channel/services/channel-attachment.service.js.map +1 -1
- package/dist/channel/services/channel-download.service.d.ts +4 -2
- package/dist/channel/services/channel-download.service.js +7 -3
- package/dist/channel/services/channel-download.service.js.map +1 -1
- package/dist/channel/services/channel-registry.service.d.ts +9 -0
- package/dist/channel/services/channel-registry.service.js +36 -0
- package/dist/channel/services/channel-registry.service.js.map +1 -0
- package/dist/channel/services/source.service.d.ts +28 -0
- package/dist/channel/services/source.service.js +145 -0
- package/dist/channel/services/source.service.js.map +1 -0
- package/dist/channel/services/subscriber-resolver.service.d.ts +15 -0
- package/dist/channel/services/subscriber-resolver.service.js +48 -0
- package/dist/channel/services/subscriber-resolver.service.js.map +1 -0
- package/dist/channel/source.controller.d.ts +27 -0
- package/dist/channel/source.controller.js +102 -0
- package/dist/channel/source.controller.js.map +1 -0
- package/dist/channel/types.d.ts +10 -4
- package/dist/channel/webhook.controller.d.ts +8 -10
- package/dist/channel/webhook.controller.js +30 -38
- package/dist/channel/webhook.controller.js.map +1 -1
- package/dist/chat/controllers/label-group.controller.d.ts +2 -1
- package/dist/chat/controllers/label-group.controller.js.map +1 -1
- package/dist/chat/controllers/label.controller.d.ts +2 -1
- package/dist/chat/controllers/label.controller.js.map +1 -1
- package/dist/chat/controllers/message.controller.d.ts +3 -2
- package/dist/chat/controllers/message.controller.js +13 -11
- package/dist/chat/controllers/message.controller.js.map +1 -1
- package/dist/chat/controllers/subscriber.controller.d.ts +26 -2
- package/dist/chat/controllers/subscriber.controller.js +1 -0
- package/dist/chat/controllers/subscriber.controller.js.map +1 -1
- package/dist/chat/controllers/thread.controller.d.ts +14 -2
- package/dist/chat/controllers/thread.controller.js +4 -0
- package/dist/chat/controllers/thread.controller.js.map +1 -1
- package/dist/chat/dto/label-group.dto.d.ts +4 -13
- package/dist/chat/dto/label-group.dto.js +1 -35
- package/dist/chat/dto/label-group.dto.js.map +1 -1
- package/dist/chat/dto/label.dto.d.ts +4 -20
- package/dist/chat/dto/label.dto.js +1 -63
- package/dist/chat/dto/label.dto.js.map +1 -1
- package/dist/chat/dto/message.dto.d.ts +7 -26
- package/dist/chat/dto/message.dto.js +13 -83
- package/dist/chat/dto/message.dto.js.map +1 -1
- package/dist/chat/dto/subscriber.dto.d.ts +6 -27
- package/dist/chat/dto/subscriber.dto.js +11 -83
- package/dist/chat/dto/subscriber.dto.js.map +1 -1
- package/dist/chat/dto/thread.dto.d.ts +5 -17
- package/dist/chat/dto/thread.dto.js +11 -54
- package/dist/chat/dto/thread.dto.js.map +1 -1
- package/dist/chat/entities/label-group.entity.d.ts +37 -3
- package/dist/chat/entities/label-group.entity.js +5 -3
- package/dist/chat/entities/label-group.entity.js.map +1 -1
- package/dist/chat/entities/label.entity.d.ts +88 -3
- package/dist/chat/entities/label.entity.js +5 -3
- package/dist/chat/entities/label.entity.js.map +1 -1
- package/dist/chat/entities/message.entity.d.ts +824 -4
- package/dist/chat/entities/message.entity.js +3 -3
- package/dist/chat/entities/message.entity.js.map +1 -1
- package/dist/chat/entities/subscriber.entity.d.ts +9 -7
- package/dist/chat/entities/subscriber.entity.js +19 -4
- package/dist/chat/entities/subscriber.entity.js.map +1 -1
- package/dist/chat/entities/thread.entity.d.ts +109 -3
- package/dist/chat/entities/thread.entity.js +19 -3
- package/dist/chat/entities/thread.entity.js.map +1 -1
- package/dist/chat/helpers/envelope-builder.d.ts +7 -7
- package/dist/chat/helpers/envelope-builder.js +26 -26
- package/dist/chat/helpers/envelope-builder.js.map +1 -1
- package/dist/chat/helpers/envelope-factory.d.ts +132 -42
- package/dist/chat/helpers/envelope-factory.js +11 -12
- package/dist/chat/helpers/envelope-factory.js.map +1 -1
- package/dist/chat/index.d.ts +0 -5
- package/dist/chat/index.js +0 -5
- package/dist/chat/index.js.map +1 -1
- package/dist/chat/repositories/message.repository.d.ts +1 -2
- package/dist/chat/repositories/message.repository.js.map +1 -1
- package/dist/chat/repositories/subscriber.repository.d.ts +8 -6
- package/dist/chat/repositories/subscriber.repository.js +18 -16
- package/dist/chat/repositories/subscriber.repository.js.map +1 -1
- package/dist/chat/repositories/thread.repository.d.ts +1 -1
- package/dist/chat/repositories/thread.repository.js +1 -1
- package/dist/chat/repositories/thread.repository.js.map +1 -1
- package/dist/chat/services/chat.service.js +17 -7
- package/dist/chat/services/chat.service.js.map +1 -1
- package/dist/chat/services/message.service.d.ts +1 -2
- package/dist/chat/services/message.service.js.map +1 -1
- package/dist/chat/services/subscriber.service.d.ts +214 -8
- package/dist/chat/services/subscriber.service.js +11 -12
- package/dist/chat/services/subscriber.service.js.map +1 -1
- package/dist/chat/services/thread.service.d.ts +77 -9
- package/dist/chat/services/thread.service.js +54 -8
- package/dist/chat/services/thread.service.js.map +1 -1
- package/dist/cms/controllers/content-type.controller.d.ts +15 -2
- package/dist/cms/controllers/content-type.controller.js.map +1 -1
- package/dist/cms/controllers/content.controller.d.ts +62 -4
- package/dist/cms/controllers/content.controller.js.map +1 -1
- package/dist/cms/controllers/menu.controller.d.ts +22 -3
- package/dist/cms/controllers/menu.controller.js.map +1 -1
- package/dist/cms/dto/content.dto.d.ts +4 -16
- package/dist/cms/dto/content.dto.js +1 -47
- package/dist/cms/dto/content.dto.js.map +1 -1
- package/dist/cms/dto/contentType.dto.d.ts +4 -11
- package/dist/cms/dto/contentType.dto.js +1 -29
- package/dist/cms/dto/contentType.dto.js.map +1 -1
- package/dist/cms/dto/menu.dto.d.ts +4 -16
- package/dist/cms/dto/menu.dto.js +1 -51
- package/dist/cms/dto/menu.dto.js.map +1 -1
- package/dist/cms/entities/content-type.entity.d.ts +15 -3
- package/dist/cms/entities/content-type.entity.js +5 -3
- package/dist/cms/entities/content-type.entity.js.map +1 -1
- package/dist/cms/entities/content.entity.d.ts +37 -4
- package/dist/cms/entities/content.entity.js +5 -3
- package/dist/cms/entities/content.entity.js.map +1 -1
- package/dist/cms/entities/menu.entity.d.ts +67 -3
- package/dist/cms/entities/menu.entity.js +5 -3
- package/dist/cms/entities/menu.entity.js.map +1 -1
- package/dist/cms/enums/menu-type.enum.d.ts +1 -5
- package/dist/cms/enums/menu-type.enum.js +2 -6
- package/dist/cms/enums/menu-type.enum.js.map +1 -1
- package/dist/cms/repositories/content.repository.d.ts +1 -1
- package/dist/cms/repositories/content.repository.js.map +1 -1
- package/dist/cms/services/content-type.service.d.ts +1 -1
- package/dist/cms/services/content-type.service.js.map +1 -1
- package/dist/cms/services/content.service.d.ts +12 -6
- package/dist/cms/services/content.service.js.map +1 -1
- package/dist/cms/services/rag-indexer.service.js.map +1 -1
- package/dist/cms/types/menu-types.d.ts +1 -1
- package/dist/cms/utilities/verifyTree.js.map +1 -1
- package/dist/config/i18n/en/chatbot_settings.json +15 -15
- package/dist/config/i18n/en/contact.json +21 -21
- package/dist/config/i18n/en/messages.json +11 -11
- package/dist/config/i18n/en/rag_settings.json +19 -19
- package/dist/config/i18n/fr/chatbot_settings.json +15 -15
- package/dist/config/i18n/fr/contact.json +21 -21
- package/dist/config/i18n/fr/messages.json +11 -11
- package/dist/config/i18n/fr/rag_settings.json +19 -19
- package/dist/config/index.js +63 -0
- package/dist/config/index.js.map +1 -1
- package/dist/config/types.d.ts +22 -0
- package/dist/database/entities/base.entity.d.ts +3 -0
- package/dist/database/entities/base.entity.js +33 -7
- package/dist/database/entities/base.entity.js.map +1 -1
- package/dist/extension/cleanup.service.d.ts +2 -5
- package/dist/extension/cleanup.service.js +2 -12
- package/dist/extension/cleanup.service.js.map +1 -1
- package/dist/extension/types.d.ts +5 -6
- package/dist/extensions/actions/ai/ai-base.action.d.ts +1 -2
- package/dist/extensions/actions/ai/ai-base.action.js +15 -6
- package/dist/extensions/actions/ai/ai-base.action.js.map +1 -1
- package/dist/extensions/actions/ai/i18n/en.translations.json +164 -164
- package/dist/extensions/actions/ai/i18n/fr.translations.json +164 -164
- package/dist/extensions/actions/ai/model.binding.d.ts +2 -2
- package/dist/extensions/actions/ai/retrieve-content-rag.action.d.ts +9 -1
- package/dist/extensions/actions/memory/i18n/en.translations.json +3 -3
- package/dist/extensions/actions/memory/i18n/fr.translations.json +3 -3
- package/dist/extensions/actions/messaging/attachment.action.d.ts +3 -1
- package/dist/extensions/actions/messaging/attachment.action.js +4 -5
- package/dist/extensions/actions/messaging/attachment.action.js.map +1 -1
- package/dist/extensions/actions/messaging/await-reply.action.d.ts +100 -56
- package/dist/extensions/actions/messaging/buttons.action.d.ts +1 -1
- package/dist/extensions/actions/messaging/buttons.action.js +4 -4
- package/dist/extensions/actions/messaging/buttons.action.js.map +1 -1
- package/dist/extensions/actions/messaging/i18n/en.translations.json +174 -174
- package/dist/extensions/actions/messaging/i18n/fr.translations.json +174 -174
- package/dist/extensions/actions/messaging/list.action.d.ts +4 -4
- package/dist/extensions/actions/messaging/list.action.js +6 -8
- package/dist/extensions/actions/messaging/list.action.js.map +1 -1
- package/dist/extensions/actions/messaging/message-action.base.d.ts +243 -120
- package/dist/extensions/actions/messaging/message-action.base.js +10 -10
- package/dist/extensions/actions/messaging/message-action.base.js.map +1 -1
- package/dist/extensions/actions/messaging/quick-replies.action.js +2 -2
- package/dist/extensions/actions/messaging/quick-replies.action.js.map +1 -1
- package/dist/extensions/actions/subscriber/i18n/en.translations.json +14 -14
- package/dist/extensions/actions/subscriber/i18n/fr.translations.json +14 -14
- package/dist/extensions/actions/web/http-request.action.d.ts +9 -1
- package/dist/extensions/actions/web/i18n/en.translations.json +27 -27
- package/dist/extensions/actions/web/i18n/fr.translations.json +27 -27
- package/dist/extensions/channels/console/i18n/en.translations.json +22 -22
- package/dist/extensions/channels/console/i18n/fr.translations.json +22 -22
- package/dist/extensions/channels/console/index.channel.d.ts +1 -1
- package/dist/extensions/channels/console/index.channel.js +2 -2
- package/dist/extensions/channels/console/index.channel.js.map +1 -1
- package/dist/extensions/channels/console/settings.schema.d.ts +14 -0
- package/dist/extensions/channels/console/{console-channel.settings.js → settings.schema.js} +3 -16
- package/dist/extensions/channels/console/settings.schema.js.map +1 -0
- package/dist/extensions/channels/web/__test__/data.mock.js +16 -17
- package/dist/extensions/channels/web/__test__/data.mock.js.map +1 -1
- package/dist/extensions/channels/web/__test__/events.mock.js +21 -22
- package/dist/extensions/channels/web/__test__/events.mock.js.map +1 -1
- package/dist/extensions/channels/web/base-web-channel.d.ts +25 -42
- package/dist/extensions/channels/web/base-web-channel.js +204 -398
- package/dist/extensions/channels/web/base-web-channel.js.map +1 -1
- package/dist/extensions/channels/web/i18n/en.translations.json +26 -26
- package/dist/extensions/channels/web/i18n/fr.translations.json +26 -26
- package/dist/extensions/channels/web/inbound/events/delivery.event.d.ts +1 -1
- package/dist/extensions/channels/web/inbound/events/delivery.event.js +2 -2
- package/dist/extensions/channels/web/inbound/events/delivery.event.js.map +1 -1
- package/dist/extensions/channels/web/inbound/events/messages/attachment.event.d.ts +2 -4
- package/dist/extensions/channels/web/inbound/events/messages/attachment.event.js +11 -10
- package/dist/extensions/channels/web/inbound/events/messages/attachment.event.js.map +1 -1
- package/dist/extensions/channels/web/inbound/events/messages/location.event.d.ts +1 -2
- package/dist/extensions/channels/web/inbound/events/messages/location.event.js +9 -8
- package/dist/extensions/channels/web/inbound/events/messages/location.event.js.map +1 -1
- package/dist/extensions/channels/web/inbound/events/messages/payload.event.d.ts +2 -3
- package/dist/extensions/channels/web/inbound/events/messages/payload.event.js +5 -2
- package/dist/extensions/channels/web/inbound/events/messages/payload.event.js.map +1 -1
- package/dist/extensions/channels/web/inbound/events/messages/postback.event.js +2 -2
- package/dist/extensions/channels/web/inbound/events/messages/postback.event.js.map +1 -1
- package/dist/extensions/channels/web/inbound/events/messages/quick-reply.event.js +2 -2
- package/dist/extensions/channels/web/inbound/events/messages/quick-reply.event.js.map +1 -1
- package/dist/extensions/channels/web/inbound/events/messages/text.event.d.ts +1 -1
- package/dist/extensions/channels/web/inbound/events/messages/text.event.js +6 -3
- package/dist/extensions/channels/web/inbound/events/messages/text.event.js.map +1 -1
- package/dist/extensions/channels/web/inbound/events/read.event.d.ts +1 -1
- package/dist/extensions/channels/web/inbound/events/read.event.js +2 -2
- package/dist/extensions/channels/web/inbound/events/read.event.js.map +1 -1
- package/dist/extensions/channels/web/inbound/events/typing.event.d.ts +1 -1
- package/dist/extensions/channels/web/inbound/events/typing.event.js +2 -2
- package/dist/extensions/channels/web/inbound/events/typing.event.js.map +1 -1
- package/dist/extensions/channels/web/inbound/events/unsupported.event.d.ts +1 -1
- package/dist/extensions/channels/web/inbound/events/unsupported.event.js +2 -2
- package/dist/extensions/channels/web/inbound/events/unsupported.event.js.map +1 -1
- package/dist/extensions/channels/web/inbound/index.d.ts +1 -0
- package/dist/extensions/channels/web/inbound/index.js +1 -0
- package/dist/extensions/channels/web/inbound/index.js.map +1 -1
- package/dist/extensions/channels/web/inbound/web-inbound-message-encoder.d.ts +11 -0
- package/dist/extensions/channels/web/inbound/web-inbound-message-encoder.js +80 -0
- package/dist/extensions/channels/web/inbound/web-inbound-message-encoder.js.map +1 -0
- package/dist/extensions/channels/web/index.channel.d.ts +1 -1
- package/dist/extensions/channels/web/index.channel.js +2 -2
- package/dist/extensions/channels/web/index.channel.js.map +1 -1
- package/dist/extensions/channels/web/outbound/web-outbound-message-encoder.d.ts +15 -16
- package/dist/extensions/channels/web/outbound/web-outbound-message-encoder.js +26 -25
- package/dist/extensions/channels/web/outbound/web-outbound-message-encoder.js.map +1 -1
- package/dist/extensions/channels/web/services/web-history.service.d.ts +22 -0
- package/dist/extensions/channels/web/services/web-history.service.js +81 -0
- package/dist/extensions/channels/web/services/web-history.service.js.map +1 -0
- package/dist/extensions/channels/web/services/web-session.service.d.ts +22 -0
- package/dist/extensions/channels/web/services/web-session.service.js +146 -0
- package/dist/extensions/channels/web/services/web-session.service.js.map +1 -0
- package/dist/extensions/channels/web/settings.schema.d.ts +16 -0
- package/dist/extensions/channels/web/{web-channel.settings.js → settings.schema.js} +3 -16
- package/dist/extensions/channels/web/settings.schema.js.map +1 -0
- package/dist/extensions/channels/web/types.d.ts +2 -4
- package/dist/extensions/channels/web/types.js +2 -2
- package/dist/extensions/channels/web/types.js.map +1 -1
- package/dist/extensions/helpers/local-storage/i18n/en.translations.json +4 -4
- package/dist/extensions/helpers/local-storage/i18n/fr.translations.json +4 -4
- package/dist/extensions/helpers/local-storage/index.helper.d.ts +2 -1
- package/dist/extensions/helpers/local-storage/index.helper.js.map +1 -1
- package/dist/extensions/index.d.ts +2 -2
- package/dist/extensions/index.js +2 -2
- package/dist/extensions/index.js.map +1 -1
- package/dist/health/health.service.d.ts +18 -0
- package/dist/health/health.service.js +190 -0
- package/dist/health/health.service.js.map +1 -0
- package/dist/helper/lib/base-llm-helper.d.ts +1 -1
- package/dist/helper/lib/base-storage-helper.d.ts +2 -1
- package/dist/i18n/controllers/language.controller.d.ts +11 -2
- package/dist/i18n/controllers/language.controller.js.map +1 -1
- package/dist/i18n/controllers/translation.controller.d.ts +21 -3
- package/dist/i18n/dto/language.dto.d.ts +4 -11
- package/dist/i18n/dto/language.dto.js +1 -31
- package/dist/i18n/dto/language.dto.js.map +1 -1
- package/dist/i18n/dto/translation.dto.d.ts +4 -9
- package/dist/i18n/dto/translation.dto.js +1 -23
- package/dist/i18n/dto/translation.dto.js.map +1 -1
- package/dist/i18n/entities/language.entity.d.ts +19 -3
- package/dist/i18n/entities/language.entity.js +5 -3
- package/dist/i18n/entities/language.entity.js.map +1 -1
- package/dist/i18n/entities/translation.entity.d.ts +15 -3
- package/dist/i18n/entities/translation.entity.js +5 -3
- package/dist/i18n/entities/translation.entity.js.map +1 -1
- package/dist/i18n/services/language.service.d.ts +18 -2
- package/dist/index.d.ts +1 -0
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/seeder.js +1 -1
- package/dist/seeder.js.map +1 -1
- package/dist/setting/controllers/setting.controller.d.ts +11 -2
- package/dist/setting/controllers/setting.controller.js.map +1 -1
- package/dist/setting/dto/metadata.dto.d.ts +4 -9
- package/dist/setting/dto/metadata.dto.js +1 -23
- package/dist/setting/dto/metadata.dto.js.map +1 -1
- package/dist/setting/dto/setting.dto.d.ts +4 -11
- package/dist/setting/dto/setting.dto.js +1 -31
- package/dist/setting/dto/setting.dto.js.map +1 -1
- package/dist/setting/entities/metadata.entity.d.ts +15 -3
- package/dist/setting/entities/metadata.entity.js +5 -3
- package/dist/setting/entities/metadata.entity.js.map +1 -1
- package/dist/setting/entities/setting.entity.d.ts +19 -3
- package/dist/setting/entities/setting.entity.js +5 -3
- package/dist/setting/entities/setting.entity.js.map +1 -1
- package/dist/setting/runtime-settings.d.ts +1 -1
- package/dist/setting/runtime-settings.js.map +1 -1
- package/dist/setting/runtime-settings.seed.d.ts +1 -1
- package/dist/setting/runtime-settings.seed.js +1 -3
- package/dist/setting/runtime-settings.seed.js.map +1 -1
- package/dist/setting/services/metadata.service.d.ts +2 -1
- package/dist/setting/services/metadata.service.js.map +1 -1
- package/dist/setting/services/setting.service.d.ts +2 -1
- package/dist/setting/services/setting.service.js.map +1 -1
- package/dist/setting/setting.module.js.map +1 -1
- package/dist/setting/types/index.d.ts +2 -9
- package/dist/setting/types/index.js +2 -9
- package/dist/setting/types/index.js.map +1 -1
- package/dist/static/assets/{cssMode-EfTI32jH.js → cssMode-B4TecieE.js} +1 -1
- package/dist/static/assets/{freemarker2-Bp36bqQu.js → freemarker2-BVMU7I_j.js} +1 -1
- package/dist/static/assets/{handlebars-DFcsacT2.js → handlebars-BHhJ0REg.js} +1 -1
- package/dist/static/assets/{html-DoteNmPg.js → html-C0xYW7UH.js} +1 -1
- package/dist/static/assets/{htmlMode-D4qDYA_c.js → htmlMode-DKBoSSUf.js} +1 -1
- package/dist/static/assets/{index-B0zbJ-Gv.css → index-3E05C6mQ.css} +1 -1
- package/dist/static/assets/{index-Da34FzWk.js → index-Q16skETC.js} +2165 -2165
- package/dist/static/assets/{javascript-hq-XZ18j.js → javascript-BmG42Qtz.js} +1 -1
- package/dist/static/assets/{jsonMode-gxldbTjQ.js → jsonMode-COpdryGy.js} +1 -1
- package/dist/static/assets/{liquid-VombxSUL.js → liquid-t7wU_We6.js} +1 -1
- package/dist/static/assets/{lspLanguageFeatures-DjxTnuCT.js → lspLanguageFeatures-nYoOHLBU.js} +1 -1
- package/dist/static/assets/{mdx-Bv744ltm.js → mdx-CXAOQEUW.js} +1 -1
- package/dist/static/assets/{python-BB7rtHwG.js → python-CnD9oLZg.js} +1 -1
- package/dist/static/assets/{razor-BoLELWC9.js → razor-D1-qfmFa.js} +1 -1
- package/dist/static/assets/{tsMode-DLSApW05.js → tsMode-Dm0heYbf.js} +1 -1
- package/dist/static/assets/{typescript-qlBdudA6.js → typescript-DSKhH6ZE.js} +1 -1
- package/dist/static/assets/{xml-DMdTu6Mm.js → xml-CzpJrCkR.js} +1 -1
- package/dist/static/assets/{yaml-C9JqXvOt.js → yaml-Bby4uDCt.js} +1 -1
- package/dist/static/index.html +2 -2
- package/dist/static/locales/en/translation.json +141 -2
- package/dist/static/locales/fr/translation.json +141 -2
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/dist/types/express-session.d.ts +1 -0
- package/dist/user/controllers/auth.controller.js +3 -0
- package/dist/user/controllers/auth.controller.js.map +1 -1
- package/dist/user/controllers/credential.controller.d.ts +2 -1
- package/dist/user/controllers/credential.controller.js.map +1 -1
- package/dist/user/controllers/model.controller.d.ts +26 -1
- package/dist/user/controllers/permission.controller.d.ts +40 -2
- package/dist/user/controllers/role.controller.d.ts +128 -4
- package/dist/user/controllers/role.controller.js.map +1 -1
- package/dist/user/controllers/user.controller.d.ts +374 -8
- package/dist/user/dto/credential.dto.d.ts +4 -13
- package/dist/user/dto/credential.dto.js +1 -35
- package/dist/user/dto/credential.dto.js.map +1 -1
- package/dist/user/dto/model.dto.d.ts +4 -15
- package/dist/user/dto/model.dto.js +1 -43
- package/dist/user/dto/model.dto.js.map +1 -1
- package/dist/user/dto/permission.dto.d.ts +4 -17
- package/dist/user/dto/permission.dto.js +1 -49
- package/dist/user/dto/permission.dto.js.map +1 -1
- package/dist/user/dto/role.dto.d.ts +4 -18
- package/dist/user/dto/role.dto.js +1 -53
- package/dist/user/dto/role.dto.js.map +1 -1
- package/dist/user/dto/user-profile.dto.d.ts +4 -9
- package/dist/user/dto/user-profile.dto.js +1 -29
- package/dist/user/dto/user-profile.dto.js.map +1 -1
- package/dist/user/dto/user.dto.d.ts +5 -38
- package/dist/user/dto/user.dto.js +1 -125
- package/dist/user/dto/user.dto.js.map +1 -1
- package/dist/user/entities/credential.entity.d.ts +87 -3
- package/dist/user/entities/credential.entity.js +5 -3
- package/dist/user/entities/credential.entity.js.map +1 -1
- package/dist/user/entities/model.entity.d.ts +98 -3
- package/dist/user/entities/model.entity.js +5 -3
- package/dist/user/entities/model.entity.js.map +1 -1
- package/dist/user/entities/permission.entity.d.ts +75 -3
- package/dist/user/entities/permission.entity.js +3 -3
- package/dist/user/entities/permission.entity.js.map +1 -1
- package/dist/user/entities/role.entity.d.ts +100 -3
- package/dist/user/entities/role.entity.js +5 -3
- package/dist/user/entities/role.entity.js.map +1 -1
- package/dist/user/entities/user-profile.entity.d.ts +5 -5
- package/dist/user/entities/user-profile.entity.js +3 -3
- package/dist/user/entities/user-profile.entity.js.map +1 -1
- package/dist/user/entities/user.entity.d.ts +234 -4
- package/dist/user/entities/user.entity.js +5 -3
- package/dist/user/entities/user.entity.js.map +1 -1
- package/dist/user/guards/ability.guard.js.map +1 -1
- package/dist/user/guards/local-auth.guard.d.ts +9 -0
- package/dist/user/guards/local-auth.guard.js +84 -4
- package/dist/user/guards/local-auth.guard.js.map +1 -1
- package/dist/user/passport/session.serializer.d.ts +1 -1
- package/dist/user/passport/session.serializer.js.map +1 -1
- package/dist/user/repositories/credential.repository.js.map +1 -1
- package/dist/user/seeds/model.seed-model.js +10 -0
- package/dist/user/seeds/model.seed-model.js.map +1 -1
- package/dist/user/services/auth.service.d.ts +34 -2
- package/dist/user/services/auth.service.js.map +1 -1
- package/dist/user/services/permission.service.d.ts +1 -1
- package/dist/user/services/permission.service.js.map +1 -1
- package/dist/user/types/action.type.d.ts +1 -12
- package/dist/user/types/action.type.js +3 -14
- package/dist/user/types/action.type.js.map +1 -1
- package/dist/user/types/index.type.d.ts +1 -1
- package/dist/user/types/model.type.d.ts +1 -1
- package/dist/user/types/permission.type.d.ts +1 -5
- package/dist/user/types/user-provider.type.d.ts +1 -4
- package/dist/utils/test/dummy/dto/dummy.dto.d.ts +4 -9
- package/dist/utils/test/dummy/dto/dummy.dto.js +1 -22
- package/dist/utils/test/dummy/dto/dummy.dto.js.map +1 -1
- package/dist/utils/test/dummy/dummy.action.d.ts +9 -1
- package/dist/utils/test/dummy/entities/dummy.entity.d.ts +15 -3
- package/dist/utils/test/dummy/entities/dummy.entity.js +3 -3
- package/dist/utils/test/dummy/entities/dummy.entity.js.map +1 -1
- package/dist/utils/test/fixtures/content.d.ts +12 -2
- package/dist/utils/test/fixtures/content.js.map +1 -1
- package/dist/utils/test/fixtures/contenttype.d.ts +9 -2
- package/dist/utils/test/fixtures/contenttype.js.map +1 -1
- package/dist/utils/test/fixtures/label-group.d.ts +14 -2
- package/dist/utils/test/fixtures/label-group.js.map +1 -1
- package/dist/utils/test/fixtures/label.d.ts +14 -2
- package/dist/utils/test/fixtures/label.js.map +1 -1
- package/dist/utils/test/fixtures/message.d.ts +162 -2
- package/dist/utils/test/fixtures/message.js +61 -3
- package/dist/utils/test/fixtures/message.js.map +1 -1
- package/dist/utils/test/fixtures/setting.js +0 -7
- package/dist/utils/test/fixtures/setting.js.map +1 -1
- package/dist/utils/test/fixtures/subscriber.d.ts +27 -3
- package/dist/utils/test/fixtures/subscriber.js +37 -2
- package/dist/utils/test/fixtures/subscriber.js.map +1 -1
- package/dist/utils/test/fixtures/user.d.ts +2 -1
- package/dist/utils/test/fixtures/user.js.map +1 -1
- package/dist/utils/test/mocks/subscriber.d.ts +1 -1
- package/dist/utils/test/mocks/subscriber.js +11 -0
- package/dist/utils/test/mocks/subscriber.js.map +1 -1
- package/dist/utils/types/dto.types.d.ts +8 -12
- package/dist/utils/types/dto.types.js +1 -39
- package/dist/utils/types/dto.types.js.map +1 -1
- package/dist/websocket/services/socket-event-dispatcher.service.d.ts +4 -1
- package/dist/websocket/services/socket-event-dispatcher.service.js +62 -5
- package/dist/websocket/services/socket-event-dispatcher.service.js.map +1 -1
- package/dist/websocket/utils/socket-request.d.ts +2 -1
- package/dist/websocket/utils/socket-request.js +1 -0
- package/dist/websocket/utils/socket-request.js.map +1 -1
- package/dist/websocket/websocket.gateway.d.ts +6 -3
- package/dist/websocket/websocket.gateway.js +63 -4
- package/dist/websocket/websocket.gateway.js.map +1 -1
- package/dist/workflow/contexts/workflow-context-factory.d.ts +1 -1
- package/dist/workflow/contexts/workflow-context-factory.js +5 -1
- package/dist/workflow/contexts/workflow-context-factory.js.map +1 -1
- package/dist/workflow/contexts/workflow-runtime.context.d.ts +1 -1
- package/dist/workflow/contexts/workflow-runtime.context.js +5 -1
- package/dist/workflow/contexts/workflow-runtime.context.js.map +1 -1
- package/dist/workflow/controllers/mcp-server.controller.d.ts +2 -1
- package/dist/workflow/controllers/mcp-server.controller.js.map +1 -1
- package/dist/workflow/controllers/memory-definition.controller.d.ts +12 -2
- package/dist/workflow/controllers/memory-definition.controller.js.map +1 -1
- package/dist/workflow/controllers/workflow-run.controller.d.ts +1 -1
- package/dist/workflow/controllers/workflow-run.controller.js.map +1 -1
- package/dist/workflow/controllers/workflow-version.controller.d.ts +179 -3
- package/dist/workflow/controllers/workflow-version.controller.js.map +1 -1
- package/dist/workflow/controllers/workflow.controller.d.ts +97 -2
- package/dist/workflow/controllers/workflow.controller.js +6 -1
- package/dist/workflow/controllers/workflow.controller.js.map +1 -1
- package/dist/workflow/dto/mcp-server.dto.d.ts +4 -19
- package/dist/workflow/dto/mcp-server.dto.js +1 -60
- package/dist/workflow/dto/mcp-server.dto.js.map +1 -1
- package/dist/workflow/dto/memory-definition.dto.d.ts +4 -14
- package/dist/workflow/dto/memory-definition.dto.js +1 -41
- package/dist/workflow/dto/memory-definition.dto.js.map +1 -1
- package/dist/workflow/dto/memory-record.dto.d.ts +4 -28
- package/dist/workflow/dto/memory-record.dto.js +1 -86
- package/dist/workflow/dto/memory-record.dto.js.map +1 -1
- package/dist/workflow/dto/workflow-run.dto.d.ts +5 -44
- package/dist/workflow/dto/workflow-run.dto.js +4 -149
- package/dist/workflow/dto/workflow-run.dto.js.map +1 -1
- package/dist/workflow/dto/workflow-version.dto.d.ts +4 -22
- package/dist/workflow/dto/workflow-version.dto.js +1 -70
- package/dist/workflow/dto/workflow-version.dto.js.map +1 -1
- package/dist/workflow/dto/workflow.dto.d.ts +153 -26
- package/dist/workflow/dto/workflow.dto.js +10 -121
- package/dist/workflow/dto/workflow.dto.js.map +1 -1
- package/dist/workflow/entities/mcp-server.entity.d.ts +51 -3
- package/dist/workflow/entities/mcp-server.entity.js +10 -8
- package/dist/workflow/entities/mcp-server.entity.js.map +1 -1
- package/dist/workflow/entities/memory-definition.entity.d.ts +21 -3
- package/dist/workflow/entities/memory-definition.entity.js +7 -5
- package/dist/workflow/entities/memory-definition.entity.js.map +1 -1
- package/dist/workflow/entities/memory-record.entity.d.ts +272 -3
- package/dist/workflow/entities/memory-record.entity.js +3 -3
- package/dist/workflow/entities/memory-record.entity.js.map +1 -1
- package/dist/workflow/entities/workflow-run.entity.d.ts +308 -5
- package/dist/workflow/entities/workflow-run.entity.js +9 -12
- package/dist/workflow/entities/workflow-run.entity.js.map +1 -1
- package/dist/workflow/entities/workflow-version.entity.d.ts +165 -3
- package/dist/workflow/entities/workflow-version.entity.js +5 -5
- package/dist/workflow/entities/workflow-version.entity.js.map +1 -1
- package/dist/workflow/entities/workflow.entity.d.ts +192 -4
- package/dist/workflow/entities/workflow.entity.js +12 -9
- package/dist/workflow/entities/workflow.entity.js.map +1 -1
- package/dist/workflow/lib/trigger-event-wrapper.d.ts +1 -2
- package/dist/workflow/schemas/workflow-input-schemas.d.ts +52 -30
- package/dist/workflow/schemas/workflow-input-schemas.js +4 -5
- package/dist/workflow/schemas/workflow-input-schemas.js.map +1 -1
- package/dist/workflow/services/agentic.service.js.map +1 -1
- package/dist/workflow/services/mcp-client-pool.service.js.map +1 -1
- package/dist/workflow/services/memory-definition.service.d.ts +1 -1
- package/dist/workflow/services/memory-definition.service.js.map +1 -1
- package/dist/workflow/services/memory-record.service.d.ts +1 -2
- package/dist/workflow/services/memory-record.service.js.map +1 -1
- package/dist/workflow/services/workflow-run.service.d.ts +1 -1
- package/dist/workflow/services/workflow-run.service.js.map +1 -1
- package/dist/workflow/services/workflow-version.service.d.ts +16 -2
- package/dist/workflow/services/workflow-version.service.js.map +1 -1
- package/dist/workflow/services/workflow.service.d.ts +2 -1
- package/dist/workflow/services/workflow.service.js.map +1 -1
- package/dist/workflow/types.d.ts +2 -28
- package/dist/workflow/types.js +7 -31
- package/dist/workflow/types.js.map +1 -1
- package/dist/workflow/utils/memory-store.d.ts +1 -2
- package/dist/workflow/utils/memory-store.js.map +1 -1
- package/package.json +8 -5
- package/src/analytics/controllers/stats.controller.ts +38 -1
- package/src/analytics/dto/stats.dto.ts +27 -26
- package/src/analytics/entities/stats.entity.ts +4 -3
- package/src/analytics/enums/stats-type.enum.ts +1 -9
- package/src/analytics/repositories/stats.repository.ts +1 -1
- package/src/analytics/services/stats.service.ts +125 -9
- package/src/app.controller.ts +5 -0
- package/src/app.module.ts +4 -0
- package/src/app.service.ts +7 -0
- package/src/attachment/attachment.module.ts +5 -2
- package/src/attachment/controllers/attachment.controller.ts +1 -2
- package/src/attachment/dto/attachment.dto.ts +5 -51
- package/src/attachment/entities/attachment.entity.ts +12 -13
- package/src/attachment/guards/attachment-ability.guard.ts +1 -1
- package/src/attachment/mocks/attachment.mock.ts +10 -5
- package/src/attachment/services/attachment.service.ts +2 -5
- package/src/attachment/types/index.ts +5 -25
- package/src/audit/README.md +559 -0
- package/src/audit/audit-core.module.ts +33 -0
- package/src/audit/audit.module.ts +63 -0
- package/src/audit/controllers/audit-log.controller.ts +77 -0
- package/src/audit/decorators/audit-label.decorator.ts +37 -0
- package/src/audit/decorators/audit-log.decorators.ts +35 -0
- package/src/audit/dto/audit-log.dto.ts +125 -0
- package/src/audit/entities/audit-log.entity.ts +78 -0
- package/src/audit/exporters/audit-backend.factory.ts +74 -0
- package/src/audit/exporters/audit-database.exporter.ts +93 -0
- package/src/audit/exporters/audit-noop.exporter.ts +29 -0
- package/src/audit/exporters/audit-safe.exporter.ts +53 -0
- package/src/audit/index.ts +23 -0
- package/src/audit/interceptors/audit-context.interceptor.ts +30 -0
- package/src/audit/repositories/audit-log.repository.ts +23 -0
- package/src/audit/services/audit-context.service.ts +123 -0
- package/src/audit/services/audit-log-record.service.ts +97 -0
- package/src/audit/subscribers/audit-log.subscriber.ts +322 -0
- package/src/audit/types/audit-context.type.ts +20 -0
- package/src/audit/utils/request-context.ts +44 -0
- package/src/channel/README.md +313 -0
- package/src/channel/channel.controller.ts +19 -3
- package/src/channel/channel.module.ts +22 -3
- package/src/channel/channel.service.ts +108 -119
- package/src/channel/dto/source.dto.ts +72 -0
- package/src/channel/entities/source.entity.ts +56 -0
- package/src/channel/index.ts +24 -0
- package/src/channel/lib/Handler.ts +102 -27
- package/src/channel/lib/__test__/common.mock.ts +18 -17
- package/src/channel/lib/__test__/label.mock.ts +1 -1
- package/src/channel/lib/__test__/subscriber.mock.ts +2 -1
- package/src/channel/lib/channel-capabilities.ts +37 -0
- package/src/channel/lib/channel-codec.ts +48 -0
- package/src/channel/lib/channel-event-bus.ts +70 -0
- package/src/channel/lib/extension-inject.decorator.ts +67 -0
- package/src/channel/lib/inbound-events/channel-inbound-event-context.ts +18 -0
- package/src/channel/lib/inbound-events/channel-inbound-event.ts +39 -2
- package/src/channel/lib/inbound-events/message-inbound-event.ts +11 -6
- package/src/channel/lib/inbound-events/synthetic-message-inbound-event.ts +31 -27
- package/src/channel/lib/outbound/channel-outbound-encoder.ts +51 -86
- package/src/channel/lib/transports/http-channel-handler.ts +187 -0
- package/src/channel/lib/transports/index.ts +9 -0
- package/src/channel/lib/transports/websocket-channel-handler.ts +142 -0
- package/src/channel/repositories/source.repository.ts +23 -0
- package/src/channel/services/channel-attachment.service.ts +29 -19
- package/src/channel/services/channel-download.service.ts +5 -2
- package/src/channel/services/channel-registry.service.ts +41 -0
- package/src/channel/services/source.service.ts +224 -0
- package/src/channel/services/subscriber-resolver.service.ts +85 -0
- package/src/channel/source.controller.ts +87 -0
- package/src/channel/types.ts +14 -8
- package/src/channel/webhook.controller.ts +34 -77
- package/src/chat/controllers/label-group.controller.ts +1 -2
- package/src/chat/controllers/label.controller.ts +2 -6
- package/src/chat/controllers/message.controller.ts +27 -22
- package/src/chat/controllers/subscriber.controller.ts +3 -5
- package/src/chat/controllers/thread.controller.ts +18 -7
- package/src/chat/dto/label-group.dto.ts +4 -25
- package/src/chat/dto/label.dto.ts +4 -47
- package/src/chat/dto/message.dto.ts +19 -68
- package/src/chat/dto/subscriber.dto.ts +13 -66
- package/src/chat/dto/thread.dto.ts +15 -42
- package/src/chat/entities/label-group.entity.ts +6 -7
- package/src/chat/entities/label.entity.ts +6 -3
- package/src/chat/entities/message.entity.ts +9 -4
- package/src/chat/entities/subscriber.entity.ts +31 -11
- package/src/chat/entities/thread.entity.ts +18 -3
- package/src/chat/helpers/README.md +7 -7
- package/src/chat/helpers/envelope-builder.ts +52 -58
- package/src/chat/helpers/envelope-factory.ts +23 -22
- package/src/chat/index.ts +0 -10
- package/src/chat/repositories/message.repository.ts +1 -2
- package/src/chat/repositories/subscriber.repository.ts +27 -18
- package/src/chat/repositories/thread.repository.ts +2 -2
- package/src/chat/services/chat.service.ts +26 -7
- package/src/chat/services/message.service.ts +1 -2
- package/src/chat/services/subscriber.service.ts +30 -11
- package/src/chat/services/thread.service.ts +95 -7
- package/src/cms/controllers/content-type.controller.ts +1 -1
- package/src/cms/controllers/content.controller.ts +2 -5
- package/src/cms/controllers/menu.controller.ts +2 -1
- package/src/cms/dto/content.dto.ts +4 -34
- package/src/cms/dto/contentType.dto.ts +4 -19
- package/src/cms/dto/menu.dto.ts +4 -36
- package/src/cms/entities/content-type.entity.ts +6 -7
- package/src/cms/entities/content.entity.ts +11 -4
- package/src/cms/entities/menu.entity.ts +6 -3
- package/src/cms/enums/menu-type.enum.ts +1 -5
- package/src/cms/repositories/content.repository.ts +1 -1
- package/src/cms/services/content-type.service.ts +1 -1
- package/src/cms/services/content.service.ts +8 -5
- package/src/cms/services/rag-indexer.service.ts +1 -2
- package/src/cms/types/menu-types.ts +2 -1
- package/src/cms/utilities/verifyTree.ts +2 -1
- package/src/config/index.ts +81 -0
- package/src/config/types.ts +26 -0
- package/src/database/entities/base.entity.ts +54 -7
- package/src/extension/cleanup.service.ts +2 -17
- package/src/extension/types.ts +5 -8
- package/src/extensions/actions/ai/ai-base.action.ts +25 -10
- package/src/extensions/actions/messaging/attachment.action.ts +5 -2
- package/src/extensions/actions/messaging/buttons.action.ts +1 -1
- package/src/extensions/actions/messaging/list.action.ts +9 -6
- package/src/extensions/actions/messaging/message-action.base.ts +15 -15
- package/src/extensions/actions/messaging/quick-replies.action.ts +1 -1
- package/src/extensions/channels/console/globals.d.ts +5 -3
- package/src/extensions/channels/console/index.channel.ts +5 -2
- package/src/extensions/channels/console/{console-channel.settings.ts → settings.schema.ts} +1 -28
- package/src/extensions/channels/web/__test__/data.mock.ts +2 -2
- package/src/extensions/channels/web/__test__/events.mock.ts +6 -7
- package/src/extensions/channels/web/base-web-channel.ts +294 -655
- package/src/extensions/channels/web/globals.d.ts +5 -3
- package/src/extensions/channels/web/inbound/events/delivery.event.ts +2 -1
- package/src/extensions/channels/web/inbound/events/messages/attachment.event.ts +19 -13
- package/src/extensions/channels/web/inbound/events/messages/location.event.ts +13 -7
- package/src/extensions/channels/web/inbound/events/messages/payload.event.ts +12 -5
- package/src/extensions/channels/web/inbound/events/messages/postback.event.ts +2 -1
- package/src/extensions/channels/web/inbound/events/messages/quick-reply.event.ts +3 -2
- package/src/extensions/channels/web/inbound/events/messages/text.event.ts +7 -3
- package/src/extensions/channels/web/inbound/events/read.event.ts +2 -1
- package/src/extensions/channels/web/inbound/events/typing.event.ts +2 -1
- package/src/extensions/channels/web/inbound/events/unsupported.event.ts +2 -1
- package/src/extensions/channels/web/inbound/index.ts +2 -0
- package/src/extensions/channels/web/inbound/web-inbound-message-encoder.ts +92 -0
- package/src/extensions/channels/web/index.channel.ts +5 -2
- package/src/extensions/channels/web/outbound/web-outbound-message-encoder.ts +48 -43
- package/src/extensions/channels/web/services/web-history.service.ts +158 -0
- package/src/extensions/channels/web/services/web-session.service.ts +235 -0
- package/src/extensions/channels/web/{web-channel.settings.ts → settings.schema.ts} +1 -28
- package/src/extensions/channels/web/types.ts +8 -5
- package/src/extensions/helpers/local-storage/index.helper.ts +1 -1
- package/src/extensions/index.ts +2 -2
- package/src/health/health.service.ts +237 -0
- package/src/helper/lib/base-llm-helper.ts +1 -1
- package/src/helper/lib/base-storage-helper.ts +1 -1
- package/src/i18n/controllers/language.controller.ts +2 -5
- package/src/i18n/dto/language.dto.ts +4 -22
- package/src/i18n/dto/translation.dto.ts +4 -16
- package/src/i18n/entities/language.entity.ts +6 -3
- package/src/i18n/entities/translation.entity.ts +6 -3
- package/src/index.ts +2 -0
- package/src/seeder.ts +2 -2
- package/src/setting/controllers/setting.controller.ts +2 -1
- package/src/setting/dto/metadata.dto.ts +4 -16
- package/src/setting/dto/setting.dto.ts +4 -22
- package/src/setting/entities/metadata.entity.ts +6 -3
- package/src/setting/entities/setting.entity.ts +6 -3
- package/src/setting/globals.d.ts +0 -1
- package/src/setting/runtime-settings.seed.ts +2 -4
- package/src/setting/runtime-settings.ts +1 -5
- package/src/setting/services/metadata.service.ts +2 -1
- package/src/setting/services/setting.service.ts +2 -5
- package/src/setting/setting.module.ts +2 -1
- package/src/setting/types/index.ts +2 -9
- package/src/user/controllers/auth.controller.ts +3 -0
- package/src/user/controllers/credential.controller.ts +1 -2
- package/src/user/controllers/role.controller.ts +1 -1
- package/src/user/dto/credential.dto.ts +4 -25
- package/src/user/dto/model.dto.ts +4 -31
- package/src/user/dto/permission.dto.ts +4 -36
- package/src/user/dto/role.dto.ts +4 -39
- package/src/user/dto/user-profile.dto.ts +4 -19
- package/src/user/dto/user.dto.ts +8 -99
- package/src/user/entities/credential.entity.ts +6 -7
- package/src/user/entities/model.entity.ts +6 -3
- package/src/user/entities/permission.entity.ts +4 -7
- package/src/user/entities/role.entity.ts +6 -3
- package/src/user/entities/user-profile.entity.ts +8 -5
- package/src/user/entities/user.entity.ts +7 -4
- package/src/user/guards/ability.guard.ts +1 -1
- package/src/user/guards/local-auth.guard.ts +100 -5
- package/src/user/passport/session.serializer.ts +1 -1
- package/src/user/repositories/credential.repository.ts +0 -6
- package/src/user/seeds/model.seed-model.ts +10 -0
- package/src/user/services/auth.service.ts +1 -1
- package/src/user/services/permission.service.ts +1 -1
- package/src/user/types/action.type.ts +1 -13
- package/src/user/types/index.type.ts +1 -1
- package/src/user/types/model.type.ts +1 -29
- package/src/user/types/permission.type.ts +4 -6
- package/src/user/types/user-provider.type.ts +1 -4
- package/src/utils/test/dummy/dto/dummy.dto.ts +4 -16
- package/src/utils/test/dummy/entities/dummy.entity.ts +4 -3
- package/src/utils/test/fixtures/content.ts +2 -1
- package/src/utils/test/fixtures/contenttype.ts +2 -1
- package/src/utils/test/fixtures/label-group.ts +2 -1
- package/src/utils/test/fixtures/label.ts +2 -1
- package/src/utils/test/fixtures/message.ts +78 -4
- package/src/utils/test/fixtures/setting.ts +0 -7
- package/src/utils/test/fixtures/subscriber.ts +51 -2
- package/src/utils/test/fixtures/user.ts +2 -1
- package/src/utils/test/mocks/subscriber.ts +13 -1
- package/src/utils/types/dto.types.ts +12 -26
- package/src/websocket/services/socket-event-dispatcher.service.ts +90 -6
- package/src/websocket/utils/socket-request.ts +4 -1
- package/src/websocket/websocket.gateway.ts +84 -5
- package/src/workflow/contexts/workflow-context-factory.ts +6 -2
- package/src/workflow/contexts/workflow-runtime.context.ts +6 -2
- package/src/workflow/controllers/mcp-server.controller.ts +2 -6
- package/src/workflow/controllers/memory-definition.controller.ts +1 -1
- package/src/workflow/controllers/workflow-run.controller.ts +1 -1
- package/src/workflow/controllers/workflow-version.controller.ts +1 -1
- package/src/workflow/controllers/workflow.controller.ts +9 -7
- package/src/workflow/dto/mcp-server.dto.ts +4 -43
- package/src/workflow/dto/memory-definition.dto.ts +7 -28
- package/src/workflow/dto/memory-record.dto.ts +5 -69
- package/src/workflow/dto/workflow-run.dto.ts +9 -120
- package/src/workflow/dto/workflow-version.dto.ts +7 -52
- package/src/workflow/dto/workflow.dto.ts +10 -92
- package/src/workflow/entities/mcp-server.entity.ts +6 -3
- package/src/workflow/entities/memory-definition.entity.ts +9 -7
- package/src/workflow/entities/memory-record.entity.ts +4 -7
- package/src/workflow/entities/workflow-run.entity.ts +13 -19
- package/src/workflow/entities/workflow-version.entity.ts +7 -7
- package/src/workflow/entities/workflow.entity.ts +6 -3
- package/src/workflow/lib/trigger-event-wrapper.ts +2 -2
- package/src/workflow/schemas/workflow-input-schemas.ts +4 -4
- package/src/workflow/services/agentic.service.ts +1 -2
- package/src/workflow/services/mcp-client-pool.service.ts +1 -1
- package/src/workflow/services/memory-definition.service.ts +1 -1
- package/src/workflow/services/memory-record.service.ts +1 -2
- package/src/workflow/services/workflow-run.service.ts +1 -1
- package/src/workflow/services/workflow-version.service.ts +2 -4
- package/src/workflow/services/workflow.service.ts +2 -1
- package/src/workflow/types.ts +17 -32
- package/src/workflow/utils/memory-store.ts +1 -2
- package/types/express-session.d.ts +1 -0
- package/dist/chat/types/attachment.d.ts +0 -27
- package/dist/chat/types/attachment.js +0 -26
- package/dist/chat/types/attachment.js.map +0 -1
- package/dist/chat/types/button.d.ts +0 -28
- package/dist/chat/types/button.js +0 -66
- package/dist/chat/types/button.js.map +0 -1
- package/dist/chat/types/message.d.ts +0 -508
- package/dist/chat/types/message.js +0 -149
- package/dist/chat/types/message.js.map +0 -1
- package/dist/chat/types/options.d.ts +0 -63
- package/dist/chat/types/options.js +0 -118
- package/dist/chat/types/options.js.map +0 -1
- package/dist/chat/types/quick-reply.d.ts +0 -29
- package/dist/chat/types/quick-reply.js +0 -31
- package/dist/chat/types/quick-reply.js.map +0 -1
- package/dist/extensions/channels/console/console-channel.settings.d.ts +0 -34
- package/dist/extensions/channels/console/console-channel.settings.js.map +0 -1
- package/dist/extensions/channels/web/web-channel.settings.d.ts +0 -38
- package/dist/extensions/channels/web/web-channel.settings.js.map +0 -1
- package/dist/i18n/localize-schema-metadata.d.ts +0 -8
- package/dist/i18n/localize-schema-metadata.js +0 -34
- package/dist/i18n/localize-schema-metadata.js.map +0 -1
- package/dist/user/dto/assigned-profile.dto.d.ts +0 -25
- package/dist/user/dto/assigned-profile.dto.js +0 -97
- package/dist/user/dto/assigned-profile.dto.js.map +0 -1
- package/dist/workflow/utils/workflow-run-duration.d.ts +0 -9
- package/dist/workflow/utils/workflow-run-duration.js +0 -28
- package/dist/workflow/utils/workflow-run-duration.js.map +0 -1
- package/src/chat/types/attachment.ts +0 -47
- package/src/chat/types/button.ts +0 -86
- package/src/chat/types/message.ts +0 -282
- package/src/chat/types/options.ts +0 -130
- package/src/chat/types/quick-reply.ts +0 -41
- package/src/i18n/localize-schema-metadata.ts +0 -63
- package/src/user/dto/assigned-profile.dto.ts +0 -76
- package/src/workflow/utils/workflow-run-duration.ts +0 -45
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
|
|
7
7
|
import { Url } from 'url';
|
|
8
8
|
|
|
9
|
+
import type { User } from '@hexabot-ai/types';
|
|
9
10
|
import {
|
|
10
11
|
BadRequestException,
|
|
11
12
|
CanActivate,
|
|
@@ -18,7 +19,6 @@ import { Request } from 'express';
|
|
|
18
19
|
import qs from 'qs';
|
|
19
20
|
import { FindOneOptions, In } from 'typeorm';
|
|
20
21
|
|
|
21
|
-
import { User } from '@/user/dto/user.dto';
|
|
22
22
|
import { PermissionOrmEntity } from '@/user/entities/permission.entity';
|
|
23
23
|
import { ModelService } from '@/user/services/model.service';
|
|
24
24
|
import { PermissionService } from '@/user/services/permission.service';
|
|
@@ -6,7 +6,9 @@
|
|
|
6
6
|
|
|
7
7
|
import { Stream } from 'node:stream';
|
|
8
8
|
|
|
9
|
-
import { Attachment
|
|
9
|
+
import type { Attachment } from '@hexabot-ai/types';
|
|
10
|
+
|
|
11
|
+
import { AttachmentCreateDto } from '../dto/attachment.dto';
|
|
10
12
|
import {
|
|
11
13
|
AttachmentAccess,
|
|
12
14
|
AttachmentCreatedByRef,
|
|
@@ -25,10 +27,13 @@ const baseAttachment = {
|
|
|
25
27
|
createdByRef: AttachmentCreatedByRef.User,
|
|
26
28
|
} satisfies Partial<AttachmentCreateDto>;
|
|
27
29
|
|
|
28
|
-
export const attachment: Attachment =
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
)
|
|
30
|
+
export const attachment: Attachment = {
|
|
31
|
+
id: '99999999-9999-4999-9999-999999999999',
|
|
32
|
+
createdAt: new Date(),
|
|
33
|
+
updatedAt: new Date(),
|
|
34
|
+
url: '',
|
|
35
|
+
...baseAttachment,
|
|
36
|
+
};
|
|
32
37
|
|
|
33
38
|
export const attachmentFile: Express.Multer.File = {
|
|
34
39
|
filename: attachment.name,
|
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
|
|
7
7
|
import { Readable, Stream } from 'stream';
|
|
8
8
|
|
|
9
|
+
import type { Attachment, AttachmentStub } from '@hexabot-ai/types';
|
|
9
10
|
import { Injectable, StreamableFile } from '@nestjs/common';
|
|
10
11
|
|
|
11
12
|
import { AttachmentOrmEntity } from '@/attachment/entities/attachment.entity';
|
|
@@ -13,11 +14,7 @@ import { HelperService } from '@/helper/helper.service';
|
|
|
13
14
|
import { HelperType } from '@/helper/types';
|
|
14
15
|
import { BaseOrmService } from '@/utils/generics/base-orm.service';
|
|
15
16
|
|
|
16
|
-
import {
|
|
17
|
-
Attachment,
|
|
18
|
-
AttachmentMetadataDto,
|
|
19
|
-
AttachmentStub,
|
|
20
|
-
} from '../dto/attachment.dto';
|
|
17
|
+
import { AttachmentMetadataDto } from '../dto/attachment.dto';
|
|
21
18
|
import { AttachmentRepository } from '../repositories/attachment.repository';
|
|
22
19
|
|
|
23
20
|
@Injectable()
|
|
@@ -6,31 +6,11 @@
|
|
|
6
6
|
|
|
7
7
|
import { Readable, Stream } from 'stream';
|
|
8
8
|
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
User = 'User',
|
|
15
|
-
Subscriber = 'Subscriber',
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
/**
|
|
19
|
-
* Defines the various resource references in which an attachment can exist.
|
|
20
|
-
* These resource references influence how the attachment is uploaded, stored, and accessed:
|
|
21
|
-
*/
|
|
22
|
-
export enum AttachmentResourceRef {
|
|
23
|
-
SettingAttachment = 'Setting', // Attachments related to app settings, restricted to users with specific permissions.
|
|
24
|
-
UserAvatar = 'User', // Avatar files for users, only the current user can upload, accessible to those with appropriate permissions.
|
|
25
|
-
SubscriberAvatar = 'Subscriber', // Avatar files for subscribers, uploaded programmatically, accessible to authorized users.
|
|
26
|
-
ContentAttachment = 'Content', // Files in the knowledge base, usually public but could vary based on specific needs.
|
|
27
|
-
MessageAttachment = 'Message', // Files sent or received via messages, uploaded programmatically, accessible to users with inbox permissions.;
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
export enum AttachmentAccess {
|
|
31
|
-
Public = 'public',
|
|
32
|
-
Private = 'private',
|
|
33
|
-
}
|
|
9
|
+
export {
|
|
10
|
+
AttachmentAccess,
|
|
11
|
+
AttachmentCreatedByRef,
|
|
12
|
+
AttachmentResourceRef,
|
|
13
|
+
} from '@hexabot-ai/types';
|
|
34
14
|
|
|
35
15
|
export class AttachmentFile {
|
|
36
16
|
/**
|
|
@@ -0,0 +1,559 @@
|
|
|
1
|
+
# Audit Module
|
|
2
|
+
|
|
3
|
+
The audit module records security-relevant and data-changing activity in the
|
|
4
|
+
Hexabot API.
|
|
5
|
+
|
|
6
|
+
It combines:
|
|
7
|
+
|
|
8
|
+
- Controller-level audit events through `nestjs-auditlog` decorators.
|
|
9
|
+
- TypeORM write auditing for entity creates, updates, and deletes.
|
|
10
|
+
- Per-request actor and correlation metadata through `nestjs-cls`.
|
|
11
|
+
- A pluggable export backend for local database storage, OpenTelemetry, or
|
|
12
|
+
ClickHouse.
|
|
13
|
+
- A read-only REST API for locally stored audit records.
|
|
14
|
+
|
|
15
|
+
The module is registered from `AppModule` through `AuditModule`.
|
|
16
|
+
|
|
17
|
+
## Responsibilities
|
|
18
|
+
|
|
19
|
+
The module is responsible for:
|
|
20
|
+
|
|
21
|
+
- Capturing write operations on TypeORM entities.
|
|
22
|
+
- Capturing explicit controller actions such as login, logout, and audit log
|
|
23
|
+
reads.
|
|
24
|
+
- Recording request metadata: request ID, actor, IP address, user agent, method,
|
|
25
|
+
and path.
|
|
26
|
+
- Masking configured sensitive fields in persisted before/after/diff payloads.
|
|
27
|
+
- Preventing audit export failures from breaking business operations unless
|
|
28
|
+
`AUDIT_LOG_FAIL_CLOSED=true`.
|
|
29
|
+
- Exposing audit records when the configured backend is `database`.
|
|
30
|
+
|
|
31
|
+
The module is not responsible for:
|
|
32
|
+
|
|
33
|
+
- Replacing application logs.
|
|
34
|
+
- Reconstructing historical state from audit records.
|
|
35
|
+
- Enforcing permissions by itself. Access still goes through the API role and
|
|
36
|
+
permission guard.
|
|
37
|
+
- Storing local records when the backend is OpenTelemetry or ClickHouse.
|
|
38
|
+
|
|
39
|
+
## Module Layout
|
|
40
|
+
|
|
41
|
+
```text
|
|
42
|
+
packages/api/src/audit
|
|
43
|
+
|-- audit.module.ts # public Nest module
|
|
44
|
+
|-- audit-core.module.ts # shared providers and local entity setup
|
|
45
|
+
|-- controllers/
|
|
46
|
+
| `-- audit-log.controller.ts # read API for local database backend
|
|
47
|
+
|-- decorators/
|
|
48
|
+
| `-- audit-log.decorators.ts # controller audit decorators
|
|
49
|
+
|-- dto/
|
|
50
|
+
| `-- audit-log.dto.ts # DTO contract for local records
|
|
51
|
+
|-- entities/
|
|
52
|
+
| `-- audit-log.entity.ts # TypeORM entity for local records
|
|
53
|
+
|-- exporters/
|
|
54
|
+
| |-- audit-backend.factory.ts # backend selection
|
|
55
|
+
| |-- audit-database.exporter.ts # local database exporter
|
|
56
|
+
| |-- audit-noop.exporter.ts # disabled audit exporter
|
|
57
|
+
| `-- audit-safe.exporter.ts # fail-open/fail-closed wrapper
|
|
58
|
+
|-- interceptors/
|
|
59
|
+
| `-- audit-context.interceptor.ts # request context enrichment
|
|
60
|
+
|-- repositories/
|
|
61
|
+
| `-- audit-log.repository.ts # local audit record repository
|
|
62
|
+
|-- services/
|
|
63
|
+
| |-- audit-context.service.ts # CLS-backed request context service
|
|
64
|
+
| `-- audit-log-record.service.ts # local audit record service
|
|
65
|
+
|-- subscribers/
|
|
66
|
+
| `-- audit-log.subscriber.ts # TypeORM write subscriber
|
|
67
|
+
|-- types/
|
|
68
|
+
| `-- audit-context.type.ts
|
|
69
|
+
`-- utils/
|
|
70
|
+
`-- request-context.ts # request ID/IP/user-agent helpers
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
## Runtime Architecture
|
|
74
|
+
|
|
75
|
+
`AuditModule` wires three concerns:
|
|
76
|
+
|
|
77
|
+
1. `ClsModule.forRoot()`
|
|
78
|
+
- Creates an async-local request store.
|
|
79
|
+
- Generates or propagates a request ID from `x-request-id` or
|
|
80
|
+
`x-correlation-id`.
|
|
81
|
+
- Stores initial request metadata before route handling.
|
|
82
|
+
|
|
83
|
+
2. `AuditCoreModule`
|
|
84
|
+
- Registers `AuditLogOrmEntity` with TypeORM.
|
|
85
|
+
- Provides the local database exporter, repository, record service, backend
|
|
86
|
+
factory, and context service.
|
|
87
|
+
|
|
88
|
+
3. `SdkAuditLogModule.forRootAsync()`
|
|
89
|
+
- Registers `nestjs-auditlog`.
|
|
90
|
+
- Uses `AuditBackendFactory` to select the configured exporter.
|
|
91
|
+
- Installs the SDK global interceptor used by controller decorators.
|
|
92
|
+
|
|
93
|
+
`AuditModule` also registers:
|
|
94
|
+
|
|
95
|
+
- `AuditContextInterceptor` as a global interceptor.
|
|
96
|
+
- `AuditLogSubscriber` as a TypeORM subscriber.
|
|
97
|
+
- `AuditLogController` for local record reads.
|
|
98
|
+
|
|
99
|
+
## Audit Event Sources
|
|
100
|
+
|
|
101
|
+
### TypeORM Entity Writes
|
|
102
|
+
|
|
103
|
+
`AuditLogSubscriber` listens to TypeORM lifecycle events:
|
|
104
|
+
|
|
105
|
+
- `afterInsert` -> `Create`
|
|
106
|
+
- `afterUpdate` -> `Update`
|
|
107
|
+
- `afterRemove` -> `Remove`
|
|
108
|
+
|
|
109
|
+
For each write event, it builds an audit payload:
|
|
110
|
+
|
|
111
|
+
```ts
|
|
112
|
+
{
|
|
113
|
+
resource: {
|
|
114
|
+
id: "<entity primary key>",
|
|
115
|
+
type: "<entity name without OrmEntity suffix>",
|
|
116
|
+
label: "<@AuditLabel field value, when configured>",
|
|
117
|
+
},
|
|
118
|
+
operation: {
|
|
119
|
+
id: "typeorm.<Entity>.<create|update|remove>",
|
|
120
|
+
type: "Create" | "Update" | "Remove",
|
|
121
|
+
status: "SUCCEEDED",
|
|
122
|
+
},
|
|
123
|
+
actor: {
|
|
124
|
+
id: "<request user id or system>",
|
|
125
|
+
type: "<request user roles or system>",
|
|
126
|
+
label: "<request username/name, when available>",
|
|
127
|
+
ip: "<client ip>",
|
|
128
|
+
agent: "<user agent>",
|
|
129
|
+
},
|
|
130
|
+
data_diff: {
|
|
131
|
+
before: { ... } | null,
|
|
132
|
+
after: { ... } | null,
|
|
133
|
+
diff: { ... } | null,
|
|
134
|
+
},
|
|
135
|
+
}
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
The subscriber skips internal infrastructure tables:
|
|
139
|
+
|
|
140
|
+
- `audit_logs`
|
|
141
|
+
- `migrations`
|
|
142
|
+
- `sessions`
|
|
143
|
+
- `stats`
|
|
144
|
+
|
|
145
|
+
Audit is also skipped globally when `AUDIT_LOG_ENABLED=false`.
|
|
146
|
+
|
|
147
|
+
Use `@AuditLabel()` on one entity property to capture a stable display label
|
|
148
|
+
inside future audit records. Labels are copied from the event payload only; audit
|
|
149
|
+
reads do not resolve labels from live entities.
|
|
150
|
+
|
|
151
|
+
### Controller Decorators
|
|
152
|
+
|
|
153
|
+
Controller decorators in `decorators/audit-log.decorators.ts` use
|
|
154
|
+
`nestjs-auditlog` to record explicit route operations.
|
|
155
|
+
|
|
156
|
+
Currently provided decorators:
|
|
157
|
+
|
|
158
|
+
- `AuditAuthLogin()`
|
|
159
|
+
- `AuditAuthLogout()`
|
|
160
|
+
|
|
161
|
+
Example:
|
|
162
|
+
|
|
163
|
+
```ts
|
|
164
|
+
@UseGuards(LocalAuthGuard)
|
|
165
|
+
@Roles('public')
|
|
166
|
+
@Post('local')
|
|
167
|
+
@AuditAuthLogin()
|
|
168
|
+
async login(@Req() req: Request) {
|
|
169
|
+
return req.user;
|
|
170
|
+
}
|
|
171
|
+
```
|
|
172
|
+
|
|
173
|
+
Decorated controller audit events are emitted by the SDK interceptor after the
|
|
174
|
+
handler result or error is available.
|
|
175
|
+
|
|
176
|
+
### Failed Local Login Attempts
|
|
177
|
+
|
|
178
|
+
Failed local login attempts do not reach the `AuthController` handler because
|
|
179
|
+
Passport guards run before controller interceptors. `LocalAuthGuard` therefore
|
|
180
|
+
records failed login attempts directly when `super.canActivate()` throws.
|
|
181
|
+
|
|
182
|
+
The failed login event:
|
|
183
|
+
|
|
184
|
+
- Uses operation ID `auth.login`.
|
|
185
|
+
- Uses operation type `Login`.
|
|
186
|
+
- Uses operation status `FAILED`.
|
|
187
|
+
- Uses the attempted `identifier` as resource ID and actor ID when present.
|
|
188
|
+
- Includes request IP and user-agent.
|
|
189
|
+
- Does not include the password.
|
|
190
|
+
|
|
191
|
+
## Request Context
|
|
192
|
+
|
|
193
|
+
`AuditContextService` stores and reads request metadata from `nestjs-cls`.
|
|
194
|
+
|
|
195
|
+
The context can contain:
|
|
196
|
+
|
|
197
|
+
```ts
|
|
198
|
+
type AuditRequestContext = {
|
|
199
|
+
requestId?: string;
|
|
200
|
+
actorId?: string;
|
|
201
|
+
actorType?: string;
|
|
202
|
+
actorLabel?: string;
|
|
203
|
+
ip?: string;
|
|
204
|
+
userAgent?: string;
|
|
205
|
+
method?: string;
|
|
206
|
+
path?: string;
|
|
207
|
+
};
|
|
208
|
+
```
|
|
209
|
+
|
|
210
|
+
Context is populated in two stages:
|
|
211
|
+
|
|
212
|
+
1. CLS middleware stores request ID, IP, user-agent, method, and path at the
|
|
213
|
+
beginning of the request.
|
|
214
|
+
2. `AuditContextInterceptor` calls `setFromRequest()` after authentication
|
|
215
|
+
middleware has populated `req.user` or `req.session`.
|
|
216
|
+
|
|
217
|
+
When no request context exists, entity write audit events fall back to:
|
|
218
|
+
|
|
219
|
+
- actor ID: `system`
|
|
220
|
+
- actor type: `system`
|
|
221
|
+
|
|
222
|
+
This is expected for background jobs, seeders, and startup tasks.
|
|
223
|
+
|
|
224
|
+
## Backends
|
|
225
|
+
|
|
226
|
+
The backend is selected by `AUDIT_LOG_BACKEND`.
|
|
227
|
+
|
|
228
|
+
| Backend | Value | Local read API | Notes |
|
|
229
|
+
| --- | --- | --- | --- |
|
|
230
|
+
| Database | `database` | Yes | Persists audit records to `audit_logs`. |
|
|
231
|
+
| OpenTelemetry HTTP | `opentelemetry-http` | No | Sends logs to an OTLP HTTP endpoint. |
|
|
232
|
+
| OpenTelemetry gRPC | `opentelemetry-grpc` | No | Sends logs to an OTLP gRPC endpoint. |
|
|
233
|
+
| ClickHouse | `clickhouse` | No | Uses the SDK ClickHouse exporter. |
|
|
234
|
+
| Disabled | `AUDIT_LOG_ENABLED=false` | No | Uses the no-op exporter and skips TypeORM write auditing. |
|
|
235
|
+
|
|
236
|
+
When the backend is not `database`, the `/auditlog` endpoints return
|
|
237
|
+
`503 Service Unavailable` because records are not stored locally.
|
|
238
|
+
|
|
239
|
+
## Configuration
|
|
240
|
+
|
|
241
|
+
Environment variables are defined in `packages/api/.env.example`.
|
|
242
|
+
|
|
243
|
+
| Variable | Default | Description |
|
|
244
|
+
| --- | --- | --- |
|
|
245
|
+
| `AUDIT_LOG_ENABLED` | `true` | Enables controller and TypeORM audit logging. |
|
|
246
|
+
| `AUDIT_LOG_BACKEND` | `database` | Export backend: `database`, `opentelemetry-http`, `opentelemetry-grpc`, or `clickhouse`. |
|
|
247
|
+
| `AUDIT_LOG_FAIL_CLOSED` | `false` | When true, awaited audit exporter failures are rethrown. |
|
|
248
|
+
| `AUDIT_LOG_SERVICE_NAME` | `hexabot-api` | Service name attached to external audit records. |
|
|
249
|
+
| `AUDIT_LOG_SERVICE_NAMESPACE` | `@hexabot-ai/api` | Service namespace attached to external audit records. |
|
|
250
|
+
| `AUDIT_LOG_SERVICE_ENVIRONMENT` | `NODE_ENV` or `development` | Deployment environment attached to external audit records. |
|
|
251
|
+
| `AUDIT_LOG_MASK_FIELDS` | sensitive defaults | Comma-separated field names masked in entity before/after/diff payloads. |
|
|
252
|
+
| `AUDIT_LOG_OTEL_URL` | unset | OTLP exporter URL. |
|
|
253
|
+
| `AUDIT_LOG_OTEL_HOSTNAME` | unset | OTLP hostname. |
|
|
254
|
+
| `AUDIT_LOG_OTEL_HEADERS` | `{}` | JSON object of OTLP headers. |
|
|
255
|
+
| `AUDIT_LOG_OTEL_TIMEOUT_MILLIS` | unset | OTLP timeout. |
|
|
256
|
+
| `AUDIT_LOG_OTEL_CONCURRENCY_LIMIT` | unset | OTLP concurrency limit. |
|
|
257
|
+
| `AUDIT_LOG_CLICKHOUSE_URL` | unset | ClickHouse URL. |
|
|
258
|
+
| `AUDIT_LOG_CLICKHOUSE_DATABASE` | `hexabot_auditlog` | ClickHouse database name. |
|
|
259
|
+
| `AUDIT_LOG_CLICKHOUSE_LOG_EXPIRED_DAYS` | unset | ClickHouse TTL in days. |
|
|
260
|
+
|
|
261
|
+
Example local database configuration:
|
|
262
|
+
|
|
263
|
+
```env
|
|
264
|
+
AUDIT_LOG_ENABLED=true
|
|
265
|
+
AUDIT_LOG_BACKEND=database
|
|
266
|
+
AUDIT_LOG_FAIL_CLOSED=false
|
|
267
|
+
AUDIT_LOG_MASK_FIELDS=password,resetToken,reset_token,token,secret,authorization,apiKey,privateKey,value
|
|
268
|
+
```
|
|
269
|
+
|
|
270
|
+
Example OpenTelemetry HTTP configuration:
|
|
271
|
+
|
|
272
|
+
```env
|
|
273
|
+
AUDIT_LOG_ENABLED=true
|
|
274
|
+
AUDIT_LOG_BACKEND=opentelemetry-http
|
|
275
|
+
AUDIT_LOG_SERVICE_NAME=hexabot-api
|
|
276
|
+
AUDIT_LOG_SERVICE_NAMESPACE=@hexabot-ai/api
|
|
277
|
+
AUDIT_LOG_SERVICE_ENVIRONMENT=production
|
|
278
|
+
AUDIT_LOG_OTEL_URL=http://otel-collector:4318/v1/logs
|
|
279
|
+
AUDIT_LOG_OTEL_HEADERS={"authorization":"Bearer <token>"}
|
|
280
|
+
AUDIT_LOG_FAIL_CLOSED=false
|
|
281
|
+
```
|
|
282
|
+
|
|
283
|
+
Example ClickHouse configuration:
|
|
284
|
+
|
|
285
|
+
```env
|
|
286
|
+
AUDIT_LOG_ENABLED=true
|
|
287
|
+
AUDIT_LOG_BACKEND=clickhouse
|
|
288
|
+
AUDIT_LOG_SERVICE_NAME=hexabot-api
|
|
289
|
+
AUDIT_LOG_CLICKHOUSE_URL=http://clickhouse:8123
|
|
290
|
+
AUDIT_LOG_CLICKHOUSE_DATABASE=hexabot_auditlog
|
|
291
|
+
AUDIT_LOG_CLICKHOUSE_LOG_EXPIRED_DAYS=180
|
|
292
|
+
```
|
|
293
|
+
|
|
294
|
+
## Fail-Open and Fail-Closed Behavior
|
|
295
|
+
|
|
296
|
+
All configured backends are wrapped in `AuditSafeExporter`.
|
|
297
|
+
|
|
298
|
+
When `AUDIT_LOG_FAIL_CLOSED=false`:
|
|
299
|
+
|
|
300
|
+
- Exporter errors are logged.
|
|
301
|
+
- The business operation continues.
|
|
302
|
+
|
|
303
|
+
When `AUDIT_LOG_FAIL_CLOSED=true`:
|
|
304
|
+
|
|
305
|
+
- Exporter errors are rethrown.
|
|
306
|
+
- Awaited audit paths can fail the business operation.
|
|
307
|
+
|
|
308
|
+
TypeORM subscriber audit writes are awaited by TypeORM lifecycle hooks, so
|
|
309
|
+
fail-closed behavior applies directly there.
|
|
310
|
+
|
|
311
|
+
Controller decorator audit events are emitted by the third-party SDK interceptor
|
|
312
|
+
after handler execution. Treat fail-closed behavior on that path as best effort
|
|
313
|
+
and verify carefully before relying on it for compliance-sensitive flows.
|
|
314
|
+
|
|
315
|
+
## Data Redaction
|
|
316
|
+
|
|
317
|
+
`AuditLogSubscriber` masks configured field names before records are exported.
|
|
318
|
+
|
|
319
|
+
Masking is:
|
|
320
|
+
|
|
321
|
+
- Case-insensitive.
|
|
322
|
+
- Based on exact field name match.
|
|
323
|
+
- Applied recursively to object entries.
|
|
324
|
+
- Applied to array entries.
|
|
325
|
+
|
|
326
|
+
Default masked fields:
|
|
327
|
+
|
|
328
|
+
```text
|
|
329
|
+
password,resetToken,reset_token,token,secret,authorization,apiKey,privateKey,value
|
|
330
|
+
```
|
|
331
|
+
|
|
332
|
+
Example:
|
|
333
|
+
|
|
334
|
+
```json
|
|
335
|
+
{
|
|
336
|
+
"password": "[REDACTED]",
|
|
337
|
+
"profile": {
|
|
338
|
+
"apiKey": "[REDACTED]"
|
|
339
|
+
}
|
|
340
|
+
}
|
|
341
|
+
```
|
|
342
|
+
|
|
343
|
+
Only the TypeORM subscriber path normalizes and masks entity payloads. Explicit
|
|
344
|
+
controller audit decorators should avoid adding sensitive data to audit payloads
|
|
345
|
+
in the first place.
|
|
346
|
+
|
|
347
|
+
## Local Storage
|
|
348
|
+
|
|
349
|
+
When `AUDIT_LOG_BACKEND=database`, audit records are stored in the `audit_logs`
|
|
350
|
+
table through `AuditLogOrmEntity`.
|
|
351
|
+
|
|
352
|
+
Stored fields:
|
|
353
|
+
|
|
354
|
+
| Field | Description |
|
|
355
|
+
| --- | --- |
|
|
356
|
+
| `id` | Audit record UUID. |
|
|
357
|
+
| `createdAt` | Record creation timestamp. |
|
|
358
|
+
| `updatedAt` | Record update timestamp. |
|
|
359
|
+
| `resourceId` | Audited resource identifier. |
|
|
360
|
+
| `resourceType` | Audited resource type. |
|
|
361
|
+
| `resourceLabel` | Audited resource display label, when available. |
|
|
362
|
+
| `operationId` | Specific operation identifier. |
|
|
363
|
+
| `operationType` | High-level operation type. |
|
|
364
|
+
| `operationStatus` | `UNSPECIFIED`, `SUCCEEDED`, or `FAILED`. |
|
|
365
|
+
| `actorId` | Actor identifier. |
|
|
366
|
+
| `actorType` | Actor type or comma-separated role IDs. |
|
|
367
|
+
| `actorLabel` | Actor display label, when available. |
|
|
368
|
+
| `actorIp` | Client IP, when available. |
|
|
369
|
+
| `actorAgent` | User-agent, when available. |
|
|
370
|
+
| `requestId` | Correlation/request ID, when available. |
|
|
371
|
+
| `requestMethod` | HTTP method, when available. |
|
|
372
|
+
| `requestPath` | Original request path, when available. |
|
|
373
|
+
| `dataBefore` | Entity snapshot before the operation. |
|
|
374
|
+
| `dataAfter` | Entity snapshot after the operation. |
|
|
375
|
+
| `dataDiff` | Computed field-level diff. |
|
|
376
|
+
| `raw` | Original SDK audit payload. |
|
|
377
|
+
|
|
378
|
+
Indexes are defined for:
|
|
379
|
+
|
|
380
|
+
- `resourceType`, `resourceId`
|
|
381
|
+
- `actorId`
|
|
382
|
+
- `operationType`
|
|
383
|
+
- `requestId`
|
|
384
|
+
|
|
385
|
+
## REST API
|
|
386
|
+
|
|
387
|
+
`AuditLogController` is mounted at `/auditlog`. With the global API prefix, the
|
|
388
|
+
effective paths are:
|
|
389
|
+
|
|
390
|
+
- `GET /api/auditlog`
|
|
391
|
+
- `GET /api/auditlog/count`
|
|
392
|
+
- `GET /api/auditlog/:id`
|
|
393
|
+
|
|
394
|
+
Supported filter fields:
|
|
395
|
+
|
|
396
|
+
- `resourceId`
|
|
397
|
+
- `resourceType`
|
|
398
|
+
- `resourceLabel`
|
|
399
|
+
- `operationId`
|
|
400
|
+
- `operationType`
|
|
401
|
+
- `operationStatus`
|
|
402
|
+
- `actorId`
|
|
403
|
+
- `actorType`
|
|
404
|
+
- `actorLabel`
|
|
405
|
+
- `actorIp`
|
|
406
|
+
- `requestId`
|
|
407
|
+
- `requestMethod`
|
|
408
|
+
- `requestPath`
|
|
409
|
+
|
|
410
|
+
The list endpoint defaults to sorting by `createdAt desc`.
|
|
411
|
+
List and count responses hide `AuditLog` and `Stats` resource records by
|
|
412
|
+
default so audit reads and statistics writes do not pollute the user-facing
|
|
413
|
+
trail.
|
|
414
|
+
|
|
415
|
+
Example:
|
|
416
|
+
|
|
417
|
+
```http
|
|
418
|
+
GET /api/auditlog?where[resourceType]=User&where[operationType]=Update&limit=25
|
|
419
|
+
```
|
|
420
|
+
|
|
421
|
+
Example count query:
|
|
422
|
+
|
|
423
|
+
```http
|
|
424
|
+
GET /api/auditlog/count?where[actorId]=admin-user-id
|
|
425
|
+
```
|
|
426
|
+
|
|
427
|
+
The standard role and permission guard protects these endpoints. Access requires
|
|
428
|
+
permissions for the `auditlog` model identity.
|
|
429
|
+
|
|
430
|
+
## Shared Types
|
|
431
|
+
|
|
432
|
+
The local audit record output contract is exported from `@hexabot-ai/types`:
|
|
433
|
+
|
|
434
|
+
- `auditLogSchema`
|
|
435
|
+
- `auditLogFullSchema`
|
|
436
|
+
- `AuditLog`
|
|
437
|
+
- `AuditLogFull`
|
|
438
|
+
|
|
439
|
+
The API entity uses these schemas through `BaseOrmEntity.toPlainCls()` and
|
|
440
|
+
`BaseOrmEntity.toFullCls()`.
|
|
441
|
+
|
|
442
|
+
## Adding a New Controller Audit Event
|
|
443
|
+
|
|
444
|
+
Prefer a small named decorator in `decorators/audit-log.decorators.ts` instead
|
|
445
|
+
of inlining SDK options in controllers.
|
|
446
|
+
|
|
447
|
+
Example:
|
|
448
|
+
|
|
449
|
+
```ts
|
|
450
|
+
export const AuditExampleAction = () =>
|
|
451
|
+
AuditLog({
|
|
452
|
+
resource: {
|
|
453
|
+
type: 'Example',
|
|
454
|
+
},
|
|
455
|
+
operation: {
|
|
456
|
+
id: 'example.action',
|
|
457
|
+
type: 'Action',
|
|
458
|
+
},
|
|
459
|
+
resource_id_field_map: 'params.id',
|
|
460
|
+
actor_id_field_map: 'user.id',
|
|
461
|
+
actor_type_field_map: 'user.roles',
|
|
462
|
+
});
|
|
463
|
+
```
|
|
464
|
+
|
|
465
|
+
Use `$response.` mappings when the audited identifier only exists in the handler
|
|
466
|
+
response:
|
|
467
|
+
|
|
468
|
+
```ts
|
|
469
|
+
resource_id_field_map: '$response.id'
|
|
470
|
+
```
|
|
471
|
+
|
|
472
|
+
Do not map passwords, tokens, or secrets into controller audit payloads.
|
|
473
|
+
|
|
474
|
+
## Adding a New Backend
|
|
475
|
+
|
|
476
|
+
To add another backend:
|
|
477
|
+
|
|
478
|
+
1. Implement `IAuditLogExporter` from `nestjs-auditlog`.
|
|
479
|
+
2. Add any configuration fields to `Config['audit']`.
|
|
480
|
+
3. Parse environment variables in `config/index.ts`.
|
|
481
|
+
4. Extend `TAuditBackend` in `config/types.ts`.
|
|
482
|
+
5. Add a case to `AuditBackendFactory.createConfiguredExporter()`.
|
|
483
|
+
6. Add unit coverage for backend selection and safe-export behavior.
|
|
484
|
+
|
|
485
|
+
Backends should be wrapped by `AuditSafeExporter`; do not bypass the factory.
|
|
486
|
+
|
|
487
|
+
## Production Deployment Notes
|
|
488
|
+
|
|
489
|
+
For production deployments using the database backend:
|
|
490
|
+
|
|
491
|
+
- Ensure the relational schema contains the `audit_logs` table before enabling
|
|
492
|
+
audit writes.
|
|
493
|
+
- Ensure the `models` table contains the `auditlog` identity.
|
|
494
|
+
- Ensure the relevant roles have permissions for the `auditlog` model.
|
|
495
|
+
- Keep `AUDIT_LOG_FAIL_CLOSED=false` unless the deployment is ready for audit
|
|
496
|
+
storage/export failures to reject business operations.
|
|
497
|
+
|
|
498
|
+
For external backends:
|
|
499
|
+
|
|
500
|
+
- Validate exporter connectivity in staging before enabling fail-closed mode.
|
|
501
|
+
- Confirm retention, access control, and encryption policies in the external
|
|
502
|
+
system.
|
|
503
|
+
- Keep local `/api/auditlog` consumers aware that local records are only
|
|
504
|
+
available for the database backend.
|
|
505
|
+
|
|
506
|
+
## Testing
|
|
507
|
+
|
|
508
|
+
Focused tests:
|
|
509
|
+
|
|
510
|
+
```bash
|
|
511
|
+
pnpm --filter @hexabot-ai/api run test -- audit
|
|
512
|
+
pnpm --filter @hexabot-ai/api run test -- local-auth.guard
|
|
513
|
+
```
|
|
514
|
+
|
|
515
|
+
Package checks:
|
|
516
|
+
|
|
517
|
+
```bash
|
|
518
|
+
pnpm --filter @hexabot-ai/api run typecheck
|
|
519
|
+
pnpm --filter @hexabot-ai/api run lint
|
|
520
|
+
pnpm --filter @hexabot-ai/api run test
|
|
521
|
+
```
|
|
522
|
+
|
|
523
|
+
Shared contract checks:
|
|
524
|
+
|
|
525
|
+
```bash
|
|
526
|
+
pnpm --filter @hexabot-ai/types run typecheck
|
|
527
|
+
pnpm --filter @hexabot-ai/types run lint
|
|
528
|
+
pnpm --filter @hexabot-ai/types run test
|
|
529
|
+
```
|
|
530
|
+
|
|
531
|
+
## Troubleshooting
|
|
532
|
+
|
|
533
|
+
### `/api/auditlog` returns 503
|
|
534
|
+
|
|
535
|
+
The configured backend is not `database`. Local reads are only supported when
|
|
536
|
+
records are stored in `audit_logs`.
|
|
537
|
+
|
|
538
|
+
### No actor ID is recorded
|
|
539
|
+
|
|
540
|
+
The operation may be running outside an HTTP request, or before Passport session
|
|
541
|
+
data is available. Background operations fall back to `system`.
|
|
542
|
+
|
|
543
|
+
### Audit records are missing for failed login attempts
|
|
544
|
+
|
|
545
|
+
Failed local logins are recorded by `LocalAuthGuard`, not by the
|
|
546
|
+
`AuditAuthLogin()` controller decorator. Verify `LocalAuthGuard` is still used
|
|
547
|
+
on `POST /auth/local` and that `AUDIT_LOG_ENABLED=true`.
|
|
548
|
+
|
|
549
|
+
### Sensitive data appears in audit records
|
|
550
|
+
|
|
551
|
+
For entity write audit logs, add the field name to `AUDIT_LOG_MASK_FIELDS`.
|
|
552
|
+
For controller decorator logs, remove the sensitive field mapping from the
|
|
553
|
+
decorator or avoid adding sensitive data to the request/response payload being
|
|
554
|
+
mapped.
|
|
555
|
+
|
|
556
|
+
### Writes fail when audit export fails
|
|
557
|
+
|
|
558
|
+
Check `AUDIT_LOG_FAIL_CLOSED`. When true, awaited audit exporter failures are
|
|
559
|
+
rethrown.
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Hexabot — Fair Core License (FCL-1.0-ALv2)
|
|
3
|
+
* Copyright (c) 2026 Hexastack.
|
|
4
|
+
* Full terms: see LICENSE.md.
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
import { Module } from '@nestjs/common';
|
|
8
|
+
import { TypeOrmModule } from '@nestjs/typeorm';
|
|
9
|
+
|
|
10
|
+
import { AuditLogOrmEntity } from './entities/audit-log.entity';
|
|
11
|
+
import { AuditBackendFactory } from './exporters/audit-backend.factory';
|
|
12
|
+
import { AuditDatabaseExporter } from './exporters/audit-database.exporter';
|
|
13
|
+
import { AuditLogRepository } from './repositories/audit-log.repository';
|
|
14
|
+
import { AuditContextService } from './services/audit-context.service';
|
|
15
|
+
import { AuditLogRecordService } from './services/audit-log-record.service';
|
|
16
|
+
|
|
17
|
+
@Module({
|
|
18
|
+
imports: [TypeOrmModule.forFeature([AuditLogOrmEntity])],
|
|
19
|
+
providers: [
|
|
20
|
+
AuditBackendFactory,
|
|
21
|
+
AuditContextService,
|
|
22
|
+
AuditDatabaseExporter,
|
|
23
|
+
AuditLogRecordService,
|
|
24
|
+
AuditLogRepository,
|
|
25
|
+
],
|
|
26
|
+
exports: [
|
|
27
|
+
AuditBackendFactory,
|
|
28
|
+
AuditContextService,
|
|
29
|
+
AuditLogRecordService,
|
|
30
|
+
AuditLogRepository,
|
|
31
|
+
],
|
|
32
|
+
})
|
|
33
|
+
export class AuditCoreModule {}
|