@solidxai/core 0.1.10-beta.25 → 0.1.10-beta.27

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 (428) hide show
  1. package/ai-interaction-cleanup.sql +53 -0
  2. package/dist/controllers/action-metadata.controller.d.ts +1 -20
  3. package/dist/controllers/action-metadata.controller.d.ts.map +1 -1
  4. package/dist/controllers/agent-event.controller.d.ts +1 -20
  5. package/dist/controllers/agent-event.controller.d.ts.map +1 -1
  6. package/dist/controllers/agent-session.controller.d.ts +1 -20
  7. package/dist/controllers/agent-session.controller.d.ts.map +1 -1
  8. package/dist/controllers/chatter-message-details.controller.d.ts +1 -20
  9. package/dist/controllers/chatter-message-details.controller.d.ts.map +1 -1
  10. package/dist/controllers/chatter-message.controller.d.ts +1 -20
  11. package/dist/controllers/chatter-message.controller.d.ts.map +1 -1
  12. package/dist/controllers/dashboard-user-layout.controller.d.ts +1 -20
  13. package/dist/controllers/dashboard-user-layout.controller.d.ts.map +1 -1
  14. package/dist/controllers/email-template.controller.d.ts +1 -20
  15. package/dist/controllers/email-template.controller.d.ts.map +1 -1
  16. package/dist/controllers/export-template.controller.d.ts +1 -20
  17. package/dist/controllers/export-template.controller.d.ts.map +1 -1
  18. package/dist/controllers/export-transaction.controller.d.ts +1 -20
  19. package/dist/controllers/export-transaction.controller.d.ts.map +1 -1
  20. package/dist/controllers/import-transaction-error-log.controller.d.ts +1 -20
  21. package/dist/controllers/import-transaction-error-log.controller.d.ts.map +1 -1
  22. package/dist/controllers/import-transaction.controller.d.ts +1 -20
  23. package/dist/controllers/import-transaction.controller.d.ts.map +1 -1
  24. package/dist/controllers/list-of-values.controller.d.ts +1 -20
  25. package/dist/controllers/list-of-values.controller.d.ts.map +1 -1
  26. package/dist/controllers/locale.controller.d.ts +1 -20
  27. package/dist/controllers/locale.controller.d.ts.map +1 -1
  28. package/dist/controllers/mcp-audit-log.controller.d.ts +1 -20
  29. package/dist/controllers/mcp-audit-log.controller.d.ts.map +1 -1
  30. package/dist/controllers/media.controller.d.ts +1 -20
  31. package/dist/controllers/media.controller.d.ts.map +1 -1
  32. package/dist/controllers/menu-item-metadata.controller.d.ts +1 -20
  33. package/dist/controllers/menu-item-metadata.controller.d.ts.map +1 -1
  34. package/dist/controllers/model-metadata.controller.d.ts +10 -30
  35. package/dist/controllers/model-metadata.controller.d.ts.map +1 -1
  36. package/dist/controllers/model-metadata.controller.js +2 -2
  37. package/dist/controllers/model-sequence.controller.d.ts +1 -20
  38. package/dist/controllers/model-sequence.controller.d.ts.map +1 -1
  39. package/dist/controllers/module-metadata-explorer.controller.d.ts +171 -0
  40. package/dist/controllers/module-metadata-explorer.controller.d.ts.map +1 -0
  41. package/dist/controllers/module-metadata-explorer.controller.js +143 -0
  42. package/dist/controllers/module-metadata-explorer.controller.js.map +1 -0
  43. package/dist/controllers/module-metadata.controller.d.ts +5 -0
  44. package/dist/controllers/module-metadata.controller.d.ts.map +1 -1
  45. package/dist/controllers/module-metadata.controller.js +12 -0
  46. package/dist/controllers/module-metadata.controller.js.map +1 -1
  47. package/dist/controllers/module-package.controller.d.ts +622 -0
  48. package/dist/controllers/module-package.controller.d.ts.map +1 -0
  49. package/dist/controllers/module-package.controller.js +150 -0
  50. package/dist/controllers/module-package.controller.js.map +1 -0
  51. package/dist/controllers/mq-message-queue.controller.d.ts +1 -20
  52. package/dist/controllers/mq-message-queue.controller.d.ts.map +1 -1
  53. package/dist/controllers/mq-message.controller.d.ts +1 -20
  54. package/dist/controllers/mq-message.controller.d.ts.map +1 -1
  55. package/dist/controllers/permission-metadata.controller.d.ts +1 -20
  56. package/dist/controllers/permission-metadata.controller.d.ts.map +1 -1
  57. package/dist/controllers/role-metadata.controller.d.ts +1 -20
  58. package/dist/controllers/role-metadata.controller.d.ts.map +1 -1
  59. package/dist/controllers/saved-filters.controller.d.ts +1 -20
  60. package/dist/controllers/saved-filters.controller.d.ts.map +1 -1
  61. package/dist/controllers/scheduled-job.controller.d.ts +1 -20
  62. package/dist/controllers/scheduled-job.controller.d.ts.map +1 -1
  63. package/dist/controllers/security-rule.controller.d.ts +1 -20
  64. package/dist/controllers/security-rule.controller.d.ts.map +1 -1
  65. package/dist/controllers/service.controller.d.ts +1 -5
  66. package/dist/controllers/service.controller.d.ts.map +1 -1
  67. package/dist/controllers/service.controller.js +6 -11
  68. package/dist/controllers/service.controller.js.map +1 -1
  69. package/dist/controllers/sms-template.controller.d.ts +1 -20
  70. package/dist/controllers/sms-template.controller.d.ts.map +1 -1
  71. package/dist/controllers/test.controller.d.ts +1 -6
  72. package/dist/controllers/test.controller.d.ts.map +1 -1
  73. package/dist/controllers/test.controller.js +2 -20
  74. package/dist/controllers/test.controller.js.map +1 -1
  75. package/dist/controllers/user-activity-history.controller.d.ts +1 -20
  76. package/dist/controllers/user-activity-history.controller.d.ts.map +1 -1
  77. package/dist/controllers/user-view-metadata.controller.d.ts +1 -20
  78. package/dist/controllers/user-view-metadata.controller.d.ts.map +1 -1
  79. package/dist/controllers/user.controller.d.ts +1 -20
  80. package/dist/controllers/user.controller.d.ts.map +1 -1
  81. package/dist/controllers/view-metadata.controller.d.ts +1 -20
  82. package/dist/controllers/view-metadata.controller.d.ts.map +1 -1
  83. package/dist/dtos/confirm-module-package-import.dto.d.ts +4 -0
  84. package/dist/dtos/confirm-module-package-import.dto.d.ts.map +1 -0
  85. package/dist/dtos/confirm-module-package-import.dto.js +34 -0
  86. package/dist/dtos/confirm-module-package-import.dto.js.map +1 -0
  87. package/dist/dtos/create-permission-metadata.dto.d.ts.map +1 -1
  88. package/dist/dtos/create-permission-metadata.dto.js +2 -0
  89. package/dist/dtos/create-permission-metadata.dto.js.map +1 -1
  90. package/dist/dtos/create-role-metadata.dto.d.ts +2 -0
  91. package/dist/dtos/create-role-metadata.dto.d.ts.map +1 -1
  92. package/dist/dtos/create-role-metadata.dto.js +13 -1
  93. package/dist/dtos/create-role-metadata.dto.js.map +1 -1
  94. package/dist/dtos/import-instructions.dto.d.ts +2 -0
  95. package/dist/dtos/import-instructions.dto.d.ts.map +1 -1
  96. package/dist/dtos/import-instructions.dto.js +15 -1
  97. package/dist/dtos/import-instructions.dto.js.map +1 -1
  98. package/dist/dtos/metadata-explorer-references-query.dto.d.ts +10 -0
  99. package/dist/dtos/metadata-explorer-references-query.dto.d.ts.map +1 -0
  100. package/dist/dtos/metadata-explorer-references-query.dto.js +69 -0
  101. package/dist/dtos/metadata-explorer-references-query.dto.js.map +1 -0
  102. package/dist/dtos/metadata-explorer-search-query.dto.d.ts +8 -0
  103. package/dist/dtos/metadata-explorer-search-query.dto.d.ts.map +1 -0
  104. package/dist/dtos/metadata-explorer-search-query.dto.js +55 -0
  105. package/dist/dtos/metadata-explorer-search-query.dto.js.map +1 -0
  106. package/dist/dtos/metadata-explorer-write.dto.d.ts +4 -0
  107. package/dist/dtos/metadata-explorer-write.dto.d.ts.map +1 -0
  108. package/dist/dtos/{invoke-ai-prompt.dto.js → metadata-explorer-write.dto.js} +12 -12
  109. package/dist/dtos/metadata-explorer-write.dto.js.map +1 -0
  110. package/dist/dtos/run-module-package-build.dto.d.ts +5 -0
  111. package/dist/dtos/run-module-package-build.dto.d.ts.map +1 -0
  112. package/dist/dtos/run-module-package-build.dto.js +38 -0
  113. package/dist/dtos/run-module-package-build.dto.js.map +1 -0
  114. package/dist/dtos/run-module-package-seed.dto.d.ts +4 -0
  115. package/dist/dtos/run-module-package-seed.dto.d.ts.map +1 -0
  116. package/dist/dtos/run-module-package-seed.dto.js +34 -0
  117. package/dist/dtos/run-module-package-seed.dto.js.map +1 -0
  118. package/dist/dtos/update-permission-metadata.dto.d.ts.map +1 -1
  119. package/dist/dtos/update-permission-metadata.dto.js +3 -1
  120. package/dist/dtos/update-permission-metadata.dto.js.map +1 -1
  121. package/dist/dtos/update-role-metadata.dto.d.ts +2 -0
  122. package/dist/dtos/update-role-metadata.dto.d.ts.map +1 -1
  123. package/dist/dtos/update-role-metadata.dto.js +13 -1
  124. package/dist/dtos/update-role-metadata.dto.js.map +1 -1
  125. package/dist/entities/action-metadata.entity.d.ts.map +1 -1
  126. package/dist/entities/action-metadata.entity.js +1 -0
  127. package/dist/entities/action-metadata.entity.js.map +1 -1
  128. package/dist/entities/agent-event.entity.d.ts.map +1 -1
  129. package/dist/entities/agent-event.entity.js +1 -0
  130. package/dist/entities/agent-event.entity.js.map +1 -1
  131. package/dist/entities/agent-session.entity.d.ts.map +1 -1
  132. package/dist/entities/agent-session.entity.js +1 -0
  133. package/dist/entities/agent-session.entity.js.map +1 -1
  134. package/dist/entities/chatter-message.entity.d.ts.map +1 -1
  135. package/dist/entities/chatter-message.entity.js +2 -0
  136. package/dist/entities/chatter-message.entity.js.map +1 -1
  137. package/dist/entities/email-template.entity.d.ts.map +1 -1
  138. package/dist/entities/email-template.entity.js +1 -0
  139. package/dist/entities/email-template.entity.js.map +1 -1
  140. package/dist/entities/field-metadata.entity.d.ts.map +1 -1
  141. package/dist/entities/field-metadata.entity.js +4 -0
  142. package/dist/entities/field-metadata.entity.js.map +1 -1
  143. package/dist/entities/list-of-values.entity.d.ts.map +1 -1
  144. package/dist/entities/list-of-values.entity.js +4 -0
  145. package/dist/entities/list-of-values.entity.js.map +1 -1
  146. package/dist/entities/locale.entity.d.ts.map +1 -1
  147. package/dist/entities/locale.entity.js +1 -0
  148. package/dist/entities/locale.entity.js.map +1 -1
  149. package/dist/entities/media.entity.d.ts.map +1 -1
  150. package/dist/entities/media.entity.js +1 -0
  151. package/dist/entities/media.entity.js.map +1 -1
  152. package/dist/entities/menu-item-metadata.entity.d.ts.map +1 -1
  153. package/dist/entities/menu-item-metadata.entity.js +2 -0
  154. package/dist/entities/menu-item-metadata.entity.js.map +1 -1
  155. package/dist/entities/model-metadata.entity.d.ts.map +1 -1
  156. package/dist/entities/model-metadata.entity.js +3 -0
  157. package/dist/entities/model-metadata.entity.js.map +1 -1
  158. package/dist/entities/module-metadata.entity.d.ts.map +1 -1
  159. package/dist/entities/module-metadata.entity.js +2 -0
  160. package/dist/entities/module-metadata.entity.js.map +1 -1
  161. package/dist/entities/permission-metadata.entity.d.ts.map +1 -1
  162. package/dist/entities/permission-metadata.entity.js.map +1 -1
  163. package/dist/entities/role-metadata.entity.d.ts +2 -0
  164. package/dist/entities/role-metadata.entity.d.ts.map +1 -1
  165. package/dist/entities/role-metadata.entity.js +10 -2
  166. package/dist/entities/role-metadata.entity.js.map +1 -1
  167. package/dist/entities/saved-filters.entity.d.ts.map +1 -1
  168. package/dist/entities/saved-filters.entity.js +3 -0
  169. package/dist/entities/saved-filters.entity.js.map +1 -1
  170. package/dist/entities/scheduled-job.entity.d.ts.map +1 -1
  171. package/dist/entities/scheduled-job.entity.js +2 -0
  172. package/dist/entities/scheduled-job.entity.js.map +1 -1
  173. package/dist/entities/security-rule.entity.d.ts.map +1 -1
  174. package/dist/entities/security-rule.entity.js +1 -0
  175. package/dist/entities/security-rule.entity.js.map +1 -1
  176. package/dist/entities/sms-template.entity.d.ts.map +1 -1
  177. package/dist/entities/sms-template.entity.js +2 -0
  178. package/dist/entities/sms-template.entity.js.map +1 -1
  179. package/dist/entities/user-activity-history.entity.d.ts.map +1 -1
  180. package/dist/entities/user-activity-history.entity.js +1 -0
  181. package/dist/entities/user-activity-history.entity.js.map +1 -1
  182. package/dist/entities/user.entity.d.ts.map +1 -1
  183. package/dist/entities/user.entity.js +2 -0
  184. package/dist/entities/user.entity.js.map +1 -1
  185. package/dist/entities/view-metadata.entity.d.ts.map +1 -1
  186. package/dist/entities/view-metadata.entity.js +2 -0
  187. package/dist/entities/view-metadata.entity.js.map +1 -1
  188. package/dist/helpers/command.service.js +1 -1
  189. package/dist/helpers/command.service.js.map +1 -1
  190. package/dist/helpers/module-metadata-helper.service.d.ts +2 -0
  191. package/dist/helpers/module-metadata-helper.service.d.ts.map +1 -1
  192. package/dist/helpers/module-metadata-helper.service.js +14 -12
  193. package/dist/helpers/module-metadata-helper.service.js.map +1 -1
  194. package/dist/helpers/module.helper.d.ts.map +1 -1
  195. package/dist/helpers/module.helper.js +6 -6
  196. package/dist/helpers/module.helper.js.map +1 -1
  197. package/dist/helpers/typeorm-migration-helpers.d.ts +12 -0
  198. package/dist/helpers/typeorm-migration-helpers.d.ts.map +1 -0
  199. package/dist/helpers/typeorm-migration-helpers.js +119 -0
  200. package/dist/helpers/typeorm-migration-helpers.js.map +1 -0
  201. package/dist/index.d.ts +8 -5
  202. package/dist/index.d.ts.map +1 -1
  203. package/dist/index.js +8 -5
  204. package/dist/index.js.map +1 -1
  205. package/dist/interfaces.d.ts +0 -8
  206. package/dist/interfaces.d.ts.map +1 -1
  207. package/dist/interfaces.js.map +1 -1
  208. package/dist/seeders/module-metadata-seeder.service.d.ts +1 -0
  209. package/dist/seeders/module-metadata-seeder.service.d.ts.map +1 -1
  210. package/dist/seeders/module-metadata-seeder.service.js +57 -38
  211. package/dist/seeders/module-metadata-seeder.service.js.map +1 -1
  212. package/dist/seeders/module-test-data.service.js +1 -1
  213. package/dist/seeders/module-test-data.service.js.map +1 -1
  214. package/dist/seeders/seed-data/solid-core-metadata.json +2674 -1913
  215. package/dist/services/crud-helper.service.d.ts +18 -0
  216. package/dist/services/crud-helper.service.d.ts.map +1 -1
  217. package/dist/services/crud-helper.service.js +70 -3
  218. package/dist/services/crud-helper.service.js.map +1 -1
  219. package/dist/services/crud.service.d.ts +1 -21
  220. package/dist/services/crud.service.d.ts.map +1 -1
  221. package/dist/services/crud.service.js +9 -75
  222. package/dist/services/crud.service.js.map +1 -1
  223. package/dist/services/import-transaction.service.d.ts.map +1 -1
  224. package/dist/services/import-transaction.service.js +6 -0
  225. package/dist/services/import-transaction.service.js.map +1 -1
  226. package/dist/services/media.service.d.ts +1 -20
  227. package/dist/services/media.service.d.ts.map +1 -1
  228. package/dist/services/mediaStorageProviders/file-s3-storage-provider.d.ts.map +1 -1
  229. package/dist/services/mediaStorageProviders/file-s3-storage-provider.js +31 -2
  230. package/dist/services/mediaStorageProviders/file-s3-storage-provider.js.map +1 -1
  231. package/dist/services/mediaStorageProviders/file-storage-provider.d.ts.map +1 -1
  232. package/dist/services/mediaStorageProviders/file-storage-provider.js +5 -1
  233. package/dist/services/mediaStorageProviders/file-storage-provider.js.map +1 -1
  234. package/dist/services/model-metadata.service.d.ts +15 -30
  235. package/dist/services/model-metadata.service.d.ts.map +1 -1
  236. package/dist/services/model-metadata.service.js +249 -29
  237. package/dist/services/model-metadata.service.js.map +1 -1
  238. package/dist/services/module-metadata-explorer.service.d.ts +161 -0
  239. package/dist/services/module-metadata-explorer.service.d.ts.map +1 -0
  240. package/dist/services/module-metadata-explorer.service.js +485 -0
  241. package/dist/services/module-metadata-explorer.service.js.map +1 -0
  242. package/dist/services/module-metadata.service.d.ts +7 -0
  243. package/dist/services/module-metadata.service.d.ts.map +1 -1
  244. package/dist/services/module-metadata.service.js +121 -2
  245. package/dist/services/module-metadata.service.js.map +1 -1
  246. package/dist/services/module-package.service.d.ts +266 -0
  247. package/dist/services/module-package.service.d.ts.map +1 -0
  248. package/dist/services/module-package.service.js +980 -0
  249. package/dist/services/module-package.service.js.map +1 -0
  250. package/dist/solid-core.module.d.ts.map +1 -1
  251. package/dist/solid-core.module.js +10 -31
  252. package/dist/solid-core.module.js.map +1 -1
  253. package/dist/subscribers/scheduled-job.subscriber.js +1 -1
  254. package/dist/subscribers/scheduled-job.subscriber.js.map +1 -1
  255. package/dist/subscribers/security-rule.subscriber.js +1 -1
  256. package/dist/subscribers/security-rule.subscriber.js.map +1 -1
  257. package/package.json +5 -4
  258. package/src/controllers/module-metadata-explorer.controller.ts +83 -0
  259. package/src/controllers/module-metadata.controller.ts +6 -0
  260. package/src/controllers/module-package.controller.ts +102 -0
  261. package/src/controllers/service.controller.ts +4 -7
  262. package/src/controllers/test.controller.ts +0 -9
  263. package/src/dtos/confirm-module-package-import.dto.ts +12 -0
  264. package/src/dtos/create-permission-metadata.dto.ts +3 -0
  265. package/src/dtos/create-role-metadata.dto.ts +11 -1
  266. package/src/dtos/import-instructions.dto.ts +11 -1
  267. package/src/dtos/metadata-explorer-references-query.dto.ts +39 -0
  268. package/src/dtos/metadata-explorer-search-query.dto.ts +28 -0
  269. package/src/dtos/metadata-explorer-write.dto.ts +11 -0
  270. package/src/dtos/run-module-package-build.dto.ts +14 -0
  271. package/src/dtos/run-module-package-seed.dto.ts +12 -0
  272. package/src/dtos/update-permission-metadata.dto.ts +4 -1
  273. package/src/dtos/update-role-metadata.dto.ts +21 -1
  274. package/src/entities/action-metadata.entity.ts +1 -0
  275. package/src/entities/agent-event.entity.ts +1 -0
  276. package/src/entities/agent-session.entity.ts +1 -0
  277. package/src/entities/chatter-message.entity.ts +2 -0
  278. package/src/entities/email-template.entity.ts +1 -0
  279. package/src/entities/field-metadata.entity.ts +4 -1
  280. package/src/entities/list-of-values.entity.ts +5 -1
  281. package/src/entities/locale.entity.ts +1 -0
  282. package/src/entities/media.entity.ts +1 -0
  283. package/src/entities/menu-item-metadata.entity.ts +2 -0
  284. package/src/entities/model-metadata.entity.ts +3 -0
  285. package/src/entities/module-metadata.entity.ts +2 -0
  286. package/src/entities/permission-metadata.entity.ts +2 -2
  287. package/src/entities/role-metadata.entity.ts +11 -3
  288. package/src/entities/saved-filters.entity.ts +3 -0
  289. package/src/entities/scheduled-job.entity.ts +2 -0
  290. package/src/entities/security-rule.entity.ts +1 -0
  291. package/src/entities/sms-template.entity.ts +2 -0
  292. package/src/entities/user-activity-history.entity.ts +1 -0
  293. package/src/entities/user.entity.ts +2 -0
  294. package/src/entities/view-metadata.entity.ts +2 -0
  295. package/src/helpers/command.service.ts +1 -1
  296. package/src/helpers/module-metadata-helper.service.ts +19 -21
  297. package/src/helpers/module.helper.ts +12 -9
  298. package/src/helpers/typeorm-migration-helpers.ts +163 -0
  299. package/src/index.ts +8 -5
  300. package/src/interfaces.ts +0 -8
  301. package/src/seeders/module-metadata-seeder.service.ts +63 -38
  302. package/src/seeders/module-test-data.service.ts +1 -1
  303. package/src/seeders/seed-data/solid-core-metadata.json +2675 -1914
  304. package/src/services/crud-helper.service.ts +81 -3
  305. package/src/services/crud.service.ts +11 -104
  306. package/src/services/dashboard-providers/README.md +1 -1
  307. package/src/services/import-transaction.service.ts +11 -1
  308. package/src/services/mediaStorageProviders/file-s3-storage-provider.ts +37 -2
  309. package/src/services/mediaStorageProviders/file-storage-provider.ts +5 -1
  310. package/src/services/model-metadata.service.ts +302 -98
  311. package/src/services/module-metadata-explorer.service.ts +670 -0
  312. package/src/services/module-metadata.service.ts +136 -10
  313. package/src/services/module-package.service.ts +1171 -0
  314. package/src/solid-core.module.ts +10 -33
  315. package/src/subscribers/scheduled-job.subscriber.ts +1 -1
  316. package/src/subscribers/security-rule.subscriber.ts +1 -1
  317. package/dist/commands/ingest.command.d.ts +0 -16
  318. package/dist/commands/ingest.command.d.ts.map +0 -1
  319. package/dist/commands/ingest.command.js +0 -50
  320. package/dist/commands/ingest.command.js.map +0 -1
  321. package/dist/controllers/ai-interaction.controller.d.ts +0 -48
  322. package/dist/controllers/ai-interaction.controller.d.ts.map +0 -1
  323. package/dist/controllers/ai-interaction.controller.js +0 -218
  324. package/dist/controllers/ai-interaction.controller.js.map +0 -1
  325. package/dist/dtos/create-ai-interaction.dto.d.ts +0 -23
  326. package/dist/dtos/create-ai-interaction.dto.d.ts.map +0 -1
  327. package/dist/dtos/create-ai-interaction.dto.js +0 -149
  328. package/dist/dtos/create-ai-interaction.dto.js.map +0 -1
  329. package/dist/dtos/invoke-ai-prompt.dto.d.ts +0 -5
  330. package/dist/dtos/invoke-ai-prompt.dto.d.ts.map +0 -1
  331. package/dist/dtos/invoke-ai-prompt.dto.js.map +0 -1
  332. package/dist/dtos/update-ai-interaction.dto.d.ts +0 -24
  333. package/dist/dtos/update-ai-interaction.dto.d.ts.map +0 -1
  334. package/dist/dtos/update-ai-interaction.dto.js +0 -150
  335. package/dist/dtos/update-ai-interaction.dto.js.map +0 -1
  336. package/dist/entities/ai-interaction.entity.d.ts +0 -24
  337. package/dist/entities/ai-interaction.entity.d.ts.map +0 -1
  338. package/dist/entities/ai-interaction.entity.js +0 -116
  339. package/dist/entities/ai-interaction.entity.js.map +0 -1
  340. package/dist/jobs/database/trigger-mcp-client-publisher-database.service.d.ts +0 -11
  341. package/dist/jobs/database/trigger-mcp-client-publisher-database.service.d.ts.map +0 -1
  342. package/dist/jobs/database/trigger-mcp-client-publisher-database.service.js +0 -39
  343. package/dist/jobs/database/trigger-mcp-client-publisher-database.service.js.map +0 -1
  344. package/dist/jobs/database/trigger-mcp-client-queue-options.d.ts +0 -8
  345. package/dist/jobs/database/trigger-mcp-client-queue-options.d.ts.map +0 -1
  346. package/dist/jobs/database/trigger-mcp-client-queue-options.js +0 -10
  347. package/dist/jobs/database/trigger-mcp-client-queue-options.js.map +0 -1
  348. package/dist/jobs/database/trigger-mcp-client-subscriber-database.service.d.ts +0 -25
  349. package/dist/jobs/database/trigger-mcp-client-subscriber-database.service.d.ts.map +0 -1
  350. package/dist/jobs/database/trigger-mcp-client-subscriber-database.service.js +0 -222
  351. package/dist/jobs/database/trigger-mcp-client-subscriber-database.service.js.map +0 -1
  352. package/dist/jobs/rabbitmq/trigger-mcp-client-publisher.service.d.ts +0 -11
  353. package/dist/jobs/rabbitmq/trigger-mcp-client-publisher.service.d.ts.map +0 -1
  354. package/dist/jobs/rabbitmq/trigger-mcp-client-publisher.service.js +0 -39
  355. package/dist/jobs/rabbitmq/trigger-mcp-client-publisher.service.js.map +0 -1
  356. package/dist/jobs/rabbitmq/trigger-mcp-client-queue-options.d.ts +0 -8
  357. package/dist/jobs/rabbitmq/trigger-mcp-client-queue-options.d.ts.map +0 -1
  358. package/dist/jobs/rabbitmq/trigger-mcp-client-queue-options.js +0 -10
  359. package/dist/jobs/rabbitmq/trigger-mcp-client-queue-options.js.map +0 -1
  360. package/dist/jobs/rabbitmq/trigger-mcp-client-subscriber.service.d.ts +0 -18
  361. package/dist/jobs/rabbitmq/trigger-mcp-client-subscriber.service.d.ts.map +0 -1
  362. package/dist/jobs/rabbitmq/trigger-mcp-client-subscriber.service.js +0 -103
  363. package/dist/jobs/rabbitmq/trigger-mcp-client-subscriber.service.js.map +0 -1
  364. package/dist/jobs/redis/trigger-mcp-client-publisher-redis.service.d.ts +0 -11
  365. package/dist/jobs/redis/trigger-mcp-client-publisher-redis.service.d.ts.map +0 -1
  366. package/dist/jobs/redis/trigger-mcp-client-publisher-redis.service.js +0 -39
  367. package/dist/jobs/redis/trigger-mcp-client-publisher-redis.service.js.map +0 -1
  368. package/dist/jobs/redis/trigger-mcp-client-queue-options-redis.d.ts +0 -8
  369. package/dist/jobs/redis/trigger-mcp-client-queue-options-redis.d.ts.map +0 -1
  370. package/dist/jobs/redis/trigger-mcp-client-queue-options-redis.js +0 -10
  371. package/dist/jobs/redis/trigger-mcp-client-queue-options-redis.js.map +0 -1
  372. package/dist/jobs/redis/trigger-mcp-client-subscriber-redis.service.d.ts +0 -18
  373. package/dist/jobs/redis/trigger-mcp-client-subscriber-redis.service.d.ts.map +0 -1
  374. package/dist/jobs/redis/trigger-mcp-client-subscriber-redis.service.js +0 -103
  375. package/dist/jobs/redis/trigger-mcp-client-subscriber-redis.service.js.map +0 -1
  376. package/dist/repository/ai-interaction.repository.d.ts +0 -12
  377. package/dist/repository/ai-interaction.repository.d.ts.map +0 -1
  378. package/dist/repository/ai-interaction.repository.js +0 -34
  379. package/dist/repository/ai-interaction.repository.js.map +0 -1
  380. package/dist/services/ai-interaction.service.d.ts +0 -23
  381. package/dist/services/ai-interaction.service.d.ts.map +0 -1
  382. package/dist/services/ai-interaction.service.js +0 -217
  383. package/dist/services/ai-interaction.service.js.map +0 -1
  384. package/dist/services/database/database-bootstrap.service.d.ts +0 -12
  385. package/dist/services/database/database-bootstrap.service.d.ts.map +0 -1
  386. package/dist/services/database/database-bootstrap.service.js +0 -115
  387. package/dist/services/database/database-bootstrap.service.js.map +0 -1
  388. package/dist/services/genai/ingest-metadata.service.d.ts +0 -38
  389. package/dist/services/genai/ingest-metadata.service.d.ts.map +0 -1
  390. package/dist/services/genai/ingest-metadata.service.js +0 -542
  391. package/dist/services/genai/ingest-metadata.service.js.map +0 -1
  392. package/dist/services/genai/mcp-handlers/mcp-handler-factory.service.d.ts +0 -9
  393. package/dist/services/genai/mcp-handlers/mcp-handler-factory.service.d.ts.map +0 -1
  394. package/dist/services/genai/mcp-handlers/mcp-handler-factory.service.js +0 -39
  395. package/dist/services/genai/mcp-handlers/mcp-handler-factory.service.js.map +0 -1
  396. package/dist/services/genai/r2r-helper.service.d.ts +0 -9
  397. package/dist/services/genai/r2r-helper.service.d.ts.map +0 -1
  398. package/dist/services/genai/r2r-helper.service.js +0 -40
  399. package/dist/services/genai/r2r-helper.service.js.map +0 -1
  400. package/sql/default/mariadb/proc_CleanupModelMetadata.sql +0 -153
  401. package/sql/default/mariadb/proc_CleanupModuleMetadata.sql +0 -56
  402. package/sql/default/mssql/proc_CleanupModuleMetadata.sql +0 -78
  403. package/sql/default/mysql/proc_CleanupModelMetadata.sql +0 -153
  404. package/sql/default/mysql/proc_CleanupModuleMetadata.sql +0 -56
  405. package/sql/default/postgres/proc_CleanupModelMetadata.sql +0 -148
  406. package/sql/default/postgres/proc_CleanupModuleMetadata.sql +0 -50
  407. package/sql/default/postgres/scratchpad.sql.txt +0 -12
  408. package/src/commands/ingest.command.ts +0 -36
  409. package/src/controllers/ai-interaction.controller.ts +0 -112
  410. package/src/dtos/create-ai-interaction.dto.ts +0 -89
  411. package/src/dtos/invoke-ai-prompt.dto.ts +0 -10
  412. package/src/dtos/update-ai-interaction.dto.ts +0 -93
  413. package/src/entities/ai-interaction.entity.ts +0 -71
  414. package/src/jobs/database/trigger-mcp-client-publisher-database.service.ts +0 -22
  415. package/src/jobs/database/trigger-mcp-client-queue-options.ts +0 -9
  416. package/src/jobs/database/trigger-mcp-client-subscriber-database.service.ts +0 -278
  417. package/src/jobs/rabbitmq/trigger-mcp-client-publisher.service.ts +0 -22
  418. package/src/jobs/rabbitmq/trigger-mcp-client-queue-options.ts +0 -9
  419. package/src/jobs/rabbitmq/trigger-mcp-client-subscriber.service.ts +0 -104
  420. package/src/jobs/redis/trigger-mcp-client-publisher-redis.service.ts +0 -23
  421. package/src/jobs/redis/trigger-mcp-client-queue-options-redis.ts +0 -9
  422. package/src/jobs/redis/trigger-mcp-client-subscriber-redis.service.ts +0 -98
  423. package/src/repository/ai-interaction.repository.ts +0 -17
  424. package/src/services/ai-interaction.service.ts +0 -239
  425. package/src/services/database/database-bootstrap.service.ts +0 -91
  426. package/src/services/genai/ingest-metadata.service.ts +0 -798
  427. package/src/services/genai/mcp-handlers/mcp-handler-factory.service.ts +0 -33
  428. package/src/services/genai/r2r-helper.service.ts +0 -37
@@ -1,98 +0,0 @@
1
- import { Injectable, Logger } from '@nestjs/common';
2
-
3
- import { RedisSubscriber } from 'src/services/queues/redis-subscriber.service';
4
- import { QueueMessage } from 'src/interfaces/mq';
5
- import triggerMcpClientQueueConfig from './trigger-mcp-client-queue-options-redis';
6
- import { MqMessageService } from '../../services/mq-message.service';
7
- import { MqMessageQueueService } from '../../services/mq-message-queue.service';
8
- import { TriggerMcpClientOptions, QueuesModuleOptions } from "../../interfaces";
9
- import { AiInteractionService } from '../../services/ai-interaction.service';
10
- import { PollerService } from '../../services/poller.service';
11
-
12
- @Injectable()
13
- export class TriggerMcpClientSubscriberRedis extends RedisSubscriber<TriggerMcpClientOptions> {
14
- private readonly triggerMcpClientSubscriberLogger = new Logger(TriggerMcpClientSubscriberRedis.name);
15
-
16
- constructor(
17
- readonly mqMessageService: MqMessageService,
18
- readonly mqMessageQueueService: MqMessageQueueService,
19
- readonly poller: PollerService,
20
- readonly aiInteractionService: AiInteractionService,
21
- ) {
22
- super(mqMessageService, mqMessageQueueService);
23
- }
24
-
25
- options(): QueuesModuleOptions {
26
- return {
27
- ...triggerMcpClientQueueConfig
28
- }
29
- }
30
-
31
- async subscribe(message: QueueMessage<TriggerMcpClientOptions>) {
32
- this.triggerMcpClientSubscriberLogger.debug(`Received message: ${JSON.stringify(message)}`);
33
-
34
- const codeGnerationOptions = message.payload;
35
-
36
- const aiInteraction = await this.aiInteractionService.findOne(codeGnerationOptions.aiInteractionId, {
37
- populate: ['user']
38
- });
39
- if (!aiInteraction) {
40
- const m = `Unable to identified the aiInteraction entry that triggered this job... using id: ${codeGnerationOptions.aiInteractionId}`
41
- this.triggerMcpClientSubscriberLogger.log(m);
42
- throw new Error(m);
43
- }
44
-
45
- const prompt = aiInteraction.message;
46
-
47
- const aiResponse = await this.aiInteractionService.runMcpPrompt(prompt);
48
- this.triggerMcpClientSubscriberLogger.log(`aiResponse: `);
49
- this.triggerMcpClientSubscriberLogger.log(JSON.stringify(aiResponse));
50
-
51
- if (!aiResponse.success) {
52
- this.triggerMcpClientSubscriberLogger.log(`Gen ai has returned with a false status code`);
53
-
54
- const errorsStr = aiResponse.errors.join('; ');
55
-
56
- await this.aiInteractionService.create({
57
- userId: aiInteraction.user.id,
58
- threadId: aiInteraction.threadId,
59
- parentInteractionId: aiInteraction.id,
60
- role: 'gen-ai',
61
- message: '-',
62
- contentType: aiResponse.content_type,
63
- errorMessage: errorsStr,
64
- modelUsed: aiResponse.model,
65
- responseTimeMs: aiResponse.duration_ms,
66
- metadata: JSON.stringify(aiResponse),
67
- isApplied: aiInteraction.isApplied,
68
- status: aiResponse.success ? 'succeeded' : 'failed'
69
- });
70
-
71
- throw new Error(errorsStr);
72
- }
73
- else {
74
- let nestedResponse = aiResponse.response.trim();
75
-
76
- const genAiInteraction = await this.aiInteractionService.create({
77
- userId: aiInteraction.user.id,
78
- threadId: aiInteraction.threadId,
79
- parentInteractionId: aiInteraction.id,
80
- role: 'gen-ai',
81
- message: nestedResponse,
82
- contentType: aiResponse.content_type,
83
- errorMessage: '',
84
- modelUsed: aiResponse.model,
85
- responseTimeMs: aiResponse.duration_ms,
86
- metadata: JSON.stringify(aiResponse),
87
- isApplied: aiInteraction.isApplied,
88
- status: aiResponse.success ? 'succeeded' : 'failed'
89
- });
90
-
91
- if (aiInteraction.isAutoApply) {
92
- this.aiInteractionService.applySolidAiInteraction(genAiInteraction.id);
93
- }
94
- }
95
-
96
- return aiResponse;
97
- }
98
- }
@@ -1,17 +0,0 @@
1
- import { Injectable } from '@nestjs/common';
2
- import { AiInteraction } from 'src/entities/ai-interaction.entity';
3
- import { RequestContextService } from 'src/services/request-context.service';
4
- import { DataSource } from 'typeorm';
5
- import { SecurityRuleRepository } from './security-rule.repository';
6
- import { SolidBaseRepository } from './solid-base.repository';
7
-
8
- @Injectable()
9
- export class AiInteractionRepository extends SolidBaseRepository<AiInteraction> {
10
- constructor(
11
- readonly dataSource: DataSource,
12
- readonly requestContextService: RequestContextService,
13
- readonly securityRuleRepository: SecurityRuleRepository,
14
- ) {
15
- super(AiInteraction, dataSource, requestContextService, securityRuleRepository);
16
- }
17
- }
@@ -1,239 +0,0 @@
1
- import { BadRequestException, Injectable, Logger } from '@nestjs/common';
2
- import { ModuleRef } from "@nestjs/core";
3
- import { InjectEntityManager } from '@nestjs/typeorm';
4
- import { EntityManager } from 'typeorm';
5
- import type { SolidCoreSetting } from "src/services/settings/default-settings-provider.service";
6
-
7
- import { spawn } from 'child_process';
8
- import * as fs from 'fs/promises';
9
- import { ERROR_MESSAGES } from 'src/constants/error-messages';
10
- import { InvokeAiPromptDto } from 'src/dtos/invoke-ai-prompt.dto';
11
- import { McpResponse, TriggerMcpClientOptions } from 'src/interfaces';
12
- import { AiInteractionRepository } from 'src/repository/ai-interaction.repository';
13
- import { CRUDService } from 'src/services/crud.service';
14
- import { AiInteraction } from '../entities/ai-interaction.entity';
15
- import { McpHandlerFactory } from './genai/mcp-handlers/mcp-handler-factory.service';
16
- import { PublisherFactory } from './queues/publisher-factory.service';
17
-
18
- @Injectable()
19
- export class AiInteractionService extends CRUDService<AiInteraction> {
20
- private readonly logger = new Logger(AiInteractionService.name);
21
-
22
- constructor(
23
- @InjectEntityManager()
24
- readonly entityManager: EntityManager,
25
- // @InjectRepository(AiInteraction, 'default')
26
- // readonly repo: Repository<AiInteraction>,
27
- readonly repo: AiInteractionRepository,
28
- readonly moduleRef: ModuleRef,
29
- readonly publisherFactory: PublisherFactory<TriggerMcpClientOptions>,
30
- // readonly requestContextService: RequestContextService,
31
- readonly mcpHandlerFactory: McpHandlerFactory,
32
-
33
- ) {
34
- super(entityManager, repo, 'aiInteraction', 'solid-core', moduleRef);
35
- }
36
-
37
- async triggerMcpClientJob(dto: InvokeAiPromptDto, userId: number, isAutoApply: boolean = false, threadId: string = null): Promise<any> {
38
- // const activeUser: ActiveUserData = this.requestContextService.getActiveUser();
39
-
40
- const aiInteraction = await this.create({
41
- userId: userId,
42
- threadId: threadId ? threadId : `thread-${userId}`,
43
- role: 'human',
44
- message: dto.prompt,
45
- contentType: '',
46
- errorMessage: '',
47
- modelUsed: '',
48
- responseTimeMs: 0,
49
- metadata: '',
50
- isAutoApply: isAutoApply
51
- });
52
- const m = {
53
- payload: {
54
- aiInteractionId: aiInteraction.id,
55
- moduleName: dto.moduleName
56
- },
57
- parentEntity: 'aiInteraction',
58
- parentEntityId: aiInteraction.id,
59
- };
60
-
61
- const queueMessageId = await this.publisherFactory.publish(m, 'TriggerMcpClientPublisher');
62
-
63
- return {
64
- queueMessageId: queueMessageId,
65
- aiInteractionId: aiInteraction.id
66
- }
67
- }
68
-
69
- /**
70
- * Runs the Python MCP client with a prompt and returns the parsed JSON embedded in the 'response'.
71
- * @param prompt - The question or instruction to send to the MCP client.
72
- * @returns The parsed object inside the 'response' field of the JSON output.
73
- */
74
- async runMcpPrompt(prompt: string): Promise<McpResponse> {
75
- const pythonExecutable = this.settingService.getConfigValue<SolidCoreSetting>('mcpPythonExecutable');
76
- const mcpClient = this.settingService.getConfigValue<SolidCoreSetting>('mcpClient');
77
-
78
- // TODO: We can return an error if the above env variables are not properly setup...
79
- if (!pythonExecutable || !mcpClient) {
80
- throw new BadRequestException(ERROR_MESSAGES.PYTHON_EXECUTABLE_NOT_CONFIGURED);
81
- }
82
-
83
- // Check if both paths are valid and accessible
84
- try {
85
- const [pyStat, clientStat] = await Promise.all([
86
- fs.stat(pythonExecutable),
87
- fs.stat(mcpClient),
88
- ]);
89
-
90
- if (!pyStat.isFile()) {
91
- throw new BadRequestException(`MCP_PYTHON_EXECUTABLE path is not a file: ${pythonExecutable}`);
92
- }
93
-
94
- if (!clientStat.isFile()) {
95
- throw new BadRequestException(`MCP_CLIENT path is not a file: ${mcpClient}`);
96
- }
97
-
98
- } catch (err: any) {
99
- throw new BadRequestException(`Invalid MCP executable or client path: ${err.message}`);
100
- }
101
-
102
- // TODO: Refactor to use the command.service.ts instead...
103
- return new Promise((resolve, reject) => {
104
- this.logger.log(`Attempting to run command:`)
105
- this.logger.log(`${pythonExecutable} ${mcpClient} "${prompt}"`);
106
-
107
- const python = spawn(pythonExecutable, [mcpClient, `"${prompt}"`]);
108
-
109
- let stdout = '';
110
- let stderr = '';
111
-
112
- python.stdout.on('data', (data) => {
113
- stdout += data.toString();
114
- });
115
-
116
- python.stderr.on('data', (data) => {
117
- stderr += data.toString();
118
- });
119
-
120
- python.on('close', (code) => {
121
- this.logger.log(`Python script exited with code ${code}`);
122
-
123
- if (code !== 0) {
124
- this.logger.error(`Python script exited with a non-zero exit code: ${stderr}`);
125
- return reject(new Error(`Python script exited with a non-zero exit code: ${stderr}`));
126
- }
127
-
128
- try {
129
- this.logger.log(`Python script exited with zero exit code: ${stdout}`);
130
- const raw: McpResponse = JSON.parse(stdout);
131
-
132
- // Sometimes the raw.response might not be a valid json
133
- // TODO: examine the content type of the raw response..
134
- // if (raw.content_type==='json') {
135
- // }
136
- let parsedResponse = raw.response;
137
- try {
138
- parsedResponse = JSON.parse(raw.response);
139
- }
140
- catch (ex) {
141
- this.logger.warn(`Attempting to parse mcp client response assuming it is JSON, however it is not: ${parsedResponse}`);
142
- // raw.success = false
143
- }
144
- // Parse the response string into an object
145
- // const parsedResponse = JSON.parse(raw.response);
146
-
147
- // Replace the string with the parsed object
148
- const enrichedRaw = {
149
- ...raw,
150
- response: parsedResponse,
151
- };
152
- // if (!raw.success) {
153
- // return reject(new Error(`MCP error: ${raw.errors?.join(', ')}`));
154
- // }
155
- // let cleaned = raw.response.trim();
156
-
157
- // Don't need to re-parse this...
158
- // const parsed = JSON.parse(cleaned);
159
- // resolve(cleaned);
160
-
161
- resolve(enrichedRaw);
162
- } catch (err: any) {
163
- reject(new Error(`Mcp Invocation Failed: ${err.message}`));
164
- }
165
- });
166
- });
167
- }
168
-
169
- cleanResponse(response: string) {
170
- this.logger.log(`mcp server response is: ${response}`);
171
-
172
- // Remove markdown-style code block wrapper
173
- if (response.startsWith('```json')) {
174
- response = response.replace(/^```json/, '').trim();
175
- }
176
- if (response.endsWith('```')) {
177
- response = response.replace(/```$/, '').trim();
178
- }
179
- this.logger.log(`mcp server response after removing doc tags is: ${response}`);
180
-
181
- return response;
182
- }
183
-
184
- async applySolidAiInteraction(id: number) {
185
- // Fetch the aiInteraction
186
- const aiInteraction = await this.findOne(id, {
187
- populate: ['user']
188
- });
189
- if (!aiInteraction) {
190
- const m = `Unable to identified the aiInteraction entry that triggered this job... using id: ${id}`
191
-
192
- // TODO: RESPONSE SHAPE ALERT Check if we want to control the shape of the response....
193
- throw new Error(m);
194
- }
195
-
196
- // TODO: Validation: Check if JSON.parse(metadata).tools_invoked starts with solid_
197
- let metadata: any = {};
198
- try {
199
- if (typeof aiInteraction.metadata === "string") {
200
- metadata = JSON.parse(aiInteraction.metadata);
201
- } else if (typeof aiInteraction.metadata === "object" && aiInteraction.metadata !== null) {
202
- metadata = aiInteraction.metadata;
203
- } else {
204
- // optional fallback
205
- metadata = {};
206
- }
207
- } catch (e) {
208
- // TODO: RESPONSE SHAPE ALERT Check if we want to control the shape of the response....
209
- throw new Error(`Invalid metadata JSON: ${e}`);
210
- }
211
-
212
- const toolsInvoked = metadata['tools_invoked'];
213
- if (!toolsInvoked) {
214
- // TODO: RESPONSE SHAPE ALERT Check if we want to control the shape of the response....
215
- throw new Error(ERROR_MESSAGES.UNABLE_TO_RESOLVE_SOLID_COMMAND);
216
- }
217
-
218
- // TODO: OPTIMISATION for chained tool invocation, for now we are assuming only 1 tool was used.
219
- const toolInvoked = toolsInvoked[0];
220
-
221
- // TODO: use the toolInvoked to identify a service using some convention.
222
- // TODO: Eg. if toolInvoked is solid_create_module <> SolidCreateModuleMcpToolHandler ... create a factory class to do this mapping and identify the relevant provider.
223
- const mcpToolHandler = this.mcpHandlerFactory.getInstance(toolInvoked);
224
- if (!mcpToolHandler) {
225
- // TODO: RESPONSE SHAPE ALERT Check if we want to control the shape of the response....
226
- throw new Error(ERROR_MESSAGES.UNABLE_TO_RESOLVE_MCP_HANDLER);
227
- }
228
-
229
- const handlerApplicationResponse = await mcpToolHandler.apply(aiInteraction);
230
-
231
- // TODO: This provider to implement an interface - IMcpToolResponseHandler ... apply(aiInteraction: AiInteraction)
232
- // throw new Error('Method not implemented.');
233
-
234
- // Mark the interaction as applied
235
- await this.update(aiInteraction.id, { isApplied: true }, [], true);
236
-
237
- return handlerApplicationResponse;
238
- }
239
- }
@@ -1,91 +0,0 @@
1
- import { Injectable, Logger, OnModuleInit } from '@nestjs/common';
2
- import { DataSource } from 'typeorm';
3
- import { readdir, readFile } from 'fs/promises';
4
- import * as path from 'path';
5
- import { InjectDataSource } from '@nestjs/typeorm';
6
-
7
- @Injectable()
8
- export class DatabaseBootstrapService implements OnModuleInit {
9
- private readonly logger = new Logger(DatabaseBootstrapService.name);
10
-
11
- constructor(
12
- @InjectDataSource()
13
- private readonly dataSource: DataSource,
14
- ) { }
15
-
16
- async onModuleInit() {
17
- if (!this.dataSource.isInitialized) {
18
- this.logger.warn(`[${this.dataSource.name}] DataSource not initialized. Skipping SQL bootstrap.`);
19
- return;
20
- }
21
-
22
- this.logger.debug(`[${this.dataSource.name}] Bootstrapping stored procedures...`);
23
-
24
- await this.applyAllSqlFiles();
25
-
26
- this.logger.debug(`[${this.dataSource.name}] SQL bootstrap completed`);
27
- }
28
-
29
- private resolveSqlDirectory(): string {
30
- const datasourceName = this.dataSource.name || 'default';
31
- const dbType = this.dataSource.options.type;
32
-
33
- const sqlFilePath = path.resolve(__dirname, `../../../sql/${datasourceName}/${dbType}`);
34
-
35
- return sqlFilePath
36
- }
37
-
38
- private async applyAllSqlFiles() {
39
- const sqlDir = this.resolveSqlDirectory();
40
-
41
- this.logger.debug(`[${this.dataSource.name}] SQL directory: ${sqlDir}`);
42
-
43
- let files: string[];
44
- try {
45
- files = await readdir(sqlDir);
46
- } catch {
47
- this.logger.warn(
48
- `[${this.dataSource.name}] No SQL directory found. Skipping.`,
49
- );
50
- return;
51
- }
52
-
53
- const sqlFiles = files
54
- .filter(file => file.endsWith('.sql'))
55
- .sort();
56
-
57
- if (!sqlFiles.length) {
58
- this.logger.warn(
59
- `[${this.dataSource.name}] No SQL files found`,
60
- );
61
- return;
62
- }
63
-
64
- for (const file of sqlFiles) {
65
- await this.applySqlFileSafely(
66
- path.join(sqlDir, file),
67
- file,
68
- );
69
- }
70
- }
71
-
72
- private async applySqlFileSafely(
73
- filePath: string,
74
- fileName: string,
75
- ) {
76
- this.logger.debug(`[${this.dataSource.name}] Applying ${fileName}`);
77
-
78
- try {
79
- const sql = await readFile(filePath, 'utf8');
80
- await this.dataSource.query(sql);
81
-
82
- this.logger.debug(`[${this.dataSource.name}] Applied ${fileName}`);
83
- } catch (error: any) {
84
- // DO NOT THROW — continue with next file
85
- this.logger.error(
86
- `[${this.dataSource.name}] Failed ${fileName}`,
87
- error instanceof Error ? error.stack : String(error),
88
- );
89
- }
90
- }
91
- }