@hexabot-ai/api 3.2.2-alpha.1 → 3.2.2-alpha.3
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 -1
- package/dist/actions/actions.service.d.ts +3 -3
- package/dist/actions/base-action.d.ts +3 -3
- package/dist/actions/create-action.d.ts +1 -1
- package/dist/actions/types.d.ts +3 -3
- package/dist/analytics/controllers/stats.controller.d.ts +1 -1
- package/dist/analytics/dto/stats.dto.d.ts +1 -1
- package/dist/analytics/entities/stats.entity.d.ts +1 -1
- package/dist/analytics/repositories/stats.repository.d.ts +1 -1
- package/dist/analytics/services/stats.service.d.ts +7 -7
- package/dist/attachment/controllers/attachment.controller.d.ts +1 -1
- package/dist/attachment/dto/attachment.dto.d.ts +2 -2
- package/dist/attachment/entities/attachment.entity.d.ts +3 -3
- package/dist/attachment/guards/attachment-ability.guard.d.ts +2 -2
- package/dist/attachment/repositories/attachment.repository.d.ts +2 -2
- package/dist/attachment/services/attachment.service.d.ts +3 -3
- package/dist/attachment/utilities/index.js +2 -2
- package/dist/attachment/utilities/index.js.map +1 -1
- package/dist/audit/controllers/audit-log.controller.d.ts +2 -2
- package/dist/audit/dto/audit-log.dto.d.ts +1 -1
- package/dist/audit/entities/audit-log.entity.d.ts +1 -1
- package/dist/audit/exporters/audit-backend.factory.d.ts +1 -1
- package/dist/audit/exporters/audit-safe.exporter.d.ts +1 -1
- package/dist/audit/repositories/audit-log.repository.d.ts +1 -1
- package/dist/audit/services/audit-log-record.service.d.ts +1 -1
- package/dist/bindings/base-binding-kind.d.ts +2 -2
- package/dist/bindings/runtime-bindings.service.d.ts +2 -2
- package/dist/bootstrap.js +8 -0
- package/dist/bootstrap.js.map +1 -1
- package/dist/channel/channel.controller.d.ts +1 -1
- package/dist/channel/channel.service.d.ts +5 -5
- package/dist/channel/dto/source.dto.d.ts +1 -1
- package/dist/channel/entities/source.entity.d.ts +2 -2
- package/dist/channel/lib/Handler.d.ts +7 -7
- package/dist/channel/lib/Handler.js +2 -2
- package/dist/channel/lib/Handler.js.map +1 -1
- package/dist/channel/lib/channel-event-bus.d.ts +1 -1
- package/dist/channel/lib/inbound-events/channel-inbound-event-context.d.ts +1 -1
- package/dist/channel/lib/inbound-events/channel-inbound-event-decoder.d.ts +1 -1
- package/dist/channel/lib/inbound-events/channel-inbound-event.d.ts +2 -2
- package/dist/channel/lib/inbound-events/message-inbound-event.d.ts +1 -1
- package/dist/channel/lib/transports/http-channel-handler.d.ts +2 -2
- package/dist/channel/lib/transports/websocket-channel-handler.d.ts +3 -3
- package/dist/channel/repositories/source.repository.d.ts +1 -1
- package/dist/channel/services/channel-attachment.service.d.ts +3 -3
- package/dist/channel/services/source.service.d.ts +3 -3
- package/dist/channel/services/subscriber-resolver.service.d.ts +2 -2
- package/dist/channel/source.controller.d.ts +1 -1
- package/dist/channel/webhook.controller.d.ts +1 -1
- package/dist/chat/chat.module.js +1 -1
- package/dist/chat/chat.module.js.map +1 -1
- package/dist/chat/controllers/label-group.controller.d.ts +1 -1
- package/dist/chat/controllers/label.controller.d.ts +1 -1
- package/dist/chat/controllers/message.controller.d.ts +2 -2
- package/dist/chat/controllers/subscriber.controller.d.ts +3 -3
- package/dist/chat/controllers/thread.controller.d.ts +2 -2
- package/dist/chat/dto/label-group.dto.d.ts +1 -1
- package/dist/chat/dto/label.dto.d.ts +1 -1
- package/dist/chat/dto/message.dto.d.ts +1 -1
- package/dist/chat/dto/subscriber.dto.d.ts +3 -3
- package/dist/chat/dto/thread.dto.d.ts +1 -1
- package/dist/chat/entities/label-group.entity.d.ts +1 -1
- package/dist/chat/entities/label.entity.d.ts +1 -1
- package/dist/chat/entities/message.entity.d.ts +2 -2
- package/dist/chat/entities/subscriber.entity.d.ts +4 -4
- package/dist/chat/entities/subscriber.entity.js +3 -1
- package/dist/chat/entities/subscriber.entity.js.map +1 -1
- package/dist/chat/entities/thread.entity.d.ts +2 -2
- package/dist/chat/repositories/label-group.repository.d.ts +1 -1
- package/dist/chat/repositories/label.repository.d.ts +1 -1
- package/dist/chat/repositories/message.repository.d.ts +1 -1
- package/dist/chat/repositories/subscriber.repository.d.ts +1 -1
- package/dist/chat/repositories/thread.repository.d.ts +1 -1
- package/dist/chat/services/chat.service.d.ts +4 -4
- package/dist/chat/services/label-group.service.d.ts +1 -1
- package/dist/chat/services/label.service.d.ts +1 -1
- package/dist/chat/services/message.service.d.ts +2 -2
- package/dist/chat/services/subscriber.service.d.ts +5 -5
- package/dist/chat/services/subscriber.service.js +2 -2
- package/dist/chat/services/subscriber.service.js.map +1 -1
- package/dist/chat/services/thread.service.d.ts +2 -2
- package/dist/chat/types/channel.d.ts +1 -1
- package/dist/cms/controllers/content-type.controller.d.ts +1 -1
- package/dist/cms/controllers/content.controller.d.ts +1 -1
- package/dist/cms/controllers/menu.controller.d.ts +2 -2
- package/dist/cms/dto/content.dto.d.ts +1 -1
- package/dist/cms/dto/contentType.dto.d.ts +2 -2
- package/dist/cms/dto/menu.dto.d.ts +1 -1
- package/dist/cms/entities/content-type.entity.d.ts +2 -2
- package/dist/cms/entities/content-type.entity.js +3 -2
- package/dist/cms/entities/content-type.entity.js.map +1 -1
- package/dist/cms/entities/content.entity.d.ts +2 -2
- package/dist/cms/entities/content.entity.js +4 -3
- package/dist/cms/entities/content.entity.js.map +1 -1
- package/dist/cms/entities/menu.entity.d.ts +1 -1
- package/dist/cms/repositories/content-type.repository.d.ts +1 -1
- package/dist/cms/repositories/content.repository.d.ts +1 -1
- package/dist/cms/repositories/menu.repository.d.ts +1 -1
- package/dist/cms/services/content-type.service.d.ts +2 -2
- package/dist/cms/services/content-type.service.js.map +1 -1
- package/dist/cms/services/content.service.d.ts +1 -1
- package/dist/cms/services/menu.service.d.ts +1 -1
- package/dist/cms/services/rag-backend.service.d.ts +2 -2
- package/dist/cms/services/rag-indexer.service.d.ts +2 -2
- package/dist/cms/services/rag-retriever.service.d.ts +1 -1
- package/dist/cms/services/rag.service.d.ts +4 -4
- package/dist/database/decorators/json-column.decorator.js +1 -0
- package/dist/database/decorators/json-column.decorator.js.map +1 -1
- package/dist/database/entities/base.entity.d.ts +1 -1
- package/dist/database/typeorm-config.service.js +1 -1
- package/dist/database/typeorm-config.service.js.map +1 -1
- package/dist/extension/cleanup.service.d.ts +3 -3
- package/dist/extension/extension.module.d.ts +1 -1
- package/dist/extension/types.d.ts +1 -1
- package/dist/extensions/actions/ai/agent.action.d.ts +3 -3
- package/dist/extensions/actions/ai/ai-base.action.d.ts +5 -5
- package/dist/extensions/actions/ai/generate-object.action.d.ts +2 -2
- package/dist/extensions/actions/ai/generate-object.base.action.d.ts +3 -3
- package/dist/extensions/actions/ai/generate-reply.action.d.ts +2 -2
- package/dist/extensions/actions/ai/generate-text.action.d.ts +2 -2
- package/dist/extensions/actions/ai/generate-text.base.action.d.ts +3 -3
- package/dist/extensions/actions/ai/infer-object.action.d.ts +2 -2
- package/dist/extensions/actions/ai/retrieve-content-rag.action.d.ts +1 -1
- package/dist/extensions/actions/memory/update-memory.action.d.ts +4 -4
- package/dist/extensions/actions/messaging/attachment.action.d.ts +3 -3
- package/dist/extensions/actions/messaging/await-reply.action.d.ts +4 -4
- package/dist/extensions/actions/messaging/buttons.action.d.ts +3 -3
- package/dist/extensions/actions/messaging/list.action.d.ts +3 -3
- package/dist/extensions/actions/messaging/message-action.base.d.ts +6 -6
- package/dist/extensions/actions/messaging/quick-replies.action.d.ts +3 -3
- package/dist/extensions/actions/messaging/text-message.action.d.ts +3 -3
- package/dist/extensions/actions/subscriber/handover.action.d.ts +1 -1
- package/dist/extensions/actions/subscriber/update-labels.action.d.ts +1 -1
- package/dist/extensions/actions/web/http-request.action.d.ts +1 -1
- package/dist/extensions/actions/web/http-request.action.js +15 -4
- package/dist/extensions/actions/web/http-request.action.js.map +1 -1
- package/dist/extensions/actions/web/send-mail.action.d.ts +4 -4
- package/dist/extensions/channels/web/base-web-channel.d.ts +7 -6
- package/dist/extensions/channels/web/base-web-channel.js +12 -10
- package/dist/extensions/channels/web/base-web-channel.js.map +1 -1
- package/dist/extensions/channels/web/inbound/events/base-web-inbound.event.d.ts +3 -3
- package/dist/extensions/channels/web/inbound/events/delivery.event.d.ts +2 -2
- package/dist/extensions/channels/web/inbound/events/messages/attachment.event.d.ts +2 -2
- package/dist/extensions/channels/web/inbound/events/messages/location.event.d.ts +2 -2
- package/dist/extensions/channels/web/inbound/events/messages/payload.event.d.ts +2 -2
- package/dist/extensions/channels/web/inbound/events/messages/postback.event.d.ts +2 -2
- package/dist/extensions/channels/web/inbound/events/messages/quick-reply.event.d.ts +2 -2
- package/dist/extensions/channels/web/inbound/events/messages/text.event.d.ts +2 -2
- package/dist/extensions/channels/web/inbound/events/messages/web-message.event.d.ts +3 -3
- package/dist/extensions/channels/web/inbound/events/read.event.d.ts +2 -2
- package/dist/extensions/channels/web/inbound/events/typing.event.d.ts +2 -2
- package/dist/extensions/channels/web/inbound/events/unsupported.event.d.ts +2 -2
- package/dist/extensions/channels/web/inbound/web-inbound-event-decoder.d.ts +2 -2
- package/dist/extensions/channels/web/inbound/web-inbound-message-encoder.d.ts +1 -1
- package/dist/extensions/channels/web/outbound/web-outbound-message-encoder.d.ts +4 -4
- package/dist/extensions/channels/web/outbound/web-outbound-message-encoder.js +4 -4
- 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 +2 -2
- package/dist/extensions/channels/web/services/web-session.service.d.ts +6 -6
- package/dist/extensions/helpers/local-storage/index.helper.d.ts +2 -2
- package/dist/health/health.service.d.ts +3 -3
- package/dist/helper/helper.service.d.ts +2 -2
- package/dist/helper/lib/base-helper.d.ts +2 -2
- package/dist/helper/lib/base-storage-helper.d.ts +1 -1
- package/dist/helper/types.d.ts +1 -1
- package/dist/i18n/controllers/language.controller.d.ts +1 -1
- package/dist/i18n/controllers/translation.controller.d.ts +1 -1
- package/dist/i18n/dto/language.dto.d.ts +1 -1
- package/dist/i18n/dto/translation.dto.d.ts +1 -1
- package/dist/i18n/entities/language.entity.d.ts +1 -1
- package/dist/i18n/entities/translation.entity.d.ts +1 -1
- package/dist/i18n/repositories/language.repository.d.ts +1 -1
- package/dist/i18n/repositories/translation.repository.d.ts +1 -1
- package/dist/i18n/seeds/language.seed.d.ts +1 -1
- package/dist/i18n/seeds/translation.seed.d.ts +1 -1
- package/dist/i18n/services/i18n.service.d.ts +2 -2
- package/dist/i18n/services/language.service.d.ts +1 -1
- package/dist/i18n/services/translation.service.d.ts +3 -3
- package/dist/license/services/lemon-squeezy.service.js +2 -2
- package/dist/license/services/lemon-squeezy.service.js.map +1 -1
- package/dist/license/services/license.service.d.ts +5 -5
- package/dist/mailer/mailer.module.js +1 -49
- package/dist/mailer/mailer.module.js.map +1 -1
- package/dist/mailer/mailer.service.d.ts +11 -2
- package/dist/mailer/mailer.service.js +69 -3
- package/dist/mailer/mailer.service.js.map +1 -1
- package/dist/migration/migration.command.d.ts +1 -1
- package/dist/migration/migration.service.d.ts +3 -3
- package/dist/migration/types.d.ts +2 -2
- package/dist/setting/base-setting-group.d.ts +2 -2
- package/dist/setting/controllers/setting.controller.d.ts +1 -1
- package/dist/setting/create-setting-group.d.ts +2 -2
- package/dist/setting/dto/metadata.dto.d.ts +1 -1
- package/dist/setting/dto/setting.dto.d.ts +1 -1
- package/dist/setting/entities/metadata.entity.d.ts +1 -1
- package/dist/setting/entities/setting.entity.d.ts +1 -1
- package/dist/setting/repositories/metadata.repository.d.ts +1 -1
- package/dist/setting/repositories/setting.repository.d.ts +1 -1
- package/dist/setting/runtime-settings.seed.d.ts +3 -3
- package/dist/setting/seeds/metadata.seed.d.ts +1 -1
- package/dist/setting/seeds/setting.seed.d.ts +1 -1
- package/dist/setting/services/metadata.service.d.ts +1 -1
- package/dist/setting/services/runtime-settings.service.d.ts +1 -1
- package/dist/setting/services/setting.service.d.ts +4 -4
- package/dist/static/assets/browser-ponyfill-BydLWDRe.js +2 -0
- package/dist/static/assets/{cssMode-ClQbC1-G.js → cssMode-DtNyPUki.js} +1 -1
- package/dist/static/assets/{freemarker2-DRxgvoL0.js → freemarker2-C2XfZce5.js} +1 -1
- package/dist/static/assets/{handlebars-CTQECjcj.js → handlebars-C8bj58KH.js} +1 -1
- package/dist/static/assets/{html-DvVbNWXL.js → html-A6xaHkJC.js} +1 -1
- package/dist/static/assets/{htmlMode-DHCoon1T.js → htmlMode-BaS0W7vp.js} +1 -1
- package/dist/static/assets/{index-BgFwJPy7.js → index-BoAD0ucA.js} +2138 -2135
- package/dist/static/assets/{javascript-CiEs6Ej5.js → javascript-B0ziESIH.js} +1 -1
- package/dist/static/assets/{jsonMode-DTfAuumC.js → jsonMode-Ce5isNkh.js} +1 -1
- package/dist/static/assets/{liquid-B714yIaN.js → liquid-DgK1yfp4.js} +1 -1
- package/dist/static/assets/{lspLanguageFeatures-r73pyfl4.js → lspLanguageFeatures-Dm_9PmPd.js} +1 -1
- package/dist/static/assets/{mdx-D5IAs7yq.js → mdx-DoyiAUI-.js} +1 -1
- package/dist/static/assets/{python-ehBpsG6S.js → python-D3i33SIz.js} +1 -1
- package/dist/static/assets/{razor-V-Gitx5J.js → razor-CmE-9YdK.js} +1 -1
- package/dist/static/assets/{tsMode-D_iFxZ-O.js → tsMode-Ct_NvUwl.js} +1 -1
- package/dist/static/assets/{typescript-CEGzsf5j.js → typescript-ynHJup65.js} +1 -1
- package/dist/static/assets/{xml-N5EKZaXL.js → xml-BymLyoKX.js} +1 -1
- package/dist/static/assets/{yaml-IWZvbW4T.js → yaml-Cn2RaxHO.js} +1 -1
- package/dist/static/assets/{yaml.worker.entry-BdO9k22I.js → yaml.worker.entry-BB81z30Q.js} +228 -228
- package/dist/static/index.html +1 -1
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/dist/user/controllers/auth.controller.d.ts +2 -2
- package/dist/user/controllers/credential.controller.d.ts +1 -1
- package/dist/user/controllers/model.controller.d.ts +3 -3
- package/dist/user/controllers/permission.controller.d.ts +2 -2
- package/dist/user/controllers/role.controller.d.ts +1 -1
- package/dist/user/controllers/user.controller.d.ts +3 -3
- package/dist/user/dto/credential.dto.d.ts +1 -1
- package/dist/user/dto/model.dto.d.ts +1 -1
- package/dist/user/dto/permission.dto.d.ts +1 -1
- package/dist/user/dto/role.dto.d.ts +1 -1
- package/dist/user/dto/user-profile.dto.d.ts +1 -1
- package/dist/user/dto/user.dto.d.ts +2 -2
- package/dist/user/entities/credential.entity.d.ts +1 -1
- package/dist/user/entities/model.entity.d.ts +2 -2
- package/dist/user/entities/model.entity.js +4 -3
- package/dist/user/entities/model.entity.js.map +1 -1
- package/dist/user/entities/permission.entity.d.ts +3 -3
- package/dist/user/entities/permission.entity.js +7 -7
- package/dist/user/entities/permission.entity.js.map +1 -1
- package/dist/user/entities/role.entity.d.ts +2 -2
- package/dist/user/entities/role.entity.js +3 -2
- package/dist/user/entities/role.entity.js.map +1 -1
- package/dist/user/entities/user-profile.entity.d.ts +3 -3
- package/dist/user/entities/user.entity.d.ts +1 -1
- package/dist/user/repositories/credential.repository.d.ts +1 -1
- package/dist/user/repositories/model.repository.d.ts +1 -1
- package/dist/user/repositories/permission.repository.d.ts +1 -1
- package/dist/user/repositories/role.repository.d.ts +1 -1
- package/dist/user/repositories/user.repository.d.ts +1 -1
- package/dist/user/seeds/model.seed.d.ts +1 -1
- package/dist/user/seeds/permission.seed.d.ts +1 -1
- package/dist/user/seeds/role.seed.d.ts +1 -1
- package/dist/user/seeds/user.seed.d.ts +1 -1
- package/dist/user/services/credential.service.d.ts +1 -1
- package/dist/user/services/model.service.d.ts +1 -1
- package/dist/user/services/passwordReset.service.d.ts +4 -4
- package/dist/user/services/permission.service.d.ts +1 -1
- package/dist/user/services/role.service.d.ts +1 -1
- package/dist/user/services/user.service.d.ts +1 -1
- package/dist/user/services/validate-account.service.d.ts +4 -4
- package/dist/utils/decorators/roles.decorator.d.ts +1 -1
- package/dist/utils/generics/base-orm.controller.d.ts +2 -2
- package/dist/utils/generics/base-orm.repository.d.ts +2 -2
- package/dist/utils/generics/base-orm.seeder.d.ts +1 -1
- package/dist/utils/generics/base-orm.service.d.ts +2 -2
- package/dist/utils/generics/extension.d.ts +3 -4
- package/dist/utils/generics/extension.js.map +1 -1
- package/dist/utils/helpers/zod.d.ts +1 -1
- package/dist/utils/index.d.ts +0 -1
- package/dist/utils/index.js +0 -1
- package/dist/utils/index.js.map +1 -1
- package/dist/utils/pipes/uuid.pipe.js +3 -3
- package/dist/utils/pipes/uuid.pipe.js.map +1 -1
- package/dist/utils/test/dummy/controllers/dummy.controller.d.ts +1 -1
- package/dist/utils/test/dummy/dto/dummy.dto.d.ts +1 -1
- package/dist/utils/test/dummy/dummy.action.d.ts +1 -1
- package/dist/utils/test/dummy/entities/dummy.entity.d.ts +1 -1
- package/dist/utils/test/dummy/repositories/dummy.repository.d.ts +1 -1
- package/dist/utils/test/dummy/services/dummy.service.d.ts +1 -1
- package/dist/utils/test/fixtures/attachment.d.ts +1 -1
- package/dist/utils/test/fixtures/content.d.ts +2 -2
- package/dist/utils/test/fixtures/contenttype.d.ts +2 -2
- package/dist/utils/test/fixtures/contenttype.js +2 -2
- package/dist/utils/test/fixtures/contenttype.js.map +1 -1
- package/dist/utils/test/fixtures/dummy.d.ts +2 -2
- package/dist/utils/test/fixtures/label-group.d.ts +3 -3
- package/dist/utils/test/fixtures/label.d.ts +2 -2
- package/dist/utils/test/fixtures/language.d.ts +2 -2
- package/dist/utils/test/fixtures/mcp-server.d.ts +3 -3
- package/dist/utils/test/fixtures/memory-definition.d.ts +2 -2
- package/dist/utils/test/fixtures/memory-record.d.ts +2 -2
- package/dist/utils/test/fixtures/menu.d.ts +1 -1
- package/dist/utils/test/fixtures/message.d.ts +1 -1
- package/dist/utils/test/fixtures/migration.d.ts +1 -1
- package/dist/utils/test/fixtures/model.d.ts +2 -2
- package/dist/utils/test/fixtures/permission.d.ts +4 -4
- package/dist/utils/test/fixtures/role.d.ts +2 -2
- package/dist/utils/test/fixtures/setting.d.ts +1 -1
- package/dist/utils/test/fixtures/stats.d.ts +1 -1
- package/dist/utils/test/fixtures/subscriber.d.ts +4 -4
- package/dist/utils/test/fixtures/translation.d.ts +1 -1
- package/dist/utils/test/fixtures/user.d.ts +2 -2
- package/dist/utils/test/fixtures/workflow-run.d.ts +2 -2
- package/dist/utils/test/fixtures/workflow.d.ts +2 -2
- package/dist/utils/test/providers/i18n-service.provider.d.ts +1 -1
- package/dist/utils/test/providers/i18n-service.provider.js +2 -2
- package/dist/utils/test/providers/i18n-service.provider.js.map +1 -1
- package/dist/utils/test/providers/mailer-service.provider.d.ts +3 -3
- package/dist/utils/test/providers/mailer-service.provider.js +2 -2
- package/dist/utils/test/providers/mailer-service.provider.js.map +1 -1
- package/dist/utils/test/providers/setting-service.provider.d.ts +1 -1
- package/dist/utils/test/providers/setting-service.provider.js +2 -2
- package/dist/utils/test/providers/setting-service.provider.js.map +1 -1
- package/dist/utils/test/test.d.ts +4 -0
- package/dist/utils/test/test.js +34 -1
- package/dist/utils/test/test.js.map +1 -1
- package/dist/utils/test/types.d.ts +1 -1
- package/dist/utils/test/utils.d.ts +2 -1
- package/dist/utils/test/utils.js +203 -46
- package/dist/utils/test/utils.js.map +1 -1
- package/dist/utils/types/dto.types.d.ts +1 -1
- package/dist/utils/types/entity-event.types.d.ts +1 -1
- package/dist/websocket/services/socket-event-dispatcher.service.d.ts +1 -1
- package/dist/websocket/websocket.gateway.d.ts +6 -6
- package/dist/websocket/websocket.gateway.js +2 -2
- package/dist/websocket/websocket.gateway.js.map +1 -1
- package/dist/workflow/contexts/conversational-workflow.context.d.ts +1 -1
- package/dist/workflow/contexts/workflow-runtime.context.d.ts +10 -10
- package/dist/workflow/contexts/workflow-runtime.context.js +6 -6
- package/dist/workflow/contexts/workflow-runtime.context.js.map +1 -1
- package/dist/workflow/controllers/mcp-server.controller.d.ts +1 -1
- package/dist/workflow/controllers/memory-definition.controller.d.ts +1 -1
- package/dist/workflow/controllers/workflow-run.controller.d.ts +1 -1
- package/dist/workflow/controllers/workflow-version.controller.d.ts +1 -1
- package/dist/workflow/controllers/workflow.controller.d.ts +4 -4
- package/dist/workflow/controllers/workflow.controller.js +9 -9
- package/dist/workflow/controllers/workflow.controller.js.map +1 -1
- package/dist/workflow/dto/mcp-server.dto.d.ts +1 -1
- package/dist/workflow/dto/memory-definition.dto.d.ts +1 -1
- package/dist/workflow/dto/memory-record.dto.d.ts +1 -1
- package/dist/workflow/dto/workflow-run.dto.d.ts +1 -1
- package/dist/workflow/dto/workflow-version.dto.d.ts +1 -1
- package/dist/workflow/dto/workflow.dto.d.ts +1 -1
- package/dist/workflow/entities/mcp-server.entity.d.ts +2 -2
- package/dist/workflow/entities/mcp-server.entity.js +4 -4
- package/dist/workflow/entities/mcp-server.entity.js.map +1 -1
- package/dist/workflow/entities/memory-definition.entity.d.ts +1 -1
- package/dist/workflow/entities/memory-record.entity.d.ts +4 -4
- package/dist/workflow/entities/workflow-run.entity.d.ts +4 -4
- package/dist/workflow/entities/workflow-version.entity.d.ts +3 -3
- package/dist/workflow/entities/workflow-version.entity.js +6 -4
- package/dist/workflow/entities/workflow-version.entity.js.map +1 -1
- package/dist/workflow/entities/workflow.entity.d.ts +2 -2
- package/dist/workflow/entities/workflow.entity.js +2 -1
- package/dist/workflow/entities/workflow.entity.js.map +1 -1
- package/dist/workflow/lib/trigger-event-wrapper.d.ts +1 -1
- package/dist/workflow/repositories/mcp-server.repository.d.ts +1 -1
- package/dist/workflow/repositories/memory-definition.repository.d.ts +1 -1
- package/dist/workflow/repositories/memory-record.repository.d.ts +1 -1
- package/dist/workflow/repositories/workflow-run.repository.d.ts +1 -1
- package/dist/workflow/repositories/workflow-version.repository.d.ts +1 -1
- package/dist/workflow/repositories/workflow.repository.d.ts +1 -1
- package/dist/workflow/seeds/memory-definition.seed.d.ts +1 -1
- package/dist/workflow/seeds/workflow.seed.d.ts +1 -1
- package/dist/workflow/services/agentic.service.d.ts +4 -4
- package/dist/workflow/services/mcp-client-pool.service.d.ts +2 -2
- package/dist/workflow/services/mcp-server.service.d.ts +1 -1
- package/dist/workflow/services/memory-definition.service.d.ts +1 -1
- package/dist/workflow/services/memory-record.service.d.ts +1 -1
- package/dist/workflow/services/memory.service.js +1 -0
- package/dist/workflow/services/memory.service.js.map +1 -1
- package/dist/workflow/services/workflow-run.service.d.ts +1 -1
- package/dist/workflow/services/workflow-scheduler.service.d.ts +3 -3
- package/dist/workflow/services/workflow-scheduler.service.js +2 -2
- package/dist/workflow/services/workflow-scheduler.service.js.map +1 -1
- package/dist/workflow/services/workflow-version.service.d.ts +1 -1
- package/dist/workflow/services/workflow.service.d.ts +3 -3
- package/dist/workflow/utils/memory-store.js +12 -1
- package/dist/workflow/utils/memory-store.js.map +1 -1
- package/dist/workflow/workflow.module.js +4 -4
- package/dist/workflow/workflow.module.js.map +1 -1
- package/package.json +63 -32
- package/src/attachment/utilities/index.ts +2 -2
- package/src/bootstrap.ts +10 -1
- package/src/channel/lib/Handler.ts +3 -2
- package/src/chat/chat.module.ts +1 -1
- package/src/chat/entities/subscriber.entity.ts +14 -7
- package/src/chat/services/subscriber.service.ts +3 -2
- package/src/cms/entities/content-type.entity.ts +12 -4
- package/src/cms/entities/content.entity.ts +13 -5
- package/src/cms/services/content-type.service.ts +1 -1
- package/src/cms/services/rag.service.ts +1 -1
- package/src/database/decorators/json-column.decorator.ts +1 -0
- package/src/database/typeorm-config.service.ts +1 -1
- package/src/extensions/actions/web/http-request.action.ts +23 -4
- package/src/extensions/channels/web/base-web-channel.ts +7 -6
- package/src/extensions/channels/web/outbound/web-outbound-message-encoder.ts +2 -2
- package/src/global.d.ts +0 -6
- package/src/license/services/lemon-squeezy.service.ts +3 -2
- package/src/mailer/mailer.module.ts +1 -54
- package/src/mailer/mailer.service.ts +86 -2
- package/src/user/entities/model.entity.ts +13 -5
- package/src/user/entities/permission.entity.ts +21 -9
- package/src/user/entities/role.entity.ts +12 -4
- package/src/utils/generics/extension.ts +1 -3
- package/src/utils/index.ts +0 -2
- package/src/utils/pipes/uuid.pipe.ts +3 -3
- package/src/utils/test/fixtures/contenttype.ts +1 -1
- package/src/utils/test/fixtures/workflow.ts +1 -1
- package/src/utils/test/providers/i18n-service.provider.ts +1 -1
- package/src/utils/test/providers/mailer-service.provider.ts +1 -1
- package/src/utils/test/providers/setting-service.provider.ts +1 -1
- package/src/utils/test/test.ts +39 -0
- package/src/utils/test/utils.ts +332 -57
- package/src/websocket/websocket.gateway.ts +2 -2
- package/src/workflow/contexts/workflow-runtime.context.ts +2 -2
- package/src/workflow/controllers/workflow.controller.ts +2 -2
- package/src/workflow/entities/mcp-server.entity.ts +2 -2
- package/src/workflow/entities/workflow-version.entity.ts +8 -3
- package/src/workflow/entities/workflow.entity.ts +2 -1
- package/src/workflow/services/memory.service.ts +1 -0
- package/src/workflow/services/workflow-scheduler.service.ts +1 -1
- package/src/workflow/utils/memory-store.ts +13 -1
- package/src/workflow/workflow.module.ts +2 -2
- package/dist/mailer/mjml-adapter.class.d.ts +0 -4
- package/dist/mailer/mjml-adapter.class.js +0 -67
- package/dist/mailer/mjml-adapter.class.js.map +0 -1
- package/dist/utils/types/extension.d.ts +0 -4
- package/dist/utils/types/extension.js +0 -3
- package/dist/utils/types/extension.js.map +0 -1
- package/src/mailer/mjml-adapter.class.ts +0 -41
- package/src/utils/types/extension.ts +0 -13
package/src/utils/test/utils.ts
CHANGED
|
@@ -14,6 +14,7 @@ import {
|
|
|
14
14
|
DataSource,
|
|
15
15
|
DataSourceOptions,
|
|
16
16
|
EntitySchema,
|
|
17
|
+
EntitySubscriberInterface,
|
|
17
18
|
EntityTarget,
|
|
18
19
|
getMetadataArgsStorage,
|
|
19
20
|
} from 'typeorm';
|
|
@@ -33,7 +34,7 @@ import { SettingModule } from '@/setting/setting.module';
|
|
|
33
34
|
|
|
34
35
|
import { I18nTestingModule } from './modules/i18n-testing.module';
|
|
35
36
|
import { I18nServiceProvider } from './providers/i18n-service.provider';
|
|
36
|
-
import { registerTypeOrmDataSource } from './test';
|
|
37
|
+
import { registerTestingModule, registerTypeOrmDataSource } from './test';
|
|
37
38
|
|
|
38
39
|
type TTypeOrToken = [
|
|
39
40
|
new (...args: any[]) => any,
|
|
@@ -51,12 +52,16 @@ type TypeOrmTestingConfig = {
|
|
|
51
52
|
fixtures?: TypeOrmFixture | TypeOrmFixture[];
|
|
52
53
|
dataSourceOptions?: Partial<DataSourceOptions>;
|
|
53
54
|
};
|
|
55
|
+
type TypeOrmTestingInput =
|
|
56
|
+
| TypeOrmTestingConfig
|
|
57
|
+
| TypeOrmTestingConfig[]
|
|
58
|
+
| false;
|
|
54
59
|
|
|
55
60
|
type buildTestingMocksProps<
|
|
56
61
|
P extends ModuleMetadata['providers'] = ModuleMetadata['providers'],
|
|
57
62
|
C extends ModuleMetadata['controllers'] = ModuleMetadata['controllers'],
|
|
58
63
|
> = ModuleMetadata & {
|
|
59
|
-
typeorm?:
|
|
64
|
+
typeorm?: TypeOrmTestingInput;
|
|
60
65
|
} & (
|
|
61
66
|
| {
|
|
62
67
|
providers: NonNullable<P>;
|
|
@@ -108,7 +113,10 @@ const getParamTypes = (provider: Provider) =>
|
|
|
108
113
|
* @param parentClass - The root provider class whose dependency graph is resolved.
|
|
109
114
|
* @returns A complete array of unique provider dependencies.
|
|
110
115
|
*/
|
|
111
|
-
const getClassDependencies = (
|
|
116
|
+
const getClassDependencies = (
|
|
117
|
+
parentClass: Provider,
|
|
118
|
+
providedTokens = new Set<Provider>(),
|
|
119
|
+
): Provider[] => {
|
|
112
120
|
const dependencies: Provider[] = [];
|
|
113
121
|
const seenClasses = new Set<Provider>();
|
|
114
122
|
const classQueue: Provider[] = [parentClass];
|
|
@@ -124,7 +132,11 @@ const getClassDependencies = (parentClass: Provider): Provider[] => {
|
|
|
124
132
|
|
|
125
133
|
if (currentClass) {
|
|
126
134
|
getParamTypes(currentClass).forEach((paramType: Provider) => {
|
|
127
|
-
if (
|
|
135
|
+
if (
|
|
136
|
+
paramType &&
|
|
137
|
+
!seenClasses.has(paramType) &&
|
|
138
|
+
!providedTokens.has(paramType)
|
|
139
|
+
) {
|
|
128
140
|
classQueue.push(paramType);
|
|
129
141
|
dependencies.push(paramType);
|
|
130
142
|
}
|
|
@@ -136,6 +148,17 @@ const getClassDependencies = (parentClass: Provider): Provider[] => {
|
|
|
136
148
|
};
|
|
137
149
|
const filterNestedDependencies = (dependency: Provider) =>
|
|
138
150
|
dependency.valueOf().toString().slice(0, 6) === 'class ';
|
|
151
|
+
const resolveProviderToken = (provider: Provider): Provider | undefined => {
|
|
152
|
+
if (
|
|
153
|
+
typeof provider === 'object' &&
|
|
154
|
+
provider !== null &&
|
|
155
|
+
'provide' in provider
|
|
156
|
+
) {
|
|
157
|
+
return provider.provide as Provider;
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
return provider;
|
|
161
|
+
};
|
|
139
162
|
/**
|
|
140
163
|
* Identifies nested class-based dependencies to be automatically injected into test modules.
|
|
141
164
|
*
|
|
@@ -145,9 +168,14 @@ const filterNestedDependencies = (dependency: Provider) =>
|
|
|
145
168
|
const autoInjectExclusions = new Set<Provider>([DataSource]);
|
|
146
169
|
const getNestedDependencies = (providers: Provider[]): Provider[] => {
|
|
147
170
|
const nestedDependencies = new Set<Provider>();
|
|
171
|
+
const providedTokens = new Set<Provider>(
|
|
172
|
+
providers
|
|
173
|
+
.map(resolveProviderToken)
|
|
174
|
+
.filter((provider): provider is Provider => provider !== undefined),
|
|
175
|
+
);
|
|
148
176
|
|
|
149
177
|
providers.filter(filterNestedDependencies).forEach((provider) => {
|
|
150
|
-
getClassDependencies(provider)
|
|
178
|
+
getClassDependencies(provider, providedTokens)
|
|
151
179
|
.filter(filterNestedDependencies)
|
|
152
180
|
.forEach((dependency) => {
|
|
153
181
|
if (autoInjectExclusions.has(dependency)) {
|
|
@@ -213,15 +241,56 @@ const buildEntityLookup = () => {
|
|
|
213
241
|
|
|
214
242
|
return lookup;
|
|
215
243
|
};
|
|
216
|
-
const
|
|
244
|
+
const addEntityToLookup = (
|
|
245
|
+
lookup: Map<string, EntityTarget<any>>,
|
|
246
|
+
entity: EntityTarget<any> | undefined,
|
|
247
|
+
): EntityTarget<any> | undefined => {
|
|
248
|
+
if (!entity) {
|
|
249
|
+
return undefined;
|
|
250
|
+
}
|
|
251
|
+
|
|
252
|
+
const key = resolveEntityTargetName(entity);
|
|
253
|
+
if (key) {
|
|
254
|
+
lookup.set(key, entity);
|
|
255
|
+
}
|
|
256
|
+
|
|
257
|
+
return entity;
|
|
258
|
+
};
|
|
259
|
+
const refreshEntityLookup = (lookup: Map<string, EntityTarget<any>>): void => {
|
|
260
|
+
buildEntityLookup().forEach((entity, key) => lookup.set(key, entity));
|
|
261
|
+
};
|
|
262
|
+
const GENERATED_ORM_HOOK_SUBSCRIBER = Symbol('generatedOrmHookSubscriber');
|
|
263
|
+
type SubscriberWithListenTo = EntitySubscriberInterface & {
|
|
264
|
+
listenTo: NonNullable<EntitySubscriberInterface['listenTo']>;
|
|
265
|
+
};
|
|
266
|
+
type GeneratedOrmHookSubscriber = SubscriberWithListenTo & {
|
|
267
|
+
[GENERATED_ORM_HOOK_SUBSCRIBER]: true;
|
|
268
|
+
};
|
|
269
|
+
const isGeneratedOrmHookSubscriber = (
|
|
270
|
+
subscriber: unknown,
|
|
271
|
+
): subscriber is GeneratedOrmHookSubscriber =>
|
|
272
|
+
Boolean(
|
|
273
|
+
subscriber &&
|
|
274
|
+
typeof subscriber === 'object' &&
|
|
275
|
+
(subscriber as Record<PropertyKey, unknown>)[
|
|
276
|
+
GENERATED_ORM_HOOK_SUBSCRIBER
|
|
277
|
+
],
|
|
278
|
+
);
|
|
279
|
+
const hasListenTo = (
|
|
280
|
+
subscriber: unknown,
|
|
281
|
+
): subscriber is SubscriberWithListenTo =>
|
|
282
|
+
Boolean(
|
|
283
|
+
subscriber &&
|
|
284
|
+
typeof subscriber === 'object' &&
|
|
285
|
+
typeof (subscriber as { listenTo?: unknown }).listenTo === 'function',
|
|
286
|
+
);
|
|
217
287
|
const registerAllRepositorySubscribers = (
|
|
218
288
|
dataSource: DataSource,
|
|
219
289
|
entityClasses: (new (...args: any[]) => BaseOrmEntity<any>)[],
|
|
220
290
|
): void => {
|
|
221
291
|
for (const EntityClass of entityClasses) {
|
|
222
|
-
if (registeredSubscribers.has(EntityClass)) continue;
|
|
223
|
-
|
|
224
292
|
const subscriber = {
|
|
293
|
+
[GENERATED_ORM_HOOK_SUBSCRIBER]: true,
|
|
225
294
|
listenTo: () => EntityClass,
|
|
226
295
|
...Object.fromEntries(
|
|
227
296
|
ORM_HOOK_NAMES.map((name) => [
|
|
@@ -238,14 +307,34 @@ const registerAllRepositorySubscribers = (
|
|
|
238
307
|
),
|
|
239
308
|
};
|
|
240
309
|
const exists = dataSource.subscribers.some(
|
|
241
|
-
(
|
|
310
|
+
(subscriber) =>
|
|
311
|
+
hasListenTo(subscriber) && subscriber.listenTo() === EntityClass,
|
|
242
312
|
);
|
|
243
313
|
if (!exists) {
|
|
244
314
|
dataSource.subscribers.push(subscriber as any);
|
|
245
|
-
registeredSubscribers.add(EntityClass);
|
|
246
315
|
}
|
|
247
316
|
}
|
|
248
317
|
};
|
|
318
|
+
const pruneGeneratedRepositorySubscribers = (dataSource: DataSource): void => {
|
|
319
|
+
const concreteSubscriberTargets = new Set(
|
|
320
|
+
dataSource.subscribers
|
|
321
|
+
.filter(
|
|
322
|
+
(subscriber): subscriber is SubscriberWithListenTo =>
|
|
323
|
+
!isGeneratedOrmHookSubscriber(subscriber) && hasListenTo(subscriber),
|
|
324
|
+
)
|
|
325
|
+
.map((subscriber) => subscriber.listenTo()),
|
|
326
|
+
);
|
|
327
|
+
const subscribers = dataSource.subscribers.filter(
|
|
328
|
+
(subscriber) =>
|
|
329
|
+
!isGeneratedOrmHookSubscriber(subscriber) ||
|
|
330
|
+
!concreteSubscriberTargets.has(subscriber.listenTo()),
|
|
331
|
+
);
|
|
332
|
+
dataSource.subscribers.splice(
|
|
333
|
+
0,
|
|
334
|
+
dataSource.subscribers.length,
|
|
335
|
+
...subscribers,
|
|
336
|
+
);
|
|
337
|
+
};
|
|
249
338
|
const normalizeRepositoryToken = (token: string): string | undefined => {
|
|
250
339
|
if (!token.endsWith(TYPEORM_REPOSITORY_SUFFIX)) {
|
|
251
340
|
return undefined;
|
|
@@ -314,22 +403,41 @@ const extractInjectTokensFromProvider = (provider: ProviderLike): unknown[] => {
|
|
|
314
403
|
|
|
315
404
|
return [];
|
|
316
405
|
};
|
|
317
|
-
const
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
406
|
+
const dependsOnDataSource = (provider: ProviderLike): boolean => {
|
|
407
|
+
if (!provider) {
|
|
408
|
+
return false;
|
|
409
|
+
}
|
|
410
|
+
|
|
411
|
+
if (typeof provider === 'function') {
|
|
412
|
+
return (
|
|
413
|
+
getParamTypes(provider).includes(DataSource) ||
|
|
414
|
+
extractCustomInjectTokens(provider).includes(DataSource)
|
|
415
|
+
);
|
|
416
|
+
}
|
|
417
|
+
|
|
418
|
+
if (typeof provider === 'object') {
|
|
419
|
+
if ('useClass' in provider && typeof provider.useClass === 'function') {
|
|
420
|
+
return dependsOnDataSource(provider.useClass);
|
|
421
|
+
}
|
|
422
|
+
|
|
423
|
+
if ('inject' in provider && Array.isArray(provider.inject)) {
|
|
424
|
+
return provider.inject.includes(DataSource);
|
|
425
|
+
}
|
|
426
|
+
}
|
|
427
|
+
|
|
428
|
+
return false;
|
|
322
429
|
};
|
|
323
430
|
const registerAutoDetectedTypeOrmEntities = (
|
|
324
431
|
currentEntities: Set<EntityTarget<any>>,
|
|
325
432
|
providers: Provider[],
|
|
326
433
|
controllers: ModuleMetadata['controllers'],
|
|
327
434
|
lookup: Map<string, EntityTarget<any>>,
|
|
328
|
-
) => {
|
|
435
|
+
): boolean => {
|
|
329
436
|
if (!lookup.size) {
|
|
330
|
-
return;
|
|
437
|
+
return false;
|
|
331
438
|
}
|
|
332
439
|
|
|
440
|
+
let detected = false;
|
|
333
441
|
const controllerList = Array.isArray(controllers) ? controllers : [];
|
|
334
442
|
const tokens = [
|
|
335
443
|
...providers.flatMap(extractInjectTokensFromProvider),
|
|
@@ -340,8 +448,147 @@ const registerAutoDetectedTypeOrmEntities = (
|
|
|
340
448
|
const entity = resolveEntityFromToken(token, lookup);
|
|
341
449
|
if (entity) {
|
|
342
450
|
currentEntities.add(entity);
|
|
451
|
+
detected = true;
|
|
343
452
|
}
|
|
344
453
|
});
|
|
454
|
+
|
|
455
|
+
return detected;
|
|
456
|
+
};
|
|
457
|
+
const addEntityToSet = (
|
|
458
|
+
entities: Set<EntityTarget<any>>,
|
|
459
|
+
entity: EntityTarget<any> | undefined,
|
|
460
|
+
queue: EntityTarget<any>[],
|
|
461
|
+
): void => {
|
|
462
|
+
if (!entity || entities.has(entity)) {
|
|
463
|
+
return;
|
|
464
|
+
}
|
|
465
|
+
|
|
466
|
+
entities.add(entity);
|
|
467
|
+
queue.push(entity);
|
|
468
|
+
};
|
|
469
|
+
const isSameEntityTarget = (
|
|
470
|
+
left: EntityTarget<any> | undefined,
|
|
471
|
+
right: EntityTarget<any>,
|
|
472
|
+
): boolean => {
|
|
473
|
+
if (!left) {
|
|
474
|
+
return false;
|
|
475
|
+
}
|
|
476
|
+
|
|
477
|
+
if (left === right) {
|
|
478
|
+
return true;
|
|
479
|
+
}
|
|
480
|
+
|
|
481
|
+
const leftName = resolveEntityTargetName(left);
|
|
482
|
+
const rightName = resolveEntityTargetName(right);
|
|
483
|
+
|
|
484
|
+
return !!leftName && leftName === rightName;
|
|
485
|
+
};
|
|
486
|
+
const resolveRelationTarget = async (
|
|
487
|
+
relationType: unknown,
|
|
488
|
+
lookup: Map<string, EntityTarget<any>>,
|
|
489
|
+
): Promise<EntityTarget<any> | undefined> => {
|
|
490
|
+
if (typeof relationType === 'string') {
|
|
491
|
+
return lookup.get(relationType);
|
|
492
|
+
}
|
|
493
|
+
|
|
494
|
+
if (typeof relationType === 'function') {
|
|
495
|
+
try {
|
|
496
|
+
const resolved = relationType();
|
|
497
|
+
|
|
498
|
+
if (typeof resolved === 'string') {
|
|
499
|
+
return resolveRelationTarget(resolved, lookup);
|
|
500
|
+
}
|
|
501
|
+
|
|
502
|
+
return addEntityToLookup(lookup, resolved as EntityTarget<any>);
|
|
503
|
+
} catch {
|
|
504
|
+
return addEntityToLookup(lookup, relationType as EntityTarget<any>);
|
|
505
|
+
}
|
|
506
|
+
}
|
|
507
|
+
|
|
508
|
+
return undefined;
|
|
509
|
+
};
|
|
510
|
+
const registerInheritedTypeOrmEntities = (
|
|
511
|
+
currentEntities: Set<EntityTarget<any>>,
|
|
512
|
+
entity: EntityTarget<any>,
|
|
513
|
+
lookup: Map<string, EntityTarget<any>>,
|
|
514
|
+
queue: EntityTarget<any>[],
|
|
515
|
+
): void => {
|
|
516
|
+
if (typeof entity !== 'function') {
|
|
517
|
+
return;
|
|
518
|
+
}
|
|
519
|
+
|
|
520
|
+
let prototype = Object.getPrototypeOf(entity.prototype);
|
|
521
|
+
|
|
522
|
+
while (prototype?.constructor && prototype.constructor !== Object) {
|
|
523
|
+
const parent = lookup.get(prototype.constructor.name);
|
|
524
|
+
if (parent) {
|
|
525
|
+
addEntityToSet(currentEntities, parent, queue);
|
|
526
|
+
}
|
|
527
|
+
|
|
528
|
+
prototype = Object.getPrototypeOf(prototype);
|
|
529
|
+
}
|
|
530
|
+
};
|
|
531
|
+
const registerChildTypeOrmEntities = (
|
|
532
|
+
currentEntities: Set<EntityTarget<any>>,
|
|
533
|
+
entity: EntityTarget<any>,
|
|
534
|
+
lookup: Map<string, EntityTarget<any>>,
|
|
535
|
+
queue: EntityTarget<any>[],
|
|
536
|
+
): void => {
|
|
537
|
+
if (typeof entity !== 'function') {
|
|
538
|
+
return;
|
|
539
|
+
}
|
|
540
|
+
|
|
541
|
+
getMetadataArgsStorage().tables.forEach((table) => {
|
|
542
|
+
if (
|
|
543
|
+
table.type !== 'entity-child' ||
|
|
544
|
+
typeof table.target !== 'function' ||
|
|
545
|
+
!entity.prototype.isPrototypeOf(table.target.prototype)
|
|
546
|
+
) {
|
|
547
|
+
return;
|
|
548
|
+
}
|
|
549
|
+
|
|
550
|
+
addEntityToSet(
|
|
551
|
+
currentEntities,
|
|
552
|
+
addEntityToLookup(lookup, table.target as EntityTarget<any>),
|
|
553
|
+
queue,
|
|
554
|
+
);
|
|
555
|
+
});
|
|
556
|
+
};
|
|
557
|
+
const registerRelatedTypeOrmEntities = async (
|
|
558
|
+
currentEntities: Set<EntityTarget<any>>,
|
|
559
|
+
lookup: Map<string, EntityTarget<any>>,
|
|
560
|
+
): Promise<void> => {
|
|
561
|
+
const queue = Array.from(currentEntities);
|
|
562
|
+
|
|
563
|
+
while (queue.length > 0) {
|
|
564
|
+
const entity = queue.shift()!;
|
|
565
|
+
const storage = getMetadataArgsStorage();
|
|
566
|
+
|
|
567
|
+
refreshEntityLookup(lookup);
|
|
568
|
+
registerInheritedTypeOrmEntities(currentEntities, entity, lookup, queue);
|
|
569
|
+
registerChildTypeOrmEntities(currentEntities, entity, lookup, queue);
|
|
570
|
+
|
|
571
|
+
const relations = storage.relations.filter((relation) =>
|
|
572
|
+
isSameEntityTarget(relation.target as EntityTarget<any>, entity),
|
|
573
|
+
);
|
|
574
|
+
|
|
575
|
+
for (const relation of relations) {
|
|
576
|
+
const relationEntity = await resolveRelationTarget(relation.type, lookup);
|
|
577
|
+
addEntityToSet(currentEntities, relationEntity, queue);
|
|
578
|
+
}
|
|
579
|
+
|
|
580
|
+
for (const relation of storage.relations) {
|
|
581
|
+
const relationEntity = await resolveRelationTarget(relation.type, lookup);
|
|
582
|
+
|
|
583
|
+
if (isSameEntityTarget(relationEntity, entity)) {
|
|
584
|
+
addEntityToSet(
|
|
585
|
+
currentEntities,
|
|
586
|
+
addEntityToLookup(lookup, relation.target as EntityTarget<any>),
|
|
587
|
+
queue,
|
|
588
|
+
);
|
|
589
|
+
}
|
|
590
|
+
}
|
|
591
|
+
}
|
|
345
592
|
};
|
|
346
593
|
|
|
347
594
|
/**
|
|
@@ -421,27 +668,33 @@ export const buildTestingMocks = async ({
|
|
|
421
668
|
overrideTokens.has(provider as unknown as Provider)
|
|
422
669
|
),
|
|
423
670
|
);
|
|
424
|
-
const
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
671
|
+
const typeOrmDisabled = typeorm === false;
|
|
672
|
+
let typeOrmOptions: Partial<DataSourceOptions> | undefined;
|
|
673
|
+
const typeOrmFixtures: TypeOrmFixture[] = [];
|
|
674
|
+
const typeOrmConfigs =
|
|
675
|
+
!typeOrmDisabled && Array.isArray(typeorm)
|
|
676
|
+
? typeorm.filter(Boolean)
|
|
677
|
+
: !typeOrmDisabled && typeorm
|
|
678
|
+
? [typeorm]
|
|
679
|
+
: [];
|
|
680
|
+
const hasExplicitTypeOrmConfig = typeOrmConfigs.length > 0;
|
|
681
|
+
const typeOrmEntities = new Set<EntityTarget<any>>();
|
|
430
682
|
const entityLookup = buildEntityLookup();
|
|
431
|
-
|
|
432
|
-
registerAutoDetectedTypeOrmEntities(
|
|
683
|
+
const hasTypeOrmEntityDependencies = registerAutoDetectedTypeOrmEntities(
|
|
433
684
|
typeOrmEntities,
|
|
434
685
|
providersList,
|
|
435
686
|
controllers,
|
|
436
687
|
entityLookup,
|
|
437
688
|
);
|
|
438
|
-
|
|
439
|
-
const
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
689
|
+
const controllerList = Array.isArray(controllers) ? controllers : [];
|
|
690
|
+
const hasDataSourceDependencies = [...providersList, ...controllerList].some(
|
|
691
|
+
dependsOnDataSource,
|
|
692
|
+
);
|
|
693
|
+
const shouldUseTypeOrm =
|
|
694
|
+
!typeOrmDisabled &&
|
|
695
|
+
(hasExplicitTypeOrmConfig ||
|
|
696
|
+
hasTypeOrmEntityDependencies ||
|
|
697
|
+
hasDataSourceDependencies);
|
|
445
698
|
|
|
446
699
|
typeOrmConfigs.forEach((config) => {
|
|
447
700
|
config.entities?.forEach((entity) => typeOrmEntities.add(entity));
|
|
@@ -459,43 +712,61 @@ export const buildTestingMocks = async ({
|
|
|
459
712
|
}
|
|
460
713
|
});
|
|
461
714
|
|
|
715
|
+
if (shouldUseTypeOrm && typeOrmEntities.size === 0) {
|
|
716
|
+
entityLookup.forEach((entity) => typeOrmEntities.add(entity));
|
|
717
|
+
}
|
|
718
|
+
|
|
719
|
+
if (shouldUseTypeOrm) {
|
|
720
|
+
[SettingOrmEntity, MetadataOrmEntity, LanguageOrmEntity].forEach((entity) =>
|
|
721
|
+
typeOrmEntities.add(entity),
|
|
722
|
+
);
|
|
723
|
+
await registerRelatedTypeOrmEntities(typeOrmEntities, entityLookup);
|
|
724
|
+
}
|
|
725
|
+
|
|
462
726
|
const runTypeOrmFixtures = async (dataSource: DataSource) => {
|
|
463
727
|
for (const fixture of typeOrmFixtures) {
|
|
464
728
|
await fixture(dataSource);
|
|
465
729
|
}
|
|
466
730
|
};
|
|
467
731
|
const entitiesArray = Array.from(typeOrmEntities);
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
|
|
732
|
+
let typeOrmRootModule: DynamicModule | undefined;
|
|
733
|
+
let typeOrmProviders: Provider[] = [];
|
|
734
|
+
let typeOrmDataSource: DataSource | undefined;
|
|
735
|
+
|
|
736
|
+
if (shouldUseTypeOrm) {
|
|
737
|
+
const baseOptions: DataSourceOptions = {
|
|
738
|
+
type: 'better-sqlite3',
|
|
739
|
+
database: ':memory:',
|
|
740
|
+
synchronize: true,
|
|
741
|
+
dropSchema: true,
|
|
742
|
+
logging: false,
|
|
743
|
+
entities: entitiesArray,
|
|
744
|
+
...(typeOrmOptions ?? {}),
|
|
745
|
+
} as DataSourceOptions;
|
|
746
|
+
const dataSource = new DataSource(baseOptions);
|
|
747
|
+
await dataSource.initialize();
|
|
748
|
+
typeOrmDataSource = dataSource;
|
|
749
|
+
registerAllRepositorySubscribers(dataSource, entitiesArray as any[]);
|
|
750
|
+
await runTypeOrmFixtures(dataSource);
|
|
751
|
+
registerTypeOrmDataSource(dataSource);
|
|
752
|
+
|
|
753
|
+
typeOrmRootModule = TypeOrmModule.forRootAsync({
|
|
754
|
+
useFactory: async () => baseOptions as DataSourceOptions,
|
|
755
|
+
dataSourceFactory: async () => dataSource,
|
|
756
|
+
});
|
|
757
|
+
typeOrmProviders = entitiesArray.map((entity) => ({
|
|
758
|
+
provide: getRepositoryToken(entity as any),
|
|
759
|
+
useValue: dataSource.getRepository(entity),
|
|
760
|
+
}));
|
|
761
|
+
}
|
|
762
|
+
|
|
491
763
|
const testingModuleBuilder = Test.createTestingModule({
|
|
492
764
|
imports: [
|
|
493
765
|
LoggerModule,
|
|
494
766
|
EventEmitterModule.forRoot({ global: true }),
|
|
495
767
|
CacheModule.register({ isGlobal: true }),
|
|
496
|
-
typeOrmRootModule,
|
|
497
768
|
I18nTestingModule,
|
|
498
|
-
SettingModule,
|
|
769
|
+
...(typeOrmRootModule ? [typeOrmRootModule, SettingModule] : []),
|
|
499
770
|
...imports,
|
|
500
771
|
],
|
|
501
772
|
providers: [
|
|
@@ -507,6 +778,10 @@ export const buildTestingMocks = async ({
|
|
|
507
778
|
...rest,
|
|
508
779
|
});
|
|
509
780
|
const module = await testingModuleBuilder.compile();
|
|
781
|
+
if (typeOrmDataSource) {
|
|
782
|
+
pruneGeneratedRepositorySubscribers(typeOrmDataSource);
|
|
783
|
+
}
|
|
784
|
+
registerTestingModule(module);
|
|
510
785
|
|
|
511
786
|
return {
|
|
512
787
|
module,
|
|
@@ -18,6 +18,7 @@ import {
|
|
|
18
18
|
WebSocketGateway,
|
|
19
19
|
WebSocketServer,
|
|
20
20
|
} from '@nestjs/websockets';
|
|
21
|
+
import { isUUID } from 'class-validator';
|
|
21
22
|
import Cookie from 'cookie';
|
|
22
23
|
import signature from 'cookie-signature';
|
|
23
24
|
import { Request } from 'express';
|
|
@@ -25,7 +26,6 @@ import { Session as ExpressSession, SessionData } from 'express-session';
|
|
|
25
26
|
import { ExtendedError, Server, Socket } from 'socket.io';
|
|
26
27
|
import { DataSource } from 'typeorm';
|
|
27
28
|
import { sync as uid } from 'uid-safe';
|
|
28
|
-
import { validate as isUuid } from 'uuid';
|
|
29
29
|
|
|
30
30
|
import { SourceOrmEntity } from '@/channel/entities/source.entity';
|
|
31
31
|
import { config } from '@/config';
|
|
@@ -179,7 +179,7 @@ export class WebsocketGateway
|
|
|
179
179
|
}
|
|
180
180
|
|
|
181
181
|
private normalizeSourceId(value: string | null): string | null {
|
|
182
|
-
if (!value || !
|
|
182
|
+
if (!value || !isUUID(value)) {
|
|
183
183
|
return null;
|
|
184
184
|
}
|
|
185
185
|
|
|
@@ -9,7 +9,7 @@ import { WorkflowRunFull } from '@hexabot-ai/types';
|
|
|
9
9
|
import { forwardRef, Inject, Injectable, Scope } from '@nestjs/common';
|
|
10
10
|
import { EventEmitter2 } from '@nestjs/event-emitter';
|
|
11
11
|
|
|
12
|
-
import { ActionService } from '@/actions';
|
|
12
|
+
import { ActionService } from '@/actions/actions.service';
|
|
13
13
|
import { MessageService } from '@/chat/services/message.service';
|
|
14
14
|
import { SubscriberService } from '@/chat/services/subscriber.service';
|
|
15
15
|
import { ContentTypeService } from '@/cms/services/content-type.service';
|
|
@@ -17,7 +17,7 @@ import { ContentService } from '@/cms/services/content.service';
|
|
|
17
17
|
import { I18nService } from '@/i18n/services/i18n.service';
|
|
18
18
|
import { LoggerService } from '@/logger/logger.service';
|
|
19
19
|
import { SettingService } from '@/setting/services/setting.service';
|
|
20
|
-
import { CredentialService } from '@/user';
|
|
20
|
+
import { CredentialService } from '@/user/services/credential.service';
|
|
21
21
|
import { cloneObject } from '@/utils/helpers/clone';
|
|
22
22
|
import { WorkflowContextState, WorkflowType } from '@/workflow/types';
|
|
23
23
|
|
|
@@ -27,8 +27,8 @@ import { DeleteResult } from 'typeorm/driver/mongodb/typings';
|
|
|
27
27
|
|
|
28
28
|
import { ActionService } from '@/actions/actions.service';
|
|
29
29
|
import { I18nService } from '@/i18n/services/i18n.service';
|
|
30
|
-
import { UserService } from '@/user';
|
|
31
|
-
import { UuidParam } from '@/utils';
|
|
30
|
+
import { UserService } from '@/user/services/user.service';
|
|
31
|
+
import { UuidParam } from '@/utils/decorators/uuid-param.decorator';
|
|
32
32
|
import { BaseOrmController } from '@/utils/generics/base-orm.controller';
|
|
33
33
|
import { PopulatePipe } from '@/utils/pipes/populate.pipe';
|
|
34
34
|
import { TypeOrmSearchFilterPipe } from '@/utils/pipes/typeorm-search-filter.pipe';
|
|
@@ -24,8 +24,8 @@ import {
|
|
|
24
24
|
OnBeforeUpdate,
|
|
25
25
|
} from '@/database/decorators/orm-event-hooks.decorator';
|
|
26
26
|
import { BaseOrmEntity } from '@/database/entities/base.entity';
|
|
27
|
-
import { CredentialOrmEntity } from '@/user';
|
|
28
|
-
import { AsRelation } from '@/utils';
|
|
27
|
+
import { CredentialOrmEntity } from '@/user/entities/credential.entity';
|
|
28
|
+
import { AsRelation } from '@/utils/decorators/relation-ref.decorator';
|
|
29
29
|
|
|
30
30
|
import { McpServerDto } from '../dto/mcp-server.dto';
|
|
31
31
|
import { McpServerTransport } from '../types';
|
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
7
|
import { createHash } from 'crypto';
|
|
8
|
+
import { createRequire } from 'node:module';
|
|
8
9
|
|
|
9
10
|
import {
|
|
10
11
|
workflowVersionSchema,
|
|
@@ -32,7 +33,9 @@ import { AsRelation } from '@/utils';
|
|
|
32
33
|
import { WorkflowVersionDto } from '../dto/workflow-version.dto';
|
|
33
34
|
import { WorkflowVersionAction } from '../types';
|
|
34
35
|
|
|
35
|
-
import { WorkflowOrmEntity } from './workflow.entity';
|
|
36
|
+
import type { WorkflowOrmEntity } from './workflow.entity';
|
|
37
|
+
|
|
38
|
+
const requireEntity = createRequire(__filename);
|
|
36
39
|
|
|
37
40
|
@Entity({ name: 'workflow_versions' })
|
|
38
41
|
@Index(['workflow', 'version'], { unique: true })
|
|
@@ -42,7 +45,7 @@ export class WorkflowVersionOrmEntity extends BaseOrmEntity<WorkflowVersionDto>
|
|
|
42
45
|
fullCls = workflowVersionFullSchema;
|
|
43
46
|
|
|
44
47
|
/** Workflow that owns this version snapshot. */
|
|
45
|
-
@ManyToOne(() => WorkflowOrmEntity, {
|
|
48
|
+
@ManyToOne(() => requireEntity('./workflow.entity').WorkflowOrmEntity, {
|
|
46
49
|
nullable: false,
|
|
47
50
|
onDelete: 'CASCADE',
|
|
48
51
|
})
|
|
@@ -130,7 +133,9 @@ export class WorkflowVersionOrmEntity extends BaseOrmEntity<WorkflowVersionDto>
|
|
|
130
133
|
return;
|
|
131
134
|
}
|
|
132
135
|
|
|
133
|
-
const
|
|
136
|
+
const WorkflowEntity = requireEntity('./workflow.entity').WorkflowOrmEntity;
|
|
137
|
+
const workflowRepository =
|
|
138
|
+
event.manager.getRepository<WorkflowOrmEntity>(WorkflowEntity);
|
|
134
139
|
const workflow = await workflowRepository.findOne({
|
|
135
140
|
where: { id: workflowId },
|
|
136
141
|
});
|
|
@@ -181,7 +181,8 @@ export class WorkflowOrmEntity extends BaseOrmEntity<WorkflowDto> {
|
|
|
181
181
|
});
|
|
182
182
|
await event.manager.save(WorkflowVersionOrmEntity, version);
|
|
183
183
|
} catch (error: any) {
|
|
184
|
-
|
|
184
|
+
const code = error?.code ?? error?.driverError?.code;
|
|
185
|
+
if (typeof code !== 'string' || !code.startsWith('SQLITE_CONSTRAINT')) {
|
|
185
186
|
throw error;
|
|
186
187
|
}
|
|
187
188
|
}
|
|
@@ -13,7 +13,7 @@ import { RemoveEvent } from 'typeorm';
|
|
|
13
13
|
import { AppInstance } from '@/app.instance';
|
|
14
14
|
import { config } from '@/config';
|
|
15
15
|
import { LoggerService } from '@/logger/logger.service';
|
|
16
|
-
import { UserService } from '@/user';
|
|
16
|
+
import { UserService } from '@/user/services/user.service';
|
|
17
17
|
import {
|
|
18
18
|
InsertEntityEvent,
|
|
19
19
|
UpdateEntityEvent,
|