@carlonicora/nestjs-neo4jsonapi 1.115.1 → 1.117.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/dist/bootstrap/app.module.factory.d.ts.map +1 -1
- package/dist/bootstrap/app.module.factory.js +1 -0
- package/dist/bootstrap/app.module.factory.js.map +1 -1
- package/dist/bootstrap/bootstrap.options.d.ts +17 -0
- package/dist/bootstrap/bootstrap.options.d.ts.map +1 -1
- package/dist/common/guards/jwt.auth.admin.guard.d.ts +3 -2
- package/dist/common/guards/jwt.auth.admin.guard.d.ts.map +1 -1
- package/dist/common/guards/jwt.auth.admin.guard.js +19 -4
- package/dist/common/guards/jwt.auth.admin.guard.js.map +1 -1
- package/dist/common/guards/jwt.auth.guard.d.ts +3 -2
- package/dist/common/guards/jwt.auth.guard.d.ts.map +1 -1
- package/dist/common/guards/jwt.auth.guard.js +7 -2
- package/dist/common/guards/jwt.auth.guard.js.map +1 -1
- package/dist/common/interfaces/entity.schema.interface.d.ts +2 -0
- package/dist/common/interfaces/entity.schema.interface.d.ts.map +1 -1
- package/dist/common/tokens.d.ts +68 -0
- package/dist/common/tokens.d.ts.map +1 -1
- package/dist/common/tokens.js +37 -2
- package/dist/common/tokens.js.map +1 -1
- package/dist/config/base.config.d.ts.map +1 -1
- package/dist/config/base.config.js +9 -0
- package/dist/config/base.config.js.map +1 -1
- package/dist/config/enums/queue.id.d.ts +2 -1
- package/dist/config/enums/queue.id.d.ts.map +1 -1
- package/dist/config/enums/queue.id.js +1 -0
- package/dist/config/enums/queue.id.js.map +1 -1
- package/dist/config/interfaces/base.config.interface.d.ts +2 -0
- package/dist/config/interfaces/base.config.interface.d.ts.map +1 -1
- package/dist/config/interfaces/config.ai.interface.d.ts +8 -0
- package/dist/config/interfaces/config.ai.interface.d.ts.map +1 -1
- package/dist/config/interfaces/config.auth.interface.d.ts +7 -0
- package/dist/config/interfaces/config.auth.interface.d.ts.map +1 -1
- package/dist/config/interfaces/config.credits.interface.d.ts +24 -0
- package/dist/config/interfaces/config.credits.interface.d.ts.map +1 -0
- package/dist/{foundations/auth/entities/auth.entity.js → config/interfaces/config.credits.interface.js} +1 -1
- package/dist/config/interfaces/config.credits.interface.js.map +1 -0
- package/dist/config/interfaces/config.email.interface.d.ts +6 -0
- package/dist/config/interfaces/config.email.interface.d.ts.map +1 -1
- package/dist/config/interfaces/index.d.ts +1 -0
- package/dist/config/interfaces/index.d.ts.map +1 -1
- package/dist/config/interfaces/index.js +1 -0
- package/dist/config/interfaces/index.js.map +1 -1
- package/dist/core/email/services/email.service.d.ts +1 -0
- package/dist/core/email/services/email.service.d.ts.map +1 -1
- package/dist/core/email/services/email.service.js +10 -7
- package/dist/core/email/services/email.service.js.map +1 -1
- package/dist/core/llm/services/embedder.service.d.ts +36 -2
- package/dist/core/llm/services/embedder.service.d.ts.map +1 -1
- package/dist/core/llm/services/embedder.service.js +87 -7
- package/dist/core/llm/services/embedder.service.js.map +1 -1
- package/dist/core/llm/services/llm.service.d.ts +9 -1
- package/dist/core/llm/services/llm.service.d.ts.map +1 -1
- package/dist/core/llm/services/llm.service.js +13 -3
- package/dist/core/llm/services/llm.service.js.map +1 -1
- package/dist/core/neo4j/abstracts/abstract.repository.d.ts.map +1 -1
- package/dist/core/neo4j/abstracts/abstract.repository.js +33 -2
- package/dist/core/neo4j/abstracts/abstract.repository.js.map +1 -1
- package/dist/foundations/auth/auth.module.d.ts.map +1 -1
- package/dist/foundations/auth/auth.module.js +9 -10
- package/dist/foundations/auth/auth.module.js.map +1 -1
- package/dist/foundations/auth/controllers/auth.controller.d.ts.map +1 -1
- package/dist/foundations/auth/controllers/auth.controller.js +5 -0
- package/dist/foundations/auth/controllers/auth.controller.js.map +1 -1
- package/dist/foundations/auth/controllers/auth.discord.controller.d.ts.map +1 -1
- package/dist/foundations/auth/controllers/auth.discord.controller.js +6 -3
- package/dist/foundations/auth/controllers/auth.discord.controller.js.map +1 -1
- package/dist/foundations/auth/controllers/auth.google.controller.d.ts.map +1 -1
- package/dist/foundations/auth/controllers/auth.google.controller.js +7 -3
- package/dist/foundations/auth/controllers/auth.google.controller.js.map +1 -1
- package/dist/foundations/auth/entities/auth.code.d.ts +34 -0
- package/dist/foundations/auth/entities/auth.code.d.ts.map +1 -0
- package/dist/foundations/auth/entities/auth.code.js +53 -0
- package/dist/foundations/auth/entities/auth.code.js.map +1 -0
- package/dist/foundations/auth/entities/auth.d.ts +41 -0
- package/dist/foundations/auth/entities/auth.d.ts.map +1 -0
- package/dist/foundations/auth/entities/auth.js +68 -0
- package/dist/foundations/auth/entities/auth.js.map +1 -0
- package/dist/foundations/auth/entities/pending-auth.d.ts +39 -0
- package/dist/foundations/auth/entities/pending-auth.d.ts.map +1 -0
- package/dist/foundations/auth/entities/pending-auth.js +41 -0
- package/dist/foundations/auth/entities/pending-auth.js.map +1 -0
- package/dist/foundations/auth/index.d.ts +13 -0
- package/dist/foundations/auth/index.d.ts.map +1 -1
- package/dist/foundations/auth/index.js +31 -1
- package/dist/foundations/auth/index.js.map +1 -1
- package/dist/foundations/auth/repositories/auth.repository.d.ts +49 -9
- package/dist/foundations/auth/repositories/auth.repository.d.ts.map +1 -1
- package/dist/foundations/auth/repositories/auth.repository.js +115 -63
- package/dist/foundations/auth/repositories/auth.repository.js.map +1 -1
- package/dist/foundations/auth/services/auth.discord.service.d.ts +1 -1
- package/dist/foundations/auth/services/auth.discord.service.d.ts.map +1 -1
- package/dist/foundations/auth/services/auth.discord.service.js +5 -2
- package/dist/foundations/auth/services/auth.discord.service.js.map +1 -1
- package/dist/foundations/auth/services/auth.google.service.d.ts +1 -1
- package/dist/foundations/auth/services/auth.google.service.d.ts.map +1 -1
- package/dist/foundations/auth/services/auth.google.service.js +6 -2
- package/dist/foundations/auth/services/auth.google.service.js.map +1 -1
- package/dist/foundations/auth/services/auth.service.d.ts +42 -7
- package/dist/foundations/auth/services/auth.service.d.ts.map +1 -1
- package/dist/foundations/auth/services/auth.service.js +140 -77
- package/dist/foundations/auth/services/auth.service.js.map +1 -1
- package/dist/foundations/company/dtos/company.post.dto.d.ts +3 -3
- package/dist/foundations/company/dtos/company.post.dto.d.ts.map +1 -1
- package/dist/foundations/company/dtos/company.post.dto.js +3 -3
- package/dist/foundations/company/dtos/company.post.dto.js.map +1 -1
- package/dist/foundations/company/dtos/company.put.dto.d.ts +3 -3
- package/dist/foundations/company/dtos/company.put.dto.d.ts.map +1 -1
- package/dist/foundations/company/dtos/company.put.dto.js +3 -3
- package/dist/foundations/company/dtos/company.put.dto.js.map +1 -1
- package/dist/foundations/company/entities/company.d.ts +4 -4
- package/dist/foundations/company/entities/company.d.ts.map +1 -1
- package/dist/foundations/company/entities/company.js +18 -4
- package/dist/foundations/company/entities/company.js.map +1 -1
- package/dist/foundations/company/index.d.ts +5 -0
- package/dist/foundations/company/index.d.ts.map +1 -1
- package/dist/foundations/company/index.js +16 -1
- package/dist/foundations/company/index.js.map +1 -1
- package/dist/foundations/company/processors/company.processor.js +1 -1
- package/dist/foundations/company/processors/company.processor.js.map +1 -1
- package/dist/foundations/company/repositories/company.repository.d.ts +96 -33
- package/dist/foundations/company/repositories/company.repository.d.ts.map +1 -1
- package/dist/foundations/company/repositories/company.repository.js +125 -95
- package/dist/foundations/company/repositories/company.repository.js.map +1 -1
- package/dist/foundations/company/services/company.service.d.ts +52 -13
- package/dist/foundations/company/services/company.service.d.ts.map +1 -1
- package/dist/foundations/company/services/company.service.js +62 -39
- package/dist/foundations/company/services/company.service.js.map +1 -1
- package/dist/foundations/content/content.module.d.ts +20 -8
- package/dist/foundations/content/content.module.d.ts.map +1 -1
- package/dist/foundations/content/content.module.js +40 -24
- package/dist/foundations/content/content.module.js.map +1 -1
- package/dist/foundations/content/controllers/content.controller.d.ts +1 -1
- package/dist/foundations/content/controllers/content.controller.d.ts.map +1 -1
- package/dist/foundations/content/controllers/content.controller.js +2 -2
- package/dist/foundations/content/controllers/content.controller.js.map +1 -1
- package/dist/foundations/content/entities/content.d.ts +74 -0
- package/dist/foundations/content/entities/content.d.ts.map +1 -0
- package/dist/foundations/content/entities/content.js +141 -0
- package/dist/foundations/content/entities/content.js.map +1 -0
- package/dist/foundations/content/index.d.ts +2 -4
- package/dist/foundations/content/index.d.ts.map +1 -1
- package/dist/foundations/content/index.js +6 -5
- package/dist/foundations/content/index.js.map +1 -1
- package/dist/foundations/content/interfaces/content.extension.interface.d.ts +126 -0
- package/dist/foundations/content/interfaces/content.extension.interface.d.ts.map +1 -1
- package/dist/foundations/content/interfaces/content.extension.interface.js +7 -1
- package/dist/foundations/content/interfaces/content.extension.interface.js.map +1 -1
- package/dist/foundations/content/repositories/content.repository.d.ts +14 -7
- package/dist/foundations/content/repositories/content.repository.d.ts.map +1 -1
- package/dist/foundations/content/repositories/content.repository.js +18 -16
- package/dist/foundations/content/repositories/content.repository.js.map +1 -1
- package/dist/foundations/content/services/content.cypher.service.d.ts +19 -0
- package/dist/foundations/content/services/content.cypher.service.d.ts.map +1 -1
- package/dist/foundations/content/services/content.cypher.service.js +65 -4
- package/dist/foundations/content/services/content.cypher.service.js.map +1 -1
- package/dist/foundations/content/services/content.service.js +4 -4
- package/dist/foundations/content/services/content.service.js.map +1 -1
- package/dist/foundations/discord-user/services/discord-user.service.js +2 -2
- package/dist/foundations/discord-user/services/discord-user.service.js.map +1 -1
- package/dist/foundations/feature/entities/feature.d.ts +32 -0
- package/dist/foundations/feature/entities/feature.d.ts.map +1 -0
- package/dist/foundations/feature/entities/feature.js +64 -0
- package/dist/foundations/feature/entities/feature.js.map +1 -0
- package/dist/foundations/feature/entities/feature.model.d.ts +1 -3
- package/dist/foundations/feature/entities/feature.model.d.ts.map +1 -1
- package/dist/foundations/feature/entities/feature.model.js +3 -11
- package/dist/foundations/feature/entities/feature.model.js.map +1 -1
- package/dist/foundations/feature/feature.module.d.ts.map +1 -1
- package/dist/foundations/feature/feature.module.js +4 -5
- package/dist/foundations/feature/feature.module.js.map +1 -1
- package/dist/foundations/feature/index.d.ts +12 -0
- package/dist/foundations/feature/index.d.ts.map +1 -1
- package/dist/foundations/feature/index.js +22 -1
- package/dist/foundations/feature/index.js.map +1 -1
- package/dist/foundations/feature/repositories/feature.repository.d.ts +37 -13
- package/dist/foundations/feature/repositories/feature.repository.d.ts.map +1 -1
- package/dist/foundations/feature/repositories/feature.repository.js +41 -35
- package/dist/foundations/feature/repositories/feature.repository.js.map +1 -1
- package/dist/foundations/feature/services/feature.service.d.ts +31 -4
- package/dist/foundations/feature/services/feature.service.d.ts.map +1 -1
- package/dist/foundations/feature/services/feature.service.js +20 -12
- package/dist/foundations/feature/services/feature.service.js.map +1 -1
- package/dist/foundations/foundations.modules.d.ts +6 -0
- package/dist/foundations/foundations.modules.d.ts.map +1 -1
- package/dist/foundations/foundations.modules.js +14 -3
- package/dist/foundations/foundations.modules.js.map +1 -1
- package/dist/foundations/google-user/services/google-user.service.js +2 -2
- package/dist/foundations/google-user/services/google-user.service.js.map +1 -1
- package/dist/foundations/index.d.ts +3 -0
- package/dist/foundations/index.d.ts.map +1 -1
- package/dist/foundations/index.js +3 -0
- package/dist/foundations/index.js.map +1 -1
- package/dist/foundations/membership/entities/membership.d.ts.map +1 -1
- package/dist/foundations/membership/entities/membership.js +4 -0
- package/dist/foundations/membership/entities/membership.js.map +1 -1
- package/dist/foundations/notification/controllers/notification.controller.js +2 -2
- package/dist/foundations/notification/controllers/notification.controller.js.map +1 -1
- package/dist/foundations/notification/entities/notification.d.ts +75 -0
- package/dist/foundations/notification/entities/notification.d.ts.map +1 -0
- package/dist/foundations/notification/entities/notification.js +73 -0
- package/dist/foundations/notification/entities/notification.js.map +1 -0
- package/dist/foundations/notification/index.d.ts +6 -2
- package/dist/foundations/notification/index.d.ts.map +1 -1
- package/dist/foundations/notification/index.js +17 -3
- package/dist/foundations/notification/index.js.map +1 -1
- package/dist/foundations/notification/notification.module.d.ts.map +1 -1
- package/dist/foundations/notification/notification.module.js +3 -4
- package/dist/foundations/notification/notification.module.js.map +1 -1
- package/dist/foundations/notification/repositories/notification.repository.d.ts +125 -8
- package/dist/foundations/notification/repositories/notification.repository.d.ts.map +1 -1
- package/dist/foundations/notification/repositories/notification.repository.js +219 -20
- package/dist/foundations/notification/repositories/notification.repository.js.map +1 -1
- package/dist/foundations/notification/services/notification.service.d.ts +31 -5
- package/dist/foundations/notification/services/notification.service.d.ts.map +1 -1
- package/dist/foundations/notification/services/notification.service.js +26 -9
- package/dist/foundations/notification/services/notification.service.js.map +1 -1
- package/dist/foundations/rbac/dump.d.ts +48 -4
- package/dist/foundations/rbac/dump.d.ts.map +1 -1
- package/dist/foundations/rbac/dump.js +28 -4
- package/dist/foundations/rbac/dump.js.map +1 -1
- package/dist/foundations/rbac/serializer/matrix-to-ts.d.ts +14 -0
- package/dist/foundations/rbac/serializer/matrix-to-ts.d.ts.map +1 -1
- package/dist/foundations/rbac/serializer/matrix-to-ts.js +13 -3
- package/dist/foundations/rbac/serializer/matrix-to-ts.js.map +1 -1
- package/dist/foundations/referral/services/referral.service.js +4 -4
- package/dist/foundations/referral/services/referral.service.js.map +1 -1
- package/dist/foundations/relevancy/repositories/relevancy.repository.d.ts.map +1 -1
- package/dist/foundations/relevancy/repositories/relevancy.repository.js +13 -1
- package/dist/foundations/relevancy/repositories/relevancy.repository.js.map +1 -1
- package/dist/foundations/role/entities/role.d.ts +1 -1
- package/dist/foundations/role/entities/role.d.ts.map +1 -1
- package/dist/foundations/stripe/index.d.ts +3 -0
- package/dist/foundations/stripe/index.d.ts.map +1 -1
- package/dist/foundations/stripe/index.js +6 -0
- package/dist/foundations/stripe/index.js.map +1 -1
- package/dist/foundations/stripe-price/entities/stripe-price.entity.d.ts +1 -1
- package/dist/foundations/stripe-price/entities/stripe-price.entity.d.ts.map +1 -1
- package/dist/foundations/stripe-subscription/services/token-allocation.service.d.ts +1 -1
- package/dist/foundations/stripe-subscription/services/token-allocation.service.js +10 -10
- package/dist/foundations/stripe-subscription/services/token-allocation.service.js.map +1 -1
- package/dist/foundations/stripe-trial/services/trial.service.js +2 -2
- package/dist/foundations/stripe-trial/services/trial.service.js.map +1 -1
- package/dist/foundations/stripe-webhook/processors/stripe-webhook.processor.js +2 -2
- package/dist/foundations/stripe-webhook/processors/stripe-webhook.processor.js.map +1 -1
- package/dist/foundations/tokenusage/entities/tokenusage.d.ts +50 -0
- package/dist/foundations/tokenusage/entities/tokenusage.d.ts.map +1 -0
- package/dist/foundations/tokenusage/entities/tokenusage.js +68 -0
- package/dist/foundations/tokenusage/entities/tokenusage.js.map +1 -0
- package/dist/foundations/tokenusage/enums/tokenusage.type.d.ts +2 -1
- package/dist/foundations/tokenusage/enums/tokenusage.type.d.ts.map +1 -1
- package/dist/foundations/tokenusage/enums/tokenusage.type.js +1 -0
- package/dist/foundations/tokenusage/enums/tokenusage.type.js.map +1 -1
- package/dist/foundations/tokenusage/events/tokenusage.events.d.ts +2 -0
- package/dist/foundations/tokenusage/events/tokenusage.events.d.ts.map +1 -1
- package/dist/foundations/tokenusage/index.d.ts +3 -3
- package/dist/foundations/tokenusage/index.d.ts.map +1 -1
- package/dist/foundations/tokenusage/index.js +5 -3
- package/dist/foundations/tokenusage/index.js.map +1 -1
- package/dist/foundations/tokenusage/repositories/tokenusage.repository.d.ts +90 -5
- package/dist/foundations/tokenusage/repositories/tokenusage.repository.d.ts.map +1 -1
- package/dist/foundations/tokenusage/repositories/tokenusage.repository.js +165 -14
- package/dist/foundations/tokenusage/repositories/tokenusage.repository.js.map +1 -1
- package/dist/foundations/tokenusage/services/tokenusage.service.d.ts +73 -10
- package/dist/foundations/tokenusage/services/tokenusage.service.d.ts.map +1 -1
- package/dist/foundations/tokenusage/services/tokenusage.service.js +88 -8
- package/dist/foundations/tokenusage/services/tokenusage.service.js.map +1 -1
- package/dist/foundations/tokenusage/tokenusage.module.js +3 -3
- package/dist/foundations/tokenusage/tokenusage.module.js.map +1 -1
- package/dist/foundations/user/controllers/user.controller.js +4 -4
- package/dist/foundations/user/controllers/user.controller.js.map +1 -1
- package/dist/foundations/user/dtos/user.put.dto.d.ts +1 -1
- package/dist/foundations/user/dtos/user.put.dto.d.ts.map +1 -1
- package/dist/foundations/user/dtos/user.put.dto.js +1 -1
- package/dist/foundations/user/dtos/user.put.dto.js.map +1 -1
- package/dist/foundations/user/entities/user.d.ts +4 -0
- package/dist/foundations/user/entities/user.d.ts.map +1 -1
- package/dist/foundations/user/entities/user.js +18 -4
- package/dist/foundations/user/entities/user.js.map +1 -1
- package/dist/foundations/user/index.d.ts +6 -1
- package/dist/foundations/user/index.d.ts.map +1 -1
- package/dist/foundations/user/index.js +13 -1
- package/dist/foundations/user/index.js.map +1 -1
- package/dist/foundations/user/repositories/user.repository.d.ts +56 -11
- package/dist/foundations/user/repositories/user.repository.d.ts.map +1 -1
- package/dist/foundations/user/repositories/user.repository.js +55 -35
- package/dist/foundations/user/repositories/user.repository.js.map +1 -1
- package/dist/foundations/user/services/user.service.d.ts +48 -9
- package/dist/foundations/user/services/user.service.d.ts.map +1 -1
- package/dist/foundations/user/services/user.service.js +50 -32
- package/dist/foundations/user/services/user.service.js.map +1 -1
- package/dist/foundations/user-activity/entities/user-activity.d.ts +36 -0
- package/dist/foundations/user-activity/entities/user-activity.d.ts.map +1 -0
- package/dist/foundations/user-activity/entities/user-activity.js +86 -0
- package/dist/foundations/user-activity/entities/user-activity.js.map +1 -0
- package/dist/foundations/user-activity/entities/user-activity.meta.d.ts +3 -0
- package/dist/foundations/user-activity/entities/user-activity.meta.d.ts.map +1 -0
- package/dist/foundations/user-activity/entities/user-activity.meta.js +10 -0
- package/dist/foundations/user-activity/entities/user-activity.meta.js.map +1 -0
- package/dist/foundations/user-activity/index.d.ts +10 -0
- package/dist/foundations/user-activity/index.d.ts.map +1 -0
- package/dist/foundations/user-activity/index.js +22 -0
- package/dist/foundations/user-activity/index.js.map +1 -0
- package/dist/foundations/user-activity/interceptors/user-activity.interceptor.d.ts +29 -0
- package/dist/foundations/user-activity/interceptors/user-activity.interceptor.d.ts.map +1 -0
- package/dist/foundations/user-activity/interceptors/user-activity.interceptor.js +98 -0
- package/dist/foundations/user-activity/interceptors/user-activity.interceptor.js.map +1 -0
- package/dist/foundations/user-activity/interfaces/user-activity.config.interface.d.ts +67 -0
- package/dist/foundations/user-activity/interfaces/user-activity.config.interface.d.ts.map +1 -0
- package/dist/foundations/user-activity/interfaces/user-activity.config.interface.js +26 -0
- package/dist/foundations/user-activity/interfaces/user-activity.config.interface.js.map +1 -0
- package/dist/foundations/user-activity/interfaces/user-activity.record.input.d.ts +18 -0
- package/dist/foundations/user-activity/interfaces/user-activity.record.input.d.ts.map +1 -0
- package/dist/foundations/{auth/entities/pending-auth.entity.js → user-activity/interfaces/user-activity.record.input.js} +1 -1
- package/dist/foundations/user-activity/interfaces/user-activity.record.input.js.map +1 -0
- package/dist/foundations/user-activity/processors/user-activity.processor.d.ts +25 -0
- package/dist/foundations/user-activity/processors/user-activity.processor.d.ts.map +1 -0
- package/dist/foundations/user-activity/processors/user-activity.processor.js +74 -0
- package/dist/foundations/user-activity/processors/user-activity.processor.js.map +1 -0
- package/dist/foundations/user-activity/repositories/user-activity.repository.d.ts +47 -0
- package/dist/foundations/user-activity/repositories/user-activity.repository.d.ts.map +1 -0
- package/dist/foundations/user-activity/repositories/user-activity.repository.js +124 -0
- package/dist/foundations/user-activity/repositories/user-activity.repository.js.map +1 -0
- package/dist/foundations/user-activity/services/user-activity.service.d.ts +29 -0
- package/dist/foundations/user-activity/services/user-activity.service.d.ts.map +1 -0
- package/dist/foundations/user-activity/services/user-activity.service.js +61 -0
- package/dist/foundations/user-activity/services/user-activity.service.js.map +1 -0
- package/dist/foundations/user-activity/user-activity.module.d.ts +40 -0
- package/dist/foundations/user-activity/user-activity.module.d.ts.map +1 -0
- package/dist/foundations/user-activity/user-activity.module.js +99 -0
- package/dist/foundations/user-activity/user-activity.module.js.map +1 -0
- package/package.json +2 -1
- package/dist/foundations/auth/entities/auth.code.entity.d.ts +0 -7
- package/dist/foundations/auth/entities/auth.code.entity.d.ts.map +0 -1
- package/dist/foundations/auth/entities/auth.code.entity.js +0 -3
- package/dist/foundations/auth/entities/auth.code.entity.js.map +0 -1
- package/dist/foundations/auth/entities/auth.code.map.d.ts +0 -8
- package/dist/foundations/auth/entities/auth.code.map.d.ts.map +0 -1
- package/dist/foundations/auth/entities/auth.code.map.js +0 -13
- package/dist/foundations/auth/entities/auth.code.map.js.map +0 -1
- package/dist/foundations/auth/entities/auth.code.model.d.ts +0 -4
- package/dist/foundations/auth/entities/auth.code.model.d.ts.map +0 -1
- package/dist/foundations/auth/entities/auth.code.model.js +0 -13
- package/dist/foundations/auth/entities/auth.code.model.js.map +0 -1
- package/dist/foundations/auth/entities/auth.entity.d.ts +0 -18
- package/dist/foundations/auth/entities/auth.entity.d.ts.map +0 -1
- package/dist/foundations/auth/entities/auth.entity.js.map +0 -1
- package/dist/foundations/auth/entities/auth.map.d.ts +0 -8
- package/dist/foundations/auth/entities/auth.map.d.ts.map +0 -1
- package/dist/foundations/auth/entities/auth.map.js +0 -14
- package/dist/foundations/auth/entities/auth.map.js.map +0 -1
- package/dist/foundations/auth/entities/auth.model.d.ts +0 -4
- package/dist/foundations/auth/entities/auth.model.d.ts.map +0 -1
- package/dist/foundations/auth/entities/auth.model.js +0 -15
- package/dist/foundations/auth/entities/auth.model.js.map +0 -1
- package/dist/foundations/auth/entities/pending-auth.entity.d.ts +0 -16
- package/dist/foundations/auth/entities/pending-auth.entity.d.ts.map +0 -1
- package/dist/foundations/auth/entities/pending-auth.entity.js.map +0 -1
- package/dist/foundations/auth/entities/pending-auth.map.d.ts +0 -6
- package/dist/foundations/auth/entities/pending-auth.map.d.ts.map +0 -1
- package/dist/foundations/auth/entities/pending-auth.map.js +0 -20
- package/dist/foundations/auth/entities/pending-auth.map.js.map +0 -1
- package/dist/foundations/auth/entities/pending-auth.model.d.ts +0 -9
- package/dist/foundations/auth/entities/pending-auth.model.d.ts.map +0 -1
- package/dist/foundations/auth/entities/pending-auth.model.js +0 -19
- package/dist/foundations/auth/entities/pending-auth.model.js.map +0 -1
- package/dist/foundations/auth/serialisers/auth.serialiser.d.ts +0 -13
- package/dist/foundations/auth/serialisers/auth.serialiser.d.ts.map +0 -1
- package/dist/foundations/auth/serialisers/auth.serialiser.js +0 -52
- package/dist/foundations/auth/serialisers/auth.serialiser.js.map +0 -1
- package/dist/foundations/auth/serialisers/pending-auth.serialiser.d.ts +0 -18
- package/dist/foundations/auth/serialisers/pending-auth.serialiser.d.ts.map +0 -1
- package/dist/foundations/auth/serialisers/pending-auth.serialiser.js +0 -49
- package/dist/foundations/auth/serialisers/pending-auth.serialiser.js.map +0 -1
- package/dist/foundations/content/entities/content.entity.d.ts +0 -31
- package/dist/foundations/content/entities/content.entity.d.ts.map +0 -1
- package/dist/foundations/content/entities/content.entity.js +0 -3
- package/dist/foundations/content/entities/content.entity.js.map +0 -1
- package/dist/foundations/content/entities/content.map.d.ts +0 -8
- package/dist/foundations/content/entities/content.map.d.ts.map +0 -1
- package/dist/foundations/content/entities/content.map.js +0 -19
- package/dist/foundations/content/entities/content.map.js.map +0 -1
- package/dist/foundations/content/entities/content.model.d.ts +0 -4
- package/dist/foundations/content/entities/content.model.d.ts.map +0 -1
- package/dist/foundations/content/entities/content.model.js +0 -16
- package/dist/foundations/content/entities/content.model.js.map +0 -1
- package/dist/foundations/content/factories/content.model.factory.d.ts +0 -17
- package/dist/foundations/content/factories/content.model.factory.d.ts.map +0 -1
- package/dist/foundations/content/factories/content.model.factory.js +0 -65
- package/dist/foundations/content/factories/content.model.factory.js.map +0 -1
- package/dist/foundations/content/serialisers/content.serialiser.d.ts +0 -14
- package/dist/foundations/content/serialisers/content.serialiser.d.ts.map +0 -1
- package/dist/foundations/content/serialisers/content.serialiser.js +0 -78
- package/dist/foundations/content/serialisers/content.serialiser.js.map +0 -1
- package/dist/foundations/feature/entities/feature.entity.d.ts +0 -8
- package/dist/foundations/feature/entities/feature.entity.d.ts.map +0 -1
- package/dist/foundations/feature/entities/feature.entity.js +0 -3
- package/dist/foundations/feature/entities/feature.entity.js.map +0 -1
- package/dist/foundations/feature/entities/feature.map.d.ts +0 -8
- package/dist/foundations/feature/entities/feature.map.d.ts.map +0 -1
- package/dist/foundations/feature/entities/feature.map.js +0 -14
- package/dist/foundations/feature/entities/feature.map.js.map +0 -1
- package/dist/foundations/feature/serialisers/feature.serialiser.d.ts +0 -12
- package/dist/foundations/feature/serialisers/feature.serialiser.d.ts.map +0 -1
- package/dist/foundations/feature/serialisers/feature.serialiser.js +0 -45
- package/dist/foundations/feature/serialisers/feature.serialiser.js.map +0 -1
- package/dist/foundations/notification/entities/notification.entity.d.ts +0 -10
- package/dist/foundations/notification/entities/notification.entity.d.ts.map +0 -1
- package/dist/foundations/notification/entities/notification.entity.js +0 -3
- package/dist/foundations/notification/entities/notification.entity.js.map +0 -1
- package/dist/foundations/notification/entities/notification.map.d.ts +0 -8
- package/dist/foundations/notification/entities/notification.map.d.ts.map +0 -1
- package/dist/foundations/notification/entities/notification.map.js +0 -16
- package/dist/foundations/notification/entities/notification.map.js.map +0 -1
- package/dist/foundations/notification/entities/notification.model.d.ts +0 -4
- package/dist/foundations/notification/entities/notification.model.d.ts.map +0 -1
- package/dist/foundations/notification/entities/notification.model.js +0 -15
- package/dist/foundations/notification/entities/notification.model.js.map +0 -1
- package/dist/foundations/notification/interfaces/notification.service.interface.d.ts +0 -4
- package/dist/foundations/notification/interfaces/notification.service.interface.d.ts.map +0 -1
- package/dist/foundations/notification/interfaces/notification.service.interface.js +0 -3
- package/dist/foundations/notification/interfaces/notification.service.interface.js.map +0 -1
- package/dist/foundations/notification/serialisers/notifications.serialiser.d.ts +0 -12
- package/dist/foundations/notification/serialisers/notifications.serialiser.d.ts.map +0 -1
- package/dist/foundations/notification/serialisers/notifications.serialiser.js +0 -47
- package/dist/foundations/notification/serialisers/notifications.serialiser.js.map +0 -1
- package/dist/foundations/tokenusage/entities/tokenusage.entity.d.ts +0 -11
- package/dist/foundations/tokenusage/entities/tokenusage.entity.d.ts.map +0 -1
- package/dist/foundations/tokenusage/entities/tokenusage.entity.js +0 -3
- package/dist/foundations/tokenusage/entities/tokenusage.entity.js.map +0 -1
- package/dist/foundations/tokenusage/entities/tokenusage.map.d.ts +0 -8
- package/dist/foundations/tokenusage/entities/tokenusage.map.d.ts.map +0 -1
- package/dist/foundations/tokenusage/entities/tokenusage.map.js +0 -17
- package/dist/foundations/tokenusage/entities/tokenusage.map.js.map +0 -1
- package/dist/foundations/tokenusage/entities/tokenusage.model.d.ts +0 -4
- package/dist/foundations/tokenusage/entities/tokenusage.model.d.ts.map +0 -1
- package/dist/foundations/tokenusage/entities/tokenusage.model.js +0 -15
- package/dist/foundations/tokenusage/entities/tokenusage.model.js.map +0 -1
|
@@ -224,6 +224,14 @@ export interface ConfigAiInterface {
|
|
|
224
224
|
region?: string;
|
|
225
225
|
/** Base64-encoded GCP service account JSON for Google Vertex AI */
|
|
226
226
|
googleCredentialsBase64?: string;
|
|
227
|
+
/**
|
|
228
|
+
* € per 1M input tokens billed by the embedding provider, driven by
|
|
229
|
+
* EMBEDDER_INPUT_COST_PER_1M_TOKENS. Embedding providers return vectors
|
|
230
|
+
* only (no usage figures), so EmbedderService counts tokens locally and
|
|
231
|
+
* charges `tokens * rate / 1_000_000` as the cost override. 0 or unset →
|
|
232
|
+
* embeddings are free and no usage record is written.
|
|
233
|
+
*/
|
|
234
|
+
inputCostPer1MTokens?: number;
|
|
227
235
|
/**
|
|
228
236
|
* Distributed token-bucket rate limit for the embedder. When present,
|
|
229
237
|
* ModelService.getEmbedder() wraps the provider embedder in a
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.ai.interface.d.ts","sourceRoot":"","sources":["../../../src/config/interfaces/config.ai.interface.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"config.ai.interface.d.ts","sourceRoot":"","sources":["../../../src/config/interfaces/config.ai.interface.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,5 +2,12 @@ export type RegistrationMode = "open" | "closed" | "waitlist";
|
|
|
2
2
|
export interface ConfigAuthInterface {
|
|
3
3
|
allowRegistration: boolean;
|
|
4
4
|
registrationMode: RegistrationMode;
|
|
5
|
+
/**
|
|
6
|
+
* Locale used for transactional auth emails (activation, password reset,
|
|
7
|
+
* admin registration notification) and for the `<locale>/…` prefix of the
|
|
8
|
+
* links inside them. Defaults to "en" when not set, which is the value the
|
|
9
|
+
* flows were previously hardcoded to.
|
|
10
|
+
*/
|
|
11
|
+
emailLocale?: string;
|
|
5
12
|
}
|
|
6
13
|
//# sourceMappingURL=config.auth.interface.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.auth.interface.d.ts","sourceRoot":"","sources":["../../../src/config/interfaces/config.auth.interface.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,gBAAgB,GAAG,MAAM,GAAG,QAAQ,GAAG,UAAU,CAAC;AAE9D,MAAM,WAAW,mBAAmB;IAClC,iBAAiB,EAAE,OAAO,CAAC;IAC3B,gBAAgB,EAAE,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"config.auth.interface.d.ts","sourceRoot":"","sources":["../../../src/config/interfaces/config.auth.interface.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,gBAAgB,GAAG,MAAM,GAAG,QAAQ,GAAG,UAAU,CAAC;AAE9D,MAAM,WAAW,mBAAmB;IAClC,iBAAiB,EAAE,OAAO,CAAC;IAC3B,gBAAgB,EAAE,gBAAgB,CAAC;IAEnC;;;;;OAKG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Credits are the billing unit exposed to customers: a fractional, tier-accurate
|
|
3
|
+
* conversion of the real provider cost of an AI call.
|
|
4
|
+
*
|
|
5
|
+
* `credits = max(minCreditsPerRecord, round2(cost / creditCost))`, where `cost`
|
|
6
|
+
* is the euro figure produced by `TokenUsageService.computeCost` (or an explicit
|
|
7
|
+
* `costOverride`). ALL monetary values here — and every `*_COST_PER_1M_TOKENS`
|
|
8
|
+
* env value feeding `cost` — are expressed in EUROS.
|
|
9
|
+
*
|
|
10
|
+
* `creditCost: 0` (or an absent `credits` config block) DISABLES credits: usage
|
|
11
|
+
* records store `credits: 0` and no balance is deducted, so package consumers
|
|
12
|
+
* that never set `CREDIT_COST` keep their pre-credits behaviour.
|
|
13
|
+
*/
|
|
14
|
+
export interface ConfigCreditsInterface {
|
|
15
|
+
/** € per credit; driven by CREDIT_COST. 0 → credits tracking disabled. */
|
|
16
|
+
creditCost: number;
|
|
17
|
+
/**
|
|
18
|
+
* Floor applied to every recorded call so sub-cent calls are still billed;
|
|
19
|
+
* driven by CREDIT_MINIMUM (default 0.1). Skipped when the caller passes
|
|
20
|
+
* `applyMinimum: false` (embeddings).
|
|
21
|
+
*/
|
|
22
|
+
minCreditsPerRecord: number;
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=config.credits.interface.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.credits.interface.d.ts","sourceRoot":"","sources":["../../../src/config/interfaces/config.credits.interface.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,MAAM,WAAW,sBAAsB;IACrC,0EAA0E;IAC1E,UAAU,EAAE,MAAM,CAAC;IACnB;;;;OAIG;IACH,mBAAmB,EAAE,MAAM,CAAC;CAC7B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.credits.interface.js","sourceRoot":"","sources":["../../../src/config/interfaces/config.credits.interface.ts"],"names":[],"mappings":""}
|
|
@@ -7,5 +7,11 @@ export interface ConfigEmailInterface {
|
|
|
7
7
|
emailSecure: boolean;
|
|
8
8
|
emailUsername: string;
|
|
9
9
|
emailPassword: string;
|
|
10
|
+
/**
|
|
11
|
+
* Locale used as the template fallback when the requested locale has no
|
|
12
|
+
* template file. Default "en" (historical behaviour). Set to the product's
|
|
13
|
+
* primary language (e.g. "it") when app templates exist only in that locale.
|
|
14
|
+
*/
|
|
15
|
+
defaultLocale?: string;
|
|
10
16
|
}
|
|
11
17
|
//# sourceMappingURL=config.email.interface.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.email.interface.d.ts","sourceRoot":"","sources":["../../../src/config/interfaces/config.email.interface.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,oBAAoB;IACnC,aAAa,EAAE,UAAU,GAAG,MAAM,GAAG,OAAO,CAAC;IAC7C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,OAAO,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"config.email.interface.d.ts","sourceRoot":"","sources":["../../../src/config/interfaces/config.email.interface.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,oBAAoB;IACnC,aAAa,EAAE,UAAU,GAAG,MAAM,GAAG,OAAO,CAAC;IAC7C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,OAAO,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB;;;;OAIG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB"}
|
|
@@ -11,6 +11,7 @@ export * from "./config.chunker.interface";
|
|
|
11
11
|
export * from "./config.chunk.queues.interface";
|
|
12
12
|
export * from "./config.content.types.interface";
|
|
13
13
|
export * from "./config.cors.interface";
|
|
14
|
+
export * from "./config.credits.interface";
|
|
14
15
|
export * from "./config.discord.interface";
|
|
15
16
|
export * from "./config.embedding.context.interface";
|
|
16
17
|
export * from "./config.google.interface";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/config/interfaces/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,yBAAyB,CAAC;AACxC,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,wBAAwB,CAAC;AACvC,cAAc,yBAAyB,CAAC;AACxC,cAAc,0BAA0B,CAAC;AACzC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,iCAAiC,CAAC;AAChD,cAAc,kCAAkC,CAAC;AACjD,cAAc,yBAAyB,CAAC;AACxC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,sCAAsC,CAAC;AACrD,cAAc,2BAA2B,CAAC;AAC1C,cAAc,0BAA0B,CAAC;AACzC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,oBAAoB,CAAC;AACnC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,wBAAwB,CAAC;AACvC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,wBAAwB,CAAC;AACvC,cAAc,0BAA0B,CAAC;AACzC,cAAc,0BAA0B,CAAC;AACzC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,0BAA0B,CAAC;AACzC,cAAc,uBAAuB,CAAC;AACtC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,0BAA0B,CAAC;AACzC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,0BAA0B,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/config/interfaces/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,yBAAyB,CAAC;AACxC,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,wBAAwB,CAAC;AACvC,cAAc,yBAAyB,CAAC;AACxC,cAAc,0BAA0B,CAAC;AACzC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,iCAAiC,CAAC;AAChD,cAAc,kCAAkC,CAAC;AACjD,cAAc,yBAAyB,CAAC;AACxC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,sCAAsC,CAAC;AACrD,cAAc,2BAA2B,CAAC;AAC1C,cAAc,0BAA0B,CAAC;AACzC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,oBAAoB,CAAC;AACnC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,wBAAwB,CAAC;AACvC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,wBAAwB,CAAC;AACvC,cAAc,0BAA0B,CAAC;AACzC,cAAc,0BAA0B,CAAC;AACzC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,0BAA0B,CAAC;AACzC,cAAc,uBAAuB,CAAC;AACtC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,0BAA0B,CAAC;AACzC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,0BAA0B,CAAC"}
|
|
@@ -27,6 +27,7 @@ __exportStar(require("./config.chunker.interface"), exports);
|
|
|
27
27
|
__exportStar(require("./config.chunk.queues.interface"), exports);
|
|
28
28
|
__exportStar(require("./config.content.types.interface"), exports);
|
|
29
29
|
__exportStar(require("./config.cors.interface"), exports);
|
|
30
|
+
__exportStar(require("./config.credits.interface"), exports);
|
|
30
31
|
__exportStar(require("./config.discord.interface"), exports);
|
|
31
32
|
__exportStar(require("./config.embedding.context.interface"), exports);
|
|
32
33
|
__exportStar(require("./config.google.interface"), exports);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/config/interfaces/index.ts"],"names":[],"mappings":";AAAA;;GAEG;;;;;;;;;;;;;;;;AAEH,0DAAwC;AACxC,wDAAsC;AACtC,yDAAuC;AACvC,yDAAuC;AACvC,0DAAwC;AACxC,2DAAyC;AACzC,6DAA2C;AAC3C,kEAAgD;AAChD,mEAAiD;AACjD,0DAAwC;AACxC,6DAA2C;AAC3C,uEAAqD;AACrD,4DAA0C;AAC1C,2DAAyC;AACzC,gEAA8C;AAC9C,iEAA+C;AAC/C,qDAAmC;AACnC,+DAA6C;AAC7C,yDAAuC;AACvC,6DAA2C;AAC3C,yDAAuC;AACvC,2DAAyC;AACzC,2DAAyC;AACzC,8DAA4C;AAC5C,6DAA2C;AAC3C,+DAA6C;AAC7C,2DAAyC;AACzC,wDAAsC;AACtC,4DAA0C;AAC1C,2DAAyC;AACzC,gEAA8C;AAC9C,2DAAyC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/config/interfaces/index.ts"],"names":[],"mappings":";AAAA;;GAEG;;;;;;;;;;;;;;;;AAEH,0DAAwC;AACxC,wDAAsC;AACtC,yDAAuC;AACvC,yDAAuC;AACvC,0DAAwC;AACxC,2DAAyC;AACzC,6DAA2C;AAC3C,kEAAgD;AAChD,mEAAiD;AACjD,0DAAwC;AACxC,6DAA2C;AAC3C,6DAA2C;AAC3C,uEAAqD;AACrD,4DAA0C;AAC1C,2DAAyC;AACzC,gEAA8C;AAC9C,iEAA+C;AAC/C,qDAAmC;AACnC,+DAA6C;AAC7C,yDAAuC;AACvC,6DAA2C;AAC3C,yDAAuC;AACvC,2DAAyC;AACzC,2DAAyC;AACzC,8DAA4C;AAC5C,6DAA2C;AAC3C,+DAA6C;AAC7C,2DAAyC;AACzC,wDAAsC;AACtC,4DAA0C;AAC1C,2DAAyC;AACzC,gEAA8C;AAC9C,2DAAyC"}
|
|
@@ -17,6 +17,7 @@ export declare class EmailService {
|
|
|
17
17
|
private readonly logger;
|
|
18
18
|
private templateBasePath;
|
|
19
19
|
private libraryTemplateBasePath;
|
|
20
|
+
private readonly defaultLocale;
|
|
20
21
|
constructor(config: ConfigService<BaseConfigInterface>, logger: AppLoggingService);
|
|
21
22
|
private loadTemplate;
|
|
22
23
|
sendEmail(templateId: string, emailParams: EmailParams, locale: string): Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"email.service.d.ts","sourceRoot":"","sources":["../../../../src/core/email/services/email.service.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAK/C,OAAO,EAAE,mBAAmB,EAAE,MAAM,kDAAkD,CAAC;AAGvF,OAAO,EAAE,iBAAiB,EAAE,MAAM,wCAAwC,CAAC;AAG3E,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,eAAe,EAAE,CAAC;IAChC,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB;AAOD,qBACa,YAAY;
|
|
1
|
+
{"version":3,"file":"email.service.d.ts","sourceRoot":"","sources":["../../../../src/core/email/services/email.service.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAK/C,OAAO,EAAE,mBAAmB,EAAE,MAAM,kDAAkD,CAAC;AAGvF,OAAO,EAAE,iBAAiB,EAAE,MAAM,wCAAwC,CAAC;AAG3E,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,eAAe,EAAE,CAAC;IAChC,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB;AAOD,qBACa,YAAY;IAMrB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,MAAM;IANzB,OAAO,CAAC,gBAAgB,CAAS;IACjC,OAAO,CAAC,uBAAuB,CAAS;IACxC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAS;gBAGpB,MAAM,EAAE,aAAa,CAAC,mBAAmB,CAAC,EAC1C,MAAM,EAAE,iBAAiB;IAgC5C,OAAO,CAAC,YAAY;IA4Cd,SAAS,CAAC,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;YAuC9E,kBAAkB;YAoBlB,qBAAqB;IAuCnC,OAAO,CAAC,0BAA0B;YA0BpB,iBAAiB;CAwChC"}
|
|
@@ -56,6 +56,7 @@ let EmailService = class EmailService {
|
|
|
56
56
|
constructor(config, logger) {
|
|
57
57
|
this.config = config;
|
|
58
58
|
this.logger = logger;
|
|
59
|
+
this.defaultLocale = this.config.get("email")?.defaultLocale ?? "en";
|
|
59
60
|
// App templates (overrides)
|
|
60
61
|
this.templateBasePath = (0, path_1.join)(process.cwd(), "templates", "email");
|
|
61
62
|
// Library templates (defaults)
|
|
@@ -84,16 +85,18 @@ let EmailService = class EmailService {
|
|
|
84
85
|
loadTemplate(templateId, locale) {
|
|
85
86
|
// Try app templates first (override)
|
|
86
87
|
const appTemplatePath = (0, path_1.join)(this.templateBasePath, locale, `${templateId}.hbs`);
|
|
87
|
-
const appFallbackPath = (0, path_1.join)(this.templateBasePath,
|
|
88
|
-
// Try library templates as fallback (default)
|
|
88
|
+
const appFallbackPath = (0, path_1.join)(this.templateBasePath, this.defaultLocale, `${templateId}.hbs`);
|
|
89
|
+
// Try library templates as fallback (default). Library templates ship in
|
|
90
|
+
// English only, so the library fallback is always "en" regardless of the
|
|
91
|
+
// app's configured defaultLocale.
|
|
89
92
|
const libraryTemplatePath = (0, path_1.join)(this.libraryTemplateBasePath, locale, `${templateId}.hbs`);
|
|
90
93
|
const libraryFallbackPath = (0, path_1.join)(this.libraryTemplateBasePath, "en", `${templateId}.hbs`);
|
|
91
94
|
let templatePath = null;
|
|
92
|
-
// Check in order: app locale → app
|
|
95
|
+
// Check in order: app locale → app default-locale → library locale → library en
|
|
93
96
|
if (fs.existsSync(appTemplatePath)) {
|
|
94
97
|
templatePath = appTemplatePath;
|
|
95
98
|
}
|
|
96
|
-
else if (locale !==
|
|
99
|
+
else if (locale !== this.defaultLocale && fs.existsSync(appFallbackPath)) {
|
|
97
100
|
templatePath = appFallbackPath;
|
|
98
101
|
}
|
|
99
102
|
else if (fs.existsSync(libraryTemplatePath)) {
|
|
@@ -103,13 +106,13 @@ let EmailService = class EmailService {
|
|
|
103
106
|
templatePath = libraryFallbackPath;
|
|
104
107
|
}
|
|
105
108
|
if (!templatePath) {
|
|
106
|
-
throw new Error(`Template file not found for template "${templateId}" in locale "${locale}" or default "en". ` +
|
|
109
|
+
throw new Error(`Template file not found for template "${templateId}" in locale "${locale}", app default "${this.defaultLocale}", or library default "en". ` +
|
|
107
110
|
`Checked app (${this.templateBasePath}) and library (${this.libraryTemplateBasePath}).`);
|
|
108
111
|
}
|
|
109
112
|
// Load unsubscribe partial if exists
|
|
110
113
|
let unsubscribePath = (0, path_1.join)(this.templateBasePath, locale, "unsubscribe.hbs");
|
|
111
|
-
if (!fs.existsSync(unsubscribePath) && locale !==
|
|
112
|
-
unsubscribePath = (0, path_1.join)(this.templateBasePath,
|
|
114
|
+
if (!fs.existsSync(unsubscribePath) && locale !== this.defaultLocale) {
|
|
115
|
+
unsubscribePath = (0, path_1.join)(this.templateBasePath, this.defaultLocale, "unsubscribe.hbs");
|
|
113
116
|
}
|
|
114
117
|
if (fs.existsSync(unsubscribePath)) {
|
|
115
118
|
const unsubscribePartial = fs.readFileSync(unsubscribePath, "utf8");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"email.service.js","sourceRoot":"","sources":["../../../../src/core/email/services/email.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,2CAA8C;AAC9C,2CAA4C;AAC5C,2CAA+C;AAC/C,uCAAyB;AACzB,uDAAyC;AACzC,uDAAyC;AACzC,+BAA4B;AAI5B,4EAA2E;AAC3E,+CAAgD;AAqBzC,IAAM,YAAY,GAAlB,MAAM,YAAY;
|
|
1
|
+
{"version":3,"file":"email.service.js","sourceRoot":"","sources":["../../../../src/core/email/services/email.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +1,44 @@
|
|
|
1
|
+
import { ConfigService } from "@nestjs/config";
|
|
2
|
+
import { TokenUsageRecorderInterface } from "../../../common/tokens";
|
|
3
|
+
import { BaseConfigInterface } from "../../../config/interfaces";
|
|
4
|
+
import { TokenUsageService } from "../../../foundations/tokenusage/services/tokenusage.service";
|
|
1
5
|
import { ModelService } from "../../llm/services/model.service";
|
|
6
|
+
/**
|
|
7
|
+
* Opt-in cost attribution for an embedding call. Without both
|
|
8
|
+
* `relationshipId` and `relationshipType` no usage record is written — the
|
|
9
|
+
* package stays domain-agnostic and the caller decides what the usage is
|
|
10
|
+
* billed against.
|
|
11
|
+
*/
|
|
12
|
+
export interface EmbedderAttribution {
|
|
13
|
+
relationshipId: string;
|
|
14
|
+
relationshipType: string;
|
|
15
|
+
tokenUsageType?: string;
|
|
16
|
+
}
|
|
2
17
|
export declare class EmbedderService {
|
|
3
18
|
private readonly modelService;
|
|
4
|
-
|
|
19
|
+
private readonly config;
|
|
20
|
+
private readonly tokenUsageService?;
|
|
21
|
+
private readonly tokenUsageRecorder?;
|
|
22
|
+
private readonly logger;
|
|
23
|
+
constructor(modelService: ModelService, config: ConfigService<BaseConfigInterface>, tokenUsageService?: TokenUsageService, tokenUsageRecorder?: TokenUsageRecorderInterface);
|
|
5
24
|
vectoriseText(params: {
|
|
6
25
|
text: string;
|
|
26
|
+
attribution?: EmbedderAttribution;
|
|
7
27
|
}): Promise<any>;
|
|
8
|
-
vectoriseTextBatch(texts: string[]): Promise<any[]>;
|
|
28
|
+
vectoriseTextBatch(texts: string[], attribution?: EmbedderAttribution): Promise<any[]>;
|
|
29
|
+
/** Lazily-built tokenizer for the configured embedder model; null after a failed init. */
|
|
30
|
+
private tokenizer;
|
|
31
|
+
/**
|
|
32
|
+
* Embedding providers return vectors only — no usage figures — so tokens are
|
|
33
|
+
* counted LOCALLY with the embedder model's own tokenizer (js-tiktoken).
|
|
34
|
+
* For OpenAI-family models (text-embedding-3-large on Azure — a360ai's
|
|
35
|
+
* embedder) this count is exactly what the provider bills. Models unknown to
|
|
36
|
+
* tiktoken fall back to the rate limiter's chars-per-token heuristic.
|
|
37
|
+
* One record per service invocation (a batch is one record), attribution
|
|
38
|
+
* opt-in exactly like LLMService.persistUsage, floor-exempt (applyMinimum
|
|
39
|
+
* false): sub-cent embedding calls must never floor to 0.1 credits.
|
|
40
|
+
*/
|
|
41
|
+
private persistUsage;
|
|
42
|
+
private countTokens;
|
|
9
43
|
}
|
|
10
44
|
//# sourceMappingURL=embedder.service.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"embedder.service.d.ts","sourceRoot":"","sources":["../../../../src/core/llm/services/embedder.service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAC;AAEhE,qBACa,eAAe;
|
|
1
|
+
{"version":3,"file":"embedder.service.d.ts","sourceRoot":"","sources":["../../../../src/core/llm/services/embedder.service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAE/C,OAAO,EAAwB,2BAA2B,EAAE,MAAM,wBAAwB,CAAC;AAC3F,OAAO,EAAE,mBAAmB,EAAqB,MAAM,4BAA4B,CAAC;AAEpF,OAAO,EAAE,iBAAiB,EAAE,MAAM,6DAA6D,CAAC;AAChG,OAAO,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAC;AAEhE;;;;;GAKG;AACH,MAAM,WAAW,mBAAmB;IAClC,cAAc,EAAE,MAAM,CAAC;IACvB,gBAAgB,EAAE,MAAM,CAAC;IACzB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,qBACa,eAAe;IAIxB,OAAO,CAAC,QAAQ,CAAC,YAAY;IAC7B,OAAO,CAAC,QAAQ,CAAC,MAAM;IAIX,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAC;IACL,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAC;IAThF,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAoC;gBAGxC,YAAY,EAAE,YAAY,EAC1B,MAAM,EAAE,aAAa,CAAC,mBAAmB,CAAC,EAI9B,iBAAiB,CAAC,EAAE,iBAAiB,EACP,kBAAkB,CAAC,EAAE,2BAA2B;IAGvG,aAAa,CAAC,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,mBAAmB,CAAA;KAAE,GAAG,OAAO,CAAC,GAAG,CAAC;IAMxF,kBAAkB,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,WAAW,CAAC,EAAE,mBAAmB,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAM5F,0FAA0F;IAC1F,OAAO,CAAC,SAAS,CAA8B;IAE/C;;;;;;;;;OASG;YACW,YAAY;IAsB1B,OAAO,CAAC,WAAW;CAsBpB"}
|
|
@@ -8,24 +8,104 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
8
8
|
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
9
|
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
10
|
};
|
|
11
|
+
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
12
|
+
return function (target, key) { decorator(target, key, paramIndex); }
|
|
13
|
+
};
|
|
14
|
+
var EmbedderService_1;
|
|
11
15
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
16
|
exports.EmbedderService = void 0;
|
|
13
17
|
const common_1 = require("@nestjs/common");
|
|
18
|
+
const config_1 = require("@nestjs/config");
|
|
19
|
+
const js_tiktoken_1 = require("js-tiktoken");
|
|
20
|
+
const tokens_1 = require("../../../common/tokens");
|
|
21
|
+
const tokenusage_type_1 = require("../../../foundations/tokenusage/enums/tokenusage.type");
|
|
22
|
+
const tokenusage_service_1 = require("../../../foundations/tokenusage/services/tokenusage.service");
|
|
14
23
|
const model_service_1 = require("../../llm/services/model.service");
|
|
15
|
-
let EmbedderService = class EmbedderService {
|
|
16
|
-
constructor(modelService) {
|
|
24
|
+
let EmbedderService = EmbedderService_1 = class EmbedderService {
|
|
25
|
+
constructor(modelService, config, tokenUsageService, tokenUsageRecorder) {
|
|
17
26
|
this.modelService = modelService;
|
|
27
|
+
this.config = config;
|
|
28
|
+
this.tokenUsageService = tokenUsageService;
|
|
29
|
+
this.tokenUsageRecorder = tokenUsageRecorder;
|
|
30
|
+
this.logger = new common_1.Logger(EmbedderService_1.name);
|
|
18
31
|
}
|
|
19
32
|
async vectoriseText(params) {
|
|
20
|
-
|
|
33
|
+
const result = await this.modelService.getEmbedder().embedQuery(params.text);
|
|
34
|
+
await this.persistUsage([params.text], params.attribution);
|
|
35
|
+
return result;
|
|
36
|
+
}
|
|
37
|
+
async vectoriseTextBatch(texts, attribution) {
|
|
38
|
+
const result = await this.modelService.getEmbedder().embedDocuments(texts);
|
|
39
|
+
await this.persistUsage(texts, attribution);
|
|
40
|
+
return result;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Embedding providers return vectors only — no usage figures — so tokens are
|
|
44
|
+
* counted LOCALLY with the embedder model's own tokenizer (js-tiktoken).
|
|
45
|
+
* For OpenAI-family models (text-embedding-3-large on Azure — a360ai's
|
|
46
|
+
* embedder) this count is exactly what the provider bills. Models unknown to
|
|
47
|
+
* tiktoken fall back to the rate limiter's chars-per-token heuristic.
|
|
48
|
+
* One record per service invocation (a batch is one record), attribution
|
|
49
|
+
* opt-in exactly like LLMService.persistUsage, floor-exempt (applyMinimum
|
|
50
|
+
* false): sub-cent embedding calls must never floor to 0.1 credits.
|
|
51
|
+
*/
|
|
52
|
+
async persistUsage(texts, attribution) {
|
|
53
|
+
if (!attribution?.relationshipId || !attribution?.relationshipType)
|
|
54
|
+
return;
|
|
55
|
+
const embedderConfig = this.config.get("ai")?.embedder;
|
|
56
|
+
const rate = embedderConfig?.inputCostPer1MTokens ?? 0;
|
|
57
|
+
if (rate <= 0)
|
|
58
|
+
return;
|
|
59
|
+
const recorder = this.tokenUsageRecorder ?? this.tokenUsageService;
|
|
60
|
+
if (!recorder)
|
|
61
|
+
return;
|
|
62
|
+
try {
|
|
63
|
+
const tokens = this.countTokens(texts, embedderConfig);
|
|
64
|
+
await recorder.recordTokenUsage({
|
|
65
|
+
tokens: { input: tokens, output: 0 },
|
|
66
|
+
type: attribution.tokenUsageType ?? tokenusage_type_1.TokenUsageType.Embedding,
|
|
67
|
+
relationshipId: attribution.relationshipId,
|
|
68
|
+
relationshipType: attribution.relationshipType,
|
|
69
|
+
applyMinimum: false,
|
|
70
|
+
costOverride: (tokens * rate) / 1_000_000,
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
catch (err) {
|
|
74
|
+
this.logger.warn(`Embedding usage persistence failed — continuing: ${String(err)}`);
|
|
75
|
+
}
|
|
21
76
|
}
|
|
22
|
-
|
|
23
|
-
|
|
77
|
+
countTokens(texts, embedderConfig) {
|
|
78
|
+
if (this.tokenizer === undefined) {
|
|
79
|
+
// Try the raw model name, then the provider-prefixed form normalised
|
|
80
|
+
// ("azure/openai/text-embedding-3-large@francecentral" → "text-embedding-3-large").
|
|
81
|
+
const raw = embedderConfig?.model ?? "";
|
|
82
|
+
const normalised = raw.split("/").pop()?.split("@")[0] ?? raw;
|
|
83
|
+
this.tokenizer = null;
|
|
84
|
+
for (const candidate of [raw, normalised]) {
|
|
85
|
+
try {
|
|
86
|
+
this.tokenizer = (0, js_tiktoken_1.encodingForModel)(candidate);
|
|
87
|
+
break;
|
|
88
|
+
}
|
|
89
|
+
catch {
|
|
90
|
+
/* not a tiktoken model — try next candidate, else heuristic fallback */
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
if (this.tokenizer) {
|
|
95
|
+
return texts.reduce((sum, t) => sum + this.tokenizer.encode(t).length, 0);
|
|
96
|
+
}
|
|
97
|
+
const charsPerToken = embedderConfig?.rateLimit?.charsPerToken || 4;
|
|
98
|
+
return texts.reduce((sum, t) => sum + Math.ceil(t.length / charsPerToken), 0);
|
|
24
99
|
}
|
|
25
100
|
};
|
|
26
101
|
exports.EmbedderService = EmbedderService;
|
|
27
|
-
exports.EmbedderService = EmbedderService = __decorate([
|
|
102
|
+
exports.EmbedderService = EmbedderService = EmbedderService_1 = __decorate([
|
|
28
103
|
(0, common_1.Injectable)(),
|
|
29
|
-
|
|
104
|
+
__param(2, (0, common_1.Optional)()),
|
|
105
|
+
__param(3, (0, common_1.Optional)()),
|
|
106
|
+
__param(3, (0, common_1.Inject)(tokens_1.TOKEN_USAGE_RECORDER)),
|
|
107
|
+
__metadata("design:paramtypes", [model_service_1.ModelService,
|
|
108
|
+
config_1.ConfigService,
|
|
109
|
+
tokenusage_service_1.TokenUsageService, Object])
|
|
30
110
|
], EmbedderService);
|
|
31
111
|
//# sourceMappingURL=embedder.service.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"embedder.service.js","sourceRoot":"","sources":["../../../../src/core/llm/services/embedder.service.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"embedder.service.js","sourceRoot":"","sources":["../../../../src/core/llm/services/embedder.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,6 +3,7 @@ import { DynamicStructuredTool } from "@langchain/core/tools";
|
|
|
3
3
|
import { ConfigService } from "@nestjs/config";
|
|
4
4
|
import { ZodType } from "zod";
|
|
5
5
|
import { AgentMessageType } from "../../../common/enums/agentmessage.type";
|
|
6
|
+
import { TokenUsageRecorderInterface } from "../../../common/tokens";
|
|
6
7
|
import { BaseConfigInterface } from "../../../config/interfaces";
|
|
7
8
|
import { TokenUsageService } from "../../../foundations/tokenusage/services/tokenusage.service";
|
|
8
9
|
import { ModelWeight } from "../enums/model.weight";
|
|
@@ -64,6 +65,7 @@ export declare class LLMService {
|
|
|
64
65
|
private readonly dumper;
|
|
65
66
|
private readonly tokenUsageService;
|
|
66
67
|
private readonly cache?;
|
|
68
|
+
private readonly tokenUsageRecorder?;
|
|
67
69
|
private readonly logger;
|
|
68
70
|
/**
|
|
69
71
|
* LangChain's ChatModel.invoke crashes with `TypeError: Cannot read
|
|
@@ -73,7 +75,7 @@ export declare class LLMService {
|
|
|
73
75
|
* retryable error; every other error passes through untouched.
|
|
74
76
|
*/
|
|
75
77
|
private static normaliseEmptyResponseError;
|
|
76
|
-
constructor(modelService: ModelService, config: ConfigService<BaseConfigInterface>, dumper: LLMCallDumper, tokenUsageService: TokenUsageService, cache?: LLMCacheService);
|
|
78
|
+
constructor(modelService: ModelService, config: ConfigService<BaseConfigInterface>, dumper: LLMCallDumper, tokenUsageService: TokenUsageService, cache?: LLMCacheService, tokenUsageRecorder?: TokenUsageRecorderInterface);
|
|
77
79
|
/**
|
|
78
80
|
* The per-ATTEMPT budget for one provider request. `params.timeout` wins;
|
|
79
81
|
* otherwise the configured default (`AI_REQUEST_TIMEOUT_MS`).
|
|
@@ -111,6 +113,12 @@ export declare class LLMService {
|
|
|
111
113
|
* Records token usage for cost/observability attribution. Never throws —
|
|
112
114
|
* a persistence failure logs a warning and the LLM call continues, so
|
|
113
115
|
* observability problems can't break the primary request path.
|
|
116
|
+
*
|
|
117
|
+
* Writes through the application-provided `TOKEN_USAGE_RECORDER` when one is
|
|
118
|
+
* bound, falling back to the module-local `TokenUsageService` otherwise. This
|
|
119
|
+
* is the ONLY token-usage write inside the package; any future package caller
|
|
120
|
+
* MUST use the same token rather than injecting `TokenUsageService` directly
|
|
121
|
+
* (see the token's docblock for why).
|
|
114
122
|
*/
|
|
115
123
|
private persistUsage;
|
|
116
124
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"llm.service.d.ts","sourceRoot":"","sources":["../../../../src/core/llm/services/llm.service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,WAAW,EAA4C,MAAM,0BAA0B,CAAC;AAE5G,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAE9D,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAG/C,OAAO,EAAE,OAAO,EAAE,MAAM,KAAK,CAAC;AAC9B,OAAO,EAAE,gBAAgB,EAAE,MAAM,yCAAyC,CAAC;AAC3E,OAAO,EAAE,mBAAmB,EAAqB,MAAM,4BAA4B,CAAC;AAEpF,OAAO,EAAE,iBAAiB,EAAE,MAAM,6DAA6D,CAAC;AAChG,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAC5D,OAAO,EAAE,eAAe,EAAiB,MAAM,qBAAqB,CAAC;AACrE,OAAO,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAC;AAahE,OAAO,EAAuC,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAa/F,OAAO,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAC;AAS9D;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAStD;AAED;;;;GAIG;AACH,qBAAa,eAAgB,SAAQ,KAAK;IAEtC,QAAQ,CAAC,KAAK,EAAE,MAAM;IACtB,QAAQ,CAAC,UAAU,EAAE,MAAM;gBADlB,KAAK,EAAE,MAAM,EACb,UAAU,EAAE,MAAM;CAK9B;AAED;;GAEG;AACH,UAAU,aAAa,CAAC,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACjC,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,YAAY,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;IACzB,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,gBAAgB,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC7D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC/B,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,KAAK,CAAC,EAAE,qBAAqB,EAAE,CAAC;IAChC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,eAAe,CAAC,EAAE,eAAe,CAAC;CACnC;AAsGD,qBACa,UAAU;IAoBnB,OAAO,CAAC,QAAQ,CAAC,YAAY;IAC7B,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IAKtB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"llm.service.d.ts","sourceRoot":"","sources":["../../../../src/core/llm/services/llm.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -57,6 +57,7 @@ const config_1 = require("@nestjs/config");
|
|
|
57
57
|
const ai = __importStar(require("ai"));
|
|
58
58
|
const vercel_1 = require("langsmith/experimental/vercel");
|
|
59
59
|
const agentmessage_type_1 = require("../../../common/enums/agentmessage.type");
|
|
60
|
+
const tokens_1 = require("../../../common/tokens");
|
|
60
61
|
const tokenusage_type_1 = require("../../../foundations/tokenusage/enums/tokenusage.type");
|
|
61
62
|
const tokenusage_service_1 = require("../../../foundations/tokenusage/services/tokenusage.service");
|
|
62
63
|
const model_weight_1 = require("../enums/model.weight");
|
|
@@ -227,12 +228,13 @@ let LLMService = LLMService_1 = class LLMService {
|
|
|
227
228
|
}
|
|
228
229
|
return error;
|
|
229
230
|
}
|
|
230
|
-
constructor(modelService, config, dumper, tokenUsageService, cache) {
|
|
231
|
+
constructor(modelService, config, dumper, tokenUsageService, cache, tokenUsageRecorder) {
|
|
231
232
|
this.modelService = modelService;
|
|
232
233
|
this.config = config;
|
|
233
234
|
this.dumper = dumper;
|
|
234
235
|
this.tokenUsageService = tokenUsageService;
|
|
235
236
|
this.cache = cache;
|
|
237
|
+
this.tokenUsageRecorder = tokenUsageRecorder;
|
|
236
238
|
this.logger = new common_1.Logger(LLMService_1.name);
|
|
237
239
|
}
|
|
238
240
|
/**
|
|
@@ -306,6 +308,12 @@ let LLMService = LLMService_1 = class LLMService {
|
|
|
306
308
|
* Records token usage for cost/observability attribution. Never throws —
|
|
307
309
|
* a persistence failure logs a warning and the LLM call continues, so
|
|
308
310
|
* observability problems can't break the primary request path.
|
|
311
|
+
*
|
|
312
|
+
* Writes through the application-provided `TOKEN_USAGE_RECORDER` when one is
|
|
313
|
+
* bound, falling back to the module-local `TokenUsageService` otherwise. This
|
|
314
|
+
* is the ONLY token-usage write inside the package; any future package caller
|
|
315
|
+
* MUST use the same token rather than injecting `TokenUsageService` directly
|
|
316
|
+
* (see the token's docblock for why).
|
|
309
317
|
*/
|
|
310
318
|
async persistUsage(params, tokens) {
|
|
311
319
|
// Attribution is opt-in: the caller decides which entity this usage is
|
|
@@ -314,7 +322,7 @@ let LLMService = LLMService_1 = class LLMService {
|
|
|
314
322
|
if (!params.relationshipId || !params.relationshipType)
|
|
315
323
|
return;
|
|
316
324
|
try {
|
|
317
|
-
await this.tokenUsageService.recordTokenUsage({
|
|
325
|
+
await (this.tokenUsageRecorder ?? this.tokenUsageService).recordTokenUsage({
|
|
318
326
|
tokens,
|
|
319
327
|
type: params.tokenUsageType ?? tokenusage_type_1.TokenUsageType.TextGeneration,
|
|
320
328
|
relationshipId: params.relationshipId,
|
|
@@ -1724,10 +1732,12 @@ exports.LLMService = LLMService;
|
|
|
1724
1732
|
exports.LLMService = LLMService = LLMService_1 = __decorate([
|
|
1725
1733
|
(0, common_1.Injectable)(),
|
|
1726
1734
|
__param(4, (0, common_1.Optional)()),
|
|
1735
|
+
__param(5, (0, common_1.Optional)()),
|
|
1736
|
+
__param(5, (0, common_1.Inject)(tokens_1.TOKEN_USAGE_RECORDER)),
|
|
1727
1737
|
__metadata("design:paramtypes", [model_service_1.ModelService,
|
|
1728
1738
|
config_1.ConfigService,
|
|
1729
1739
|
llm_call_dumper_service_1.LLMCallDumper,
|
|
1730
1740
|
tokenusage_service_1.TokenUsageService,
|
|
1731
|
-
llm_cache_service_1.LLMCacheService])
|
|
1741
|
+
llm_cache_service_1.LLMCacheService, Object])
|
|
1732
1742
|
], LLMService);
|
|
1733
1743
|
//# sourceMappingURL=llm.service.js.map
|