@solidstarters/solid-core 1.2.135 → 1.2.137

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 (215) hide show
  1. package/dist/controllers/ai-interaction.controller.d.ts +3 -1
  2. package/dist/controllers/ai-interaction.controller.d.ts.map +1 -1
  3. package/dist/controllers/ai-interaction.controller.js +27 -3
  4. package/dist/controllers/ai-interaction.controller.js.map +1 -1
  5. package/dist/controllers/dashboard-question-sql-dataset-config.controller.d.ts +43 -0
  6. package/dist/controllers/dashboard-question-sql-dataset-config.controller.d.ts.map +1 -0
  7. package/dist/controllers/{question-sql-dataset-config.controller.js → dashboard-question-sql-dataset-config.controller.js} +30 -30
  8. package/dist/controllers/dashboard-question-sql-dataset-config.controller.js.map +1 -0
  9. package/dist/controllers/dashboard-question.controller.d.ts +45 -0
  10. package/dist/controllers/dashboard-question.controller.d.ts.map +1 -0
  11. package/dist/controllers/{question.controller.js → dashboard-question.controller.js} +31 -31
  12. package/dist/controllers/dashboard-question.controller.js.map +1 -0
  13. package/dist/dtos/{create-question-sql-dataset-config.dto.d.ts → create-dashboard-question-sql-dataset-config.dto.d.ts} +2 -2
  14. package/dist/dtos/create-dashboard-question-sql-dataset-config.dto.d.ts.map +1 -0
  15. package/dist/dtos/{create-question-sql-dataset-config.dto.js → create-dashboard-question-sql-dataset-config.dto.js} +13 -13
  16. package/dist/dtos/create-dashboard-question-sql-dataset-config.dto.js.map +1 -0
  17. package/dist/dtos/create-dashboard-question.dto.d.ts +17 -0
  18. package/dist/dtos/create-dashboard-question.dto.d.ts.map +1 -0
  19. package/dist/dtos/{create-question.dto.js → create-dashboard-question.dto.js} +25 -19
  20. package/dist/dtos/create-dashboard-question.dto.js.map +1 -0
  21. package/dist/dtos/create-dashboard.dto.d.ts +2 -2
  22. package/dist/dtos/create-dashboard.dto.d.ts.map +1 -1
  23. package/dist/dtos/create-dashboard.dto.js +3 -3
  24. package/dist/dtos/create-dashboard.dto.js.map +1 -1
  25. package/dist/dtos/{update-question-sql-dataset-config.dto.d.ts → update-dashboard-question-sql-dataset-config.dto.d.ts} +2 -2
  26. package/dist/dtos/update-dashboard-question-sql-dataset-config.dto.d.ts.map +1 -0
  27. package/dist/dtos/{update-question-sql-dataset-config.dto.js → update-dashboard-question-sql-dataset-config.dto.js} +14 -14
  28. package/dist/dtos/update-dashboard-question-sql-dataset-config.dto.js.map +1 -0
  29. package/dist/dtos/update-dashboard-question.dto.d.ts +18 -0
  30. package/dist/dtos/update-dashboard-question.dto.d.ts.map +1 -0
  31. package/dist/dtos/{update-question.dto.js → update-dashboard-question.dto.js} +26 -20
  32. package/dist/dtos/update-dashboard-question.dto.js.map +1 -0
  33. package/dist/dtos/update-dashboard.dto.d.ts +2 -2
  34. package/dist/dtos/update-dashboard.dto.d.ts.map +1 -1
  35. package/dist/dtos/update-dashboard.dto.js +3 -3
  36. package/dist/dtos/update-dashboard.dto.js.map +1 -1
  37. package/dist/entities/dashboard-question-sql-dataset-config.entity.d.ts +13 -0
  38. package/dist/entities/dashboard-question-sql-dataset-config.entity.d.ts.map +1 -0
  39. package/dist/entities/{question-sql-dataset-config.entity.js → dashboard-question-sql-dataset-config.entity.js} +19 -19
  40. package/dist/entities/dashboard-question-sql-dataset-config.entity.js.map +1 -0
  41. package/dist/entities/dashboard-question.entity.d.ts +16 -0
  42. package/dist/entities/dashboard-question.entity.d.ts.map +1 -0
  43. package/dist/entities/{question.entity.js → dashboard-question.entity.js} +23 -19
  44. package/dist/entities/dashboard-question.entity.js.map +1 -0
  45. package/dist/entities/dashboard.entity.d.ts +2 -2
  46. package/dist/entities/dashboard.entity.d.ts.map +1 -1
  47. package/dist/entities/dashboard.entity.js +3 -3
  48. package/dist/entities/dashboard.entity.js.map +1 -1
  49. package/dist/index.d.ts +7 -2
  50. package/dist/index.d.ts.map +1 -1
  51. package/dist/index.js +7 -2
  52. package/dist/index.js.map +1 -1
  53. package/dist/interfaces.d.ts +21 -2
  54. package/dist/interfaces.d.ts.map +1 -1
  55. package/dist/interfaces.js.map +1 -1
  56. package/dist/jobs/database/trigger-mcp-client-publisher-database.service.d.ts +11 -0
  57. package/dist/jobs/database/trigger-mcp-client-publisher-database.service.d.ts.map +1 -0
  58. package/dist/jobs/database/trigger-mcp-client-publisher-database.service.js +39 -0
  59. package/dist/jobs/database/trigger-mcp-client-publisher-database.service.js.map +1 -0
  60. package/dist/jobs/database/trigger-mcp-client-queue-options.d.ts +8 -0
  61. package/dist/jobs/database/trigger-mcp-client-queue-options.d.ts.map +1 -0
  62. package/dist/jobs/database/trigger-mcp-client-queue-options.js +10 -0
  63. package/dist/jobs/database/trigger-mcp-client-queue-options.js.map +1 -0
  64. package/dist/jobs/database/trigger-mcp-client-subscriber-database.service.d.ts +16 -0
  65. package/dist/jobs/database/trigger-mcp-client-subscriber-database.service.d.ts.map +1 -0
  66. package/dist/jobs/database/trigger-mcp-client-subscriber-database.service.js +91 -0
  67. package/dist/jobs/database/trigger-mcp-client-subscriber-database.service.js.map +1 -0
  68. package/dist/repository/dashboard.repository.d.ts +1 -3
  69. package/dist/repository/dashboard.repository.d.ts.map +1 -1
  70. package/dist/repository/dashboard.repository.js +42 -37
  71. package/dist/repository/dashboard.repository.js.map +1 -1
  72. package/dist/seeders/seed-data/solid-core-metadata.json +88 -131
  73. package/dist/services/ai-interaction.service.d.ts +13 -2
  74. package/dist/services/ai-interaction.service.d.ts.map +1 -1
  75. package/dist/services/ai-interaction.service.js +84 -19
  76. package/dist/services/ai-interaction.service.js.map +1 -1
  77. package/dist/services/chatter-message.service.d.ts.map +1 -1
  78. package/dist/services/chatter-message.service.js +8 -6
  79. package/dist/services/chatter-message.service.js.map +1 -1
  80. package/dist/services/{question-sql-dataset-config.service.d.ts → dashboard-question-sql-dataset-config.service.d.ts} +5 -5
  81. package/dist/services/dashboard-question-sql-dataset-config.service.d.ts.map +1 -0
  82. package/dist/services/{question-sql-dataset-config.service.js → dashboard-question-sql-dataset-config.service.js} +9 -9
  83. package/dist/services/dashboard-question-sql-dataset-config.service.js.map +1 -0
  84. package/dist/services/{question.service.d.ts → dashboard-question.service.d.ts} +5 -5
  85. package/dist/services/dashboard-question.service.d.ts.map +1 -0
  86. package/dist/services/{question.service.js → dashboard-question.service.js} +10 -10
  87. package/dist/services/dashboard-question.service.js.map +1 -0
  88. package/dist/services/field-metadata.service.d.ts.map +1 -1
  89. package/dist/services/field-metadata.service.js +1 -0
  90. package/dist/services/field-metadata.service.js.map +1 -1
  91. package/dist/services/import-transaction.service.d.ts +3 -1
  92. package/dist/services/import-transaction.service.d.ts.map +1 -1
  93. package/dist/services/import-transaction.service.js +22 -0
  94. package/dist/services/import-transaction.service.js.map +1 -1
  95. package/dist/services/list-of-values.service.d.ts +1 -0
  96. package/dist/services/list-of-values.service.d.ts.map +1 -1
  97. package/dist/services/list-of-values.service.js +3 -0
  98. package/dist/services/list-of-values.service.js.map +1 -1
  99. package/dist/services/mcp-tool-response-handlers/mcp-tool-response-handler-factory.service.d.ts +9 -0
  100. package/dist/services/mcp-tool-response-handlers/mcp-tool-response-handler-factory.service.d.ts.map +1 -0
  101. package/dist/services/mcp-tool-response-handlers/mcp-tool-response-handler-factory.service.js +40 -0
  102. package/dist/services/mcp-tool-response-handlers/mcp-tool-response-handler-factory.service.js.map +1 -0
  103. package/dist/services/mcp-tool-response-handlers/solid-create-module-mcp-tool-response-handler.service.d.ts +11 -0
  104. package/dist/services/mcp-tool-response-handlers/solid-create-module-mcp-tool-response-handler.service.d.ts.map +1 -0
  105. package/dist/services/mcp-tool-response-handlers/solid-create-module-mcp-tool-response-handler.service.js +46 -0
  106. package/dist/services/mcp-tool-response-handlers/solid-create-module-mcp-tool-response-handler.service.js.map +1 -0
  107. package/dist/services/module-metadata.service.d.ts.map +1 -1
  108. package/dist/services/module-metadata.service.js.map +1 -1
  109. package/dist/services/question-data-providers/chartjs-sql-data-provider.service.d.ts +2 -2
  110. package/dist/services/question-data-providers/chartjs-sql-data-provider.service.d.ts.map +1 -1
  111. package/dist/services/question-data-providers/chartjs-sql-data-provider.service.js +11 -7
  112. package/dist/services/question-data-providers/chartjs-sql-data-provider.service.js.map +1 -1
  113. package/dist/services/question-data-providers/helpers.d.ts +5 -2
  114. package/dist/services/question-data-providers/helpers.d.ts.map +1 -1
  115. package/dist/services/question-data-providers/helpers.js +18 -3
  116. package/dist/services/question-data-providers/helpers.js.map +1 -1
  117. package/dist/services/question-data-providers/prime-react-datatable-sql-data-provider.service.d.ts +2 -2
  118. package/dist/services/question-data-providers/prime-react-datatable-sql-data-provider.service.d.ts.map +1 -1
  119. package/dist/services/question-data-providers/prime-react-datatable-sql-data-provider.service.js +10 -4
  120. package/dist/services/question-data-providers/prime-react-datatable-sql-data-provider.service.js.map +1 -1
  121. package/dist/services/question-data-providers/prime-react-meter-group-sql-data-provider.service.d.ts +2 -2
  122. package/dist/services/question-data-providers/prime-react-meter-group-sql-data-provider.service.d.ts.map +1 -1
  123. package/dist/services/question-data-providers/prime-react-meter-group-sql-data-provider.service.js +11 -3
  124. package/dist/services/question-data-providers/prime-react-meter-group-sql-data-provider.service.js.map +1 -1
  125. package/dist/services/queues/publisher-factory.service.js +1 -1
  126. package/dist/services/queues/publisher-factory.service.js.map +1 -1
  127. package/dist/services/scheduled-jobs/scheduled-job.interface.d.ts +1 -1
  128. package/dist/services/scheduled-jobs/scheduled-job.interface.d.ts.map +1 -1
  129. package/dist/services/scheduled-jobs/scheduled-job.interface.js.map +1 -1
  130. package/dist/services/scheduled-jobs/scheduler.service.js +1 -6
  131. package/dist/services/scheduled-jobs/scheduler.service.js.map +1 -1
  132. package/dist/solid-core.module.d.ts.map +1 -1
  133. package/dist/solid-core.module.js +56 -39
  134. package/dist/solid-core.module.js.map +1 -1
  135. package/dist/subscribers/{question-sql-dataset-config.subscriber.d.ts → dashboard-question-sql-dataset-config.subscriber.d.ts} +6 -6
  136. package/dist/subscribers/dashboard-question-sql-dataset-config.subscriber.d.ts.map +1 -0
  137. package/dist/subscribers/{question-sql-dataset-config.subscriber.js → dashboard-question-sql-dataset-config.subscriber.js} +10 -10
  138. package/dist/subscribers/dashboard-question-sql-dataset-config.subscriber.js.map +1 -0
  139. package/dist/subscribers/{question.subscriber.d.ts → dashboard-question.subscriber.d.ts} +7 -7
  140. package/dist/subscribers/dashboard-question.subscriber.d.ts.map +1 -0
  141. package/dist/subscribers/{question.subscriber.js → dashboard-question.subscriber.js} +8 -8
  142. package/dist/subscribers/dashboard-question.subscriber.js.map +1 -0
  143. package/dist/tsconfig.tsbuildinfo +1 -1
  144. package/package.json +1 -1
  145. package/src/controllers/ai-interaction.controller.ts +14 -2
  146. package/src/controllers/{question-sql-dataset-config.controller.ts → dashboard-question-sql-dataset-config.controller.ts} +10 -10
  147. package/src/controllers/{question.controller.ts → dashboard-question.controller.ts} +10 -10
  148. package/src/dtos/{create-question-sql-dataset-config.dto.ts → create-dashboard-question-sql-dataset-config.dto.ts} +1 -1
  149. package/src/dtos/{create-question.dto.ts → create-dashboard-question.dto.ts} +9 -4
  150. package/src/dtos/create-dashboard.dto.ts +3 -3
  151. package/src/dtos/{update-question-sql-dataset-config.dto.ts → update-dashboard-question-sql-dataset-config.dto.ts} +1 -1
  152. package/src/dtos/{update-question.dto.ts → update-dashboard-question.dto.ts} +9 -4
  153. package/src/dtos/update-dashboard.dto.ts +3 -3
  154. package/src/entities/{question-sql-dataset-config.entity.ts → dashboard-question-sql-dataset-config.entity.ts} +5 -5
  155. package/src/entities/{question.entity.ts → dashboard-question.entity.ts} +8 -5
  156. package/src/entities/dashboard.entity.ts +3 -3
  157. package/src/index.ts +7 -4
  158. package/src/interfaces.ts +24 -2
  159. package/src/jobs/database/trigger-mcp-client-publisher-database.service.ts +22 -0
  160. package/src/jobs/database/trigger-mcp-client-queue-options.ts +9 -0
  161. package/src/jobs/database/trigger-mcp-client-subscriber-database.service.ts +89 -0
  162. package/src/repository/dashboard.repository.ts +54 -53
  163. package/src/seeders/seed-data/solid-core-metadata.json +88 -131
  164. package/src/services/ai-interaction.service.ts +117 -33
  165. package/src/services/chatter-message.service.ts +12 -6
  166. package/src/services/{question-sql-dataset-config.service.ts → dashboard-question-sql-dataset-config.service.ts} +5 -5
  167. package/src/services/{question.service.ts → dashboard-question.service.ts} +6 -6
  168. package/src/services/field-metadata.service.ts +1 -0
  169. package/src/services/import-transaction.service.ts +29 -1
  170. package/src/services/list-of-values.service.ts +5 -0
  171. package/src/services/mcp-tool-response-handlers/mcp-tool-response-handler-factory.service.ts +36 -0
  172. package/src/services/mcp-tool-response-handlers/solid-create-module-mcp-tool-response-handler.service.ts +52 -0
  173. package/src/services/module-metadata.service.ts +0 -5
  174. package/src/services/question-data-providers/chartjs-sql-data-provider.service.ts +14 -10
  175. package/src/services/question-data-providers/helpers.ts +23 -4
  176. package/src/services/question-data-providers/prime-react-datatable-sql-data-provider.service.ts +12 -6
  177. package/src/services/question-data-providers/prime-react-meter-group-sql-data-provider.service.ts +14 -5
  178. package/src/services/question-data-providers/test.sql +1 -0
  179. package/src/services/queues/publisher-factory.service.ts +1 -1
  180. package/src/services/scheduled-jobs/scheduled-job.interface.ts +1 -1
  181. package/src/services/scheduled-jobs/scheduler.service.ts +6 -6
  182. package/src/solid-core.module.ts +59 -39
  183. package/src/subscribers/{question-sql-dataset-config.subscriber.ts → dashboard-question-sql-dataset-config.subscriber.ts} +8 -10
  184. package/src/subscribers/{question.subscriber.ts → dashboard-question.subscriber.ts} +7 -10
  185. package/dist/controllers/question-sql-dataset-config.controller.d.ts +0 -43
  186. package/dist/controllers/question-sql-dataset-config.controller.d.ts.map +0 -1
  187. package/dist/controllers/question-sql-dataset-config.controller.js.map +0 -1
  188. package/dist/controllers/question.controller.d.ts +0 -45
  189. package/dist/controllers/question.controller.d.ts.map +0 -1
  190. package/dist/controllers/question.controller.js.map +0 -1
  191. package/dist/dtos/create-question-sql-dataset-config.dto.d.ts.map +0 -1
  192. package/dist/dtos/create-question-sql-dataset-config.dto.js.map +0 -1
  193. package/dist/dtos/create-question.dto.d.ts +0 -16
  194. package/dist/dtos/create-question.dto.d.ts.map +0 -1
  195. package/dist/dtos/create-question.dto.js.map +0 -1
  196. package/dist/dtos/update-question-sql-dataset-config.dto.d.ts.map +0 -1
  197. package/dist/dtos/update-question-sql-dataset-config.dto.js.map +0 -1
  198. package/dist/dtos/update-question.dto.d.ts +0 -17
  199. package/dist/dtos/update-question.dto.d.ts.map +0 -1
  200. package/dist/dtos/update-question.dto.js.map +0 -1
  201. package/dist/entities/question-sql-dataset-config.entity.d.ts +0 -13
  202. package/dist/entities/question-sql-dataset-config.entity.d.ts.map +0 -1
  203. package/dist/entities/question-sql-dataset-config.entity.js.map +0 -1
  204. package/dist/entities/question.entity.d.ts +0 -15
  205. package/dist/entities/question.entity.d.ts.map +0 -1
  206. package/dist/entities/question.entity.js.map +0 -1
  207. package/dist/services/question-sql-dataset-config.service.d.ts.map +0 -1
  208. package/dist/services/question-sql-dataset-config.service.js.map +0 -1
  209. package/dist/services/question.service.d.ts.map +0 -1
  210. package/dist/services/question.service.js.map +0 -1
  211. package/dist/subscribers/question-sql-dataset-config.subscriber.d.ts.map +0 -1
  212. package/dist/subscribers/question-sql-dataset-config.subscriber.js.map +0 -1
  213. package/dist/subscribers/question.subscriber.d.ts.map +0 -1
  214. package/dist/subscribers/question.subscriber.js.map +0 -1
  215. package/src/services/1. Create a context menu option i.py +0 -12
@@ -1 +1 @@
1
- {"version":3,"file":"interfaces.d.ts","sourceRoot":"","sources":["../src/interfaces.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"interfaces.d.ts","sourceRoot":"","sources":["../src/interfaces.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"interfaces.js","sourceRoot":"","sources":["../src/interfaces.ts"],"names":[],"mappings":";;;AAgIA,IAAY,SAEX;AAFD,WAAY,SAAS;IACnB,gDAAmC,CAAA;AACrC,CAAC,EAFW,SAAS,yBAAT,SAAS,QAEpB;AAED,MAAa,YAAY;IACvB,YACS,IAAS,EACT,OAAU;QADV,SAAI,GAAJ,IAAI,CAAK;QACT,YAAO,GAAP,OAAO,CAAG;IACf,CAAC;CACN;AALD,oCAKC;AAmDD,IAAY,UAGX;AAHD,WAAY,UAAU;IACpB,mCAAqB,CAAA;IACrB,mCAAqB,CAAA;AACvB,CAAC,EAHW,UAAU,0BAAV,UAAU,QAGrB","sourcesContent":["import { CreateEmailTemplateDto } from 'src/dtos/create-email-template.dto';\nimport { CreateSmsTemplateDto } from 'src/dtos/create-sms-template.dto';\nimport { SignUpDto } from 'src/dtos/sign-up.dto';\nimport { Readable } from 'stream';\nimport { CreateMediaStorageProviderMetadataDto } from './dtos/create-media-storage-provider-metadata.dto';\nimport { DatasourceType } from './dtos/create-model-metadata.dto';\nimport { CreateModuleMetadataDto } from './dtos/create-module-metadata.dto';\nimport { CreateRoleMetadataDto } from './dtos/create-role-metadata.dto';\nimport { CreateSecurityRuleDto } from './dtos/create-security-rule.dto';\nimport { FieldMetadata } from './entities/field-metadata.entity';\nimport { Media } from './entities/media.entity';\nimport { Question } from './entities/question.entity';\nimport { ComputedFieldMetadata } from './helpers/solid-registry';\nimport { SqlExpression } from './services/question-data-providers/chartjs-sql-data-provider.service';\nimport { CreateDashboardDto } from './dtos/create-dashboard.dto';\n\nexport interface FieldCrudManager {\n // fieldMetadata: FieldMetadata;\n // entityManager?: EntityManager;\n // createDto: any;\n // files : Array<Express.Multer.File>;\n validate(\n dto: any,\n files: Array<Express.Multer.File>,\n ): ValidationError[] | Promise<ValidationError[]>;\n transformForCreate(dto: any, ctxt?: any): any | Promise<any>;\n}\n\nexport interface ValidationError {\n field: string;\n error: string;\n}\n\n// export interface MediaStorage\nexport interface MediaStorageProvider<T> {\n store(files: Express.Multer.File[], entity: T, mediaFieldMetadata: FieldMetadata): Promise<Media[]>;\n delete(entity: T, mediaFieldMetadata: FieldMetadata): Promise<void>;\n retrieve(entity: T, mediaFieldMetadata: FieldMetadata): Promise<Media[]>;\n storeStreams(streamPairs: [Readable, string][], entity: T, mediaFieldMetadata: FieldMetadata): Promise<Media[]>;\n // delete(file: string): Promise<void>;\n}\n\nexport interface ModuleMetadataConfiguration {\n moduleMetadata?: CreateModuleMetadataDto,\n roles?: CreateRoleMetadataDto[],\n users?: SignUpDto[],\n actions?: any[],\n menus?: any[],\n views?: any[],\n emailTemplates?: CreateEmailTemplateDto[],\n smsTemplates?: CreateSmsTemplateDto[],\n mediaStorageProviders?: CreateMediaStorageProviderMetadataDto[]\n securityRules?: CreateSecurityRuleDto[],\n dashboards?: CreateDashboardDto[],\n}\n\nexport interface CodeGenerationOptions {\n moduleId?: number;\n moduleUserKey?: string;\n modelId?: number;\n modelUserKey?: string;\n fieldIdsForRemoval?: number[];\n dryRun?: boolean;\n}\n\nexport interface ISelectionProviderContext {\n // query: string;\n}\n\nexport interface ISelectionProviderValues {\n label: string;\n value: string;\n}\n\nexport interface ISelectionProvider<T extends ISelectionProviderContext> {\n help(): string;\n\n name(): string;\n\n value(optionValue: string, ctxt: T): Promise<ISelectionProviderValues | any>;\n\n values(query: any, ctxt: T): Promise<readonly ISelectionProviderValues[]>;\n}\n\nexport interface IDashboardVariableSelectionProvider<T extends ISelectionProviderContext> extends ISelectionProvider<T> {\n}\n\nexport interface IDashboardQuestionDataProvider<TContext, TData> {\n help(): string;\n\n name(): string;\n\n getData(question: Question, expressions?: SqlExpression[], ctxt?: TContext): Promise<TData[] | TData>;\n}\n\n/**\n * @deprecated Use `IEntityComputedFieldProvider` instead.\n */\nexport interface IComputedFieldProvider<T> {\n help(): string;\n\n name(): string;\n\n valueType(): string;\n\n computeValue(dto: any, ctxt: T): Promise<string | number>; // FIXME : Improve the types to make it more specific using generics\n}\n\nexport interface IEntityComputedFieldProvider {\n help(): string;\n\n name(): string;\n}\n\nexport interface IEntityPreComputeFieldProvider<TTriggerEntity, TContext, TValue> extends IEntityComputedFieldProvider {\n preComputeValue(entity: TTriggerEntity, computedFieldMetadata: ComputedFieldMetadata<TContext>): Promise<TValue>;\n}\n\nexport interface IEntityPostComputeFieldProvider<TTriggerEntity, TContext> extends IEntityComputedFieldProvider {\n postComputeAndSaveValue(triggerEntity: TTriggerEntity, computedFieldMetadata: ComputedFieldMetadata<TContext>): Promise<void>;\n}\n\nexport interface ISolidDatabaseModule {\n name(): string;\n\n type(): DatasourceType;\n}\n\nexport enum EventType {\n USER_REGISTERED = 'user.registered',\n}\n\nexport class EventDetails<T> {\n constructor(\n public type: any,\n public payload: T,\n ) { }\n}\n\nexport interface IMail {\n sendEmail(\n to: string,\n subject: string,\n body: string,\n shouldQueueEmails: boolean,\n wrapperAttachments?: MailAttachmentWrapper[],\n attachments?: MailAttachment[],\n parentEntity?: any,\n parentEntityId?: any,\n ): Promise<void>;\n\n sendEmailUsingTemplate(\n to: string,\n templateName: string,\n templateParams: any,\n shouldQueueEmails: boolean,\n wrapperAttachments?: MailAttachmentWrapper[],\n attachments?: MailAttachment[],\n parentEntity?: any,\n parentEntityId?: any,\n ): Promise<void>;\n}\n\nexport interface ISMS {\n sendSMS(to: string, body: string, shouldQueueSms: boolean): Promise<void>;\n\n sendSMSUsingTemplate(\n to: string,\n templateName: string,\n templateParams: any,\n shouldQueueSms: boolean,\n ): Promise<void>;\n}\n\nexport interface MailAttachmentWrapper {\n relativePath?: string;\n attachment?: MailAttachment;\n}\n\nexport interface MailAttachment {\n filename: string;\n templatePath?: string;\n templateParams?: any;\n content?: string | Buffer;\n contentType?: string;\n path?: string;\n}\n\nexport enum BrokerType {\n RabbitMQ = 'rabbitmq',\n Database = 'database'\n}\n\nexport interface QueuesModuleOptions {\n name: string;\n type: BrokerType;\n queueName: string;\n}\n\nexport type MediaWithFullUrl = Media & {\n _full_url: string;\n};\n"]}
1
+ {"version":3,"file":"interfaces.js","sourceRoot":"","sources":["../src/interfaces.ts"],"names":[],"mappings":";;;AAsJA,IAAY,SAEX;AAFD,WAAY,SAAS;IACnB,gDAAmC,CAAA;AACrC,CAAC,EAFW,SAAS,yBAAT,SAAS,QAEpB;AAED,MAAa,YAAY;IACvB,YACS,IAAS,EACT,OAAU;QADV,SAAI,GAAJ,IAAI,CAAK;QACT,YAAO,GAAP,OAAO,CAAG;IACf,CAAC;CACN;AALD,oCAKC;AAmDD,IAAY,UAGX;AAHD,WAAY,UAAU;IACpB,mCAAqB,CAAA;IACrB,mCAAqB,CAAA;AACvB,CAAC,EAHW,UAAU,0BAAV,UAAU,QAGrB","sourcesContent":["import { CreateEmailTemplateDto } from 'src/dtos/create-email-template.dto';\nimport { CreateSmsTemplateDto } from 'src/dtos/create-sms-template.dto';\nimport { SignUpDto } from 'src/dtos/sign-up.dto';\nimport { Readable } from 'stream';\nimport { CreateMediaStorageProviderMetadataDto } from './dtos/create-media-storage-provider-metadata.dto';\nimport { DatasourceType } from './dtos/create-model-metadata.dto';\nimport { CreateModuleMetadataDto } from './dtos/create-module-metadata.dto';\nimport { CreateRoleMetadataDto } from './dtos/create-role-metadata.dto';\nimport { CreateSecurityRuleDto } from './dtos/create-security-rule.dto';\nimport { FieldMetadata } from './entities/field-metadata.entity';\nimport { Media } from './entities/media.entity';\nimport { DashboardQuestion } from './entities/dashboard-question.entity';\nimport { ComputedFieldMetadata } from './helpers/solid-registry';\nimport { SqlExpression } from './services/question-data-providers/chartjs-sql-data-provider.service';\nimport { CreateDashboardDto } from './dtos/create-dashboard.dto';\nimport { AiInteraction } from './entities/ai-interaction.entity';\n\nexport interface FieldCrudManager {\n // fieldMetadata: FieldMetadata;\n // entityManager?: EntityManager;\n // createDto: any;\n // files : Array<Express.Multer.File>;\n validate(\n dto: any,\n files: Array<Express.Multer.File>,\n ): ValidationError[] | Promise<ValidationError[]>;\n transformForCreate(dto: any, ctxt?: any): any | Promise<any>;\n}\n\nexport interface ValidationError {\n field: string;\n error: string;\n}\n\n// export interface MediaStorage\nexport interface MediaStorageProvider<T> {\n store(files: Express.Multer.File[], entity: T, mediaFieldMetadata: FieldMetadata): Promise<Media[]>;\n delete(entity: T, mediaFieldMetadata: FieldMetadata): Promise<void>;\n retrieve(entity: T, mediaFieldMetadata: FieldMetadata): Promise<Media[]>;\n storeStreams(streamPairs: [Readable, string][], entity: T, mediaFieldMetadata: FieldMetadata): Promise<Media[]>;\n // delete(file: string): Promise<void>;\n}\n\nexport interface ModuleMetadataConfiguration {\n moduleMetadata?: CreateModuleMetadataDto,\n roles?: CreateRoleMetadataDto[],\n users?: SignUpDto[],\n actions?: any[],\n menus?: any[],\n views?: any[],\n emailTemplates?: CreateEmailTemplateDto[],\n smsTemplates?: CreateSmsTemplateDto[],\n mediaStorageProviders?: CreateMediaStorageProviderMetadataDto[]\n securityRules?: CreateSecurityRuleDto[],\n dashboards?: CreateDashboardDto[],\n}\n\nexport interface CodeGenerationOptions {\n moduleId?: number;\n moduleUserKey?: string;\n modelId?: number;\n modelUserKey?: string;\n fieldIdsForRemoval?: number[];\n dryRun?: boolean;\n}\n\nexport interface TriggerMcpClientOptions {\n aiInteractionId: number;\n}\n\nexport interface McpResponse {\n success: boolean;\n request: string;\n response: string;\n model?: string;\n tools_invoked?: string[];\n tool_calls?: any[];\n duration_ms?: number;\n errors?: string[];\n trace?: string[];\n content_type?: string;\n}\n\nexport interface ISelectionProviderContext {\n // query: string;\n}\n\nexport interface ISelectionProviderValues {\n label: string;\n value: string;\n}\n\nexport interface ISelectionProvider<T extends ISelectionProviderContext> {\n help(): string;\n\n name(): string;\n\n value(optionValue: string, ctxt: T): Promise<ISelectionProviderValues | any>;\n\n values(query: any, ctxt: T): Promise<readonly ISelectionProviderValues[]>;\n}\n\nexport interface IDashboardVariableSelectionProvider<T extends ISelectionProviderContext> extends ISelectionProvider<T> {\n}\n\nexport interface IMcpToolResponseHandler {\n apply(aiInteraction: AiInteraction);\n}\n\nexport interface IDashboardQuestionDataProvider<TContext, TData> {\n help(): string;\n\n name(): string;\n\n getData(question: DashboardQuestion, expressions?: SqlExpression[], ctxt?: TContext): Promise<TData[] | TData>;\n}\n\n/**\n * @deprecated Use `IEntityComputedFieldProvider` instead.\n */\nexport interface IComputedFieldProvider<T> {\n help(): string;\n\n name(): string;\n\n valueType(): string;\n\n computeValue(dto: any, ctxt: T): Promise<string | number>; // FIXME : Improve the types to make it more specific using generics\n}\n\nexport interface IEntityComputedFieldProvider {\n help(): string;\n\n name(): string;\n}\n\nexport interface IEntityPreComputeFieldProvider<TTriggerEntity, TContext, TValue> extends IEntityComputedFieldProvider {\n preComputeValue(entity: TTriggerEntity, computedFieldMetadata: ComputedFieldMetadata<TContext>): Promise<TValue>;\n}\n\nexport interface IEntityPostComputeFieldProvider<TTriggerEntity, TContext> extends IEntityComputedFieldProvider {\n postComputeAndSaveValue(triggerEntity: TTriggerEntity, computedFieldMetadata: ComputedFieldMetadata<TContext>): Promise<void>;\n}\n\nexport interface ISolidDatabaseModule {\n name(): string;\n\n type(): DatasourceType;\n}\n\nexport enum EventType {\n USER_REGISTERED = 'user.registered',\n}\n\nexport class EventDetails<T> {\n constructor(\n public type: any,\n public payload: T,\n ) { }\n}\n\nexport interface IMail {\n sendEmail(\n to: string,\n subject: string,\n body: string,\n shouldQueueEmails: boolean,\n wrapperAttachments?: MailAttachmentWrapper[],\n attachments?: MailAttachment[],\n parentEntity?: any,\n parentEntityId?: any,\n ): Promise<void>;\n\n sendEmailUsingTemplate(\n to: string,\n templateName: string,\n templateParams: any,\n shouldQueueEmails: boolean,\n wrapperAttachments?: MailAttachmentWrapper[],\n attachments?: MailAttachment[],\n parentEntity?: any,\n parentEntityId?: any,\n ): Promise<void>;\n}\n\nexport interface ISMS {\n sendSMS(to: string, body: string, shouldQueueSms: boolean): Promise<void>;\n\n sendSMSUsingTemplate(\n to: string,\n templateName: string,\n templateParams: any,\n shouldQueueSms: boolean,\n ): Promise<void>;\n}\n\nexport interface MailAttachmentWrapper {\n relativePath?: string;\n attachment?: MailAttachment;\n}\n\nexport interface MailAttachment {\n filename: string;\n templatePath?: string;\n templateParams?: any;\n content?: string | Buffer;\n contentType?: string;\n path?: string;\n}\n\nexport enum BrokerType {\n RabbitMQ = 'rabbitmq',\n Database = 'database'\n}\n\nexport interface QueuesModuleOptions {\n name: string;\n type: BrokerType;\n queueName: string;\n}\n\nexport type MediaWithFullUrl = Media & {\n _full_url: string;\n};\n"]}
@@ -0,0 +1,11 @@
1
+ import { QueuesModuleOptions, TriggerMcpClientOptions } from "src/interfaces";
2
+ import { MqMessageQueueService } from "src/services/mq-message-queue.service";
3
+ import { MqMessageService } from "src/services/mq-message.service";
4
+ import { DatabasePublisher } from "src/services/queues/database-publisher.service";
5
+ export declare class TriggerMcpClientPublisherDatabase extends DatabasePublisher<TriggerMcpClientOptions> {
6
+ protected readonly mqMessageService: MqMessageService;
7
+ protected readonly mqMessageQueueService: MqMessageQueueService;
8
+ constructor(mqMessageService: MqMessageService, mqMessageQueueService: MqMessageQueueService);
9
+ options(): QueuesModuleOptions;
10
+ }
11
+ //# sourceMappingURL=trigger-mcp-client-publisher-database.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trigger-mcp-client-publisher-database.service.d.ts","sourceRoot":"","sources":["../../../src/jobs/database/trigger-mcp-client-publisher-database.service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AAC9E,OAAO,EAAE,qBAAqB,EAAE,MAAM,uCAAuC,CAAC;AAC9E,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AACnE,OAAO,EAAE,iBAAiB,EAAE,MAAM,gDAAgD,CAAC;AAGnF,qBACa,iCAAkC,SAAQ,iBAAiB,CAAC,uBAAuB,CAAC;IAEzF,SAAS,CAAC,QAAQ,CAAC,gBAAgB,EAAE,gBAAgB;IACrD,SAAS,CAAC,QAAQ,CAAC,qBAAqB,EAAE,qBAAqB;gBAD5C,gBAAgB,EAAE,gBAAgB,EAClC,qBAAqB,EAAE,qBAAqB;IAKnE,OAAO,IAAI,mBAAmB;CAKjC"}
@@ -0,0 +1,39 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ var __importDefault = (this && this.__importDefault) || function (mod) {
12
+ return (mod && mod.__esModule) ? mod : { "default": mod };
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.TriggerMcpClientPublisherDatabase = void 0;
16
+ const common_1 = require("@nestjs/common");
17
+ const mq_message_queue_service_1 = require("../../services/mq-message-queue.service");
18
+ const mq_message_service_1 = require("../../services/mq-message.service");
19
+ const database_publisher_service_1 = require("../../services/queues/database-publisher.service");
20
+ const trigger_mcp_client_queue_options_1 = __importDefault(require("./trigger-mcp-client-queue-options"));
21
+ let TriggerMcpClientPublisherDatabase = class TriggerMcpClientPublisherDatabase extends database_publisher_service_1.DatabasePublisher {
22
+ constructor(mqMessageService, mqMessageQueueService) {
23
+ super(mqMessageService, mqMessageQueueService);
24
+ this.mqMessageService = mqMessageService;
25
+ this.mqMessageQueueService = mqMessageQueueService;
26
+ }
27
+ options() {
28
+ return {
29
+ ...trigger_mcp_client_queue_options_1.default
30
+ };
31
+ }
32
+ };
33
+ exports.TriggerMcpClientPublisherDatabase = TriggerMcpClientPublisherDatabase;
34
+ exports.TriggerMcpClientPublisherDatabase = TriggerMcpClientPublisherDatabase = __decorate([
35
+ (0, common_1.Injectable)(),
36
+ __metadata("design:paramtypes", [mq_message_service_1.MqMessageService,
37
+ mq_message_queue_service_1.MqMessageQueueService])
38
+ ], TriggerMcpClientPublisherDatabase);
39
+ //# sourceMappingURL=trigger-mcp-client-publisher-database.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trigger-mcp-client-publisher-database.service.js","sourceRoot":"","sources":["../../../src/jobs/database/trigger-mcp-client-publisher-database.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CAA4C;AAE5C,sFAA8E;AAC9E,0EAAmE;AACnE,iGAAmF;AACnF,0GAA8E;AAGvE,IAAM,iCAAiC,GAAvC,MAAM,iCAAkC,SAAQ,8CAA0C;IAC7F,YACuB,gBAAkC,EAClC,qBAA4C;QAE/D,KAAK,CAAC,gBAAgB,EAAE,qBAAqB,CAAC,CAAC;QAH5B,qBAAgB,GAAhB,gBAAgB,CAAkB;QAClC,0BAAqB,GAArB,qBAAqB,CAAuB;IAGnE,CAAC;IAED,OAAO;QACH,OAAO;YACH,GAAG,0CAA4B;SAClC,CAAC;IACN,CAAC;CACJ,CAAA;AAbY,8EAAiC;4CAAjC,iCAAiC;IAD7C,IAAA,mBAAU,GAAE;qCAGgC,qCAAgB;QACX,gDAAqB;GAH1D,iCAAiC,CAa7C","sourcesContent":["import { Injectable } from \"@nestjs/common\";\nimport { QueuesModuleOptions, TriggerMcpClientOptions } from \"src/interfaces\";\nimport { MqMessageQueueService } from \"src/services/mq-message-queue.service\";\nimport { MqMessageService } from \"src/services/mq-message.service\";\nimport { DatabasePublisher } from \"src/services/queues/database-publisher.service\";\nimport triggerMcpClientQueueOptions from \"./trigger-mcp-client-queue-options\";\n\n@Injectable()\nexport class TriggerMcpClientPublisherDatabase extends DatabasePublisher<TriggerMcpClientOptions> {\n constructor(\n protected readonly mqMessageService: MqMessageService,\n protected readonly mqMessageQueueService: MqMessageQueueService,\n ) {\n super(mqMessageService, mqMessageQueueService);\n }\n\n options(): QueuesModuleOptions {\n return {\n ...triggerMcpClientQueueOptions\n };\n }\n}"]}
@@ -0,0 +1,8 @@
1
+ import { BrokerType } from "src/interfaces";
2
+ declare const _default: {
3
+ name: string;
4
+ type: BrokerType;
5
+ queueName: string;
6
+ };
7
+ export default _default;
8
+ //# sourceMappingURL=trigger-mcp-client-queue-options.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trigger-mcp-client-queue-options.d.ts","sourceRoot":"","sources":["../../../src/jobs/database/trigger-mcp-client-queue-options.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;;;;;;AAI5C,wBAIE"}
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const interfaces_1 = require("../../interfaces");
4
+ const TRIGGER_MCP_CLIENT_QUEUE_NAME = 'trigger_mcp_client_queue';
5
+ exports.default = {
6
+ name: 'triggerMcpClientQueue',
7
+ type: interfaces_1.BrokerType.Database,
8
+ queueName: TRIGGER_MCP_CLIENT_QUEUE_NAME,
9
+ };
10
+ //# sourceMappingURL=trigger-mcp-client-queue-options.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trigger-mcp-client-queue-options.js","sourceRoot":"","sources":["../../../src/jobs/database/trigger-mcp-client-queue-options.ts"],"names":[],"mappings":";;AAAA,iDAA4C;AAE5C,MAAM,6BAA6B,GAAG,0BAA0B,CAAC;AAEjE,kBAAe;IACX,IAAI,EAAE,uBAAuB;IAC7B,IAAI,EAAE,uBAAU,CAAC,QAAQ;IACzB,SAAS,EAAE,6BAA6B;CAC3C,CAAC","sourcesContent":["import { BrokerType } from \"src/interfaces\";\n\nconst TRIGGER_MCP_CLIENT_QUEUE_NAME = 'trigger_mcp_client_queue';\n\nexport default {\n name: 'triggerMcpClientQueue',\n type: BrokerType.Database,\n queueName: TRIGGER_MCP_CLIENT_QUEUE_NAME,\n};\n"]}
@@ -0,0 +1,16 @@
1
+ import { QueueMessage } from 'src/interfaces/mq';
2
+ import { MqMessageService } from '../../services/mq-message.service';
3
+ import { MqMessageQueueService } from '../../services/mq-message-queue.service';
4
+ import { QueuesModuleOptions, TriggerMcpClientOptions } from "../../interfaces";
5
+ import { DatabaseSubscriber } from 'src/services/queues/database-subscriber.service';
6
+ import { AiInteractionService } from 'src/services/ai-interaction.service';
7
+ export declare class TriggerMcpClientSubscriberDatabase extends DatabaseSubscriber<TriggerMcpClientOptions> {
8
+ readonly mqMessageService: MqMessageService;
9
+ readonly mqMessageQueueService: MqMessageQueueService;
10
+ readonly aiInteractionService: AiInteractionService;
11
+ private readonly triggerMcpClientSubscriberLogger;
12
+ constructor(mqMessageService: MqMessageService, mqMessageQueueService: MqMessageQueueService, aiInteractionService: AiInteractionService);
13
+ options(): QueuesModuleOptions;
14
+ subscribe(message: QueueMessage<TriggerMcpClientOptions>): Promise<import("../../interfaces").McpResponse>;
15
+ }
16
+ //# sourceMappingURL=trigger-mcp-client-subscriber-database.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trigger-mcp-client-subscriber-database.service.d.ts","sourceRoot":"","sources":["../../../src/jobs/database/trigger-mcp-client-subscriber-database.service.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AACrE,OAAO,EAAE,qBAAqB,EAAE,MAAM,yCAAyC,CAAC;AAChF,OAAO,EAAE,mBAAmB,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;AAChF,OAAO,EAAE,kBAAkB,EAAE,MAAM,iDAAiD,CAAC;AAErF,OAAO,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAC;AAE3E,qBACa,kCAAmC,SAAQ,kBAAkB,CAAC,uBAAuB,CAAC;IAI3F,QAAQ,CAAC,gBAAgB,EAAE,gBAAgB;IAC3C,QAAQ,CAAC,qBAAqB,EAAE,qBAAqB;IACrD,QAAQ,CAAC,oBAAoB,EAAE,oBAAoB;IALvD,OAAO,CAAC,QAAQ,CAAC,gCAAgC,CAAuD;gBAG3F,gBAAgB,EAAE,gBAAgB,EAClC,qBAAqB,EAAE,qBAAqB,EAC5C,oBAAoB,EAAE,oBAAoB;IAKvD,OAAO,IAAI,mBAAmB;IAMxB,SAAS,CAAC,OAAO,EAAE,YAAY,CAAC,uBAAuB,CAAC;CA4DjE"}
@@ -0,0 +1,91 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ var __importDefault = (this && this.__importDefault) || function (mod) {
12
+ return (mod && mod.__esModule) ? mod : { "default": mod };
13
+ };
14
+ var TriggerMcpClientSubscriberDatabase_1;
15
+ Object.defineProperty(exports, "__esModule", { value: true });
16
+ exports.TriggerMcpClientSubscriberDatabase = void 0;
17
+ const common_1 = require("@nestjs/common");
18
+ const mq_message_service_1 = require("../../services/mq-message.service");
19
+ const mq_message_queue_service_1 = require("../../services/mq-message-queue.service");
20
+ const database_subscriber_service_1 = require("../../services/queues/database-subscriber.service");
21
+ const trigger_mcp_client_queue_options_1 = __importDefault(require("./trigger-mcp-client-queue-options"));
22
+ const ai_interaction_service_1 = require("../../services/ai-interaction.service");
23
+ let TriggerMcpClientSubscriberDatabase = TriggerMcpClientSubscriberDatabase_1 = class TriggerMcpClientSubscriberDatabase extends database_subscriber_service_1.DatabaseSubscriber {
24
+ constructor(mqMessageService, mqMessageQueueService, aiInteractionService) {
25
+ super(mqMessageService, mqMessageQueueService);
26
+ this.mqMessageService = mqMessageService;
27
+ this.mqMessageQueueService = mqMessageQueueService;
28
+ this.aiInteractionService = aiInteractionService;
29
+ this.triggerMcpClientSubscriberLogger = new common_1.Logger(TriggerMcpClientSubscriberDatabase_1.name);
30
+ }
31
+ options() {
32
+ return {
33
+ ...trigger_mcp_client_queue_options_1.default
34
+ };
35
+ }
36
+ async subscribe(message) {
37
+ this.triggerMcpClientSubscriberLogger.debug(`Received message: ${JSON.stringify(message)}`);
38
+ const codeGnerationOptions = message.payload;
39
+ const aiInteraction = await this.aiInteractionService.findOne(codeGnerationOptions.aiInteractionId, {
40
+ populate: ['user']
41
+ });
42
+ if (!aiInteraction) {
43
+ const m = `Unable to identified the aiInteraction entry that triggered this job... using id: ${codeGnerationOptions.aiInteractionId}`;
44
+ this.triggerMcpClientSubscriberLogger.log(m);
45
+ throw new Error(m);
46
+ }
47
+ const prompt = aiInteraction.message;
48
+ const aiResponse = await this.aiInteractionService.runMcpPrompt(prompt);
49
+ this.triggerMcpClientSubscriberLogger.log(`aiResponse: `);
50
+ this.triggerMcpClientSubscriberLogger.log(JSON.stringify(aiResponse));
51
+ if (!aiResponse.success) {
52
+ this.triggerMcpClientSubscriberLogger.log(`Gen ai has returned with a false status code`);
53
+ const errorsStr = aiResponse.errors.join('; ');
54
+ await this.aiInteractionService.create({
55
+ userId: aiInteraction.user.id,
56
+ threadId: aiInteraction.threadId,
57
+ role: 'gen-ai',
58
+ message: '-',
59
+ contentType: aiResponse.content_type,
60
+ errorMessage: errorsStr,
61
+ modelUsed: aiResponse.model,
62
+ responseTimeMs: aiResponse.duration_ms,
63
+ metadata: JSON.stringify(aiResponse)
64
+ });
65
+ throw new Error(errorsStr);
66
+ }
67
+ else {
68
+ let nestedResponse = aiResponse.response.trim();
69
+ await this.aiInteractionService.create({
70
+ userId: aiInteraction.user.id,
71
+ threadId: aiInteraction.threadId,
72
+ role: 'gen-ai',
73
+ message: nestedResponse,
74
+ contentType: aiResponse.content_type,
75
+ errorMessage: '',
76
+ modelUsed: aiResponse.model,
77
+ responseTimeMs: aiResponse.duration_ms,
78
+ metadata: JSON.stringify(aiResponse)
79
+ });
80
+ }
81
+ return aiResponse;
82
+ }
83
+ };
84
+ exports.TriggerMcpClientSubscriberDatabase = TriggerMcpClientSubscriberDatabase;
85
+ exports.TriggerMcpClientSubscriberDatabase = TriggerMcpClientSubscriberDatabase = TriggerMcpClientSubscriberDatabase_1 = __decorate([
86
+ (0, common_1.Injectable)(),
87
+ __metadata("design:paramtypes", [mq_message_service_1.MqMessageService,
88
+ mq_message_queue_service_1.MqMessageQueueService,
89
+ ai_interaction_service_1.AiInteractionService])
90
+ ], TriggerMcpClientSubscriberDatabase);
91
+ //# sourceMappingURL=trigger-mcp-client-subscriber-database.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trigger-mcp-client-subscriber-database.service.js","sourceRoot":"","sources":["../../../src/jobs/database/trigger-mcp-client-subscriber-database.service.ts"],"names":[],"mappings":"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","sourcesContent":["import { Injectable, Logger } from '@nestjs/common';\n\nimport { QueueMessage } from 'src/interfaces/mq';\nimport { MqMessageService } from '../../services/mq-message.service';\nimport { MqMessageQueueService } from '../../services/mq-message-queue.service';\nimport { QueuesModuleOptions, TriggerMcpClientOptions } from \"../../interfaces\";\nimport { DatabaseSubscriber } from 'src/services/queues/database-subscriber.service';\nimport triggerMcpClientQueueOptions from \"./trigger-mcp-client-queue-options\";\nimport { AiInteractionService } from 'src/services/ai-interaction.service';\n\n@Injectable()\nexport class TriggerMcpClientSubscriberDatabase extends DatabaseSubscriber<TriggerMcpClientOptions> {\n private readonly triggerMcpClientSubscriberLogger = new Logger(TriggerMcpClientSubscriberDatabase.name);\n\n constructor(\n readonly mqMessageService: MqMessageService,\n readonly mqMessageQueueService: MqMessageQueueService,\n readonly aiInteractionService: AiInteractionService,\n ) {\n super(mqMessageService, mqMessageQueueService);\n }\n\n options(): QueuesModuleOptions {\n return {\n ...triggerMcpClientQueueOptions\n }\n }\n\n async subscribe(message: QueueMessage<TriggerMcpClientOptions>) {\n this.triggerMcpClientSubscriberLogger.debug(`Received message: ${JSON.stringify(message)}`);\n\n const codeGnerationOptions = message.payload;\n\n const aiInteraction = await this.aiInteractionService.findOne(codeGnerationOptions.aiInteractionId, {\n populate: ['user']\n });\n if (!aiInteraction) {\n const m = `Unable to identified the aiInteraction entry that triggered this job... using id: ${codeGnerationOptions.aiInteractionId}`\n this.triggerMcpClientSubscriberLogger.log(m);\n throw new Error(m);\n }\n\n // The message contains the users prompt.\n const prompt = aiInteraction.message;\n\n // Use this to invoke our mcp client\n const aiResponse = await this.aiInteractionService.runMcpPrompt(prompt);\n this.triggerMcpClientSubscriberLogger.log(`aiResponse: `);\n this.triggerMcpClientSubscriberLogger.log(JSON.stringify(aiResponse));\n\n if (!aiResponse.success) {\n this.triggerMcpClientSubscriberLogger.log(`Gen ai has returned with a false status code`);\n\n const errorsStr = aiResponse.errors.join('; ');\n\n await this.aiInteractionService.create({\n userId: aiInteraction.user.id,\n threadId: aiInteraction.threadId,\n role: 'gen-ai',\n message: '-',\n contentType: aiResponse.content_type,\n errorMessage: errorsStr,\n modelUsed: aiResponse.model,\n responseTimeMs: aiResponse.duration_ms,\n metadata: JSON.stringify(aiResponse)\n });\n\n // update the job entry with failure... raising an error will lead the job to be marked as failed...\n throw new Error(errorsStr);\n }\n else {\n let nestedResponse = aiResponse.response.trim();\n\n await this.aiInteractionService.create({\n userId: aiInteraction.user.id,\n threadId: aiInteraction.threadId,\n role: 'gen-ai',\n message: nestedResponse,\n contentType: aiResponse.content_type,\n errorMessage: '',\n modelUsed: aiResponse.model,\n responseTimeMs: aiResponse.duration_ms,\n metadata: JSON.stringify(aiResponse)\n });\n }\n\n return aiResponse;\n }\n}\n"]}
@@ -1,11 +1,9 @@
1
- import { CreateDashboardDto } from "src/dtos/create-dashboard.dto";
2
1
  import { Dashboard } from "src/entities/dashboard.entity";
3
2
  import { DataSource, Repository } from "typeorm";
4
3
  export declare class DashboardRepository extends Repository<Dashboard> {
5
4
  private dataSource;
6
5
  private readonly logger;
7
6
  constructor(dataSource: DataSource);
8
- upsertWithDto(createDto: CreateDashboardDto): Promise<Dashboard>;
9
- private cleanupRemovedRelations;
7
+ upsertWithDto(createDto: any): Promise<Dashboard | Dashboard[]>;
10
8
  }
11
9
  //# sourceMappingURL=dashboard.repository.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"dashboard.repository.d.ts","sourceRoot":"","sources":["../../src/repository/dashboard.repository.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AAEnE,OAAO,EAAE,SAAS,EAAE,MAAM,+BAA+B,CAAC;AAI1D,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAEjD,qBACa,mBAAoB,SAAQ,UAAU,CAAC,SAAS,CAAC;IAGtD,OAAO,CAAC,UAAU;IAFtB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAqC;gBAEhD,UAAU,EAAE,UAAU;IAM5B,aAAa,CAAC,SAAS,EAAE,kBAAkB;YAyCnC,uBAAuB;CAuCxC"}
1
+ {"version":3,"file":"dashboard.repository.d.ts","sourceRoot":"","sources":["../../src/repository/dashboard.repository.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,SAAS,EAAE,MAAM,+BAA+B,CAAC;AAI1D,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAEjD,qBACa,mBAAoB,SAAQ,UAAU,CAAC,SAAS,CAAC;IAGtD,OAAO,CAAC,UAAU;IAFtB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAqC;gBAEhD,UAAU,EAAE,UAAU;IAM5B,aAAa,CAAC,SAAS,EAAE,GAAG;CAiFrC"}
@@ -11,11 +11,8 @@ var __metadata = (this && this.__metadata) || function (k, v) {
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
12
  exports.DashboardRepository = void 0;
13
13
  const common_1 = require("@nestjs/common");
14
- const dashboard_variable_entity_1 = require("../entities/dashboard-variable.entity");
15
14
  const dashboard_entity_1 = require("../entities/dashboard.entity");
16
15
  const module_metadata_entity_1 = require("../entities/module-metadata.entity");
17
- const question_sql_dataset_config_entity_1 = require("../entities/question-sql-dataset-config.entity");
18
- const question_entity_1 = require("../entities/question.entity");
19
16
  const typeorm_1 = require("typeorm");
20
17
  let DashboardRepository = class DashboardRepository extends typeorm_1.Repository {
21
18
  constructor(dataSource) {
@@ -32,6 +29,46 @@ let DashboardRepository = class DashboardRepository extends typeorm_1.Repository
32
29
  where: { name: createDto.name },
33
30
  relations: ['dashboardVariables', 'questions', 'questions.questionSqlDatasetConfigs'],
34
31
  });
32
+ if (existingDashboard) {
33
+ existingDashboard.layoutJson = JSON.stringify(createDto.layoutJson ?? {});
34
+ existingDashboard.module = module;
35
+ existingDashboard.dashboardVariables = createDto.dashboardVariables?.map(variable => {
36
+ const existingVar = existingDashboard.dashboardVariables.find(v => v.variableName === variable.variableName);
37
+ if (existingVar) {
38
+ return Object.assign(existingVar, {
39
+ ...variable,
40
+ selectionStaticValues: JSON.stringify(variable.selectionStaticValues ?? []),
41
+ defaultValue: JSON.stringify(variable.defaultValue ?? []),
42
+ });
43
+ }
44
+ return {
45
+ ...variable,
46
+ selectionStaticValues: JSON.stringify(variable.selectionStaticValues ?? []),
47
+ defaultValue: JSON.stringify(variable.defaultValue ?? []),
48
+ };
49
+ }) ?? [];
50
+ existingDashboard.questions = createDto.questions?.map(question => {
51
+ const existingQuestion = existingDashboard.questions.find(q => q.name === question.name);
52
+ const questionData = {
53
+ ...question,
54
+ questionSqlDatasetConfigs: question.questionSqlDatasetConfigs?.map(cfg => {
55
+ const existingCfg = existingQuestion?.questionSqlDatasetConfigs.find(c => c.datasetName === cfg.datasetName);
56
+ if (existingCfg) {
57
+ return Object.assign(existingCfg, {
58
+ ...cfg,
59
+ options: JSON.stringify(cfg.options ?? {}),
60
+ });
61
+ }
62
+ return {
63
+ ...cfg,
64
+ options: JSON.stringify(cfg.options ?? {}),
65
+ };
66
+ }) ?? [],
67
+ };
68
+ return existingQuestion ? Object.assign(existingQuestion, questionData) : questionData;
69
+ }) ?? [];
70
+ return this.save(existingDashboard);
71
+ }
35
72
  const dashboardData = {
36
73
  ...createDto,
37
74
  module,
@@ -49,40 +86,8 @@ let DashboardRepository = class DashboardRepository extends typeorm_1.Repository
49
86
  })),
50
87
  })),
51
88
  };
52
- if (existingDashboard) {
53
- await this.cleanupRemovedRelations(existingDashboard, createDto);
54
- this.merge(existingDashboard, dashboardData);
55
- return this.save(existingDashboard);
56
- }
57
- else {
58
- const newDashboard = this.create(dashboardData);
59
- return this.save(newDashboard);
60
- }
61
- }
62
- async cleanupRemovedRelations(existing, dto) {
63
- const dashboardVariableRepo = this.dataSource.getRepository(dashboard_variable_entity_1.DashboardVariable);
64
- const questionRepo = this.dataSource.getRepository(question_entity_1.Question);
65
- const datasetConfigRepo = this.dataSource.getRepository(question_sql_dataset_config_entity_1.QuestionSqlDatasetConfig);
66
- const dtoVariableNames = new Set(dto.dashboardVariables.map(v => v.variableName));
67
- const variablesToRemove = existing.dashboardVariables.filter(v => !dtoVariableNames.has(v.variableName));
68
- if (variablesToRemove.length > 0) {
69
- await dashboardVariableRepo.remove(variablesToRemove);
70
- }
71
- const dtoQuestionNames = new Set(dto.questions.map(q => q.name));
72
- const questionsToRemove = existing.questions.filter(q => !dtoQuestionNames.has(q.name));
73
- if (questionsToRemove.length > 0) {
74
- await questionRepo.remove(questionsToRemove);
75
- }
76
- for (const existingQuestion of existing.questions) {
77
- const dtoQuestion = dto.questions.find(q => q.name === existingQuestion.name);
78
- if (!dtoQuestion)
79
- continue;
80
- const dtoDatasetNames = new Set(dtoQuestion.questionSqlDatasetConfigs?.map(cfg => cfg.datasetName));
81
- const configsToRemove = existingQuestion.questionSqlDatasetConfigs.filter(cfg => !dtoDatasetNames.has(cfg.datasetName));
82
- if (configsToRemove.length > 0) {
83
- await datasetConfigRepo.remove(configsToRemove);
84
- }
85
- }
89
+ const newDashboard = this.create(dashboardData);
90
+ return this.save(newDashboard);
86
91
  }
87
92
  };
88
93
  exports.DashboardRepository = DashboardRepository;
@@ -1 +1 @@
1
- {"version":3,"file":"dashboard.repository.js","sourceRoot":"","sources":["../../src/repository/dashboard.repository.ts"],"names":[],"mappings":"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","sourcesContent":["import { Injectable, Logger } from \"@nestjs/common\";\nimport { CreateDashboardDto } from \"src/dtos/create-dashboard.dto\";\nimport { DashboardVariable } from \"src/entities/dashboard-variable.entity\";\nimport { Dashboard } from \"src/entities/dashboard.entity\";\nimport { ModuleMetadata } from \"src/entities/module-metadata.entity\";\nimport { QuestionSqlDatasetConfig } from \"src/entities/question-sql-dataset-config.entity\";\nimport { Question } from \"src/entities/question.entity\";\nimport { DataSource, Repository } from \"typeorm\";\n\n@Injectable()\nexport class DashboardRepository extends Repository<Dashboard> {\n private readonly logger = new Logger(this.constructor.name);\n constructor(\n private dataSource: DataSource,\n ) {\n super(Dashboard, dataSource.createEntityManager());\n }\n\n\n async upsertWithDto(createDto: CreateDashboardDto) {\n const moduleMetadataRepository = this.dataSource.getRepository(ModuleMetadata);\n const module = await moduleMetadataRepository.findOneBy({ name: createDto.moduleUserKey });\n\n if (!module) throw new Error(`Module with key ${createDto.moduleUserKey} not found`);\n\n const existingDashboard = await this.findOne({\n where: { name: createDto.name },\n relations: ['dashboardVariables', 'questions', 'questions.questionSqlDatasetConfigs'],\n });\n\n const dashboardData = {\n ...createDto,\n module,\n layoutJson: JSON.stringify(createDto.layoutJson ?? {}),\n dashboardVariables: createDto.dashboardVariables?.map(variable => ({\n ...variable,\n selectionStaticValues: JSON.stringify(variable.selectionStaticValues ?? []),\n defaultValue: JSON.stringify(variable.defaultValue ?? []),\n })),\n questions: createDto.questions?.map(question => ({\n ...question,\n questionSqlDatasetConfigs: question.questionSqlDatasetConfigs?.map(cfg => ({\n ...cfg,\n options: JSON.stringify(cfg.options ?? {}),\n })),\n })),\n };\n\n if (existingDashboard) {\n // Optionally clean up stale children\n await this.cleanupRemovedRelations(existingDashboard, createDto);\n\n this.merge(existingDashboard, dashboardData);\n return this.save(existingDashboard);\n } else {\n const newDashboard = this.create(dashboardData);\n return this.save(newDashboard);\n }\n }\n\n private async cleanupRemovedRelations(existing: Dashboard, dto: CreateDashboardDto) {\n const dashboardVariableRepo = this.dataSource.getRepository(DashboardVariable);\n const questionRepo = this.dataSource.getRepository(Question);\n const datasetConfigRepo = this.dataSource.getRepository(QuestionSqlDatasetConfig); // 👈 make sure this is imported\n\n // === 1. Clean up removed dashboardVariables ===\n const dtoVariableNames = new Set(dto.dashboardVariables.map(v => v.variableName));\n const variablesToRemove = existing.dashboardVariables.filter(\n v => !dtoVariableNames.has(v.variableName)\n );\n if (variablesToRemove.length > 0) {\n await dashboardVariableRepo.remove(variablesToRemove);\n }\n\n // === 2. Clean up removed questions and gather removed question IDs ===\n const dtoQuestionNames = new Set(dto.questions.map(q => q.name));\n const questionsToRemove = existing.questions.filter(\n q => !dtoQuestionNames.has(q.name)\n );\n\n if (questionsToRemove.length > 0) {\n await questionRepo.remove(questionsToRemove);\n }\n\n // === 3. Clean up removed questionSqlDatasetConfigs from existing (retained) questions ===\n for (const existingQuestion of existing.questions) {\n const dtoQuestion = dto.questions.find(q => q.name === existingQuestion.name);\n if (!dtoQuestion) continue;\n\n const dtoDatasetNames = new Set(dtoQuestion.questionSqlDatasetConfigs?.map(cfg => cfg.datasetName));\n const configsToRemove = existingQuestion.questionSqlDatasetConfigs.filter(\n cfg => !dtoDatasetNames.has(cfg.datasetName)\n );\n\n if (configsToRemove.length > 0) {\n await datasetConfigRepo.remove(configsToRemove);\n }\n }\n }\n}"]}
1
+ {"version":3,"file":"dashboard.repository.js","sourceRoot":"","sources":["../../src/repository/dashboard.repository.ts"],"names":[],"mappings":"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","sourcesContent":["import { Injectable, Logger } from \"@nestjs/common\";\nimport { CreateDashboardDto } from \"src/dtos/create-dashboard.dto\";\nimport { DashboardVariable } from \"src/entities/dashboard-variable.entity\";\nimport { Dashboard } from \"src/entities/dashboard.entity\";\nimport { ModuleMetadata } from \"src/entities/module-metadata.entity\";\nimport { DashboardQuestionSqlDatasetConfig } from \"src/entities/dashboard-question-sql-dataset-config.entity\";\nimport { DashboardQuestion } from \"src/entities/dashboard-question.entity\";\nimport { DataSource, Repository } from \"typeorm\";\n\n@Injectable()\nexport class DashboardRepository extends Repository<Dashboard> {\n private readonly logger = new Logger(this.constructor.name);\n constructor(\n private dataSource: DataSource,\n ) {\n super(Dashboard, dataSource.createEntityManager());\n }\n\n\n async upsertWithDto(createDto: any) {\n const moduleMetadataRepository = this.dataSource.getRepository(ModuleMetadata);\n const module = await moduleMetadataRepository.findOneBy({ name: createDto.moduleUserKey });\n\n if (!module) throw new Error(`Module with key ${createDto.moduleUserKey} not found`);\n\n const existingDashboard = await this.findOne({\n where: { name: createDto.name },\n relations: ['dashboardVariables', 'questions', 'questions.questionSqlDatasetConfigs'],\n });\n\n if (existingDashboard) {\n // Update basic fields\n existingDashboard.layoutJson = JSON.stringify(createDto.layoutJson ?? {});\n existingDashboard.module = module;\n\n // Upsert dashboard variables\n existingDashboard.dashboardVariables = createDto.dashboardVariables?.map(variable => {\n const existingVar = existingDashboard.dashboardVariables.find(v => v.variableName === variable.variableName);\n if (existingVar) {\n return Object.assign(existingVar, {\n ...variable,\n selectionStaticValues: JSON.stringify(variable.selectionStaticValues ?? []),\n defaultValue: JSON.stringify(variable.defaultValue ?? []),\n });\n }\n return {\n ...variable,\n selectionStaticValues: JSON.stringify(variable.selectionStaticValues ?? []),\n defaultValue: JSON.stringify(variable.defaultValue ?? []),\n };\n }) ?? [];\n\n // Upsert questions and their configs\n existingDashboard.questions = createDto.questions?.map(question => {\n const existingQuestion = existingDashboard.questions.find(q => q.name === question.name);\n const questionData: any = {\n ...question,\n questionSqlDatasetConfigs: question.questionSqlDatasetConfigs?.map(cfg => {\n const existingCfg = existingQuestion?.questionSqlDatasetConfigs.find(c => c.datasetName === cfg.datasetName);\n if (existingCfg) {\n return Object.assign(existingCfg, {\n ...cfg,\n options: JSON.stringify(cfg.options ?? {}),\n });\n }\n return {\n ...cfg,\n options: JSON.stringify(cfg.options ?? {}),\n };\n }) ?? [],\n };\n\n return existingQuestion ? Object.assign(existingQuestion, questionData) : questionData;\n }) ?? [];\n\n return this.save(existingDashboard);\n }\n\n // Else: new dashboard\n const dashboardData = {\n ...createDto,\n module,\n layoutJson: JSON.stringify(createDto.layoutJson ?? {}),\n dashboardVariables: createDto.dashboardVariables?.map(variable => ({\n ...variable,\n selectionStaticValues: JSON.stringify(variable.selectionStaticValues ?? []),\n defaultValue: JSON.stringify(variable.defaultValue ?? []),\n })),\n questions: createDto.questions?.map(question => ({\n ...question,\n questionSqlDatasetConfigs: question.questionSqlDatasetConfigs?.map(cfg => ({\n ...cfg,\n options: JSON.stringify(cfg.options ?? {}),\n })),\n })),\n };\n\n const newDashboard = this.create(dashboardData);\n return this.save(newDashboard);\n }\n}"]}