@solidstarters/solid-core 1.2.148 → 1.2.150

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.
Files changed (65) hide show
  1. package/dist/controllers/ai-interaction.controller.d.ts +1 -1
  2. package/dist/controllers/ai-interaction.controller.js +1 -1
  3. package/dist/dtos/create-ai-interaction.dto.d.ts +3 -0
  4. package/dist/dtos/create-ai-interaction.dto.d.ts.map +1 -1
  5. package/dist/dtos/create-ai-interaction.dto.js +20 -1
  6. package/dist/dtos/create-ai-interaction.dto.js.map +1 -1
  7. package/dist/dtos/update-ai-interaction.dto.d.ts +3 -0
  8. package/dist/dtos/update-ai-interaction.dto.d.ts.map +1 -1
  9. package/dist/dtos/update-ai-interaction.dto.js +19 -1
  10. package/dist/dtos/update-ai-interaction.dto.js.map +1 -1
  11. package/dist/entities/ai-interaction.entity.d.ts +3 -0
  12. package/dist/entities/ai-interaction.entity.d.ts.map +1 -1
  13. package/dist/entities/ai-interaction.entity.js +17 -1
  14. package/dist/entities/ai-interaction.entity.js.map +1 -1
  15. package/dist/helpers/environment.helper.d.ts +2 -0
  16. package/dist/helpers/environment.helper.d.ts.map +1 -0
  17. package/dist/helpers/environment.helper.js +11 -0
  18. package/dist/helpers/environment.helper.js.map +1 -0
  19. package/dist/index.d.ts +2 -0
  20. package/dist/index.d.ts.map +1 -1
  21. package/dist/index.js +2 -0
  22. package/dist/index.js.map +1 -1
  23. package/dist/jobs/database/trigger-mcp-client-subscriber-database.service.d.ts.map +1 -1
  24. package/dist/jobs/database/trigger-mcp-client-subscriber-database.service.js +2 -0
  25. package/dist/jobs/database/trigger-mcp-client-subscriber-database.service.js.map +1 -1
  26. package/dist/seeders/seed-data/solid-core-metadata.json +83 -3
  27. package/dist/services/ai-interaction.service.d.ts +1 -1
  28. package/dist/services/ai-interaction.service.d.ts.map +1 -1
  29. package/dist/services/ai-interaction.service.js +5 -1
  30. package/dist/services/ai-interaction.service.js.map +1 -1
  31. package/dist/services/media.service.d.ts.map +1 -1
  32. package/dist/services/media.service.js +2 -2
  33. package/dist/services/media.service.js.map +1 -1
  34. package/dist/services/mediaStorageProviders/file-s3-storage-provider.js +3 -2
  35. package/dist/services/mediaStorageProviders/file-s3-storage-provider.js.map +1 -1
  36. package/dist/services/mediaStorageProviders/file-storage-provider.js +6 -4
  37. package/dist/services/mediaStorageProviders/file-storage-provider.js.map +1 -1
  38. package/dist/services/mq-message.service.d.ts +9 -0
  39. package/dist/services/mq-message.service.d.ts.map +1 -1
  40. package/dist/services/mq-message.service.js +61 -0
  41. package/dist/services/mq-message.service.js.map +1 -1
  42. package/dist/services/poller.service.js +1 -1
  43. package/dist/services/poller.service.js.map +1 -1
  44. package/dist/services/queues/database-subscriber.service.js +1 -1
  45. package/dist/services/queues/database-subscriber.service.js.map +1 -1
  46. package/dist/solid-core.module.d.ts.map +1 -1
  47. package/dist/solid-core.module.js +2 -1
  48. package/dist/solid-core.module.js.map +1 -1
  49. package/dist/tsconfig.tsbuildinfo +1 -1
  50. package/package.json +1 -1
  51. package/src/dtos/create-ai-interaction.dto.ts +16 -5
  52. package/src/dtos/update-ai-interaction.dto.ts +16 -5
  53. package/src/entities/ai-interaction.entity.ts +11 -3
  54. package/src/helpers/environment.helper.ts +7 -0
  55. package/src/index.ts +3 -0
  56. package/src/jobs/database/trigger-mcp-client-subscriber-database.service.ts +2 -0
  57. package/src/seeders/seed-data/solid-core-metadata.json +83 -3
  58. package/src/services/ai-interaction.service.ts +8 -3
  59. package/src/services/media.service.ts +2 -3
  60. package/src/services/mediaStorageProviders/file-s3-storage-provider.ts +2 -2
  61. package/src/services/mediaStorageProviders/file-storage-provider.ts +4 -4
  62. package/src/services/mq-message.service.ts +116 -0
  63. package/src/services/poller.service.ts +1 -1
  64. package/src/services/queues/database-subscriber.service.ts +1 -1
  65. package/src/solid-core.module.ts +2 -1
@@ -1 +1 @@
1
- {"version":3,"file":"mq-message.service.js","sourceRoot":"","sources":["../../src/services/mq-message.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2CAAgE;AAChE,6CAAwE;AACxE,uCAA2D;AAC3D,qCAAoD;AACpD,iDAAwD;AACxD,qEAA2E;AAC3E,uEAA6E;AAC7E,2CAA+C;AAC/C,iDAAwD;AACxD,+DAAqE;AACrE,qEAA0D;AAC1D,2CAAwC;AAGjC,IAAM,gBAAgB,wBAAtB,MAAM,gBAAiB,SAAQ,0BAAsB;IAG1D,YAEE,oBAAmD,EAC1C,qBAA4C,EAC5C,aAA4B,EAC5B,WAAwB,EACxB,gBAAkC,EAClC,iBAAoC,EAE7C,aAAqC,EAErC,IAAoC,EAC3B,SAAoB;QAE7B,KAAK,CAAC,oBAAoB,EAAE,qBAAqB,EAAE,aAAa,EAAE,WAAW,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,aAAa,EAAE,IAAI,EAAE,WAAW,EAAE,YAAY,EAAE,SAAS,CAAC,CAAC;QAZtK,yBAAoB,GAApB,oBAAoB,CAAsB;QAC1C,0BAAqB,GAArB,qBAAqB,CAAuB;QAC5C,kBAAa,GAAb,aAAa,CAAe;QAC5B,gBAAW,GAAX,WAAW,CAAa;QACxB,qBAAgB,GAAhB,gBAAgB,CAAkB;QAClC,sBAAiB,GAAjB,iBAAiB,CAAmB;QAEpC,kBAAa,GAAb,aAAa,CAAe;QAE5B,SAAI,GAAJ,IAAI,CAAuB;QAC3B,cAAS,GAAT,SAAS,CAAW;QAdd,WAAM,GAAG,IAAI,eAAM,CAAC,kBAAgB,CAAC,IAAI,CAAC,CAAC;IAiB5D,CAAC;IAED,KAAK,CAAC,sBAAsB,CAAC,SAAiB;QAG5C,OAAO,MAAM,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,KAAK,EAAC,OAAO,EAAC,EAAE;YAE1D,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,KAAK,CAAC;;;;;;;;mBAQtB,EACX,CAAC,SAAS,CAAC,CACZ,CAAC;YAGF,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAEnC,OAAO,IAAI,CAAC;YACd,CAAC;YACD,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,aAAa,CAAC,6BAAS,CAAC,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,SAAS,EAAE,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC;YAC3H,IAAI,GAAG,EAAE,CAAC;gBAGR,GAAG,CAAC,KAAK,GAAG,WAAW,CAAC;gBACxB,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBAExB,OAAO,GAAG,CAAC;YACb,CAAC;YAED,OAAO,IAAI,CAAC;QACd,CAAC,CAAC,CAAC;IACL,CAAC;CAEF,CAAA;AAxDY,4CAAgB;2BAAhB,gBAAgB;IAD5B,IAAA,mBAAU,GAAE;IAKR,WAAA,IAAA,eAAM,EAAC,IAAA,mBAAU,EAAC,GAAG,EAAE,CAAC,6CAAoB,CAAC,CAAC,CAAA;IAO9C,WAAA,IAAA,6BAAmB,GAAE,CAAA;IAErB,WAAA,IAAA,0BAAgB,EAAC,6BAAS,CAAC,CAAA;qCARG,6CAAoB;QACnB,+CAAqB;QAC7B,sBAAa;QACf,0BAAW;QACN,uBAAgB;QACf,uCAAiB;QAErB,uBAAa;QAEtB,oBAAU;QACL,gBAAS;GAfpB,gBAAgB,CAwD5B","sourcesContent":["import { forwardRef, Inject, Injectable } from '@nestjs/common';\nimport { InjectEntityManager, InjectRepository } from '@nestjs/typeorm';\nimport { DiscoveryService, ModuleRef } from \"@nestjs/core\";\nimport { EntityManager, Repository } from 'typeorm';\nimport { CRUDService } from 'src/services/crud.service';\nimport { ModelMetadataService } from 'src/services/model-metadata.service';\nimport { ModuleMetadataService } from 'src/services/module-metadata.service';\nimport { ConfigService } from '@nestjs/config';\nimport { FileService } from \"src/services/file.service\";\nimport { CrudHelperService } from \"src/services/crud-helper.service\";\nimport { MqMessage } from '../entities/mq-message.entity';\nimport { Logger } from '@nestjs/common';\n\n@Injectable()\nexport class MqMessageService extends CRUDService<MqMessage> {\n private readonly logger = new Logger(MqMessageService.name);\n\n constructor(\n @Inject(forwardRef(() => ModelMetadataService))\n readonly modelMetadataService: ModelMetadataService,\n readonly moduleMetadataService: ModuleMetadataService,\n readonly configService: ConfigService,\n readonly fileService: FileService,\n readonly discoveryService: DiscoveryService,\n readonly crudHelperService: CrudHelperService,\n @InjectEntityManager()\n readonly entityManager: EntityManager,\n @InjectRepository(MqMessage)\n readonly repo: Repository<MqMessage>,\n readonly moduleRef: ModuleRef\n ) {\n super(modelMetadataService, moduleMetadataService, configService, fileService, discoveryService, crudHelperService, entityManager, repo, 'mqMessage', 'solid-core', moduleRef);\n }\n\n async lockNextPendingMessage(queueName: string): Promise<MqMessage | null> {\n // this.logger.debug(`Locking next pending message for queue: ${queueName}`);\n\n return await this.entityManager.transaction(async manager => {\n // Use raw SQL to skip locked rows (FOR UPDATE SKIP LOCKED)\n const rawJob = await manager.query(`\n SELECT ss_mq_message.id\n FROM ss_mq_message\n left join ss_mq_message_queue on ss_mq_message.mq_message_queue_id = ss_mq_message_queue.id\n WHERE ss_mq_message_queue.\"name\" = $1\n AND ss_mq_message.stage = 'pending'\n ORDER BY ss_mq_message.created_at ASC\n FOR UPDATE SKIP LOCKED\n LIMIT 1`,\n [queueName]\n );\n\n // this.logger.debug(`Raw job fetched: ${JSON.stringify(rawJob)}`);\n if (!rawJob || rawJob.length === 0) {\n // this.logger.debug(`No pending job found for queue: ${queueName}`);\n return null;\n }\n const job = await manager.getRepository(MqMessage).findOne({ where: { id: rawJob[0].id }, relations: ['mqMessageQueue'] });\n if (job) {\n // this.logger.debug(`Locked job id: ${job.id}, queue: ${job.mqMessageQueue.name}, stage: ${job.stage}`);\n\n job.stage = 'scheduled';\n await manager.save(job);\n\n return job;\n }\n\n return null;\n });\n }\n\n}\n"]}
1
+ {"version":3,"file":"mq-message.service.js","sourceRoot":"","sources":["../../src/services/mq-message.service.ts"],"names":[],"mappings":"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","sourcesContent":["import { forwardRef, Inject, Injectable } from '@nestjs/common';\nimport { InjectEntityManager, InjectRepository } from '@nestjs/typeorm';\nimport { DiscoveryService, ModuleRef } from \"@nestjs/core\";\nimport { EntityManager, Repository } from 'typeorm';\nimport { CRUDService } from 'src/services/crud.service';\nimport { ModelMetadataService } from 'src/services/model-metadata.service';\nimport { ModuleMetadataService } from 'src/services/module-metadata.service';\nimport { ConfigService } from '@nestjs/config';\nimport { FileService } from \"src/services/file.service\";\nimport { CrudHelperService } from \"src/services/crud-helper.service\";\nimport { MqMessage } from '../entities/mq-message.entity';\nimport { Logger } from '@nestjs/common';\n\n@Injectable()\nexport class MqMessageService extends CRUDService<MqMessage> {\n private readonly logger = new Logger(MqMessageService.name);\n\n constructor(\n @Inject(forwardRef(() => ModelMetadataService))\n readonly modelMetadataService: ModelMetadataService,\n readonly moduleMetadataService: ModuleMetadataService,\n readonly configService: ConfigService,\n readonly fileService: FileService,\n readonly discoveryService: DiscoveryService,\n readonly crudHelperService: CrudHelperService,\n @InjectEntityManager()\n readonly entityManager: EntityManager,\n @InjectRepository(MqMessage)\n readonly repo: Repository<MqMessage>,\n readonly moduleRef: ModuleRef\n ) {\n super(modelMetadataService, moduleMetadataService, configService, fileService, discoveryService, crudHelperService, entityManager, repo, 'mqMessage', 'solid-core', moduleRef);\n }\n\n async lockNextPendingMessage(queueName: string): Promise<MqMessage | null> {\n // this.logger.debug(`Locking next pending message for queue: ${queueName}`);\n\n return await this.entityManager.transaction(async manager => {\n // Use raw SQL to skip locked rows (FOR UPDATE SKIP LOCKED)\n const rawJob = await manager.query(`\n SELECT ss_mq_message.id\n FROM ss_mq_message\n left join ss_mq_message_queue on ss_mq_message.mq_message_queue_id = ss_mq_message_queue.id\n WHERE ss_mq_message_queue.\"name\" = $1\n AND ss_mq_message.stage = 'pending'\n ORDER BY ss_mq_message.created_at ASC\n FOR UPDATE SKIP LOCKED\n LIMIT 1`,\n [queueName]\n );\n\n // this.logger.debug(`Raw job fetched: ${JSON.stringify(rawJob)}`);\n if (!rawJob || rawJob.length === 0) {\n // this.logger.debug(`No pending job found for queue: ${queueName}`);\n return null;\n }\n const job = await manager.getRepository(MqMessage).findOne({ where: { id: rawJob[0].id }, relations: ['mqMessageQueue'] });\n if (job) {\n // this.logger.debug(`Locked job id: ${job.id}, queue: ${job.mqMessageQueue.name}, stage: ${job.stage}`);\n\n job.stage = 'scheduled';\n await manager.save(job);\n\n return job;\n }\n\n return null;\n });\n }\n\n/**\n * Wait until a queue message reaches a terminal status (succeeded/failed).\n *\n * @param messageId string – the external message id you store in `ss_mq_message.messageId`\n * @param opts.timeoutMs total time to wait before giving up (default 60s)\n * @param opts.intervalMs initial poll interval (default 500ms)\n * @param opts.maxIntervalMs cap for exponential backoff (default 2000ms)\n * @param opts.throwOnFailure if true, throws when stage === 'failed' (default false)\n * @param opts.parseJson try JSON.parse on `output` and `error` (default true)\n * @returns resolves with the final MqMessage row when terminal, rejects on timeout (or failure if throwOnFailure)\n */\n async waitForTerminalStatus(\n messageId: string,\n opts?: {\n timeoutMs?: number;\n intervalMs?: number;\n maxIntervalMs?: number;\n throwOnFailure?: boolean;\n parseJson?: boolean;\n logEveryN?: number;\n },\n ): Promise<MqMessage> {\n const {\n timeoutMs = 60_000,\n intervalMs = 500,\n maxIntervalMs = 2_000,\n throwOnFailure = false,\n parseJson = true,\n logEveryN = 10, // log every N polls to avoid noisy logs\n } = opts || {};\n\n const start = Date.now();\n let attempt = 0;\n let delay = intervalMs;\n\n // Small helper\n const sleep = (ms: number) => new Promise((r) => setTimeout(r, ms));\n\n while (true) {\n attempt++;\n\n // Fetch minimal columns needed for quick polling\n const rec = await this.repo.findOne({\n where: { messageId },\n select: {\n id: true,\n messageId: true,\n stage: true,\n finishedAt: true,\n elapsedMillis: true,\n output: true,\n error: true,\n input: true,\n // add other fields if you need to return them\n } as any,\n loadEagerRelations: false,\n });\n\n if (attempt % logEveryN === 0) {\n this.logger.debug(\n `waitForTerminalStatus(${messageId}) poll #${attempt} -> ${rec?.stage ?? 'not_found'}`\n );\n }\n\n if (!rec) {\n // Not found yet – keep waiting until timeout\n } else if (rec.stage === 'succeeded' || rec.stage === 'failed') {\n // Optionally parse output/error if they contain JSON strings\n if (parseJson) {\n rec.output = this.safeJsonParse(rec.output);\n rec.error = this.safeJsonParse(rec.error);\n }\n\n if (rec.stage === 'failed' && throwOnFailure) {\n throw new Error(\n `Queue message ${messageId} failed` +\n (rec.error ? `: ${JSON.stringify(rec.error).slice(0, 500)}` : '')\n );\n }\n return rec;\n }\n\n // Timeout?\n const elapsed = Date.now() - start;\n if (elapsed >= timeoutMs) {\n throw new Error(`Timed out after ${timeoutMs}ms waiting for message ${messageId} to reach terminal status`);\n }\n\n // Backoff with cap\n await sleep(delay);\n delay = Math.min(Math.floor(delay * 1.5), maxIntervalMs);\n }\n }\n\n // /**\n // * Optional wrapper: publish and then wait (if your publisher returns the messageId).\n // */\n // async publishAndWait<T>(\n // publishFn: () => Promise<string>, // returns messageId\n // waitOpts?: Parameters<MqMessageService['waitForTerminalStatus']>[1],\n // ): Promise<MqMessage> {\n // const messageId = await publishFn();\n // return this.waitForTerminalStatus(messageId, waitOpts);\n // }\n\n private safeJsonParse(value: unknown): unknown {\n if (value == null) return value;\n if (typeof value !== 'string') return value;\n const s = value.trim();\n if (!s) return s;\n try {\n return JSON.parse(s);\n } catch {\n return value; // leave as-is if not valid JSON\n }\n }\n}\n"]}
@@ -22,7 +22,7 @@ let PollerService = PollerService_1 = class PollerService {
22
22
  const opts = {
23
23
  baseDelayMs: options.baseDelayMs ?? 1000,
24
24
  maxDelayMs: options.maxDelayMs ?? 30_000,
25
- timeoutPerIterationMs: options.timeoutPerIterationMs ?? 60_000,
25
+ timeoutPerIterationMs: options.timeoutPerIterationMs ?? 5 * 60_000,
26
26
  jitter: options.jitter ?? true,
27
27
  };
28
28
  const state = {
@@ -1 +1 @@
1
- {"version":3,"file":"poller.service.js","sourceRoot":"","sources":["../../src/services/poller.service.ts"],"names":[],"mappings":"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","sourcesContent":["// src/common/poller/poller.service.ts\nimport {\n Injectable,\n Logger,\n OnModuleDestroy,\n BeforeApplicationShutdown,\n} from '@nestjs/common';\n\nexport interface PollOptions {\n /** Wait after a successful iteration */\n baseDelayMs?: number; // default 1000\n /** Maximum delay after repeated failures */\n maxDelayMs?: number; // default 30000\n /** Per-iteration timeout guard */\n timeoutPerIterationMs?: number; // default 60000\n /** Add jitter to spread load */\n jitter?: boolean; // default true\n}\n\ntype ProcessNextFn = (queueName: string) => Promise<unknown>;\n\ninterface PollerState {\n queueName: string;\n processNext: ProcessNextFn;\n opts: Required<PollOptions>;\n inFlight: boolean;\n stopped: boolean;\n backoff: number;\n nextTimer?: NodeJS.Timeout;\n}\n\n@Injectable()\nexport class PollerService implements OnModuleDestroy, BeforeApplicationShutdown {\n private readonly logger = new Logger(PollerService.name);\n private readonly pollers = new Map<string, PollerState>();\n\n start(queueName: string, processNext: ProcessNextFn, options: PollOptions = {}): void {\n if (this.pollers.has(queueName)) {\n this.logger.warn(`Poller \"${queueName}\" already started; ignoring.`);\n return;\n }\n\n const opts: Required<PollOptions> = {\n baseDelayMs: options.baseDelayMs ?? 1000,\n maxDelayMs: options.maxDelayMs ?? 30_000,\n timeoutPerIterationMs: options.timeoutPerIterationMs ?? 60_000,\n jitter: options.jitter ?? true,\n };\n\n const state: PollerState = {\n queueName,\n processNext,\n opts,\n inFlight: false,\n stopped: false,\n backoff: opts.baseDelayMs,\n nextTimer: undefined,\n };\n\n this.pollers.set(queueName, state);\n // kick off on next tick\n setImmediate(() => this.poll(state).catch(() => { }));\n this.logger.log(`Started poller \"${queueName}\"`);\n }\n\n stop(queueName: string): void {\n const state = this.pollers.get(queueName);\n if (!state) return;\n\n state.stopped = true;\n if (state.nextTimer) {\n clearTimeout(state.nextTimer);\n state.nextTimer = undefined;\n }\n this.pollers.delete(queueName);\n this.logger.log(`Stopped poller \"${queueName}\"`);\n }\n\n stopAll(): void {\n for (const name of Array.from(this.pollers.keys())) {\n this.stop(name);\n }\n }\n\n async onModuleDestroy(): Promise<void> {\n this.stopAll();\n }\n\n async beforeApplicationShutdown(): Promise<void> {\n this.stopAll();\n }\n\n // ---- internals ----\n\n private async poll(state: PollerState): Promise<void> {\n if (state.stopped || state.inFlight) return;\n state.inFlight = true;\n\n try {\n await this.withTimeout(\n state.processNext(state.queueName),\n state.opts.timeoutPerIterationMs,\n );\n\n // success: reset backoff and schedule next run after base delay\n state.backoff = state.opts.baseDelayMs;\n // this.logger.debug(`[${state.queueName}] iteration completed`);\n this.schedule(state, state.opts.baseDelayMs);\n } catch (err: unknown) {\n const msg = this.errorToString(err);\n this.logger.error(`[${state.queueName}] iteration failed: ${msg}`);\n\n // failure: schedule with backoff + optional jitter, then increase backoff\n const wait = this.computeWait(state.backoff, state.opts);\n state.backoff = Math.min(state.backoff * 2, state.opts.maxDelayMs);\n this.schedule(state, wait);\n } finally {\n state.inFlight = false;\n }\n }\n\n private schedule(state: PollerState, delayMs: number) {\n if (state.stopped) return;\n if (state.nextTimer) clearTimeout(state.nextTimer);\n\n state.nextTimer = setTimeout(() => {\n // clear reference before calling poll to avoid re-entrancy confusion\n state.nextTimer = undefined;\n this.poll(state).catch(() => { });\n }, delayMs);\n }\n\n private computeWait(currentBackoff: number, opts: Required<PollOptions>): number {\n if (!opts.jitter) return currentBackoff;\n // Full jitter: random in [250ms, currentBackoff * 2], clamped to maxDelayMs\n const doubled = Math.min(currentBackoff * 2, opts.maxDelayMs);\n const jittered = Math.floor(Math.random() * doubled);\n return Math.max(250, jittered);\n }\n\n private async withTimeout<T>(p: Promise<T>, ms: number): Promise<T> {\n let timer: NodeJS.Timeout | undefined;\n try {\n return await Promise.race<T>([\n p,\n new Promise<never>((_, rej) => {\n timer = setTimeout(() => rej(new Error(`Iteration timed out after ${ms} ms`)), ms);\n }),\n ]);\n } finally {\n if (timer) clearTimeout(timer);\n }\n }\n\n private errorToString(err: unknown): string {\n if (err instanceof Error) return err.stack ?? err.message;\n try {\n return JSON.stringify(err);\n } catch {\n return String(err);\n }\n }\n}"]}
1
+ {"version":3,"file":"poller.service.js","sourceRoot":"","sources":["../../src/services/poller.service.ts"],"names":[],"mappings":"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","sourcesContent":["// src/common/poller/poller.service.ts\nimport {\n Injectable,\n Logger,\n OnModuleDestroy,\n BeforeApplicationShutdown,\n} from '@nestjs/common';\n\nexport interface PollOptions {\n /** Wait after a successful iteration */\n baseDelayMs?: number; // default 1000\n /** Maximum delay after repeated failures */\n maxDelayMs?: number; // default 30000\n /** Per-iteration timeout guard */\n timeoutPerIterationMs?: number; // default 60000\n /** Add jitter to spread load */\n jitter?: boolean; // default true\n}\n\ntype ProcessNextFn = (queueName: string) => Promise<unknown>;\n\ninterface PollerState {\n queueName: string;\n processNext: ProcessNextFn;\n opts: Required<PollOptions>;\n inFlight: boolean;\n stopped: boolean;\n backoff: number;\n nextTimer?: NodeJS.Timeout;\n}\n\n@Injectable()\nexport class PollerService implements OnModuleDestroy, BeforeApplicationShutdown {\n private readonly logger = new Logger(PollerService.name);\n private readonly pollers = new Map<string, PollerState>();\n\n start(queueName: string, processNext: ProcessNextFn, options: PollOptions = {}): void {\n if (this.pollers.has(queueName)) {\n this.logger.warn(`Poller \"${queueName}\" already started; ignoring.`);\n return;\n }\n\n const opts: Required<PollOptions> = {\n baseDelayMs: options.baseDelayMs ?? 1000,\n maxDelayMs: options.maxDelayMs ?? 30_000,\n timeoutPerIterationMs: options.timeoutPerIterationMs ?? 5 * 60_000,\n jitter: options.jitter ?? true,\n };\n\n const state: PollerState = {\n queueName,\n processNext,\n opts,\n inFlight: false,\n stopped: false,\n backoff: opts.baseDelayMs,\n nextTimer: undefined,\n };\n\n this.pollers.set(queueName, state);\n // kick off on next tick\n setImmediate(() => this.poll(state).catch(() => { }));\n this.logger.log(`Started poller \"${queueName}\"`);\n }\n\n stop(queueName: string): void {\n const state = this.pollers.get(queueName);\n if (!state) return;\n\n state.stopped = true;\n if (state.nextTimer) {\n clearTimeout(state.nextTimer);\n state.nextTimer = undefined;\n }\n this.pollers.delete(queueName);\n this.logger.log(`Stopped poller \"${queueName}\"`);\n }\n\n stopAll(): void {\n for (const name of Array.from(this.pollers.keys())) {\n this.stop(name);\n }\n }\n\n async onModuleDestroy(): Promise<void> {\n this.stopAll();\n }\n\n async beforeApplicationShutdown(): Promise<void> {\n this.stopAll();\n }\n\n // ---- internals ----\n\n private async poll(state: PollerState): Promise<void> {\n if (state.stopped || state.inFlight) return;\n state.inFlight = true;\n\n try {\n await this.withTimeout(\n state.processNext(state.queueName),\n state.opts.timeoutPerIterationMs,\n );\n\n // success: reset backoff and schedule next run after base delay\n state.backoff = state.opts.baseDelayMs;\n // this.logger.debug(`[${state.queueName}] iteration completed`);\n this.schedule(state, state.opts.baseDelayMs);\n } catch (err: unknown) {\n const msg = this.errorToString(err);\n this.logger.error(`[${state.queueName}] iteration failed: ${msg}`);\n\n // failure: schedule with backoff + optional jitter, then increase backoff\n const wait = this.computeWait(state.backoff, state.opts);\n state.backoff = Math.min(state.backoff * 2, state.opts.maxDelayMs);\n this.schedule(state, wait);\n } finally {\n state.inFlight = false;\n }\n }\n\n private schedule(state: PollerState, delayMs: number) {\n if (state.stopped) return;\n if (state.nextTimer) clearTimeout(state.nextTimer);\n\n state.nextTimer = setTimeout(() => {\n // clear reference before calling poll to avoid re-entrancy confusion\n state.nextTimer = undefined;\n this.poll(state).catch(() => { });\n }, delayMs);\n }\n\n private computeWait(currentBackoff: number, opts: Required<PollOptions>): number {\n if (!opts.jitter) return currentBackoff;\n // Full jitter: random in [250ms, currentBackoff * 2], clamped to maxDelayMs\n const doubled = Math.min(currentBackoff * 2, opts.maxDelayMs);\n const jittered = Math.floor(Math.random() * doubled);\n return Math.max(250, jittered);\n }\n\n private async withTimeout<T>(p: Promise<T>, ms: number): Promise<T> {\n let timer: NodeJS.Timeout | undefined;\n try {\n return await Promise.race<T>([\n p,\n new Promise<never>((_, rej) => {\n timer = setTimeout(() => rej(new Error(`Iteration timed out after ${ms} ms`)), ms);\n }),\n ]);\n } finally {\n if (timer) clearTimeout(timer);\n }\n }\n\n private errorToString(err: unknown): string {\n if (err instanceof Error) return err.stack ?? err.message;\n try {\n return JSON.stringify(err);\n } catch {\n return String(err);\n }\n }\n}"]}
@@ -56,7 +56,7 @@ class DatabaseSubscriber {
56
56
  this.poller.start(queueName, (q) => this.processNext(q), {
57
57
  baseDelayMs: 1000,
58
58
  maxDelayMs: 30_000,
59
- timeoutPerIterationMs: 60_000,
59
+ timeoutPerIterationMs: 5 * 60_000,
60
60
  jitter: true,
61
61
  });
62
62
  this.logger.log(`DatabaseSubscriber ready to consume messages: ${JSON.stringify(this.options())}`);
@@ -1 +1 @@
1
- {"version":3,"file":"database-subscriber.service.js","sourceRoot":"","sources":["../../../src/services/queues/database-subscriber.service.ts"],"names":[],"mappings":"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","sourcesContent":["import { Logger, OnModuleInit } from '@nestjs/common';\nimport { QueuesModuleOptions } from \"../../interfaces\";\nimport { QueueMessage, QueueSubscriber } from '../../interfaces/mq';\nimport { MqMessageQueueService } from '../mq-message-queue.service';\nimport { MqMessageService } from '../mq-message.service';\nimport { PollerService } from '../poller.service';\n\n\nexport abstract class DatabaseSubscriber<T> implements OnModuleInit, QueueSubscriber<T> {\n private readonly logger = new Logger(DatabaseSubscriber.name);\n private readonly url: string;\n private readonly serviceRole: string;\n\n constructor(\n protected readonly mqMessageService: MqMessageService,\n protected readonly mqMessageQueueService: MqMessageQueueService,\n protected readonly poller: PollerService,\n ) {\n this.serviceRole = process.env.QUEUES_SERVICE_ROLE;\n if (!this.serviceRole) {\n this.logger.debug('Queue service Role is not defined in the environment variables');\n }\n this.logger.debug(`DatabaseSubscriber instance created with options: ${JSON.stringify(this.options())}`);\n }\n\n abstract subscribe(message: QueueMessage<T>);\n\n abstract options(): QueuesModuleOptions;\n\n private async processNext(queueName: string) {\n // this.logger.debug(`#### DatabaseSubscriber processing next message from queue: ${queueName}`);\n const job = await this.mqMessageService.lockNextPendingMessage(queueName);\n if (!job) {\n return;\n }\n\n const messageContentString = job.input.toString();\n // this.logger.debug(`DatabaseSubscriber Received raw message: ${messageContentString}`);\n\n let message: QueueMessage<T> = null;\n\n try {\n message = JSON.parse(messageContentString) as QueueMessage<T>;\n\n // this is the first time we are receiving the message so we set the currentRetry to 0\n if (!message.retryCount) message.retryCount = 0;\n if (!message.retryInterval) message.retryInterval = 1000;\n if (!message.currentRetry) message.currentRetry = 0;\n\n await this.processMessage(message);\n }\n catch (error) {\n this.logger.error(`Error processing message: ${error.message}`);\n\n // if an error occurs then if retryCount is set we start retrying. \n if (message) {\n if (message.currentRetry < message.retryCount) {\n await this.updateStatusInDatabase('retrying', message);\n\n message.currentRetry++;\n this.logger.warn(`Retrying message (${message.currentRetry}/${message.retryCount}) after ${message.retryInterval}ms`);\n setTimeout(() => {\n this.retryMessage(message);\n }, message.retryInterval);\n } else {\n // Discard the message after max retries\n await this.updateStatusInDatabase('failed', message, error.message, '');\n this.logger.error(`Message failed after ${message.retryCount} attempts: ${error.message}`);\n }\n }\n }\n // this.logger.debug(`#### DatabaseSubscriber finished processing message from queue: ${queueName}`);\n }\n\n // async onModuleInit(): Promise<void> {\n // // we will start subscriber only if the current service role is subscriber. \n // if (['both', 'subscriber'].includes(this.serviceRole)) {\n\n // const options = this.options();\n\n // const queueName = options.queueName;\n // // setInterval(() => this.processNext(queueName), 1000);\n // const poll = async () => {\n // try {\n // await this.processNext(queueName);\n // } catch (err) {\n // this.logger.error(`Polling error: ${err.message}`);\n // } finally {\n // setTimeout(poll, 1000); // Wait 1s *after* processing finishes\n // }\n // };\n\n // // start the loop\n // poll();\n\n // this.logger.log(`DatabaseSubscriber ready to consume messages: ${JSON.stringify(this.options())}`);\n // }\n // }\n\n async onModuleInit(): Promise<void> {\n // we will start subscriber only if the current service role is subscriber. \n if (['both', 'subscriber'].includes(this.serviceRole)) {\n\n const options = this.options();\n\n const queueName = options.queueName;\n\n this.poller.start(queueName, (q) => this.processNext(q), {\n baseDelayMs: 1000,\n maxDelayMs: 30_000,\n timeoutPerIterationMs: 60_000,\n jitter: true,\n });\n\n this.logger.log(`DatabaseSubscriber ready to consume messages: ${JSON.stringify(this.options())}`);\n }\n }\n\n onModuleDestroy() {\n const options = this.options();\n const queueName = options.queueName;\n this.poller.stop(queueName);\n }\n\n /**\n * Abstract method for message processing logic.\n */\n protected async processMessage(message: QueueMessage<T>): Promise<void> {\n await this.updateStatusInDatabase('started', message);\n\n // Capture the results of handling the task.\n const result = await this.subscribe(message);\n\n // TODO: Update the database to indicate that the task is finished.\n await this.updateStatusInDatabase('succeeded', message, '', result ? JSON.stringify(result, null, 2) : '');\n }\n\n /**\n * Retry the message by invoking the processing logic again.\n */\n private async retryMessage(message: QueueMessage<T>) {\n try {\n await this.processMessage(message);\n } catch (error) {\n if (message.currentRetry < message.retryCount) {\n await this.updateStatusInDatabase('retrying', message);\n\n message.currentRetry++;\n this.logger.warn(`Retrying message (${message.currentRetry}/${message.retryCount}) after ${message.retryInterval}ms: ${error.message}`);\n setTimeout(() => {\n this.retryMessage(message);\n }, message.retryInterval);\n } else {\n this.logger.error(`Message failed after ${message.retryCount} attempts: ${error.message}`);\n\n // TODO: Store the error in the database and update the status accordingly.\n await this.updateStatusInDatabase('failed', message, error.message, '');\n\n }\n }\n }\n\n private async updateStatusInDatabase(stage: string, message: QueueMessage<T>, error: string = '', result: string = '') {\n try {\n this.logger.debug(`Updating message status in database: ${stage} for messageId: ${message.messageId}`);\n\n // 1. resolve the queue first\n const mqMessage = await this.mqMessageService.repo.findOne({\n where: {\n messageId: message.messageId,\n }\n });\n\n if (mqMessage) {\n this.logger.debug(`Found message in database: ${JSON.stringify(mqMessage.messageId)}`);\n this.logger.debug(`Updating message status in database: ${stage} for messageId: ${mqMessage.id}`);\n\n const updatedFields = {\n stage: stage\n };\n if (stage === 'failed' || stage === 'succeeded') {\n updatedFields['finishedAt'] = new Date();\n updatedFields['elapsedMillis'] = updatedFields['finishedAt'].getTime() - mqMessage.startedAt.getTime();\n }\n if (stage === 'succeeded') {\n updatedFields['output'] = result;\n }\n if (stage === 'failed') {\n updatedFields['error'] = error;\n }\n await this.mqMessageService.repo.update(mqMessage.id, updatedFields);\n this.logger.debug(`Message status updated to ${stage} for messageId: ${mqMessage.id}`);\n }\n }\n catch (error) {\n this.logger.error(error.message, error.stack);\n }\n }\n}\n"]}
1
+ {"version":3,"file":"database-subscriber.service.js","sourceRoot":"","sources":["../../../src/services/queues/database-subscriber.service.ts"],"names":[],"mappings":"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","sourcesContent":["import { Logger, OnModuleInit } from '@nestjs/common';\nimport { QueuesModuleOptions } from \"../../interfaces\";\nimport { QueueMessage, QueueSubscriber } from '../../interfaces/mq';\nimport { MqMessageQueueService } from '../mq-message-queue.service';\nimport { MqMessageService } from '../mq-message.service';\nimport { PollerService } from '../poller.service';\n\n\nexport abstract class DatabaseSubscriber<T> implements OnModuleInit, QueueSubscriber<T> {\n private readonly logger = new Logger(DatabaseSubscriber.name);\n private readonly url: string;\n private readonly serviceRole: string;\n\n constructor(\n protected readonly mqMessageService: MqMessageService,\n protected readonly mqMessageQueueService: MqMessageQueueService,\n protected readonly poller: PollerService,\n ) {\n this.serviceRole = process.env.QUEUES_SERVICE_ROLE;\n if (!this.serviceRole) {\n this.logger.debug('Queue service Role is not defined in the environment variables');\n }\n this.logger.debug(`DatabaseSubscriber instance created with options: ${JSON.stringify(this.options())}`);\n }\n\n abstract subscribe(message: QueueMessage<T>);\n\n abstract options(): QueuesModuleOptions;\n\n private async processNext(queueName: string) {\n // this.logger.debug(`#### DatabaseSubscriber processing next message from queue: ${queueName}`);\n const job = await this.mqMessageService.lockNextPendingMessage(queueName);\n if (!job) {\n return;\n }\n\n const messageContentString = job.input.toString();\n // this.logger.debug(`DatabaseSubscriber Received raw message: ${messageContentString}`);\n\n let message: QueueMessage<T> = null;\n\n try {\n message = JSON.parse(messageContentString) as QueueMessage<T>;\n\n // this is the first time we are receiving the message so we set the currentRetry to 0\n if (!message.retryCount) message.retryCount = 0;\n if (!message.retryInterval) message.retryInterval = 1000;\n if (!message.currentRetry) message.currentRetry = 0;\n\n await this.processMessage(message);\n }\n catch (error) {\n this.logger.error(`Error processing message: ${error.message}`);\n\n // if an error occurs then if retryCount is set we start retrying. \n if (message) {\n if (message.currentRetry < message.retryCount) {\n await this.updateStatusInDatabase('retrying', message);\n\n message.currentRetry++;\n this.logger.warn(`Retrying message (${message.currentRetry}/${message.retryCount}) after ${message.retryInterval}ms`);\n setTimeout(() => {\n this.retryMessage(message);\n }, message.retryInterval);\n } else {\n // Discard the message after max retries\n await this.updateStatusInDatabase('failed', message, error.message, '');\n this.logger.error(`Message failed after ${message.retryCount} attempts: ${error.message}`);\n }\n }\n }\n // this.logger.debug(`#### DatabaseSubscriber finished processing message from queue: ${queueName}`);\n }\n\n // async onModuleInit(): Promise<void> {\n // // we will start subscriber only if the current service role is subscriber. \n // if (['both', 'subscriber'].includes(this.serviceRole)) {\n\n // const options = this.options();\n\n // const queueName = options.queueName;\n // // setInterval(() => this.processNext(queueName), 1000);\n // const poll = async () => {\n // try {\n // await this.processNext(queueName);\n // } catch (err) {\n // this.logger.error(`Polling error: ${err.message}`);\n // } finally {\n // setTimeout(poll, 1000); // Wait 1s *after* processing finishes\n // }\n // };\n\n // // start the loop\n // poll();\n\n // this.logger.log(`DatabaseSubscriber ready to consume messages: ${JSON.stringify(this.options())}`);\n // }\n // }\n\n async onModuleInit(): Promise<void> {\n // we will start subscriber only if the current service role is subscriber. \n if (['both', 'subscriber'].includes(this.serviceRole)) {\n\n const options = this.options();\n\n const queueName = options.queueName;\n\n this.poller.start(queueName, (q) => this.processNext(q), {\n baseDelayMs: 1000,\n maxDelayMs: 30_000,\n timeoutPerIterationMs: 5 * 60_000,\n jitter: true,\n });\n\n this.logger.log(`DatabaseSubscriber ready to consume messages: ${JSON.stringify(this.options())}`);\n }\n }\n\n onModuleDestroy() {\n const options = this.options();\n const queueName = options.queueName;\n this.poller.stop(queueName);\n }\n\n /**\n * Abstract method for message processing logic.\n */\n protected async processMessage(message: QueueMessage<T>): Promise<void> {\n await this.updateStatusInDatabase('started', message);\n\n // Capture the results of handling the task.\n const result = await this.subscribe(message);\n\n // TODO: Update the database to indicate that the task is finished.\n await this.updateStatusInDatabase('succeeded', message, '', result ? JSON.stringify(result, null, 2) : '');\n }\n\n /**\n * Retry the message by invoking the processing logic again.\n */\n private async retryMessage(message: QueueMessage<T>) {\n try {\n await this.processMessage(message);\n } catch (error) {\n if (message.currentRetry < message.retryCount) {\n await this.updateStatusInDatabase('retrying', message);\n\n message.currentRetry++;\n this.logger.warn(`Retrying message (${message.currentRetry}/${message.retryCount}) after ${message.retryInterval}ms: ${error.message}`);\n setTimeout(() => {\n this.retryMessage(message);\n }, message.retryInterval);\n } else {\n this.logger.error(`Message failed after ${message.retryCount} attempts: ${error.message}`);\n\n // TODO: Store the error in the database and update the status accordingly.\n await this.updateStatusInDatabase('failed', message, error.message, '');\n\n }\n }\n }\n\n private async updateStatusInDatabase(stage: string, message: QueueMessage<T>, error: string = '', result: string = '') {\n try {\n this.logger.debug(`Updating message status in database: ${stage} for messageId: ${message.messageId}`);\n\n // 1. resolve the queue first\n const mqMessage = await this.mqMessageService.repo.findOne({\n where: {\n messageId: message.messageId,\n }\n });\n\n if (mqMessage) {\n this.logger.debug(`Found message in database: ${JSON.stringify(mqMessage.messageId)}`);\n this.logger.debug(`Updating message status in database: ${stage} for messageId: ${mqMessage.id}`);\n\n const updatedFields = {\n stage: stage\n };\n if (stage === 'failed' || stage === 'succeeded') {\n updatedFields['finishedAt'] = new Date();\n updatedFields['elapsedMillis'] = updatedFields['finishedAt'].getTime() - mqMessage.startedAt.getTime();\n }\n if (stage === 'succeeded') {\n updatedFields['output'] = result;\n }\n if (stage === 'failed') {\n updatedFields['error'] = error;\n }\n await this.mqMessageService.repo.update(mqMessage.id, updatedFields);\n this.logger.debug(`Message status updated to ${stage} for messageId: ${mqMessage.id}`);\n }\n }\n catch (error) {\n this.logger.error(error.message, error.stack);\n }\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"solid-core.module.d.ts","sourceRoot":"","sources":["../src/solid-core.module.ts"],"names":[],"mappings":"AA+QA,qBAkVa,eAAe;CAAI"}
1
+ {"version":3,"file":"solid-core.module.d.ts","sourceRoot":"","sources":["../src/solid-core.module.ts"],"names":[],"mappings":"AA+QA,qBAmVa,eAAe;CAAI"}
@@ -595,7 +595,8 @@ exports.SolidCoreModule = SolidCoreModule = __decorate([
595
595
  config_1.ConfigModule,
596
596
  publisher_factory_service_1.PublisherFactory,
597
597
  mail_factory_1.MailFactory,
598
- poller_service_1.PollerService
598
+ poller_service_1.PollerService,
599
+ ai_interaction_service_1.AiInteractionService,
599
600
  ],
600
601
  })
601
602
  ], SolidCoreModule);
@@ -1 +1 @@
1
- {"version":3,"file":"solid-core.module.js","sourceRoot":"","sources":["../src/solid-core.module.ts"],"names":[],"mappings":"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","sourcesContent":["import { Global, Module } from '@nestjs/common';\nimport { ConfigModule, ConfigService } from '@nestjs/config';\nimport {\n APP_FILTER,\n APP_GUARD,\n APP_INTERCEPTOR,\n DiscoveryService,\n MetadataScanner,\n Reflector,\n} from '@nestjs/core';\nimport { MulterModule } from '@nestjs/platform-express';\nimport { TypeOrmModule } from '@nestjs/typeorm';\nimport { RemoveFieldsCommand } from './commands/remove-fields.command';\nimport appBuilderConfig from './config/app-builder.config';\nimport { FieldMetadataController } from './controllers/field-metadata.controller';\nimport { MediaStorageProviderMetadataController } from './controllers/media-storage-provider-metadata.controller';\nimport { ModelMetadataController } from './controllers/model-metadata.controller';\nimport { ModuleMetadataController } from './controllers/module-metadata.controller';\nimport { TestController } from './controllers/test.controller';\nimport { FieldMetadata } from './entities/field-metadata.entity';\nimport { ListOfValues } from './entities/list-of-values.entity';\nimport { MediaStorageProviderMetadata } from './entities/media-storage-provider-metadata.entity';\nimport { Media } from './entities/media.entity';\nimport { ModelMetadata } from './entities/model-metadata.entity';\nimport { ModuleMetadata } from './entities/module-metadata.entity';\nimport { CommandService } from './helpers/command.service';\nimport { SchematicService } from './helpers/schematic.service';\nimport { ListOfValuesSelectionProvider } from './providers/list-of-values-selection-providers.service';\nimport { ModuleMetadataSeederService } from './seeders/module-metadata-seeder.service';\nimport { CrudHelperService } from './services/crud-helper.service';\nimport { FieldMetadataService } from './services/field-metadata.service';\nimport { ListOfValuesService } from './services/list-of-values.service';\nimport { MediaStorageProviderMetadataSeederService } from './services/media-storage-provider-metadata-seeder.service';\nimport { MediaStorageProviderMetadataService } from './services/media-storage-provider-metadata.service';\nimport { MediaService } from './services/media.service';\nimport { ModelMetadataService } from './services/model-metadata.service';\nimport { ModuleMetadataService } from './services/module-metadata.service';\nimport { SolidIntrospectService } from './services/solid-introspect.service';\n// import { ListOfComputedFieldProvider } from './providers/list-of-computed-field-provider.service';\nimport { ServeStaticModule } from '@nestjs/serve-static';\nimport { join } from 'path';\nimport { RefreshModelCommand } from './commands/refresh-model.command';\nimport { MediaController } from './controllers/media.controller';\n\nimport { RefreshModuleCommand } from './commands/refresh-module.command';\nimport { ModelMetadataSubscriber } from './subscribers/model-metadata.subscriber';\n\nimport { ViewMetadataController } from './controllers/view-metadata.controller';\nimport { ViewMetadata } from './entities/view-metadata.entity';\nimport { ViewMetadataService } from './services/view-metadata.service';\n\nimport { ActionMetadataController } from './controllers/action-metadata.controller';\nimport { ActionMetadata } from './entities/action-metadata.entity';\nimport { ActionMetadataService } from './services/action-metadata.service';\n\nimport { HttpModule } from '@nestjs/axios';\nimport { JwtModule } from '@nestjs/jwt';\nimport { SeedCommand } from './commands/seed.command';\nimport commonConfig from './config/common.config';\nimport { iamConfig, jwtConfig } from './config/iam.config';\nimport { AuthenticationController } from './controllers/authentication.controller';\nimport { EmailTemplateController } from './controllers/email-template.controller';\nimport { GoogleAuthenticationController } from './controllers/google-authentication.controller';\nimport { MenuItemMetadataController } from './controllers/menu-item-metadata.controller';\nimport { MqMessageQueueController } from './controllers/mq-message-queue.controller';\nimport { MqMessageController } from './controllers/mq-message.controller';\nimport { OTPAuthenticationController } from './controllers/otp-authentication.controller';\nimport { ServiceController } from './controllers/service.controller';\nimport { SmsTemplateController } from './controllers/sms-template.controller';\nimport { TestQueueController } from './controllers/test-queue.controller';\n// import { UserController } from './controllers/user.controller';\nimport { EmailAttachment } from './entities/email-attachment.entity';\nimport { EmailTemplate } from './entities/email-template.entity';\nimport { MenuItemMetadata } from './entities/menu-item-metadata.entity';\nimport { MqMessageQueue } from './entities/mq-message-queue.entity';\nimport { MqMessage } from './entities/mq-message.entity';\nimport { SmsTemplate } from './entities/sms-template.entity';\nimport { UserPasswordHistory } from './entities/user-password-history.entity';\n// import { User } from './entities/user.entity';\nimport { AccessTokenGuard } from './guards/access-token.guard';\nimport { AuthenticationGuard } from './guards/authentication.guard';\nimport { PermissionsGuard } from './guards/permissions.guard';\nimport { SolidRegistry } from './helpers/solid-registry';\nimport { LoggingInterceptor } from './interceptors/logging.interceptor';\nimport { ApiEmailQueuePublisher } from './jobs/api-email-publisher.service';\nimport { ApiEmailQueueSubscriber } from './jobs/api-email-subscriber.service';\nimport { TestQueuePublisherDatabase } from './jobs/database/test-queue-publisher-database.service';\nimport { TestQueueSubscriberDatabase } from './jobs/database/test-queue-subscriber-database.service';\nimport { SmtpEmailQueuePublisherRabbitmq } from './jobs/smtp-email-publisher.service';\nimport { SmtpEmailQueueSubscriberRabbitmq } from './jobs/smtp-email-subscriber.service';\nimport { OTPQueuePublisher } from './jobs/otp-publisher.service';\nimport { OTPQueueSubscriber } from './jobs/otp-subscriber.service';\nimport { SmsQueuePublisher } from './jobs/sms-publisher.service';\nimport { SmsQueueSubscriber } from './jobs/sms-subscriber.service';\nimport { TestQueuePublisher } from './jobs/test-queue-publisher.service';\nimport { TestQueueSubscriber } from './jobs/test-queue-subscriber.service';\nimport { WhatsappQueuePublisher } from './jobs/whatsapp-publisher.service';\nimport { WhatsappQueueSubscriber } from './jobs/whatsapp-subscriber.service';\nimport { UserRegistrationListener } from './listeners/user-registration.listener';\nimport { GoogleOauthStrategy } from './passport-strategies/google-oauth.strategy';\nimport { LocalStrategy } from './passport-strategies/local.strategy';\nimport { EmailTemplateSeederService } from './seeders/email-template-seeder.service';\nimport { SmsTemplateSeederService } from './seeders/sms-template-seeder.service';\nimport { UserSeederService } from './seeders/user-seeder.service';\nimport { AuthenticationService } from './services/authentication.service';\nimport { BcryptService } from './services/bcrypt.service';\nimport { UuidExternalIdComputedFieldProvider } from './services/computed-fields/uuid-external-id-computed-field-provider.service';\nimport { EmailTemplateService } from './services/email-template.service';\nimport { FileService } from './services/file.service';\nimport { HashingService } from './services/hashing.service';\nimport { ElasticEmailService } from './services/mail/elastic-email.service';\nimport { SMTPEMailService } from './services/mail/smtp-email.service';\nimport { MenuItemMetadataService } from './services/menu-item-metadata.service';\nimport { MqMessageQueueService } from './services/mq-message-queue.service';\nimport { MqMessageService } from './services/mq-message.service';\nimport { PdfService } from './services/pdf.service';\nimport { RefreshTokenIdsStorageService } from './services/refresh-token-ids-storage.service';\nimport { ListOfModelsSelectionProvider } from './services/selection-providers/list-of-models-selection-provider.service';\nimport { TinyUrlService } from './services/short-url/tiny-url.service';\nimport { SmsTemplateService } from './services/sms-template.service';\nimport { Msg91OTPService } from './services/sms/Msg91OTPService';\nimport { Msg91SMSService } from './services/sms/Msg91SMSService';\n// import { UserService } from './services/user.service';\nimport { Msg91WhatsappService } from './services/whatsapp/Msg91WhatsappService';\nimport { SoftDeleteAwareEventSubscriber } from './subscribers/soft-delete-aware-event.subscriber';\n\nimport { PermissionMetadataController } from './controllers/permission-metadata.controller';\nimport { PermissionMetadata } from './entities/permission-metadata.entity';\nimport { PermissionMetadataService } from './services/permission-metadata.service';\n\nimport { ScheduleModule } from '@nestjs/schedule';\nimport { ClsModule } from 'nestjs-cls';\nimport { AiInteractionController } from './controllers/ai-interaction.controller';\nimport { ChatterMessageDetailsController } from './controllers/chatter-message-details.controller';\nimport { ChatterMessageController } from './controllers/chatter-message.controller';\nimport { DashboardQuestionSqlDatasetConfigController } from './controllers/dashboard-question-sql-dataset-config.controller';\nimport { DashboardQuestionController } from './controllers/dashboard-question.controller';\nimport { DashboardVariableController } from './controllers/dashboard-variable.controller';\nimport { DashboardController } from './controllers/dashboard.controller';\nimport { ExportTemplateController } from './controllers/export-template.controller';\nimport { ExportTransactionController } from './controllers/export-transaction.controller';\nimport { ImportTransactionErrorLogController } from './controllers/import-transaction-error-log.controller';\nimport { ImportTransactionController } from './controllers/import-transaction.controller';\nimport { ListOfValuesController } from './controllers/list-of-values.controller';\nimport { LocaleController } from './controllers/locale.controller';\nimport { RoleMetadataController } from './controllers/role-metadata.controller';\nimport { SavedFiltersController } from './controllers/saved-filters.controller';\nimport { ScheduledJobController } from './controllers/scheduled-job.controller';\nimport { SecurityRuleController } from './controllers/security-rule.controller';\nimport { SettingController } from './controllers/setting.controller';\nimport { UserActivityHistoryController } from './controllers/user-activity-history.controller';\nimport { UserViewMetadataController } from './controllers/user-view-metadata.controller';\nimport { UserController } from './controllers/user.controller';\nimport { AiInteraction } from './entities/ai-interaction.entity';\nimport { ChatterMessageDetails } from './entities/chatter-message-details.entity';\nimport { ChatterMessage } from './entities/chatter-message.entity';\nimport { DashboardQuestionSqlDatasetConfig } from './entities/dashboard-question-sql-dataset-config.entity';\nimport { DashboardQuestion } from './entities/dashboard-question.entity';\nimport { DashboardVariable } from './entities/dashboard-variable.entity';\nimport { Dashboard } from './entities/dashboard.entity';\nimport { ExportTemplate } from './entities/export-template.entity';\nimport { ExportTransaction } from './entities/export-transaction.entity';\nimport { ImportTransactionErrorLog } from './entities/import-transaction-error-log.entity';\nimport { ImportTransaction } from './entities/import-transaction.entity';\nimport { Locale } from './entities/locale.entity';\nimport { RoleMetadata } from './entities/role-metadata.entity';\nimport { SavedFilters } from './entities/saved-filters.entity';\nimport { ScheduledJob } from './entities/scheduled-job.entity';\nimport { SecurityRule } from './entities/security-rule.entity';\nimport { Setting } from './entities/setting.entity';\nimport { UserActivityHistory } from './entities/user-activity-history.entity';\nimport { UserViewMetadata } from './entities/user-view-metadata.entity';\nimport { User } from './entities/user.entity';\nimport { HttpExceptionFilter } from './filters/http-exception.filter';\nimport { ModelMetadataHelperService } from './helpers/model-metadata-helper.service';\nimport { ModuleMetadataHelperService } from './helpers/module-metadata-helper.service';\nimport { ApiEmailQueuePublisherDatabase } from './jobs/database/api-email-publisher-database.service';\nimport { ApiEmailQueueSubscriberDatabase } from './jobs/database/api-email-subscriber-database.service';\nimport { ComputedFieldEvaluationPublisher } from './jobs/database/computed-field-evaluation-publisher.service';\nimport { ComputedFieldEvaluationSubscriber } from './jobs/database/computed-field-evaluation-subscriber.service';\nimport { SmtpEmailQueuePublisherDatabase } from './jobs/database/smtp-email-publisher-database.service';\nimport { SmtpEmailQueueSubscriberDatabase } from './jobs/database/smtp-email-subscriber-database.service';\nimport { GenerateCodePublisherDatabase } from './jobs/database/generate-code-publisher-database.service';\nimport { GenerateCodeSubscriberDatabase } from './jobs/database/generate-code-subscriber-database.service';\nimport { OTPQueuePublisherDatabase } from './jobs/database/otp-publisher-database.service';\nimport { OTPQueueSubscriberDatabase } from './jobs/database/otp-subscriber-database.service';\nimport { SmsQueuePublisherDatabase } from './jobs/database/sms-publisher-database.service';\nimport { SmsQueueSubscriberDatabase } from './jobs/database/sms-subscriber-database.service';\n\nimport { TwilioSmsQueuePublisherDatabase } from './jobs/database/twilio-sms-publisher-database.service';\nimport { TwilioSmsQueueSubscriberDatabase } from './jobs/database/twilio-sms-subscriber-database.service';\n\n\nimport { TriggerMcpClientPublisherDatabase } from './jobs/database/trigger-mcp-client-publisher-database.service';\nimport { TriggerMcpClientSubscriberDatabase } from './jobs/database/trigger-mcp-client-subscriber-database.service';\nimport { WhatsappQueuePublisherDatabase } from './jobs/database/whatsapp-publisher-database.service';\nimport { WhatsappQueueSubscriberDatabase } from './jobs/database/whatsapp-subscriber-database.service';\nimport { DashboardMapper } from './mappers/dashboard-mapper';\nimport { DashboardRepository } from './repository/dashboard.repository';\nimport { FieldMetadataRepository } from './repository/field-metadata.repository';\nimport { FieldRepository } from './repository/field.repository';\nimport { MediaRepository } from './repository/media.repository';\nimport { SecurityRuleRepository } from './repository/security-rule.repository';\nimport { PermissionMetadataSeederService } from './seeders/permission-metadata-seeder.service';\nimport { SystemFieldsSeederService } from './seeders/system-fields-seeder.service';\nimport { AiInteractionService } from './services/ai-interaction.service';\nimport { ChatterMessageDetailsService } from './services/chatter-message-details.service';\nimport { ChatterMessageService } from './services/chatter-message.service';\nimport { ConcatComputedFieldProvider } from './services/computed-fields/concat-computed-field-provider.service';\nimport { ConcatEntityComputedFieldProvider } from './services/computed-fields/entity/concat-entity-computed-field-provider.service';\nimport { CRUDService } from './services/crud.service';\nimport { CsvService } from './services/csv.service';\nimport { DashboardQuestionSqlDatasetConfigService } from './services/dashboard-question-sql-dataset-config.service';\nimport { DashboardQuestionService } from './services/dashboard-question.service';\nimport { DashboardVariableSQLDynamicProvider } from './services/dashboard-selection-providers/dashboard-variable-sql-dynamic-provider.service';\nimport { DasbhoardVariableTestDynamicProvider } from './services/dashboard-selection-providers/dashboard-variable-test-dynamic-provider.service';\nimport { DashboardVariableService } from './services/dashboard-variable.service';\nimport { DashboardService } from './services/dashboard.service';\nimport { ExcelService } from './services/excel.service';\nimport { ExportTemplateService } from './services/export-template.service';\nimport { ExportTransactionService } from './services/export-transaction.service';\nimport { ImportTransactionErrorLogService } from './services/import-transaction-error-log.service';\nimport { ImportTransactionService } from './services/import-transaction.service';\nimport { LocaleService } from './services/locale.service';\nimport { McpToolResponseHandlerFactory } from './services/mcp-tool-response-handlers/mcp-tool-response-handler-factory.service';\nimport { SolidCreateDashboardMcpToolResponseHandler } from './services/mcp-tool-response-handlers/solid-create-dashboard-mcp-tool-response-handler.service';\nimport { SolidCreateDashboardQuestionMcpToolResponseHandler } from './services/mcp-tool-response-handlers/solid-create-dashboard-question-mcp-tool-response-handler.service';\nimport { SolidCreateDashboardQuestionSqlDatasetConfigMcpToolResponseHandler } from './services/mcp-tool-response-handlers/solid-create-dashboard-question-sql-dataset-config-mcp-tool-response-handler.service';\nimport { SolidCreateModuleMcpToolResponseHandler } from './services/mcp-tool-response-handlers/solid-create-module-mcp-tool-response-handler.service';\nimport { FileS3StorageProvider } from './services/mediaStorageProviders/file-s3-storage-provider';\nimport { FileStorageProvider } from './services/mediaStorageProviders/file-storage-provider';\nimport { ChartJsSqlDataProvider } from './services/question-data-providers/chartjs-sql-data-provider.service';\nimport { PrimeReactDatatableSqlDataProvider } from './services/question-data-providers/prime-react-datatable-sql-data-provider.service';\nimport { PrimeReactMeterGroupSqlDataProvider } from './services/question-data-providers/prime-react-meter-group-sql-data-provider.service';\nimport { PublisherFactory } from './services/queues/publisher-factory.service';\nimport { RequestContextService } from './services/request-context.service';\nimport { RoleMetadataService } from './services/role-metadata.service';\nimport { SavedFiltersService } from './services/saved-filters.service';\nimport { ScheduledJobService } from './services/scheduled-job.service';\nimport { SchedulerServiceImpl } from './services/scheduled-jobs/scheduler.service';\nimport { SecurityRuleService } from './services/security-rule.service';\nimport { ListOfDashboardQuestionProvidersSelectionProvider } from './services/selection-providers/list-of-dashboard-question-providers-selection-provider.service';\nimport { ListOfDashboardVariableProvidersSelectionProvider } from './services/selection-providers/list-of-dashboard-variable-providers-selection-provider.service';\nimport { ListOfScheduledJobsSelectionProvider } from './services/selection-providers/list-of-scheduled-jobs-selection-provider.service';\nimport { LocaleListSelectionProvider } from './services/selection-providers/locale-list-selection-provider.service';\nimport { SettingService } from './services/setting.service';\nimport { SqlExpressionResolverService } from './services/sql-expression-resolver.service';\nimport { UserActivityHistoryService } from './services/user-activity-history.service';\nimport { UserViewMetadataService } from './services/user-view-metadata.service';\nimport { UserService } from './services/user.service';\nimport { AuditSubscriber } from './subscribers/audit.subscriber';\nimport { ComputedEntityFieldSubscriber } from './subscribers/computed-entity-field.subscriber';\nimport { CreatedByUpdatedBySubscriber } from './subscribers/created-by-updated-by.subscriber';\nimport { DashboardQuestionSqlDatasetConfigSubscriber } from './subscribers/dashboard-question-sql-dataset-config.subscriber';\nimport { DashboardQuestionSubscriber } from './subscribers/dashboard-question.subscriber';\nimport { DashboardVariableSubscriber } from './subscribers/dashboard-variable.subscriber';\nimport { DashboardSubscriber } from './subscribers/dashboard.subscriber';\nimport { SecurityRuleSubscriber } from './subscribers/security-rule.subscriber';\nimport { ViewMetadataSubsciber } from './subscribers/view-metadata.subscriber';\nimport { SolidCreateDashboardWidgetMcpToolResponseHandler } from './services/mcp-tool-response-handlers/solid-create-dashboard-widget-mcp-tool-response-handler.service';\nimport { SolidCreateModelWithFieldsMcpToolResponseHandler } from './services/mcp-tool-response-handlers/solid-create-model-with-fields-mcp-tool-response-handler.service';\nimport { SolidAddFieldMcpToolResponseHandler } from './services/mcp-tool-response-handlers/solid-add-field-mcp-tool-response-handler.service';\nimport { ViewMetadataRepository } from './repository/view-metadata.repository';\nimport { SolidCreateModelLayoutMcpToolResponseHandler } from './services/mcp-tool-response-handlers/solid-save-model-layout-mcp-tool-response-handler.service';\nimport { NoopsEntityComputedFieldProviderService } from './services/computed-fields/entity/noops-entity-computed-field-provider.service';\nimport { AlphaNumExternalIdComputationProvider } from './services/computed-fields/entity/alpha-num-external-id-computed-field-provider';\nimport { MailFactory } from './factories/mail.factory';\nimport { TwilioSMSService } from './services/sms/TwilioSMSService';\nimport { PollerService } from './services/poller.service';\n\n\n@Global()\n@Module({\n imports: [\n TypeOrmModule.forFeature([\n ModelMetadata,\n FieldMetadata,\n ModuleMetadata,\n ListOfValues,\n MediaStorageProviderMetadata,\n Media,\n EmailTemplate,\n SmsTemplate,\n EmailAttachment,\n User,\n UserPasswordHistory,\n ViewMetadata,\n ActionMetadata,\n MenuItemMetadata,\n MqMessageQueue,\n MqMessage,\n ScheduledJob,\n PermissionMetadata,\n RoleMetadata,\n Setting,\n SavedFilters,\n UserViewMetadata,\n SecurityRule,\n ListOfValues,\n ChatterMessage,\n ChatterMessageDetails,\n Locale,\n ExportTemplate,\n ExportTransaction,\n ImportTransaction,\n ImportTransactionErrorLog,\n UserActivityHistory,\n AiInteraction,\n ]),\n ConfigModule.forFeature(appBuilderConfig),\n ConfigModule.forFeature(commonConfig),\n ConfigModule.forFeature(iamConfig),\n ConfigModule.forFeature(jwtConfig),\n JwtModule.registerAsync(jwtConfig.asProvider()),\n ScheduleModule.forRoot(),\n ServeStaticModule.forRoot({\n rootPath: join(process.cwd(), 'media-files-storage'),\n serveRoot: '/media-files-storage',\n }),\n MulterModule.registerAsync({\n imports: [ConfigModule],\n useFactory: async (configService: ConfigService) => ({\n dest: configService.get<string>('app-builder.uploadDir'),\n }),\n inject: [ConfigService],\n }),\n HttpModule,\n ConfigModule,\n ClsModule,\n TypeOrmModule.forFeature([Dashboard]),\n TypeOrmModule.forFeature([DashboardVariable]),\n TypeOrmModule.forFeature([DashboardQuestion]),\n TypeOrmModule.forFeature([DashboardQuestionSqlDatasetConfig]),\n TypeOrmModule.forFeature([AiInteraction]),\n ],\n controllers: [\n ModuleMetadataController,\n ModelMetadataController,\n FieldMetadataController,\n TestController,\n MediaController,\n MediaStorageProviderMetadataController,\n ViewMetadataController,\n ActionMetadataController,\n MenuItemMetadataController,\n ServiceController,\n SmsTemplateController,\n EmailTemplateController,\n AuthenticationController,\n GoogleAuthenticationController,\n OTPAuthenticationController,\n TestQueueController,\n MqMessageQueueController,\n MqMessageController,\n ScheduledJobController,\n PermissionMetadataController,\n RoleMetadataController,\n UserController,\n SettingController,\n SavedFiltersController,\n UserViewMetadataController,\n SecurityRuleController,\n SavedFiltersController,\n ListOfValuesController,\n ChatterMessageController,\n ChatterMessageDetailsController,\n LocaleController,\n ExportTemplateController,\n ExportTransactionController,\n ImportTransactionController,\n ImportTransactionErrorLogController,\n UserActivityHistoryController,\n DashboardController,\n DashboardVariableController,\n DashboardQuestionController,\n DashboardQuestionSqlDatasetConfigController,\n AiInteractionController,\n ],\n providers: [\n {\n provide: APP_INTERCEPTOR,\n useClass: LoggingInterceptor,\n },\n {\n provide: HashingService,\n useClass: BcryptService,\n },\n {\n provide: APP_GUARD,\n useClass: AuthenticationGuard,\n },\n {\n provide: APP_GUARD,\n useClass: PermissionsGuard,\n },\n {\n provide: APP_FILTER,\n useClass: HttpExceptionFilter\n },\n ModuleMetadataService,\n ModuleMetadataHelperService,\n ModelMetadataService,\n ModelMetadataHelperService,\n FieldMetadataService,\n RemoveFieldsCommand,\n RefreshModelCommand,\n RefreshModuleCommand,\n SolidIntrospectService,\n DiscoveryService,\n CrudHelperService,\n CRUDService,\n Reflector,\n MetadataScanner,\n CommandService,\n SchematicService,\n MediaStorageProviderMetadataService,\n MediaService,\n MediaStorageProviderMetadataSeederService,\n ModuleMetadataSeederService,\n ListOfValuesService,\n ListOfValuesSelectionProvider,\n ModelMetadataSubscriber,\n ViewMetadataService,\n ActionMetadataService,\n MenuItemMetadataService,\n DiscoveryService,\n Reflector,\n MetadataScanner,\n FileService,\n SolidRegistry,\n SeedCommand,\n SMTPEMailService,\n ElasticEmailService,\n Msg91SMSService,\n Msg91OTPService,\n Msg91WhatsappService,\n TwilioSMSService,\n SmsTemplateService,\n EmailTemplateService,\n PublisherFactory,\n PollerService,\n\n McpToolResponseHandlerFactory,\n SolidCreateModuleMcpToolResponseHandler,\n\n TriggerMcpClientPublisherDatabase,\n TriggerMcpClientSubscriberDatabase,\n\n SmtpEmailQueuePublisherRabbitmq,\n SmtpEmailQueueSubscriberRabbitmq,\n SmtpEmailQueuePublisherDatabase,\n SmtpEmailQueueSubscriberDatabase,\n ApiEmailQueuePublisher,\n ApiEmailQueueSubscriber,\n ApiEmailQueuePublisherDatabase,\n ApiEmailQueueSubscriberDatabase,\n SmsQueuePublisher,\n SmsQueueSubscriber,\n SmsQueuePublisherDatabase,\n SmsQueueSubscriberDatabase,\n TwilioSmsQueuePublisherDatabase,\n TwilioSmsQueueSubscriberDatabase,\n OTPQueuePublisher,\n OTPQueueSubscriber,\n OTPQueuePublisherDatabase,\n OTPQueueSubscriberDatabase,\n WhatsappQueuePublisher,\n WhatsappQueueSubscriber,\n WhatsappQueuePublisherDatabase,\n WhatsappQueueSubscriberDatabase,\n EmailTemplateSeederService,\n SmsTemplateSeederService,\n TinyUrlService,\n PdfService,\n UuidExternalIdComputedFieldProvider,\n ListOfModelsSelectionProvider,\n ListOfScheduledJobsSelectionProvider,\n LocaleListSelectionProvider,\n SoftDeleteAwareEventSubscriber,\n AccessTokenGuard,\n AuthenticationService,\n GoogleAuthenticationController,\n RefreshTokenIdsStorageService,\n UserSeederService,\n LocalStrategy,\n GoogleOauthStrategy,\n UserRegistrationListener,\n TestQueuePublisher,\n TestQueueSubscriber,\n TestQueuePublisherDatabase,\n TestQueueSubscriberDatabase,\n GenerateCodePublisherDatabase,\n GenerateCodeSubscriberDatabase,\n MqMessageQueueService,\n MqMessageService,\n ScheduledJobService,\n SchedulerServiceImpl,\n PermissionMetadataService,\n RoleMetadataService,\n PermissionMetadataSeederService,\n UserService,\n SettingService,\n ConcatComputedFieldProvider,\n FileStorageProvider,\n FileS3StorageProvider,\n MediaRepository,\n ViewMetadataSubsciber,\n SavedFiltersService,\n UserViewMetadataService,\n SecurityRuleService,\n SecurityRuleRepository,\n SecurityRuleSubscriber,\n RequestContextService,\n SavedFiltersService,\n ChatterMessageService,\n ChatterMessageDetailsService,\n LocaleService,\n AuditSubscriber,\n ExportTemplateService,\n ExportTransactionService,\n ExcelService,\n CsvService,\n FieldRepository,\n ImportTransactionService,\n ImportTransactionErrorLogService,\n CreatedByUpdatedBySubscriber,\n SystemFieldsSeederService,\n FieldMetadataRepository,\n ComputedEntityFieldSubscriber,\n ComputedFieldEvaluationPublisher,\n ComputedFieldEvaluationSubscriber,\n ConcatEntityComputedFieldProvider,\n UserActivityHistoryService,\n DashboardService,\n DashboardVariableService,\n DashboardQuestionService,\n DashboardVariableSQLDynamicProvider,\n DasbhoardVariableTestDynamicProvider,\n ListOfDashboardVariableProvidersSelectionProvider,\n ListOfDashboardQuestionProvidersSelectionProvider,\n DashboardQuestionSqlDatasetConfigService,\n ChartJsSqlDataProvider,\n PrimeReactMeterGroupSqlDataProvider,\n PrimeReactDatatableSqlDataProvider,\n SqlExpressionResolverService,\n AiInteractionService,\n DashboardMapper,\n DashboardRepository,\n DashboardSubscriber,\n DashboardVariableSubscriber,\n DashboardQuestionSubscriber,\n DashboardQuestionSqlDatasetConfigSubscriber,\n NoopsEntityComputedFieldProviderService,\n SolidCreateDashboardMcpToolResponseHandler,\n SolidCreateDashboardQuestionMcpToolResponseHandler,\n SolidCreateDashboardQuestionSqlDatasetConfigMcpToolResponseHandler,\n SolidCreateDashboardWidgetMcpToolResponseHandler,\n SolidCreateModelWithFieldsMcpToolResponseHandler,\n SolidAddFieldMcpToolResponseHandler,\n ViewMetadataRepository,\n SolidCreateModelLayoutMcpToolResponseHandler,\n AlphaNumExternalIdComputationProvider,\n MailFactory,\n ],\n exports: [\n ModuleMetadataService,\n ModelMetadataService,\n FieldMetadataService,\n MediaStorageProviderMetadataService,\n MediaService,\n DiscoveryService,\n CrudHelperService,\n CRUDService,\n MulterModule,\n FileService,\n SolidRegistry,\n SMTPEMailService,\n ElasticEmailService,\n Msg91SMSService,\n Msg91OTPService,\n TwilioSMSService,\n Msg91WhatsappService,\n TinyUrlService,\n PdfService,\n EmailTemplateService,\n SmsTemplateService,\n UserSeederService,\n AuthenticationService,\n MqMessageQueueService,\n MqMessageService,\n RefreshModelCommand,\n RefreshModuleCommand,\n RequestContextService,\n SecurityRuleRepository,\n FieldRepository,\n SchedulerServiceImpl,\n UserActivityHistoryService,\n CsvService,\n ExcelService,\n SolidIntrospectService,\n ImportTransactionService,\n HttpModule,\n ListOfValuesService,\n ConfigModule,\n PublisherFactory,\n MailFactory,\n PollerService\n ],\n})\nexport class SolidCoreModule { }\n"]}
1
+ {"version":3,"file":"solid-core.module.js","sourceRoot":"","sources":["../src/solid-core.module.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAAgD;AAChD,2CAA6D;AAC7D,uCAOsB;AACtB,+DAAwD;AACxD,6CAAgD;AAChD,4EAAuE;AACvE,qFAA2D;AAC3D,uFAAkF;AAClF,yHAAkH;AAClH,uFAAkF;AAClF,yFAAoF;AACpF,mEAA+D;AAC/D,4EAAiE;AACjE,4EAAgE;AAChE,8GAAiG;AACjG,0DAAgD;AAChD,4EAAiE;AACjE,8EAAmE;AACnE,+DAA2D;AAC3D,mEAA+D;AAC/D,uHAAuG;AACvG,6FAAuF;AACvF,wEAAmE;AACnE,8EAAyE;AACzE,8EAAwE;AACxE,8HAAsH;AACtH,gHAAyG;AACzG,4DAAwD;AACxD,8EAAyE;AACzE,gFAA2E;AAC3E,kFAA6E;AAE7E,uDAAyD;AACzD,+BAA4B;AAC5B,4EAAuE;AACvE,qEAAiE;AAEjE,8EAAyE;AACzE,uFAAkF;AAElF,qFAAgF;AAChF,0EAA+D;AAC/D,4EAAuE;AAEvE,yFAAoF;AACpF,8EAAmE;AACnE,gFAA2E;AAE3E,yCAA2C;AAC3C,qCAAwC;AACxC,0DAAsD;AACtD,2EAAkD;AAClD,oDAA2D;AAC3D,uFAAmF;AACnF,uFAAkF;AAClF,qGAAgG;AAChG,+FAAyF;AACzF,2FAAqF;AACrF,+EAA0E;AAC1E,+FAA0F;AAC1F,yEAAqE;AACrE,mFAA8E;AAC9E,+EAA0E;AAE1E,gFAAqE;AACrE,4EAAiE;AACjE,oFAAwE;AACxE,gFAAoE;AACpE,oEAAyD;AACzD,wEAA6D;AAC7D,0FAA8E;AAE9E,oEAA+D;AAC/D,wEAAoE;AACpE,kEAA8D;AAC9D,6DAAyD;AACzD,4EAAwE;AACxE,oFAA4E;AAC5E,sFAA8E;AAC9E,iHAAmG;AACnG,mHAAqG;AACrG,sFAAsF;AACtF,wFAAwF;AACxF,wEAAiE;AACjE,0EAAmE;AACnE,wEAAiE;AACjE,0EAAmE;AACnE,sFAAyE;AACzE,wFAA2E;AAC3E,kFAA2E;AAC3E,oFAA6E;AAC7E,uFAAkF;AAClF,uFAAkF;AAClF,yEAAqE;AACrE,2FAAqF;AACrF,uFAAiF;AACjF,uEAAkE;AAClE,8EAA0E;AAC1E,8DAA0D;AAC1D,kJAAkI;AAClI,8EAAyE;AACzE,0DAAsD;AACtD,gEAA4D;AAC5D,iFAA4E;AAC5E,2EAAsE;AACtE,sFAAgF;AAChF,kFAA4E;AAC5E,sEAAiE;AACjE,wDAAoD;AACpD,oGAA6F;AAC7F,wIAAyH;AACzH,4EAAuE;AACvE,0EAAqE;AACrE,oEAAiE;AACjE,oEAAiE;AAEjE,mFAAgF;AAChF,yGAAkG;AAElG,iGAA4F;AAC5F,sFAA2E;AAC3E,wFAAmF;AAEnF,+CAAkD;AAClD,2CAAuC;AACvC,uFAAkF;AAClF,yGAAmG;AACnG,yFAAoF;AACpF,qIAA6H;AAC7H,+FAA0F;AAC1F,+FAA0F;AAC1F,6EAAyE;AACzE,yFAAoF;AACpF,+FAA0F;AAC1F,mHAA4G;AAC5G,+FAA0F;AAC1F,uFAAiF;AACjF,uEAAmE;AACnE,qFAAgF;AAChF,qFAAgF;AAChF,qFAAgF;AAChF,qFAAgF;AAChF,yEAAqE;AACrE,qGAA+F;AAC/F,+FAAyF;AACzF,mEAA+D;AAC/D,4EAAiE;AACjE,8FAAkF;AAClF,8EAAmE;AACnE,0HAA4G;AAC5G,oFAAyE;AACzE,oFAAyE;AACzE,kEAAwD;AACxD,8EAAmE;AACnE,oFAAyE;AACzE,wGAA2F;AAC3F,oFAAyE;AACzE,4DAAkD;AAClD,0EAA+D;AAC/D,0EAA+D;AAC/D,0EAA+D;AAC/D,0EAA+D;AAC/D,8DAAoD;AACpD,0FAA8E;AAC9E,oFAAwE;AACxE,wDAA8C;AAC9C,2EAAsE;AACtE,2FAAqF;AACrF,6FAAuF;AACvF,+GAAsG;AACtG,iHAAwG;AACxG,6HAA+G;AAC/G,+HAAiH;AACjH,iHAAwG;AACxG,mHAA0G;AAC1G,uHAAyG;AACzG,yHAA2G;AAC3G,mGAA2F;AAC3F,qGAA6F;AAC7F,mGAA2F;AAC3F,qGAA6F;AAE7F,iHAAwG;AACxG,mHAA0G;AAG1G,iIAAkH;AAClH,mIAAoH;AACpH,6GAAqG;AACrG,+GAAuG;AACvG,iEAA6D;AAC7D,4EAAwE;AACxE,sFAAiF;AACjF,oEAAgE;AAChE,oEAAgE;AAChE,oFAA+E;AAC/E,qGAA+F;AAC/F,yFAAmF;AACnF,8EAAyE;AACzE,gGAA0F;AAC1F,gFAA2E;AAC3E,8HAAgH;AAChH,mJAAoI;AACpI,0DAAsD;AACtD,wDAAoD;AACpD,4HAAoH;AACpH,sFAAiF;AACjF,8JAA+I;AAC/I,gKAAiJ;AACjJ,sFAAiF;AACjF,oEAAgE;AAChE,4DAAwD;AACxD,gFAA2E;AAC3E,sFAAiF;AACjF,0GAAmG;AACnG,sFAAiF;AACjF,8DAA0D;AAC1D,+IAAgI;AAChI,6KAA4J;AAC5J,+LAA6K;AAC7K,qOAAgN;AAChN,uKAAsJ;AACtJ,wGAAkG;AAClG,kGAA6F;AAC7F,4HAA8G;AAC9G,wJAAwI;AACxI,4JAA2I;AAC3I,2FAA+E;AAC/E,gFAA2E;AAC3E,4EAAuE;AACvE,4EAAuE;AACvE,4EAAuE;AACvE,mFAAmF;AACnF,4EAAuE;AACvE,oLAAmK;AACnK,oLAAmK;AACnK,wJAAwI;AACxI,kIAAoH;AACpH,gEAA4D;AAC5D,gGAA0F;AAC1F,4FAAsF;AACtF,sFAAgF;AAChF,0DAAsD;AACtD,qEAAiE;AACjE,qGAA+F;AAC/F,qGAA8F;AAC9F,qIAA6H;AAC7H,+FAA0F;AAC1F,+FAA0F;AAC1F,6EAAyE;AACzE,qFAAgF;AAChF,qFAA+E;AAC/E,2LAAyK;AACzK,6LAA0K;AAC1K,+JAA8I;AAC9I,oFAA+E;AAC/E,+KAA+J;AAC/J,iJAAyI;AACzI,mJAAwI;AACxI,2DAAuD;AACvD,sEAAmE;AACnE,8DAA0D;AAsVnD,IAAM,eAAe,GAArB,MAAM,eAAe;CAAI,CAAA;AAAnB,0CAAe;0BAAf,eAAe;IAnV3B,IAAA,eAAM,GAAE;IACR,IAAA,eAAM,EAAC;QACN,OAAO,EAAE;YACP,uBAAa,CAAC,UAAU,CAAC;gBACvB,qCAAa;gBACb,qCAAa;gBACb,uCAAc;gBACd,oCAAY;gBACZ,qEAA4B;gBAC5B,oBAAK;gBACL,qCAAa;gBACb,iCAAW;gBACX,yCAAe;gBACf,kBAAI;gBACJ,kDAAmB;gBACnB,mCAAY;gBACZ,uCAAc;gBACd,4CAAgB;gBAChB,wCAAc;gBACd,6BAAS;gBACT,mCAAY;gBACZ,+CAAkB;gBAClB,mCAAY;gBACZ,wBAAO;gBACP,mCAAY;gBACZ,4CAAgB;gBAChB,mCAAY;gBACZ,oCAAY;gBACZ,uCAAc;gBACd,sDAAqB;gBACrB,sBAAM;gBACN,uCAAc;gBACd,6CAAiB;gBACjB,6CAAiB;gBACjB,+DAAyB;gBACzB,kDAAmB;gBACnB,qCAAa;aACd,CAAC;YACF,qBAAY,CAAC,UAAU,CAAC,4BAAgB,CAAC;YACzC,qBAAY,CAAC,UAAU,CAAC,uBAAY,CAAC;YACrC,qBAAY,CAAC,UAAU,CAAC,sBAAS,CAAC;YAClC,qBAAY,CAAC,UAAU,CAAC,sBAAS,CAAC;YAClC,eAAS,CAAC,aAAa,CAAC,sBAAS,CAAC,UAAU,EAAE,CAAC;YAC/C,yBAAc,CAAC,OAAO,EAAE;YACxB,gCAAiB,CAAC,OAAO,CAAC;gBACxB,QAAQ,EAAE,IAAA,WAAI,EAAC,OAAO,CAAC,GAAG,EAAE,EAAE,qBAAqB,CAAC;gBACpD,SAAS,EAAE,sBAAsB;aAClC,CAAC;YACF,+BAAY,CAAC,aAAa,CAAC;gBACzB,OAAO,EAAE,CAAC,qBAAY,CAAC;gBACvB,UAAU,EAAE,KAAK,EAAE,aAA4B,EAAE,EAAE,CAAC,CAAC;oBACnD,IAAI,EAAE,aAAa,CAAC,GAAG,CAAS,uBAAuB,CAAC;iBACzD,CAAC;gBACF,MAAM,EAAE,CAAC,sBAAa,CAAC;aACxB,CAAC;YACF,kBAAU;YACV,qBAAY;YACZ,sBAAS;YACT,uBAAa,CAAC,UAAU,CAAC,CAAC,4BAAS,CAAC,CAAC;YACrC,uBAAa,CAAC,UAAU,CAAC,CAAC,6CAAiB,CAAC,CAAC;YAC7C,uBAAa,CAAC,UAAU,CAAC,CAAC,6CAAiB,CAAC,CAAC;YAC7C,uBAAa,CAAC,UAAU,CAAC,CAAC,gFAAiC,CAAC,CAAC;YAC7D,uBAAa,CAAC,UAAU,CAAC,CAAC,qCAAa,CAAC,CAAC;SAC1C;QACD,WAAW,EAAE;YACX,qDAAwB;YACxB,mDAAuB;YACvB,mDAAuB;YACvB,gCAAc;YACd,kCAAe;YACf,mFAAsC;YACtC,iDAAsB;YACtB,qDAAwB;YACxB,0DAA0B;YAC1B,sCAAiB;YACjB,+CAAqB;YACrB,mDAAuB;YACvB,oDAAwB;YACxB,iEAA8B;YAC9B,2DAA2B;YAC3B,2CAAmB;YACnB,sDAAwB;YACxB,2CAAmB;YACnB,iDAAsB;YACtB,6DAA4B;YAC5B,iDAAsB;YACtB,gCAAc;YACd,sCAAiB;YACjB,iDAAsB;YACtB,0DAA0B;YAC1B,iDAAsB;YACtB,iDAAsB;YACtB,kDAAsB;YACtB,qDAAwB;YACxB,oEAA+B;YAC/B,oCAAgB;YAChB,qDAAwB;YACxB,2DAA2B;YAC3B,2DAA2B;YAC3B,6EAAmC;YACnC,gEAA6B;YAC7B,0CAAmB;YACnB,2DAA2B;YAC3B,2DAA2B;YAC3B,8FAA2C;YAC3C,mDAAuB;SACxB;QACD,SAAS,EAAE;YACT;gBACE,OAAO,EAAE,sBAAe;gBACxB,QAAQ,EAAE,wCAAkB;aAC7B;YACD;gBACE,OAAO,EAAE,gCAAc;gBACvB,QAAQ,EAAE,8BAAa;aACxB;YACD;gBACE,OAAO,EAAE,gBAAS;gBAClB,QAAQ,EAAE,0CAAmB;aAC9B;YACD;gBACE,OAAO,EAAE,gBAAS;gBAClB,QAAQ,EAAE,oCAAgB;aAC3B;YACD;gBACE,OAAO,EAAE,iBAAU;gBACnB,QAAQ,EAAE,2CAAmB;aAC9B;YACD,+CAAqB;YACrB,4DAA2B;YAC3B,6CAAoB;YACpB,0DAA0B;YAC1B,6CAAoB;YACpB,2CAAmB;YACnB,2CAAmB;YACnB,6CAAoB;YACpB,iDAAsB;YACtB,uBAAgB;YAChB,uCAAiB;YACjB,0BAAW;YACX,gBAAS;YACT,sBAAe;YACf,gCAAc;YACd,oCAAgB;YAChB,6EAAmC;YACnC,4BAAY;YACZ,0FAAyC;YACzC,4DAA2B;YAC3B,4CAAmB;YACnB,0EAA6B;YAC7B,mDAAuB;YACvB,2CAAmB;YACnB,+CAAqB;YACrB,oDAAuB;YACvB,uBAAgB;YAChB,gBAAS;YACT,sBAAe;YACf,0BAAW;YACX,8BAAa;YACb,0BAAW;YACX,qCAAgB;YAChB,2CAAmB;YACnB,iCAAe;YACf,iCAAe;YACf,2CAAoB;YACpB,mCAAgB;YAChB,yCAAkB;YAClB,6CAAoB;YACpB,4CAAgB;YAChB,8BAAa;YAEb,yEAA6B;YAC7B,+FAAuC;YAEvC,iFAAiC;YACjC,mFAAkC;YAElC,8DAA+B;YAC/B,gEAAgC;YAChC,uEAA+B;YAC/B,yEAAgC;YAChC,oDAAsB;YACtB,sDAAuB;YACvB,qEAA8B;YAC9B,uEAA+B;YAC/B,yCAAiB;YACjB,2CAAkB;YAClB,0DAAyB;YACzB,4DAA0B;YAC1B,uEAA+B;YAC/B,yEAAgC;YAChC,yCAAiB;YACjB,2CAAkB;YAClB,0DAAyB;YACzB,4DAA0B;YAC1B,mDAAsB;YACtB,qDAAuB;YACvB,oEAA8B;YAC9B,sEAA+B;YAC/B,0DAA0B;YAC1B,sDAAwB;YACxB,iCAAc;YACd,wBAAU;YACV,sFAAmC;YACnC,yEAA6B;YAC7B,wFAAoC;YACpC,oEAA2B;YAC3B,mEAA8B;YAC9B,qCAAgB;YAChB,8CAAqB;YACrB,iEAA8B;YAC9B,iEAA6B;YAC7B,uCAAiB;YACjB,8BAAa;YACb,2CAAmB;YACnB,qDAAwB;YACxB,iDAAkB;YAClB,mDAAmB;YACnB,kEAA0B;YAC1B,oEAA2B;YAC3B,wEAA6B;YAC7B,0EAA8B;YAC9B,gDAAqB;YACrB,qCAAgB;YAChB,2CAAmB;YACnB,wCAAoB;YACpB,uDAAyB;YACzB,2CAAmB;YACnB,oEAA+B;YAC/B,0BAAW;YACX,gCAAc;YACd,oEAA2B;YAC3B,2CAAmB;YACnB,gDAAqB;YACrB,kCAAe;YACf,gDAAqB;YACrB,2CAAmB;YACnB,oDAAuB;YACvB,2CAAmB;YACnB,iDAAsB;YACtB,iDAAsB;YACtB,+CAAqB;YACrB,2CAAmB;YACnB,+CAAqB;YACrB,8DAA4B;YAC5B,8BAAa;YACb,kCAAe;YACf,+CAAqB;YACrB,qDAAwB;YACxB,4BAAY;YACZ,wBAAU;YACV,kCAAe;YACf,qDAAwB;YACxB,uEAAgC;YAChC,+DAA4B;YAC5B,wDAAyB;YACzB,mDAAuB;YACvB,gEAA6B;YAC7B,8EAAgC;YAChC,gFAAiC;YACjC,iFAAiC;YACjC,0DAA0B;YAC1B,oCAAgB;YAChB,qDAAwB;YACxB,qDAAwB;YACxB,qFAAmC;YACnC,uFAAoC;YACpC,mHAAiD;YACjD,mHAAiD;YACjD,wFAAwC;YACxC,0DAAsB;YACtB,uFAAmC;YACnC,oFAAkC;YAClC,8DAA4B;YAC5B,6CAAoB;YACpB,kCAAe;YACf,0CAAmB;YACnB,0CAAmB;YACnB,2DAA2B;YAC3B,2DAA2B;YAC3B,8FAA2C;YAC3C,sFAAuC;YACvC,qGAA0C;YAC1C,sHAAkD;YAClD,yJAAkE;YAClE,kHAAgD;YAChD,mHAAgD;YAChD,uFAAmC;YACnC,iDAAsB;YACtB,wGAA4C;YAC5C,qFAAqC;YACrC,0BAAW;SACZ;QACD,OAAO,EAAE;YACP,+CAAqB;YACrB,6CAAoB;YACpB,6CAAoB;YACpB,6EAAmC;YACnC,4BAAY;YACZ,uBAAgB;YAChB,uCAAiB;YACjB,0BAAW;YACX,+BAAY;YACZ,0BAAW;YACX,8BAAa;YACb,qCAAgB;YAChB,2CAAmB;YACnB,iCAAe;YACf,iCAAe;YACf,mCAAgB;YAChB,2CAAoB;YACpB,iCAAc;YACd,wBAAU;YACV,6CAAoB;YACpB,yCAAkB;YAClB,uCAAiB;YACjB,8CAAqB;YACrB,gDAAqB;YACrB,qCAAgB;YAChB,2CAAmB;YACnB,6CAAoB;YACpB,+CAAqB;YACrB,iDAAsB;YACtB,kCAAe;YACf,wCAAoB;YACpB,0DAA0B;YAC1B,wBAAU;YACV,4BAAY;YACZ,iDAAsB;YACtB,qDAAwB;YACxB,kBAAU;YACV,4CAAmB;YACnB,qBAAY;YACZ,4CAAgB;YAChB,0BAAW;YACX,8BAAa;YACb,6CAAoB;SACrB;KACF,CAAC;GACW,eAAe,CAAI","sourcesContent":["import { Global, Module } from '@nestjs/common';\nimport { ConfigModule, ConfigService } from '@nestjs/config';\nimport {\n APP_FILTER,\n APP_GUARD,\n APP_INTERCEPTOR,\n DiscoveryService,\n MetadataScanner,\n Reflector,\n} from '@nestjs/core';\nimport { MulterModule } from '@nestjs/platform-express';\nimport { TypeOrmModule } from '@nestjs/typeorm';\nimport { RemoveFieldsCommand } from './commands/remove-fields.command';\nimport appBuilderConfig from './config/app-builder.config';\nimport { FieldMetadataController } from './controllers/field-metadata.controller';\nimport { MediaStorageProviderMetadataController } from './controllers/media-storage-provider-metadata.controller';\nimport { ModelMetadataController } from './controllers/model-metadata.controller';\nimport { ModuleMetadataController } from './controllers/module-metadata.controller';\nimport { TestController } from './controllers/test.controller';\nimport { FieldMetadata } from './entities/field-metadata.entity';\nimport { ListOfValues } from './entities/list-of-values.entity';\nimport { MediaStorageProviderMetadata } from './entities/media-storage-provider-metadata.entity';\nimport { Media } from './entities/media.entity';\nimport { ModelMetadata } from './entities/model-metadata.entity';\nimport { ModuleMetadata } from './entities/module-metadata.entity';\nimport { CommandService } from './helpers/command.service';\nimport { SchematicService } from './helpers/schematic.service';\nimport { ListOfValuesSelectionProvider } from './providers/list-of-values-selection-providers.service';\nimport { ModuleMetadataSeederService } from './seeders/module-metadata-seeder.service';\nimport { CrudHelperService } from './services/crud-helper.service';\nimport { FieldMetadataService } from './services/field-metadata.service';\nimport { ListOfValuesService } from './services/list-of-values.service';\nimport { MediaStorageProviderMetadataSeederService } from './services/media-storage-provider-metadata-seeder.service';\nimport { MediaStorageProviderMetadataService } from './services/media-storage-provider-metadata.service';\nimport { MediaService } from './services/media.service';\nimport { ModelMetadataService } from './services/model-metadata.service';\nimport { ModuleMetadataService } from './services/module-metadata.service';\nimport { SolidIntrospectService } from './services/solid-introspect.service';\n// import { ListOfComputedFieldProvider } from './providers/list-of-computed-field-provider.service';\nimport { ServeStaticModule } from '@nestjs/serve-static';\nimport { join } from 'path';\nimport { RefreshModelCommand } from './commands/refresh-model.command';\nimport { MediaController } from './controllers/media.controller';\n\nimport { RefreshModuleCommand } from './commands/refresh-module.command';\nimport { ModelMetadataSubscriber } from './subscribers/model-metadata.subscriber';\n\nimport { ViewMetadataController } from './controllers/view-metadata.controller';\nimport { ViewMetadata } from './entities/view-metadata.entity';\nimport { ViewMetadataService } from './services/view-metadata.service';\n\nimport { ActionMetadataController } from './controllers/action-metadata.controller';\nimport { ActionMetadata } from './entities/action-metadata.entity';\nimport { ActionMetadataService } from './services/action-metadata.service';\n\nimport { HttpModule } from '@nestjs/axios';\nimport { JwtModule } from '@nestjs/jwt';\nimport { SeedCommand } from './commands/seed.command';\nimport commonConfig from './config/common.config';\nimport { iamConfig, jwtConfig } from './config/iam.config';\nimport { AuthenticationController } from './controllers/authentication.controller';\nimport { EmailTemplateController } from './controllers/email-template.controller';\nimport { GoogleAuthenticationController } from './controllers/google-authentication.controller';\nimport { MenuItemMetadataController } from './controllers/menu-item-metadata.controller';\nimport { MqMessageQueueController } from './controllers/mq-message-queue.controller';\nimport { MqMessageController } from './controllers/mq-message.controller';\nimport { OTPAuthenticationController } from './controllers/otp-authentication.controller';\nimport { ServiceController } from './controllers/service.controller';\nimport { SmsTemplateController } from './controllers/sms-template.controller';\nimport { TestQueueController } from './controllers/test-queue.controller';\n// import { UserController } from './controllers/user.controller';\nimport { EmailAttachment } from './entities/email-attachment.entity';\nimport { EmailTemplate } from './entities/email-template.entity';\nimport { MenuItemMetadata } from './entities/menu-item-metadata.entity';\nimport { MqMessageQueue } from './entities/mq-message-queue.entity';\nimport { MqMessage } from './entities/mq-message.entity';\nimport { SmsTemplate } from './entities/sms-template.entity';\nimport { UserPasswordHistory } from './entities/user-password-history.entity';\n// import { User } from './entities/user.entity';\nimport { AccessTokenGuard } from './guards/access-token.guard';\nimport { AuthenticationGuard } from './guards/authentication.guard';\nimport { PermissionsGuard } from './guards/permissions.guard';\nimport { SolidRegistry } from './helpers/solid-registry';\nimport { LoggingInterceptor } from './interceptors/logging.interceptor';\nimport { ApiEmailQueuePublisher } from './jobs/api-email-publisher.service';\nimport { ApiEmailQueueSubscriber } from './jobs/api-email-subscriber.service';\nimport { TestQueuePublisherDatabase } from './jobs/database/test-queue-publisher-database.service';\nimport { TestQueueSubscriberDatabase } from './jobs/database/test-queue-subscriber-database.service';\nimport { SmtpEmailQueuePublisherRabbitmq } from './jobs/smtp-email-publisher.service';\nimport { SmtpEmailQueueSubscriberRabbitmq } from './jobs/smtp-email-subscriber.service';\nimport { OTPQueuePublisher } from './jobs/otp-publisher.service';\nimport { OTPQueueSubscriber } from './jobs/otp-subscriber.service';\nimport { SmsQueuePublisher } from './jobs/sms-publisher.service';\nimport { SmsQueueSubscriber } from './jobs/sms-subscriber.service';\nimport { TestQueuePublisher } from './jobs/test-queue-publisher.service';\nimport { TestQueueSubscriber } from './jobs/test-queue-subscriber.service';\nimport { WhatsappQueuePublisher } from './jobs/whatsapp-publisher.service';\nimport { WhatsappQueueSubscriber } from './jobs/whatsapp-subscriber.service';\nimport { UserRegistrationListener } from './listeners/user-registration.listener';\nimport { GoogleOauthStrategy } from './passport-strategies/google-oauth.strategy';\nimport { LocalStrategy } from './passport-strategies/local.strategy';\nimport { EmailTemplateSeederService } from './seeders/email-template-seeder.service';\nimport { SmsTemplateSeederService } from './seeders/sms-template-seeder.service';\nimport { UserSeederService } from './seeders/user-seeder.service';\nimport { AuthenticationService } from './services/authentication.service';\nimport { BcryptService } from './services/bcrypt.service';\nimport { UuidExternalIdComputedFieldProvider } from './services/computed-fields/uuid-external-id-computed-field-provider.service';\nimport { EmailTemplateService } from './services/email-template.service';\nimport { FileService } from './services/file.service';\nimport { HashingService } from './services/hashing.service';\nimport { ElasticEmailService } from './services/mail/elastic-email.service';\nimport { SMTPEMailService } from './services/mail/smtp-email.service';\nimport { MenuItemMetadataService } from './services/menu-item-metadata.service';\nimport { MqMessageQueueService } from './services/mq-message-queue.service';\nimport { MqMessageService } from './services/mq-message.service';\nimport { PdfService } from './services/pdf.service';\nimport { RefreshTokenIdsStorageService } from './services/refresh-token-ids-storage.service';\nimport { ListOfModelsSelectionProvider } from './services/selection-providers/list-of-models-selection-provider.service';\nimport { TinyUrlService } from './services/short-url/tiny-url.service';\nimport { SmsTemplateService } from './services/sms-template.service';\nimport { Msg91OTPService } from './services/sms/Msg91OTPService';\nimport { Msg91SMSService } from './services/sms/Msg91SMSService';\n// import { UserService } from './services/user.service';\nimport { Msg91WhatsappService } from './services/whatsapp/Msg91WhatsappService';\nimport { SoftDeleteAwareEventSubscriber } from './subscribers/soft-delete-aware-event.subscriber';\n\nimport { PermissionMetadataController } from './controllers/permission-metadata.controller';\nimport { PermissionMetadata } from './entities/permission-metadata.entity';\nimport { PermissionMetadataService } from './services/permission-metadata.service';\n\nimport { ScheduleModule } from '@nestjs/schedule';\nimport { ClsModule } from 'nestjs-cls';\nimport { AiInteractionController } from './controllers/ai-interaction.controller';\nimport { ChatterMessageDetailsController } from './controllers/chatter-message-details.controller';\nimport { ChatterMessageController } from './controllers/chatter-message.controller';\nimport { DashboardQuestionSqlDatasetConfigController } from './controllers/dashboard-question-sql-dataset-config.controller';\nimport { DashboardQuestionController } from './controllers/dashboard-question.controller';\nimport { DashboardVariableController } from './controllers/dashboard-variable.controller';\nimport { DashboardController } from './controllers/dashboard.controller';\nimport { ExportTemplateController } from './controllers/export-template.controller';\nimport { ExportTransactionController } from './controllers/export-transaction.controller';\nimport { ImportTransactionErrorLogController } from './controllers/import-transaction-error-log.controller';\nimport { ImportTransactionController } from './controllers/import-transaction.controller';\nimport { ListOfValuesController } from './controllers/list-of-values.controller';\nimport { LocaleController } from './controllers/locale.controller';\nimport { RoleMetadataController } from './controllers/role-metadata.controller';\nimport { SavedFiltersController } from './controllers/saved-filters.controller';\nimport { ScheduledJobController } from './controllers/scheduled-job.controller';\nimport { SecurityRuleController } from './controllers/security-rule.controller';\nimport { SettingController } from './controllers/setting.controller';\nimport { UserActivityHistoryController } from './controllers/user-activity-history.controller';\nimport { UserViewMetadataController } from './controllers/user-view-metadata.controller';\nimport { UserController } from './controllers/user.controller';\nimport { AiInteraction } from './entities/ai-interaction.entity';\nimport { ChatterMessageDetails } from './entities/chatter-message-details.entity';\nimport { ChatterMessage } from './entities/chatter-message.entity';\nimport { DashboardQuestionSqlDatasetConfig } from './entities/dashboard-question-sql-dataset-config.entity';\nimport { DashboardQuestion } from './entities/dashboard-question.entity';\nimport { DashboardVariable } from './entities/dashboard-variable.entity';\nimport { Dashboard } from './entities/dashboard.entity';\nimport { ExportTemplate } from './entities/export-template.entity';\nimport { ExportTransaction } from './entities/export-transaction.entity';\nimport { ImportTransactionErrorLog } from './entities/import-transaction-error-log.entity';\nimport { ImportTransaction } from './entities/import-transaction.entity';\nimport { Locale } from './entities/locale.entity';\nimport { RoleMetadata } from './entities/role-metadata.entity';\nimport { SavedFilters } from './entities/saved-filters.entity';\nimport { ScheduledJob } from './entities/scheduled-job.entity';\nimport { SecurityRule } from './entities/security-rule.entity';\nimport { Setting } from './entities/setting.entity';\nimport { UserActivityHistory } from './entities/user-activity-history.entity';\nimport { UserViewMetadata } from './entities/user-view-metadata.entity';\nimport { User } from './entities/user.entity';\nimport { HttpExceptionFilter } from './filters/http-exception.filter';\nimport { ModelMetadataHelperService } from './helpers/model-metadata-helper.service';\nimport { ModuleMetadataHelperService } from './helpers/module-metadata-helper.service';\nimport { ApiEmailQueuePublisherDatabase } from './jobs/database/api-email-publisher-database.service';\nimport { ApiEmailQueueSubscriberDatabase } from './jobs/database/api-email-subscriber-database.service';\nimport { ComputedFieldEvaluationPublisher } from './jobs/database/computed-field-evaluation-publisher.service';\nimport { ComputedFieldEvaluationSubscriber } from './jobs/database/computed-field-evaluation-subscriber.service';\nimport { SmtpEmailQueuePublisherDatabase } from './jobs/database/smtp-email-publisher-database.service';\nimport { SmtpEmailQueueSubscriberDatabase } from './jobs/database/smtp-email-subscriber-database.service';\nimport { GenerateCodePublisherDatabase } from './jobs/database/generate-code-publisher-database.service';\nimport { GenerateCodeSubscriberDatabase } from './jobs/database/generate-code-subscriber-database.service';\nimport { OTPQueuePublisherDatabase } from './jobs/database/otp-publisher-database.service';\nimport { OTPQueueSubscriberDatabase } from './jobs/database/otp-subscriber-database.service';\nimport { SmsQueuePublisherDatabase } from './jobs/database/sms-publisher-database.service';\nimport { SmsQueueSubscriberDatabase } from './jobs/database/sms-subscriber-database.service';\n\nimport { TwilioSmsQueuePublisherDatabase } from './jobs/database/twilio-sms-publisher-database.service';\nimport { TwilioSmsQueueSubscriberDatabase } from './jobs/database/twilio-sms-subscriber-database.service';\n\n\nimport { TriggerMcpClientPublisherDatabase } from './jobs/database/trigger-mcp-client-publisher-database.service';\nimport { TriggerMcpClientSubscriberDatabase } from './jobs/database/trigger-mcp-client-subscriber-database.service';\nimport { WhatsappQueuePublisherDatabase } from './jobs/database/whatsapp-publisher-database.service';\nimport { WhatsappQueueSubscriberDatabase } from './jobs/database/whatsapp-subscriber-database.service';\nimport { DashboardMapper } from './mappers/dashboard-mapper';\nimport { DashboardRepository } from './repository/dashboard.repository';\nimport { FieldMetadataRepository } from './repository/field-metadata.repository';\nimport { FieldRepository } from './repository/field.repository';\nimport { MediaRepository } from './repository/media.repository';\nimport { SecurityRuleRepository } from './repository/security-rule.repository';\nimport { PermissionMetadataSeederService } from './seeders/permission-metadata-seeder.service';\nimport { SystemFieldsSeederService } from './seeders/system-fields-seeder.service';\nimport { AiInteractionService } from './services/ai-interaction.service';\nimport { ChatterMessageDetailsService } from './services/chatter-message-details.service';\nimport { ChatterMessageService } from './services/chatter-message.service';\nimport { ConcatComputedFieldProvider } from './services/computed-fields/concat-computed-field-provider.service';\nimport { ConcatEntityComputedFieldProvider } from './services/computed-fields/entity/concat-entity-computed-field-provider.service';\nimport { CRUDService } from './services/crud.service';\nimport { CsvService } from './services/csv.service';\nimport { DashboardQuestionSqlDatasetConfigService } from './services/dashboard-question-sql-dataset-config.service';\nimport { DashboardQuestionService } from './services/dashboard-question.service';\nimport { DashboardVariableSQLDynamicProvider } from './services/dashboard-selection-providers/dashboard-variable-sql-dynamic-provider.service';\nimport { DasbhoardVariableTestDynamicProvider } from './services/dashboard-selection-providers/dashboard-variable-test-dynamic-provider.service';\nimport { DashboardVariableService } from './services/dashboard-variable.service';\nimport { DashboardService } from './services/dashboard.service';\nimport { ExcelService } from './services/excel.service';\nimport { ExportTemplateService } from './services/export-template.service';\nimport { ExportTransactionService } from './services/export-transaction.service';\nimport { ImportTransactionErrorLogService } from './services/import-transaction-error-log.service';\nimport { ImportTransactionService } from './services/import-transaction.service';\nimport { LocaleService } from './services/locale.service';\nimport { McpToolResponseHandlerFactory } from './services/mcp-tool-response-handlers/mcp-tool-response-handler-factory.service';\nimport { SolidCreateDashboardMcpToolResponseHandler } from './services/mcp-tool-response-handlers/solid-create-dashboard-mcp-tool-response-handler.service';\nimport { SolidCreateDashboardQuestionMcpToolResponseHandler } from './services/mcp-tool-response-handlers/solid-create-dashboard-question-mcp-tool-response-handler.service';\nimport { SolidCreateDashboardQuestionSqlDatasetConfigMcpToolResponseHandler } from './services/mcp-tool-response-handlers/solid-create-dashboard-question-sql-dataset-config-mcp-tool-response-handler.service';\nimport { SolidCreateModuleMcpToolResponseHandler } from './services/mcp-tool-response-handlers/solid-create-module-mcp-tool-response-handler.service';\nimport { FileS3StorageProvider } from './services/mediaStorageProviders/file-s3-storage-provider';\nimport { FileStorageProvider } from './services/mediaStorageProviders/file-storage-provider';\nimport { ChartJsSqlDataProvider } from './services/question-data-providers/chartjs-sql-data-provider.service';\nimport { PrimeReactDatatableSqlDataProvider } from './services/question-data-providers/prime-react-datatable-sql-data-provider.service';\nimport { PrimeReactMeterGroupSqlDataProvider } from './services/question-data-providers/prime-react-meter-group-sql-data-provider.service';\nimport { PublisherFactory } from './services/queues/publisher-factory.service';\nimport { RequestContextService } from './services/request-context.service';\nimport { RoleMetadataService } from './services/role-metadata.service';\nimport { SavedFiltersService } from './services/saved-filters.service';\nimport { ScheduledJobService } from './services/scheduled-job.service';\nimport { SchedulerServiceImpl } from './services/scheduled-jobs/scheduler.service';\nimport { SecurityRuleService } from './services/security-rule.service';\nimport { ListOfDashboardQuestionProvidersSelectionProvider } from './services/selection-providers/list-of-dashboard-question-providers-selection-provider.service';\nimport { ListOfDashboardVariableProvidersSelectionProvider } from './services/selection-providers/list-of-dashboard-variable-providers-selection-provider.service';\nimport { ListOfScheduledJobsSelectionProvider } from './services/selection-providers/list-of-scheduled-jobs-selection-provider.service';\nimport { LocaleListSelectionProvider } from './services/selection-providers/locale-list-selection-provider.service';\nimport { SettingService } from './services/setting.service';\nimport { SqlExpressionResolverService } from './services/sql-expression-resolver.service';\nimport { UserActivityHistoryService } from './services/user-activity-history.service';\nimport { UserViewMetadataService } from './services/user-view-metadata.service';\nimport { UserService } from './services/user.service';\nimport { AuditSubscriber } from './subscribers/audit.subscriber';\nimport { ComputedEntityFieldSubscriber } from './subscribers/computed-entity-field.subscriber';\nimport { CreatedByUpdatedBySubscriber } from './subscribers/created-by-updated-by.subscriber';\nimport { DashboardQuestionSqlDatasetConfigSubscriber } from './subscribers/dashboard-question-sql-dataset-config.subscriber';\nimport { DashboardQuestionSubscriber } from './subscribers/dashboard-question.subscriber';\nimport { DashboardVariableSubscriber } from './subscribers/dashboard-variable.subscriber';\nimport { DashboardSubscriber } from './subscribers/dashboard.subscriber';\nimport { SecurityRuleSubscriber } from './subscribers/security-rule.subscriber';\nimport { ViewMetadataSubsciber } from './subscribers/view-metadata.subscriber';\nimport { SolidCreateDashboardWidgetMcpToolResponseHandler } from './services/mcp-tool-response-handlers/solid-create-dashboard-widget-mcp-tool-response-handler.service';\nimport { SolidCreateModelWithFieldsMcpToolResponseHandler } from './services/mcp-tool-response-handlers/solid-create-model-with-fields-mcp-tool-response-handler.service';\nimport { SolidAddFieldMcpToolResponseHandler } from './services/mcp-tool-response-handlers/solid-add-field-mcp-tool-response-handler.service';\nimport { ViewMetadataRepository } from './repository/view-metadata.repository';\nimport { SolidCreateModelLayoutMcpToolResponseHandler } from './services/mcp-tool-response-handlers/solid-save-model-layout-mcp-tool-response-handler.service';\nimport { NoopsEntityComputedFieldProviderService } from './services/computed-fields/entity/noops-entity-computed-field-provider.service';\nimport { AlphaNumExternalIdComputationProvider } from './services/computed-fields/entity/alpha-num-external-id-computed-field-provider';\nimport { MailFactory } from './factories/mail.factory';\nimport { TwilioSMSService } from './services/sms/TwilioSMSService';\nimport { PollerService } from './services/poller.service';\n\n\n@Global()\n@Module({\n imports: [\n TypeOrmModule.forFeature([\n ModelMetadata,\n FieldMetadata,\n ModuleMetadata,\n ListOfValues,\n MediaStorageProviderMetadata,\n Media,\n EmailTemplate,\n SmsTemplate,\n EmailAttachment,\n User,\n UserPasswordHistory,\n ViewMetadata,\n ActionMetadata,\n MenuItemMetadata,\n MqMessageQueue,\n MqMessage,\n ScheduledJob,\n PermissionMetadata,\n RoleMetadata,\n Setting,\n SavedFilters,\n UserViewMetadata,\n SecurityRule,\n ListOfValues,\n ChatterMessage,\n ChatterMessageDetails,\n Locale,\n ExportTemplate,\n ExportTransaction,\n ImportTransaction,\n ImportTransactionErrorLog,\n UserActivityHistory,\n AiInteraction,\n ]),\n ConfigModule.forFeature(appBuilderConfig),\n ConfigModule.forFeature(commonConfig),\n ConfigModule.forFeature(iamConfig),\n ConfigModule.forFeature(jwtConfig),\n JwtModule.registerAsync(jwtConfig.asProvider()),\n ScheduleModule.forRoot(),\n ServeStaticModule.forRoot({\n rootPath: join(process.cwd(), 'media-files-storage'),\n serveRoot: '/media-files-storage',\n }),\n MulterModule.registerAsync({\n imports: [ConfigModule],\n useFactory: async (configService: ConfigService) => ({\n dest: configService.get<string>('app-builder.uploadDir'),\n }),\n inject: [ConfigService],\n }),\n HttpModule,\n ConfigModule,\n ClsModule,\n TypeOrmModule.forFeature([Dashboard]),\n TypeOrmModule.forFeature([DashboardVariable]),\n TypeOrmModule.forFeature([DashboardQuestion]),\n TypeOrmModule.forFeature([DashboardQuestionSqlDatasetConfig]),\n TypeOrmModule.forFeature([AiInteraction]),\n ],\n controllers: [\n ModuleMetadataController,\n ModelMetadataController,\n FieldMetadataController,\n TestController,\n MediaController,\n MediaStorageProviderMetadataController,\n ViewMetadataController,\n ActionMetadataController,\n MenuItemMetadataController,\n ServiceController,\n SmsTemplateController,\n EmailTemplateController,\n AuthenticationController,\n GoogleAuthenticationController,\n OTPAuthenticationController,\n TestQueueController,\n MqMessageQueueController,\n MqMessageController,\n ScheduledJobController,\n PermissionMetadataController,\n RoleMetadataController,\n UserController,\n SettingController,\n SavedFiltersController,\n UserViewMetadataController,\n SecurityRuleController,\n SavedFiltersController,\n ListOfValuesController,\n ChatterMessageController,\n ChatterMessageDetailsController,\n LocaleController,\n ExportTemplateController,\n ExportTransactionController,\n ImportTransactionController,\n ImportTransactionErrorLogController,\n UserActivityHistoryController,\n DashboardController,\n DashboardVariableController,\n DashboardQuestionController,\n DashboardQuestionSqlDatasetConfigController,\n AiInteractionController,\n ],\n providers: [\n {\n provide: APP_INTERCEPTOR,\n useClass: LoggingInterceptor,\n },\n {\n provide: HashingService,\n useClass: BcryptService,\n },\n {\n provide: APP_GUARD,\n useClass: AuthenticationGuard,\n },\n {\n provide: APP_GUARD,\n useClass: PermissionsGuard,\n },\n {\n provide: APP_FILTER,\n useClass: HttpExceptionFilter\n },\n ModuleMetadataService,\n ModuleMetadataHelperService,\n ModelMetadataService,\n ModelMetadataHelperService,\n FieldMetadataService,\n RemoveFieldsCommand,\n RefreshModelCommand,\n RefreshModuleCommand,\n SolidIntrospectService,\n DiscoveryService,\n CrudHelperService,\n CRUDService,\n Reflector,\n MetadataScanner,\n CommandService,\n SchematicService,\n MediaStorageProviderMetadataService,\n MediaService,\n MediaStorageProviderMetadataSeederService,\n ModuleMetadataSeederService,\n ListOfValuesService,\n ListOfValuesSelectionProvider,\n ModelMetadataSubscriber,\n ViewMetadataService,\n ActionMetadataService,\n MenuItemMetadataService,\n DiscoveryService,\n Reflector,\n MetadataScanner,\n FileService,\n SolidRegistry,\n SeedCommand,\n SMTPEMailService,\n ElasticEmailService,\n Msg91SMSService,\n Msg91OTPService,\n Msg91WhatsappService,\n TwilioSMSService,\n SmsTemplateService,\n EmailTemplateService,\n PublisherFactory,\n PollerService,\n\n McpToolResponseHandlerFactory,\n SolidCreateModuleMcpToolResponseHandler,\n\n TriggerMcpClientPublisherDatabase,\n TriggerMcpClientSubscriberDatabase,\n\n SmtpEmailQueuePublisherRabbitmq,\n SmtpEmailQueueSubscriberRabbitmq,\n SmtpEmailQueuePublisherDatabase,\n SmtpEmailQueueSubscriberDatabase,\n ApiEmailQueuePublisher,\n ApiEmailQueueSubscriber,\n ApiEmailQueuePublisherDatabase,\n ApiEmailQueueSubscriberDatabase,\n SmsQueuePublisher,\n SmsQueueSubscriber,\n SmsQueuePublisherDatabase,\n SmsQueueSubscriberDatabase,\n TwilioSmsQueuePublisherDatabase,\n TwilioSmsQueueSubscriberDatabase,\n OTPQueuePublisher,\n OTPQueueSubscriber,\n OTPQueuePublisherDatabase,\n OTPQueueSubscriberDatabase,\n WhatsappQueuePublisher,\n WhatsappQueueSubscriber,\n WhatsappQueuePublisherDatabase,\n WhatsappQueueSubscriberDatabase,\n EmailTemplateSeederService,\n SmsTemplateSeederService,\n TinyUrlService,\n PdfService,\n UuidExternalIdComputedFieldProvider,\n ListOfModelsSelectionProvider,\n ListOfScheduledJobsSelectionProvider,\n LocaleListSelectionProvider,\n SoftDeleteAwareEventSubscriber,\n AccessTokenGuard,\n AuthenticationService,\n GoogleAuthenticationController,\n RefreshTokenIdsStorageService,\n UserSeederService,\n LocalStrategy,\n GoogleOauthStrategy,\n UserRegistrationListener,\n TestQueuePublisher,\n TestQueueSubscriber,\n TestQueuePublisherDatabase,\n TestQueueSubscriberDatabase,\n GenerateCodePublisherDatabase,\n GenerateCodeSubscriberDatabase,\n MqMessageQueueService,\n MqMessageService,\n ScheduledJobService,\n SchedulerServiceImpl,\n PermissionMetadataService,\n RoleMetadataService,\n PermissionMetadataSeederService,\n UserService,\n SettingService,\n ConcatComputedFieldProvider,\n FileStorageProvider,\n FileS3StorageProvider,\n MediaRepository,\n ViewMetadataSubsciber,\n SavedFiltersService,\n UserViewMetadataService,\n SecurityRuleService,\n SecurityRuleRepository,\n SecurityRuleSubscriber,\n RequestContextService,\n SavedFiltersService,\n ChatterMessageService,\n ChatterMessageDetailsService,\n LocaleService,\n AuditSubscriber,\n ExportTemplateService,\n ExportTransactionService,\n ExcelService,\n CsvService,\n FieldRepository,\n ImportTransactionService,\n ImportTransactionErrorLogService,\n CreatedByUpdatedBySubscriber,\n SystemFieldsSeederService,\n FieldMetadataRepository,\n ComputedEntityFieldSubscriber,\n ComputedFieldEvaluationPublisher,\n ComputedFieldEvaluationSubscriber,\n ConcatEntityComputedFieldProvider,\n UserActivityHistoryService,\n DashboardService,\n DashboardVariableService,\n DashboardQuestionService,\n DashboardVariableSQLDynamicProvider,\n DasbhoardVariableTestDynamicProvider,\n ListOfDashboardVariableProvidersSelectionProvider,\n ListOfDashboardQuestionProvidersSelectionProvider,\n DashboardQuestionSqlDatasetConfigService,\n ChartJsSqlDataProvider,\n PrimeReactMeterGroupSqlDataProvider,\n PrimeReactDatatableSqlDataProvider,\n SqlExpressionResolverService,\n AiInteractionService,\n DashboardMapper,\n DashboardRepository,\n DashboardSubscriber,\n DashboardVariableSubscriber,\n DashboardQuestionSubscriber,\n DashboardQuestionSqlDatasetConfigSubscriber,\n NoopsEntityComputedFieldProviderService,\n SolidCreateDashboardMcpToolResponseHandler,\n SolidCreateDashboardQuestionMcpToolResponseHandler,\n SolidCreateDashboardQuestionSqlDatasetConfigMcpToolResponseHandler,\n SolidCreateDashboardWidgetMcpToolResponseHandler,\n SolidCreateModelWithFieldsMcpToolResponseHandler,\n SolidAddFieldMcpToolResponseHandler,\n ViewMetadataRepository,\n SolidCreateModelLayoutMcpToolResponseHandler,\n AlphaNumExternalIdComputationProvider,\n MailFactory,\n ],\n exports: [\n ModuleMetadataService,\n ModelMetadataService,\n FieldMetadataService,\n MediaStorageProviderMetadataService,\n MediaService,\n DiscoveryService,\n CrudHelperService,\n CRUDService,\n MulterModule,\n FileService,\n SolidRegistry,\n SMTPEMailService,\n ElasticEmailService,\n Msg91SMSService,\n Msg91OTPService,\n TwilioSMSService,\n Msg91WhatsappService,\n TinyUrlService,\n PdfService,\n EmailTemplateService,\n SmsTemplateService,\n UserSeederService,\n AuthenticationService,\n MqMessageQueueService,\n MqMessageService,\n RefreshModelCommand,\n RefreshModuleCommand,\n RequestContextService,\n SecurityRuleRepository,\n FieldRepository,\n SchedulerServiceImpl,\n UserActivityHistoryService,\n CsvService,\n ExcelService,\n SolidIntrospectService,\n ImportTransactionService,\n HttpModule,\n ListOfValuesService,\n ConfigModule,\n PublisherFactory,\n MailFactory,\n PollerService,\n AiInteractionService,\n ],\n})\nexport class SolidCoreModule { }\n"]}