@solidstarters/solid-core 1.2.192 → 1.2.200

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 (376) hide show
  1. package/dist/commands/mcp.command.d.ts +20 -0
  2. package/dist/commands/mcp.command.d.ts.map +1 -0
  3. package/dist/commands/mcp.command.js +208 -0
  4. package/dist/commands/mcp.command.js.map +1 -0
  5. package/dist/commands/refresh-model.command.d.ts +8 -5
  6. package/dist/commands/refresh-model.command.d.ts.map +1 -1
  7. package/dist/commands/refresh-model.command.js +32 -0
  8. package/dist/commands/refresh-model.command.js.map +1 -1
  9. package/dist/commands/remove-fields.command.js +1 -1
  10. package/dist/commands/remove-fields.command.js.map +1 -1
  11. package/dist/commands/seed.command.d.ts +2 -0
  12. package/dist/commands/seed.command.d.ts.map +1 -1
  13. package/dist/commands/seed.command.js +28 -1
  14. package/dist/commands/seed.command.js.map +1 -1
  15. package/dist/controllers/authentication.controller.js +1 -1
  16. package/dist/controllers/authentication.controller.js.map +1 -1
  17. package/dist/controllers/email-template.controller.js +1 -1
  18. package/dist/controllers/email-template.controller.js.map +1 -1
  19. package/dist/controllers/field-metadata.controller.d.ts +136 -4
  20. package/dist/controllers/field-metadata.controller.d.ts.map +1 -1
  21. package/dist/controllers/field-metadata.controller.js +14 -1
  22. package/dist/controllers/field-metadata.controller.js.map +1 -1
  23. package/dist/controllers/media-storage-provider-metadata.controller.js +1 -1
  24. package/dist/controllers/media-storage-provider-metadata.controller.js.map +1 -1
  25. package/dist/controllers/model-metadata.controller.js +1 -1
  26. package/dist/controllers/model-metadata.controller.js.map +1 -1
  27. package/dist/controllers/module-metadata.controller.js +1 -1
  28. package/dist/controllers/module-metadata.controller.js.map +1 -1
  29. package/dist/controllers/otp-authentication.controller.js +1 -1
  30. package/dist/controllers/otp-authentication.controller.js.map +1 -1
  31. package/dist/controllers/service.controller.js +1 -1
  32. package/dist/controllers/service.controller.js.map +1 -1
  33. package/dist/controllers/sms-template.controller.js +1 -1
  34. package/dist/controllers/sms-template.controller.js.map +1 -1
  35. package/dist/controllers/test-queue.controller.js +1 -1
  36. package/dist/controllers/test-queue.controller.js.map +1 -1
  37. package/dist/controllers/test.controller.js +1 -1
  38. package/dist/controllers/test.controller.js.map +1 -1
  39. package/dist/dtos/create-ai-interaction.dto.d.ts +2 -0
  40. package/dist/dtos/create-ai-interaction.dto.d.ts.map +1 -1
  41. package/dist/dtos/create-ai-interaction.dto.js +14 -1
  42. package/dist/dtos/create-ai-interaction.dto.js.map +1 -1
  43. package/dist/dtos/create-field-metadata.dto.d.ts +22 -5
  44. package/dist/dtos/create-field-metadata.dto.d.ts.map +1 -1
  45. package/dist/dtos/create-field-metadata.dto.js +33 -7
  46. package/dist/dtos/create-field-metadata.dto.js.map +1 -1
  47. package/dist/dtos/create-import-transaction.dto.d.ts +0 -1
  48. package/dist/dtos/create-import-transaction.dto.d.ts.map +1 -1
  49. package/dist/dtos/create-import-transaction.dto.js +1 -7
  50. package/dist/dtos/create-import-transaction.dto.js.map +1 -1
  51. package/dist/dtos/create-model-metadata.dto.d.ts +2 -0
  52. package/dist/dtos/create-model-metadata.dto.d.ts.map +1 -1
  53. package/dist/dtos/create-model-metadata.dto.js +13 -1
  54. package/dist/dtos/create-model-metadata.dto.js.map +1 -1
  55. package/dist/dtos/create-role-metadata.dto.d.ts.map +1 -1
  56. package/dist/dtos/create-role-metadata.dto.js +5 -1
  57. package/dist/dtos/create-role-metadata.dto.js.map +1 -1
  58. package/dist/dtos/resolve-s3-url.dto.d.ts +10 -0
  59. package/dist/dtos/resolve-s3-url.dto.d.ts.map +1 -0
  60. package/dist/dtos/resolve-s3-url.dto.js +49 -0
  61. package/dist/dtos/resolve-s3-url.dto.js.map +1 -0
  62. package/dist/dtos/update-ai-interaction.dto.d.ts +2 -0
  63. package/dist/dtos/update-ai-interaction.dto.d.ts.map +1 -1
  64. package/dist/dtos/update-ai-interaction.dto.js +13 -1
  65. package/dist/dtos/update-ai-interaction.dto.js.map +1 -1
  66. package/dist/dtos/update-field-metadata.dto.d.ts.map +1 -1
  67. package/dist/dtos/update-field-metadata.dto.js.map +1 -1
  68. package/dist/dtos/update-import-transaction.dto.d.ts +0 -1
  69. package/dist/dtos/update-import-transaction.dto.d.ts.map +1 -1
  70. package/dist/dtos/update-import-transaction.dto.js +1 -7
  71. package/dist/dtos/update-import-transaction.dto.js.map +1 -1
  72. package/dist/entities/action-metadata.entity.js +4 -4
  73. package/dist/entities/action-metadata.entity.js.map +1 -1
  74. package/dist/entities/ai-interaction.entity.d.ts +2 -0
  75. package/dist/entities/ai-interaction.entity.d.ts.map +1 -1
  76. package/dist/entities/ai-interaction.entity.js +15 -6
  77. package/dist/entities/ai-interaction.entity.js.map +1 -1
  78. package/dist/entities/chatter-message-details.entity.d.ts.map +1 -1
  79. package/dist/entities/chatter-message-details.entity.js +1 -1
  80. package/dist/entities/chatter-message-details.entity.js.map +1 -1
  81. package/dist/entities/chatter-message.entity.js +1 -1
  82. package/dist/entities/chatter-message.entity.js.map +1 -1
  83. package/dist/entities/common.entity.d.ts +2 -3
  84. package/dist/entities/common.entity.d.ts.map +1 -1
  85. package/dist/entities/common.entity.js +9 -11
  86. package/dist/entities/common.entity.js.map +1 -1
  87. package/dist/entities/dashboard-question-sql-dataset-config.entity.js +2 -2
  88. package/dist/entities/dashboard-question-sql-dataset-config.entity.js.map +1 -1
  89. package/dist/entities/dashboard-question.entity.js +3 -3
  90. package/dist/entities/dashboard-question.entity.js.map +1 -1
  91. package/dist/entities/dashboard-variable.entity.js +3 -3
  92. package/dist/entities/dashboard-variable.entity.js.map +1 -1
  93. package/dist/entities/dashboard.entity.js +1 -1
  94. package/dist/entities/dashboard.entity.js.map +1 -1
  95. package/dist/entities/email-template.entity.d.ts.map +1 -1
  96. package/dist/entities/email-template.entity.js +4 -3
  97. package/dist/entities/email-template.entity.js.map +1 -1
  98. package/dist/entities/export-template.entity.js +2 -2
  99. package/dist/entities/export-template.entity.js.map +1 -1
  100. package/dist/entities/export-transaction.entity.js +2 -2
  101. package/dist/entities/export-transaction.entity.js.map +1 -1
  102. package/dist/entities/field-metadata.entity.d.ts +1 -0
  103. package/dist/entities/field-metadata.entity.d.ts.map +1 -1
  104. package/dist/entities/field-metadata.entity.js +8 -4
  105. package/dist/entities/field-metadata.entity.js.map +1 -1
  106. package/dist/entities/import-transaction-error-log.entity.js +1 -1
  107. package/dist/entities/import-transaction-error-log.entity.js.map +1 -1
  108. package/dist/entities/import-transaction.entity.d.ts +0 -1
  109. package/dist/entities/import-transaction.entity.d.ts.map +1 -1
  110. package/dist/entities/import-transaction.entity.js +2 -7
  111. package/dist/entities/import-transaction.entity.js.map +1 -1
  112. package/dist/entities/legacy-common-with-id.entity.d.ts +5 -0
  113. package/dist/entities/legacy-common-with-id.entity.d.ts.map +1 -0
  114. package/dist/entities/legacy-common-with-id.entity.js +32 -0
  115. package/dist/entities/legacy-common-with-id.entity.js.map +1 -0
  116. package/dist/entities/legacy-common.entity.d.ts +13 -0
  117. package/dist/entities/legacy-common.entity.d.ts.map +1 -0
  118. package/dist/entities/legacy-common.entity.js +67 -0
  119. package/dist/entities/legacy-common.entity.js.map +1 -0
  120. package/dist/entities/list-of-values.entity.js +2 -2
  121. package/dist/entities/list-of-values.entity.js.map +1 -1
  122. package/dist/entities/locale.entity.js +1 -1
  123. package/dist/entities/locale.entity.js.map +1 -1
  124. package/dist/entities/media.entity.d.ts.map +1 -1
  125. package/dist/entities/media.entity.js +3 -3
  126. package/dist/entities/media.entity.js.map +1 -1
  127. package/dist/entities/menu-item-metadata.entity.js +4 -4
  128. package/dist/entities/menu-item-metadata.entity.js.map +1 -1
  129. package/dist/entities/model-metadata.entity.d.ts +2 -0
  130. package/dist/entities/model-metadata.entity.d.ts.map +1 -1
  131. package/dist/entities/model-metadata.entity.js +11 -3
  132. package/dist/entities/model-metadata.entity.js.map +1 -1
  133. package/dist/entities/mq-message-queue.entity.js +1 -1
  134. package/dist/entities/mq-message-queue.entity.js.map +1 -1
  135. package/dist/entities/mq-message.entity.d.ts +3 -3
  136. package/dist/entities/mq-message.entity.d.ts.map +1 -1
  137. package/dist/entities/mq-message.entity.js +10 -10
  138. package/dist/entities/mq-message.entity.js.map +1 -1
  139. package/dist/entities/saved-filters.entity.js +4 -4
  140. package/dist/entities/saved-filters.entity.js.map +1 -1
  141. package/dist/entities/scheduled-job.entity.js +4 -4
  142. package/dist/entities/scheduled-job.entity.js.map +1 -1
  143. package/dist/entities/security-rule.entity.js +2 -2
  144. package/dist/entities/security-rule.entity.js.map +1 -1
  145. package/dist/entities/setting.entity.js +2 -2
  146. package/dist/entities/setting.entity.js.map +1 -1
  147. package/dist/entities/sms-template.entity.js +2 -2
  148. package/dist/entities/sms-template.entity.js.map +1 -1
  149. package/dist/entities/user-activity-history.entity.d.ts.map +1 -1
  150. package/dist/entities/user-activity-history.entity.js +1 -1
  151. package/dist/entities/user-activity-history.entity.js.map +1 -1
  152. package/dist/entities/user-view-metadata.entity.js +2 -2
  153. package/dist/entities/user-view-metadata.entity.js.map +1 -1
  154. package/dist/entities/user.entity.js +13 -15
  155. package/dist/entities/user.entity.js.map +1 -1
  156. package/dist/entities/view-metadata.entity.js +3 -3
  157. package/dist/entities/view-metadata.entity.js.map +1 -1
  158. package/dist/helpers/date.helper.d.ts +1 -1
  159. package/dist/helpers/date.helper.d.ts.map +1 -1
  160. package/dist/helpers/date.helper.js +24 -2
  161. package/dist/helpers/date.helper.js.map +1 -1
  162. package/dist/helpers/model-metadata-helper.service.d.ts +4 -1
  163. package/dist/helpers/model-metadata-helper.service.d.ts.map +1 -1
  164. package/dist/helpers/model-metadata-helper.service.js +48 -30
  165. package/dist/helpers/model-metadata-helper.service.js.map +1 -1
  166. package/dist/helpers/module.helper.d.ts.map +1 -1
  167. package/dist/helpers/module.helper.js +1 -3
  168. package/dist/helpers/module.helper.js.map +1 -1
  169. package/dist/helpers/schematic.service.d.ts +9 -3
  170. package/dist/helpers/schematic.service.d.ts.map +1 -1
  171. package/dist/helpers/schematic.service.js +49 -32
  172. package/dist/helpers/schematic.service.js.map +1 -1
  173. package/dist/helpers/solid-registry.d.ts +3 -2
  174. package/dist/helpers/solid-registry.d.ts.map +1 -1
  175. package/dist/helpers/solid-registry.js +10 -0
  176. package/dist/helpers/solid-registry.js.map +1 -1
  177. package/dist/helpers/typeorm-db-helper.d.ts +3 -0
  178. package/dist/helpers/typeorm-db-helper.d.ts.map +1 -0
  179. package/dist/helpers/typeorm-db-helper.js +24 -0
  180. package/dist/helpers/typeorm-db-helper.js.map +1 -0
  181. package/dist/index.d.ts +5 -1
  182. package/dist/index.d.ts.map +1 -1
  183. package/dist/index.js +5 -1
  184. package/dist/index.js.map +1 -1
  185. package/dist/interfaces.d.ts +3 -0
  186. package/dist/interfaces.d.ts.map +1 -1
  187. package/dist/interfaces.js.map +1 -1
  188. package/dist/jobs/database/trigger-mcp-client-subscriber-database.service.d.ts.map +1 -1
  189. package/dist/jobs/database/trigger-mcp-client-subscriber-database.service.js +6 -1
  190. package/dist/jobs/database/trigger-mcp-client-subscriber-database.service.js.map +1 -1
  191. package/dist/seeders/module-metadata-seeder.service.d.ts +1 -1
  192. package/dist/seeders/module-metadata-seeder.service.d.ts.map +1 -1
  193. package/dist/seeders/module-metadata-seeder.service.js +39 -17
  194. package/dist/seeders/module-metadata-seeder.service.js.map +1 -1
  195. package/dist/seeders/seed-data/solid-core-metadata.json +53 -468
  196. package/dist/seeders/system-fields-seeder.service.d.ts.map +1 -1
  197. package/dist/seeders/system-fields-seeder.service.js +1 -1
  198. package/dist/seeders/system-fields-seeder.service.js.map +1 -1
  199. package/dist/services/ai-interaction.service.js +1 -1
  200. package/dist/services/ai-interaction.service.js.map +1 -1
  201. package/dist/services/computed-fields/entity/alpha-num-external-id-computed-field-provider.d.ts.map +1 -1
  202. package/dist/services/computed-fields/entity/alpha-num-external-id-computed-field-provider.js +6 -4
  203. package/dist/services/computed-fields/entity/alpha-num-external-id-computed-field-provider.js.map +1 -1
  204. package/dist/services/crud-helper.service.d.ts +8 -0
  205. package/dist/services/crud-helper.service.d.ts.map +1 -1
  206. package/dist/services/crud-helper.service.js +28 -5
  207. package/dist/services/crud-helper.service.js.map +1 -1
  208. package/dist/services/crud.service.d.ts +4 -1
  209. package/dist/services/crud.service.d.ts.map +1 -1
  210. package/dist/services/crud.service.js +87 -7
  211. package/dist/services/crud.service.js.map +1 -1
  212. package/dist/services/field-metadata.service.d.ts +143 -6
  213. package/dist/services/field-metadata.service.d.ts.map +1 -1
  214. package/dist/services/field-metadata.service.js +211 -56
  215. package/dist/services/field-metadata.service.js.map +1 -1
  216. package/dist/services/menu-item-metadata.service.d.ts +3 -1
  217. package/dist/services/menu-item-metadata.service.d.ts.map +1 -1
  218. package/dist/services/menu-item-metadata.service.js +31 -11
  219. package/dist/services/menu-item-metadata.service.js.map +1 -1
  220. package/dist/services/model-metadata.service.d.ts.map +1 -1
  221. package/dist/services/model-metadata.service.js +14 -3
  222. package/dist/services/model-metadata.service.js.map +1 -1
  223. package/dist/services/mq-message.service.d.ts.map +1 -1
  224. package/dist/services/mq-message.service.js +3 -4
  225. package/dist/services/mq-message.service.js.map +1 -1
  226. package/dist/services/queues/publisher-factory.service.d.ts.map +1 -1
  227. package/dist/services/queues/publisher-factory.service.js +4 -0
  228. package/dist/services/queues/publisher-factory.service.js.map +1 -1
  229. package/dist/{providers → services/selection-providers}/list-of-values-selection-providers.service.d.ts +2 -2
  230. package/dist/services/selection-providers/list-of-values-selection-providers.service.d.ts.map +1 -0
  231. package/dist/{providers → services/selection-providers}/list-of-values-selection-providers.service.js +3 -3
  232. package/dist/services/selection-providers/list-of-values-selection-providers.service.js.map +1 -0
  233. package/dist/services/selection-providers/pseudo-foreign-key-selection-provider.service.d.ts +20 -0
  234. package/dist/services/selection-providers/pseudo-foreign-key-selection-provider.service.d.ts.map +1 -0
  235. package/dist/services/selection-providers/pseudo-foreign-key-selection-provider.service.js +87 -0
  236. package/dist/services/selection-providers/pseudo-foreign-key-selection-provider.service.js.map +1 -0
  237. package/dist/services/setting.service.d.ts.map +1 -1
  238. package/dist/services/setting.service.js +2 -1
  239. package/dist/services/setting.service.js.map +1 -1
  240. package/dist/services/solid-introspect.service.d.ts +19 -3
  241. package/dist/services/solid-introspect.service.d.ts.map +1 -1
  242. package/dist/services/solid-introspect.service.js +83 -11
  243. package/dist/services/solid-introspect.service.js.map +1 -1
  244. package/dist/services/view-metadata.service.d.ts +3 -1
  245. package/dist/services/view-metadata.service.d.ts.map +1 -1
  246. package/dist/services/view-metadata.service.js +31 -5
  247. package/dist/services/view-metadata.service.js.map +1 -1
  248. package/dist/solid-core.module.d.ts.map +1 -1
  249. package/dist/solid-core.module.js +5 -1
  250. package/dist/solid-core.module.js.map +1 -1
  251. package/dist/subscribers/audit.subscriber.d.ts +3 -2
  252. package/dist/subscribers/audit.subscriber.d.ts.map +1 -1
  253. package/dist/subscribers/audit.subscriber.js +6 -12
  254. package/dist/subscribers/audit.subscriber.js.map +1 -1
  255. package/dist/subscribers/computed-entity-field.subscriber.d.ts +3 -2
  256. package/dist/subscribers/computed-entity-field.subscriber.d.ts.map +1 -1
  257. package/dist/subscribers/computed-entity-field.subscriber.js +7 -9
  258. package/dist/subscribers/computed-entity-field.subscriber.js.map +1 -1
  259. package/dist/subscribers/created-by-updated-by.subscriber.d.ts +4 -2
  260. package/dist/subscribers/created-by-updated-by.subscriber.d.ts.map +1 -1
  261. package/dist/subscribers/created-by-updated-by.subscriber.js +10 -8
  262. package/dist/subscribers/created-by-updated-by.subscriber.js.map +1 -1
  263. package/dist/subscribers/field-metadata.subscriber.d.ts.map +1 -1
  264. package/dist/subscribers/field-metadata.subscriber.js +0 -1
  265. package/dist/subscribers/field-metadata.subscriber.js.map +1 -1
  266. package/dist/subscribers/model-metadata.subscriber.d.ts.map +1 -1
  267. package/dist/subscribers/model-metadata.subscriber.js +3 -2
  268. package/dist/subscribers/model-metadata.subscriber.js.map +1 -1
  269. package/dist/subscribers/soft-delete-aware-event.subscriber.d.ts +3 -2
  270. package/dist/subscribers/soft-delete-aware-event.subscriber.d.ts.map +1 -1
  271. package/dist/subscribers/soft-delete-aware-event.subscriber.js +6 -11
  272. package/dist/subscribers/soft-delete-aware-event.subscriber.js.map +1 -1
  273. package/dist/tsconfig.tsbuildinfo +1 -1
  274. package/package.json +1 -1
  275. package/sql/mssql/proc_CleanupModelMetadata.sql +175 -0
  276. package/sql/mssql/proc_CleanupModuleMetadata.sql +78 -0
  277. package/sql/mssql/scratchpad.sql +10 -0
  278. package/sql/postgres/proc_CleanupModelMetadata.sql +148 -0
  279. package/sql/postgres/proc_CleanupModuleMetadata.sql +50 -0
  280. package/sql/postgres/scratchpad.sql +12 -0
  281. package/sql-server-changes.txt +88 -0
  282. package/src/commands/mcp.command.ts +215 -0
  283. package/src/commands/refresh-model.command.ts +37 -5
  284. package/src/commands/remove-fields.command.ts +1 -1
  285. package/src/commands/seed.command.ts +34 -15
  286. package/src/controllers/authentication.controller.ts +1 -1
  287. package/src/controllers/email-template.controller.ts +1 -1
  288. package/src/controllers/field-metadata.controller.ts +7 -1
  289. package/src/controllers/media-storage-provider-metadata.controller.ts +1 -1
  290. package/src/controllers/model-metadata.controller.ts +1 -1
  291. package/src/controllers/module-metadata.controller.ts +1 -1
  292. package/src/controllers/otp-authentication.controller.ts +1 -1
  293. package/src/controllers/service.controller.ts +1 -1
  294. package/src/controllers/sms-template.controller.ts +1 -1
  295. package/src/controllers/test-queue.controller.ts +1 -1
  296. package/src/controllers/test.controller.ts +1 -1
  297. package/src/dtos/create-ai-interaction.dto.ts +16 -9
  298. package/src/dtos/create-field-metadata.dto.ts +42 -12
  299. package/src/dtos/create-import-transaction.dto.ts +0 -4
  300. package/src/dtos/create-model-metadata.dto.ts +10 -0
  301. package/src/dtos/create-role-metadata.dto.ts +8 -2
  302. package/src/dtos/resolve-s3-url.dto.ts +33 -0
  303. package/src/dtos/update-ai-interaction.dto.ts +16 -9
  304. package/src/dtos/update-field-metadata.dto.ts +1 -2
  305. package/src/dtos/update-import-transaction.dto.ts +0 -4
  306. package/src/entities/action-metadata.entity.ts +4 -4
  307. package/src/entities/ai-interaction.entity.ts +16 -12
  308. package/src/entities/chatter-message-details.entity.ts +18 -18
  309. package/src/entities/chatter-message.entity.ts +2 -2
  310. package/src/entities/common.entity.ts +19 -10
  311. package/src/entities/dashboard-question-sql-dataset-config.entity.ts +2 -2
  312. package/src/entities/dashboard-question.entity.ts +3 -3
  313. package/src/entities/dashboard-variable.entity.ts +3 -3
  314. package/src/entities/dashboard.entity.ts +1 -1
  315. package/src/entities/email-template.entity.ts +4 -3
  316. package/src/entities/export-template.entity.ts +2 -2
  317. package/src/entities/export-transaction.entity.ts +2 -2
  318. package/src/entities/field-metadata.entity.ts +6 -3
  319. package/src/entities/import-transaction-error-log.entity.ts +2 -2
  320. package/src/entities/import-transaction.entity.ts +2 -5
  321. package/src/entities/legacy-common-with-id.entity.ts +11 -0
  322. package/src/entities/legacy-common.entity.ts +57 -0
  323. package/src/entities/list-of-values.entity.ts +2 -2
  324. package/src/entities/locale.entity.ts +1 -1
  325. package/src/entities/media.entity.ts +25 -25
  326. package/src/entities/menu-item-metadata.entity.ts +4 -4
  327. package/src/entities/model-metadata.entity.ts +9 -2
  328. package/src/entities/mq-message-queue.entity.ts +1 -1
  329. package/src/entities/mq-message.entity.ts +34 -34
  330. package/src/entities/saved-filters.entity.ts +5 -5
  331. package/src/entities/scheduled-job.entity.ts +4 -4
  332. package/src/entities/security-rule.entity.ts +2 -2
  333. package/src/entities/setting.entity.ts +2 -2
  334. package/src/entities/sms-template.entity.ts +2 -2
  335. package/src/entities/user-activity-history.entity.ts +14 -14
  336. package/src/entities/user-view-metadata.entity.ts +2 -2
  337. package/src/entities/user.entity.ts +15 -15
  338. package/src/entities/view-metadata.entity.ts +3 -3
  339. package/src/helpers/date.helper.ts +31 -10
  340. package/src/helpers/model-metadata-helper.service.ts +63 -32
  341. package/src/helpers/module.helper.ts +4 -3
  342. package/src/helpers/schematic.service.ts +72 -46
  343. package/src/helpers/solid-registry.ts +14 -2
  344. package/src/helpers/typeorm-db-helper.ts +26 -0
  345. package/src/index.ts +5 -1
  346. package/src/interfaces.ts +3 -0
  347. package/src/jobs/database/trigger-mcp-client-subscriber-database.service.ts +17 -21
  348. package/src/seeders/module-metadata-seeder.service.ts +73 -29
  349. package/src/seeders/seed-data/solid-core-metadata.json +55 -470
  350. package/src/seeders/system-fields-seeder.service.ts +34 -35
  351. package/src/services/ai-interaction.service.ts +1 -1
  352. package/src/services/computed-fields/entity/alpha-num-external-id-computed-field-provider.ts +13 -9
  353. package/src/services/crud-helper.service.ts +32 -4
  354. package/src/services/crud.service.ts +158 -10
  355. package/src/services/field-metadata.service.ts +272 -67
  356. package/src/services/menu-item-metadata.service.ts +81 -50
  357. package/src/services/model-metadata.service.ts +18 -3
  358. package/src/services/mq-message.service.ts +16 -15
  359. package/src/services/queues/publisher-factory.service.ts +2 -1
  360. package/src/{providers → services/selection-providers}/list-of-values-selection-providers.service.ts +2 -2
  361. package/src/services/selection-providers/pseudo-foreign-key-selection-provider.service.ts +94 -0
  362. package/src/services/setting.service.ts +13 -10
  363. package/src/services/solid-introspect.service.ts +110 -10
  364. package/src/services/view-metadata.service.ts +48 -18
  365. package/src/solid-core.module.ts +5 -1
  366. package/src/subscribers/audit.subscriber.ts +12 -8
  367. package/src/subscribers/computed-entity-field.subscriber.ts +13 -7
  368. package/src/subscribers/created-by-updated-by.subscriber.ts +14 -8
  369. package/src/subscribers/field-metadata.subscriber.ts +1 -1
  370. package/src/subscribers/model-metadata.subscriber.ts +4 -2
  371. package/src/subscribers/soft-delete-aware-event.subscriber.ts +12 -6
  372. package/dist/providers/list-of-values-selection-providers.service.d.ts.map +0 -1
  373. package/dist/providers/list-of-values-selection-providers.service.js.map +0 -1
  374. package/src/commands/ingest-rag-chunking-strategy-for.md +0 -224
  375. package/src/entities/user.entity.ts.bkp +0 -144
  376. package/src/services/docker exec -it mssql //" +0 -8
@@ -3,6 +3,8 @@
3
3
  import { Injectable, Logger } from "@nestjs/common";
4
4
  import { ModelMetadataRepository } from "src/repository/model-metadata.repository";
5
5
  import { SolidRegistry } from "./solid-registry";
6
+ import {_ } from "lodash";
7
+ import { LEGACY_TABLE_FIELDS_PREFIX } from "src/entities/legacy-common.entity";
6
8
 
7
9
  @Injectable()
8
10
  export class ModelMetadataHelperService {
@@ -15,97 +17,126 @@ export class ModelMetadataHelperService {
15
17
  ) {
16
18
  }
17
19
 
18
- getSystemFieldsMetadata(): any[] {
19
- const systemFieldsMetadata = [
20
+ getSystemFieldsMetadata(isLegacyTable: boolean=false, isLegacyTableWithId: boolean=false): any[] {
21
+ let systemFieldsMetadata: any[];
22
+ if (isLegacyTableWithId) {
23
+ systemFieldsMetadata = this.getSystemFieldsMetadataMappingForLegacyTable(true);
24
+ }
25
+ else if (isLegacyTable) {
26
+ systemFieldsMetadata = this.getSystemFieldsMetadataMappingForLegacyTable(false);
27
+ }
28
+ else {
29
+ systemFieldsMetadata = this.getSystemFieldsMetadataMapping();
30
+ }
31
+
32
+ this.checkWithRegistry(systemFieldsMetadata);
33
+
34
+ return systemFieldsMetadata;
35
+ }
36
+
37
+ // TODO: Do an additional check and add a warning if the common entity keys and system field metadata keys don't match exactly
38
+ // Ideally this should be reflection based code
39
+ private checkWithRegistry(systemFieldsMetadata: ({ name: string; displayName: string; type: string; ormType: string; isSystem: boolean; relationType?: undefined; relationCoModelSingularName?: undefined; relationCreateInverse?: undefined; relationCascade?: undefined; relationModelModuleName?: undefined; } | { name: string; displayName: string; type: string; isSystem: boolean; ormType?: undefined; relationType?: undefined; relationCoModelSingularName?: undefined; relationCreateInverse?: undefined; relationCascade?: undefined; relationModelModuleName?: undefined; } | { name: string; displayName: string; type: string; ormType: string; isSystem: boolean; relationType: string; relationCoModelSingularName: string; relationCreateInverse: boolean; relationCascade: string; relationModelModuleName: string; })[]) {
40
+ const commonEntityKeys = this.registry.getCommonEntityKeys();
41
+ const systemFieldNames = systemFieldsMetadata.map(field => field.name);
42
+ const missingKeys = commonEntityKeys.filter(key => !systemFieldNames.includes(key));
43
+ if (missingKeys.length > 0) {
44
+ this.logger.warn(`Missing system fields metadata for common entity keys: ${missingKeys.join(', ')}`);
45
+ }
46
+ }
47
+
48
+ private getSystemFieldsMetadataMapping() {
49
+ return [
20
50
  {
21
51
  name: "id",
22
52
  displayName: "Id",
23
53
  type: "int",
24
- ormType: "bigint",
25
54
  isSystem: true,
26
55
  },
27
56
  {
28
57
  name: "createdAt",
29
58
  displayName: "Created At",
30
59
  type: "datetime",
31
- ormType: "timestamp",
32
60
  isSystem: true,
33
61
  },
34
62
  {
35
63
  name: "updatedAt",
36
64
  displayName: "Updated At",
37
65
  type: "datetime",
38
- ormType: "timestamp",
39
66
  isSystem: true,
40
67
  },
41
68
  {
42
69
  name: "deletedAt",
43
70
  displayName: "Deleted At",
44
71
  type: "datetime",
45
- ormType: "timestamp",
46
72
  isSystem: true,
47
73
  },
48
74
  {
49
75
  name: "deletedTracker",
50
76
  displayName: "Deleted Tracker",
51
77
  type: "shortText",
52
- ormType: "varchar",
53
78
  isSystem: true,
54
79
  },
55
80
  {
56
81
  name: "publishedAt",
57
82
  displayName: "Published At",
58
83
  type: "datetime",
59
- ormType: "timestamp",
60
84
  isSystem: true,
85
+ enableAuditTracking:true
61
86
  },
62
87
  {
63
88
  name: "localeName",
64
89
  displayName: "Locale",
65
90
  type: "shortText",
66
- ormType: "varchar",
67
91
  isSystem: true,
68
92
  },
69
93
  {
70
94
  name: "defaultEntityLocaleId",
71
95
  displayName: "Default Entity Locale Id",
72
96
  type: "int",
73
- ormType: "integer",
74
97
  isSystem: true,
75
98
  },
76
99
  {
77
100
  name: "createdBy",
78
101
  displayName: "Created By",
79
- type: "relation",
80
- ormType: "integer",
102
+ type: "int",
81
103
  isSystem: true,
82
- relationType: "many-to-one",
83
- relationCoModelSingularName: "user",
84
- relationCreateInverse: false,
85
- relationCascade: "restrict",
86
- relationModelModuleName: "solid-core"
104
+ columnName: "created_by_id",
87
105
  },
88
106
  {
89
107
  name: "updatedBy",
90
108
  displayName: "Updated By",
91
- type: "relation",
92
- ormType: "integer",
109
+ type: "int",
93
110
  isSystem: true,
94
- relationType: "many-to-one",
95
- relationCoModelSingularName: "user",
96
- relationCreateInverse: false,
97
- relationCascade: "restrict",
98
- relationModelModuleName: "solid-core"
99
- },
100
- ]
111
+ columnName: "updated_by_id",
112
+ }
113
+ ];
114
+ }
101
115
 
102
- // Do an additional check and add a warning if the common entity keys and system field metadata keys don't match exactly
103
- const commonEntityKeys = this.registry.getCommonEntityKeys();
104
- const systemFieldNames = systemFieldsMetadata.map(field => field.name);
105
- const missingKeys = commonEntityKeys.filter(key => !systemFieldNames.includes(key));
106
- if (missingKeys.length > 0) {
107
- this.logger.warn(`Missing system fields metadata for common entity keys: ${missingKeys.join(', ')}`);
116
+ private getSystemFieldsMetadataMappingForLegacyTable(withId: boolean=true) {
117
+ const systemFieldsMetadata = this.getSystemFieldsMetadataMapping();
118
+ if (!withId) {
119
+ // Remove the id field metadata
120
+ const index = systemFieldsMetadata.findIndex(field => field.name === 'id');
121
+ if (index !== -1) {
122
+ systemFieldsMetadata.splice(index, 1);
123
+ }
108
124
  }
125
+
126
+ // For legacy table, system fields, remove the ormType atribute from the metadata
127
+ // systemFieldsMetadata.forEach(field => {
128
+ // delete field.ormType;
129
+ // });
130
+
131
+ // Except for createdBy and updatedBy fields, for which we need to keep the columnName as created_by_id and updated_by_id respectively,
132
+ // we need to add a columnName attribute with legacy prefix concatenated with the kebab cased field name of the system field
133
+ systemFieldsMetadata.forEach(field => {
134
+ if (field.name === 'createdBy' || field.name === 'updatedBy') {
135
+ field['columnName'] = `${LEGACY_TABLE_FIELDS_PREFIX}_${_.snakeCase(field.name)}_id`;
136
+ } else {
137
+ field['columnName'] = `${LEGACY_TABLE_FIELDS_PREFIX}_${_.snakeCase(field.name)}`;
138
+ }
139
+ });
109
140
  return systemFieldsMetadata;
110
141
  }
111
142
 
@@ -21,10 +21,11 @@ export const getDynamicModuleNames = (): string[] => {
21
21
 
22
22
  if (!isValidDirectory) return false;
23
23
 
24
- const fullPath = path.join(srcPath, dirent.name);
25
- const files = fs.readdirSync(fullPath);
24
+ return true
25
+ // const fullPath = path.join(srcPath, dirent.name);
26
+ // const files = fs.readdirSync(fullPath);
26
27
  // skip if empty directory
27
- return files.length > 0;
28
+ // return files.length > 0;
28
29
  })
29
30
  .map(dirent => dirent.name);
30
31
 
@@ -1,24 +1,29 @@
1
1
  import { Injectable, Logger } from '@nestjs/common';
2
- import { CommandService } from './command.service';
3
2
  import { snakeCase } from "lodash";
4
- import { CommonEntity } from 'src/entities/common.entity';
3
+ import { FieldMetadata } from 'src/entities/field-metadata.entity';
4
+ import { CommandService } from './command.service';
5
5
  import { SolidRegistry } from './solid-registry';
6
6
 
7
7
  export const ADD_MODULE_COMMAND = 'add-module';
8
8
  export type GenerateModuleOptions = {
9
9
  module: string;
10
10
  };
11
- type FieldOptions = {
11
+ type ModelGenerationOptions = Omit<ModelAndFieldGenerationOptions, 'fields'>;
12
+
13
+ type ModelAndFieldGenerationOptions = {
12
14
  module: string;
13
15
  model: string;
14
16
  moduleDisplayName: string;
15
17
  table?: string;
16
18
  dataSource: string;
17
- fields: any[]; //FIXME This type can be improved
18
19
  modelEnableSoftDelete?: boolean;
19
20
  parentModel?: string;
20
21
  parentModule?: string;
21
22
  draftPublishWorkflowEnabled?: boolean;
23
+ isLegacyTable?: boolean;
24
+ isLegacyTableWithId?: boolean;
25
+ dataSourceType?: string;
26
+ fields: FieldMetadata[]; //FIXME This type can be improved
22
27
  };
23
28
  export const REMOVE_FIELDS_COMMAND = 'remove-fields';
24
29
  export const REFRESH_MODEL_COMMAND = 'refresh-model';
@@ -32,7 +37,7 @@ export class SchematicService {
32
37
 
33
38
  async executeSchematicCommand(
34
39
  command: string,
35
- options: GenerateModuleOptions | FieldOptions,
40
+ options: GenerateModuleOptions | ModelAndFieldGenerationOptions,
36
41
  debug = false,
37
42
  ): Promise<string> {
38
43
  return await this.commandService.executeCommand(
@@ -42,7 +47,7 @@ export class SchematicService {
42
47
 
43
48
  private generateSchematicCommand(
44
49
  command: string,
45
- options: GenerateModuleOptions | FieldOptions,
50
+ options: GenerateModuleOptions | ModelAndFieldGenerationOptions,
46
51
  debug: boolean,
47
52
  ): string {
48
53
  const baseCommand = `schematics ${this.SCHEMATIC_PROJECT}:${command} --debug=${debug}`;
@@ -50,55 +55,76 @@ export class SchematicService {
50
55
  command === REMOVE_FIELDS_COMMAND ||
51
56
  command === REFRESH_MODEL_COMMAND
52
57
  ) {
53
- const fieldOptions = options as FieldOptions;
54
- let modelCommand = `${baseCommand} --module=${fieldOptions.module} --model=${fieldOptions.model}`;
55
- if (fieldOptions.moduleDisplayName) {
56
- modelCommand += ` --module-display-name=${snakeCase(fieldOptions.moduleDisplayName)}`;
57
- }
58
-
59
- if (fieldOptions.table) {
60
- modelCommand += ` --table=${fieldOptions.table}`;
61
- }
62
-
63
- if (fieldOptions.dataSource) {
64
- modelCommand += ` --data-source=${fieldOptions.dataSource}`;
65
- }
66
-
67
- if (fieldOptions.modelEnableSoftDelete) {
68
- modelCommand += ` --model-enable-soft-delete=${fieldOptions.modelEnableSoftDelete}`;
69
- }
70
-
71
- if (fieldOptions.parentModel) {
72
- modelCommand += ` --parent-model=${fieldOptions.parentModel}`;
73
- }
74
- if (fieldOptions.parentModule) {
75
- modelCommand += ` --parent-module=${fieldOptions.parentModule}`;
76
- }
77
-
78
- if (fieldOptions.draftPublishWorkflowEnabled) {
79
- modelCommand += ` --draft-publish-workflow-enabled=${fieldOptions.draftPublishWorkflowEnabled}`;
80
- }
81
-
82
- let fieldCommand = fieldOptions.fields
83
- .filter((field) => {
84
- return !this.solidRegistry.getCommonEntityKeys().includes(field.name);
85
- })
86
- .map((field) => {
87
- return `--fields='${JSON.stringify(field).replace(/'/g, "\\'")}'`;
88
- })
89
- .join(' ');
58
+ const {fields, ...modelSpecificOptions} = options as ModelAndFieldGenerationOptions;
59
+ const modelCommand = this.buildModelGenerationCommand(baseCommand, modelSpecificOptions);
60
+ const fieldCommand = this.buildFieldGenerationCommand(fields);
90
61
  const schematicCommand = modelCommand + ' ' + fieldCommand;
91
- // console.log('schematicCommand', schematicCommand);
62
+ this.logger.debug('schematicCommand', schematicCommand);
92
63
  return schematicCommand;
93
64
  } else if (command === ADD_MODULE_COMMAND) {
94
65
  const moduleOptions = options as GenerateModuleOptions;
95
- // console.log('moduleOptions', moduleOptions);
96
66
  const schematicCommand = ` ${baseCommand} --module=${moduleOptions.module}`;
97
- // console.log('schematicCommand', schematicCommand);
98
67
  this.logger.debug('schematicCommand', schematicCommand);
99
68
  return schematicCommand;
100
69
  } else {
101
70
  throw new Error('Schematic command not supported.');
102
71
  }
103
72
  }
73
+
74
+ private buildFieldGenerationCommand(fields: FieldMetadata[]) {
75
+ return fields
76
+ .filter((field) => {
77
+ return !this.solidRegistry.getCommonEntityKeys().map(key => key.toString()).includes(field.name);
78
+ })
79
+ .map((field) => {
80
+ return `--fields='${JSON.stringify(field).replace(/'/g, "\\'")}'`;
81
+ })
82
+ .join(' ');
83
+ }
84
+
85
+ private buildModelGenerationCommand(baseCommand: string, modelSpecificOptions: ModelGenerationOptions): string {
86
+ let modelCommand = `${baseCommand} --module=${modelSpecificOptions.module} --model=${modelSpecificOptions.model}`;
87
+
88
+ // Make below options code generate i.e if option exists then add to command with proper casing
89
+ if (modelSpecificOptions.moduleDisplayName) {
90
+ modelCommand += ` --module-display-name=${snakeCase(modelSpecificOptions.moduleDisplayName)}`;
91
+ }
92
+
93
+ if (modelSpecificOptions.table) {
94
+ modelCommand += ` --table=${modelSpecificOptions.table}`;
95
+ }
96
+
97
+ if (modelSpecificOptions.dataSource) {
98
+ modelCommand += ` --data-source=${modelSpecificOptions.dataSource}`;
99
+ }
100
+
101
+ if (modelSpecificOptions.modelEnableSoftDelete) {
102
+ modelCommand += ` --model-enable-soft-delete=${modelSpecificOptions.modelEnableSoftDelete}`;
103
+ }
104
+
105
+ if (modelSpecificOptions.parentModel) {
106
+ modelCommand += ` --parent-model=${modelSpecificOptions.parentModel}`;
107
+ }
108
+ if (modelSpecificOptions.parentModule) {
109
+ modelCommand += ` --parent-module=${modelSpecificOptions.parentModule}`;
110
+ }
111
+
112
+ if (modelSpecificOptions.draftPublishWorkflowEnabled) {
113
+ modelCommand += ` --draft-publish-workflow-enabled=${modelSpecificOptions.draftPublishWorkflowEnabled}`;
114
+ }
115
+
116
+ if (modelSpecificOptions.isLegacyTable) {
117
+ modelCommand += ` --is-legacy-table=${modelSpecificOptions.isLegacyTable}`;
118
+ }
119
+
120
+ if (modelSpecificOptions.isLegacyTableWithId) {
121
+ modelCommand += ` --is-legacy-table-with-id=${modelSpecificOptions.isLegacyTableWithId}`;
122
+ }
123
+
124
+ if (modelSpecificOptions.dataSourceType) {
125
+ modelCommand += ` --data-source-type=${modelSpecificOptions.dataSourceType}`;
126
+ }
127
+
128
+ return modelCommand;
129
+ }
104
130
  }
@@ -5,7 +5,8 @@ import { CommonEntity } from 'src/entities/common.entity';
5
5
  import { Locale } from 'src/entities/locale.entity';
6
6
  import { SecurityRule } from 'src/entities/security-rule.entity';
7
7
  import { IScheduledJob } from 'src/services/scheduled-jobs/scheduled-job.interface';
8
- import { IDashboardQuestionDataProvider, IDashboardVariableSelectionProvider, IErrorCodeProvider, ISecurityRuleConfigProvider, ISelectionProvider, ISelectionProviderContext } from "../interfaces";
8
+ import { IDashboardQuestionDataProvider, IDashboardVariableSelectionProvider, IErrorCodeProvider, ISecurityRuleConfigProvider, ISelectionProvider, ISelectionProviderContext, ISolidDatabaseModule } from "../interfaces";
9
+ import { DatasourceType } from 'src/dtos/create-model-metadata.dto';
9
10
 
10
11
  type ControllerMetadata = {
11
12
  name: string;
@@ -247,6 +248,17 @@ export class SolidRegistry {
247
248
  return Array.from(this.solidDatabaseModules);
248
249
  }
249
250
 
251
+ getDefaultSolidDatabaseModule(): ISolidDatabaseModule {
252
+ const solidDatabaseModulesAsArray = Array.from(this.solidDatabaseModules);
253
+ for (let i = 0; i < solidDatabaseModulesAsArray.length; i++) {
254
+ const solidDatabaseModule = solidDatabaseModulesAsArray[i];
255
+ const solidDatabaseModuleInstance: ISolidDatabaseModule = solidDatabaseModule.instance;
256
+ if (solidDatabaseModuleInstance.name() === 'default') {
257
+ return solidDatabaseModuleInstance;
258
+ }
259
+ }
260
+ }
261
+
250
262
  getModules(): Array<InstanceWrapper> {
251
263
  return Array.from(this.modules);
252
264
  }
@@ -288,7 +300,7 @@ export class SolidRegistry {
288
300
  });
289
301
  }
290
302
 
291
- getCommonEntityKeys(): (keyof CommonEntity)[] {
303
+ getCommonEntityKeys(): (keyof CommonEntity | 'createdBy' | 'updatedBy')[] {
292
304
  return ['id', 'createdAt', 'updatedAt', 'deletedAt', 'createdBy', 'updatedBy', 'deletedTracker', 'localeName', 'defaultEntityLocaleId', 'publishedAt'];
293
305
  // return Reflect.getMetadataKeys(CommonEntity.prototype) as (keyof CommonEntity)[];
294
306
  }
@@ -0,0 +1,26 @@
1
+ import { ColumnOptions } from "typeorm";
2
+ import { DatasourceType } from "src/dtos/create-model-metadata.dto";
3
+
4
+ const LONG_TEXT_MAP: Record<DatasourceType, ColumnOptions> = {
5
+ [DatasourceType.postgres]: { type: "text" },
6
+ [DatasourceType.mssql]: { type: "nvarchar", length: "max" },
7
+ [DatasourceType.mysql]: { type: "longtext" },
8
+ [DatasourceType.mariadb]: { type: "longtext" },
9
+ [DatasourceType.oracle]: { type: "clob" },
10
+ };
11
+
12
+ const solidCoreDbType: DatasourceType =
13
+ Object.values(DatasourceType).includes(process.env.SOLID_CORE_DB_TYPE as DatasourceType)
14
+ ? (process.env.SOLID_CORE_DB_TYPE as DatasourceType)
15
+ : DatasourceType.postgres;
16
+
17
+ export function getColumnType(solidType: string): ColumnOptions {
18
+ switch (solidType) {
19
+ case "longText":
20
+ case "richText":
21
+ return LONG_TEXT_MAP[solidCoreDbType];
22
+
23
+ default:
24
+ return {};
25
+ }
26
+ }
package/src/index.ts CHANGED
@@ -23,8 +23,10 @@ export * from './decorators/error-codes-provider.decorator'
23
23
  export * from './decorators/solid-database-module.decorator'
24
24
  export * from './decorators/solid-service.decorator'
25
25
  export * from './decorators/mail-provider.decorator'
26
+ export * from './decorators/security-rule-config-provider.decorator'
26
27
 
27
28
  export * from './dtos/post-chatter-message.dto'
29
+ export * from './dtos/security-rule-config.dto'
28
30
  export * from './dtos/basic-filters.dto'
29
31
  export * from './dtos/solid-request-context.dto'
30
32
  export * from './dtos/change-password.dto'
@@ -98,6 +100,8 @@ export * from './dtos/update-user-activity-history.dto'
98
100
 
99
101
  export * from './entities/action-metadata.entity'
100
102
  export * from './entities/common.entity'
103
+ export * from './entities/legacy-common.entity'
104
+ export * from './entities/legacy-common-with-id.entity'
101
105
  export * from './entities/email-attachment.entity'
102
106
  export * from './entities/email-template.entity'
103
107
  export * from './entities/field-metadata.entity'
@@ -204,7 +208,7 @@ export * from './listeners/user-registration.listener'
204
208
  export * from './passport-strategies/google-oauth.strategy'
205
209
  export * from './passport-strategies/local.strategy'
206
210
 
207
- export * from './providers/list-of-values-selection-providers.service'
211
+ export * from './services/selection-providers/list-of-values-selection-providers.service'
208
212
 
209
213
  // seed-data
210
214
  export * from './seeders/email-template-seeder.service'
package/src/interfaces.ts CHANGED
@@ -64,7 +64,10 @@ export interface CodeGenerationOptions {
64
64
  modelId?: number;
65
65
  modelUserKey?: string;
66
66
  fieldIdsForRemoval?: number[];
67
+ fieldNamesForRemoval?: string[];
67
68
  dryRun?: boolean;
69
+ fieldIdsForRefresh?: number[];
70
+ fieldNamesForRefresh?: string[];
68
71
  }
69
72
 
70
73
  export interface TriggerMcpClientOptions {
@@ -144,7 +144,7 @@ export class TriggerMcpClientSubscriberDatabase extends DatabaseSubscriber<Trigg
144
144
 
145
145
  const existingControllerAndTheirMethods = this.solidRegistry.getControllers();
146
146
 
147
-
147
+
148
148
 
149
149
  // Build markdown sections using template interpolation
150
150
  const modulesSection = (existingModules ?? [])
@@ -170,7 +170,7 @@ export class TriggerMcpClientSubscriberDatabase extends DatabaseSubscriber<Trigg
170
170
  `- name: ${d.name}`,
171
171
  `- description: ${d.description ?? ""}`,
172
172
  ].join('\n'))
173
- .join('\n\n');
173
+ .join('\n\n');
174
174
 
175
175
  const computationProvidersSection = (existingComputationProviders ?? [])
176
176
  .map(m => [
@@ -183,7 +183,7 @@ export class TriggerMcpClientSubscriberDatabase extends DatabaseSubscriber<Trigg
183
183
  const controllersAndTheirMethods = (existingControllerAndTheirMethods ?? [])
184
184
  .map(m => [
185
185
  `### ${m.name}`,
186
- `- methods: ${m.methods.length ? m.methods.map(m => `- ${m}`).join('\n'): '- No methods found'}`,
186
+ `- methods: ${m.methods.length ? m.methods.map(m => `- ${m}`).join('\n') : '- No methods found'}`,
187
187
  ].join('\n'))
188
188
  .join('\n\n');
189
189
 
@@ -224,11 +224,10 @@ Use the below list of computed field providers to infer which provider the user
224
224
  ${computationProvidersSection}
225
225
  `.trim();
226
226
 
227
+ // ## LIST OF EXISTING CONTROLLERS AND THEIR METHODS
228
+ // Use the below list of controllers and their methods to infer whether the api call being made to a particular controller exists or not.
227
229
 
228
- // ## LIST OF EXISTING CONTROLLERS AND THEIR METHODS
229
- // Use the below list of controllers and their methods to infer whether the api call being made to a particular controller exists or not.
230
-
231
- // ${controllersAndTheirMethods}
230
+ // ${controllersAndTheirMethods}
232
231
 
233
232
  const aiResponse = await this.aiInteractionService.runMcpPrompt(finalPrompt);
234
233
  this.triggerMcpClientSubscriberLogger.log(`aiResponse: `);
@@ -247,7 +246,7 @@ ${computationProvidersSection}
247
246
  // role: 'gen-ai',
248
247
  // message: '-',
249
248
  // contentType: aiResponse.content_type,
250
- // errorMessage: errorsStr,
249
+ // errorMessage: `${errorsStr}\n\n${errorTrace}`,
251
250
  // modelUsed: aiResponse.model,
252
251
  // responseTimeMs: aiResponse.duration_ms,
253
252
  // metadata: JSON.stringify(aiResponse, null, 2),
@@ -257,7 +256,7 @@ ${computationProvidersSection}
257
256
 
258
257
  // TODO: Update the previously created genAiInteraction record with the respective error fields and save to DB
259
258
  await this.aiInteractionService.update(genAiInteraction.id, {
260
- // contentType: aiResponse.content_type,
259
+ contentType: aiResponse.content_type,
261
260
  errorMessage: `${errorsStr}\n\n${errorTrace}`,
262
261
  modelUsed: aiResponse.model,
263
262
  responseTimeMs: aiResponse.duration_ms,
@@ -271,6 +270,10 @@ ${computationProvidersSection}
271
270
  else {
272
271
  let nestedResponse = this.cleanNestedResponse(aiResponse);
273
272
 
273
+ // TODO: Update the previously created genAiInteraction record with the respective success fields and save to DB
274
+ const errorsStr = nestedResponse?.status == "error" && nestedResponse?.errors.join('\n ');
275
+ const errorTrace = nestedResponse?.status == "error" && nestedResponse?.error_trace?.join('\n');
276
+
274
277
  // const genAiInteraction = await this.aiInteractionService.create({
275
278
  // userId: aiInteraction.user.id,
276
279
  // threadId: aiInteraction.threadId,
@@ -278,7 +281,7 @@ ${computationProvidersSection}
278
281
  // role: 'gen-ai',
279
282
  // message: nestedResponse,
280
283
  // contentType: aiResponse.content_type,
281
- // errorMessage: '',
284
+ // errorMessage: `${errorsStr}\n\n${errorTrace}`,
282
285
  // modelUsed: aiResponse.model,
283
286
  // responseTimeMs: aiResponse.duration_ms,
284
287
  // metadata: JSON.stringify(aiResponse, null, 2),
@@ -286,21 +289,14 @@ ${computationProvidersSection}
286
289
  // status: aiResponse.success ? 'succeeded' : 'failed'
287
290
  // });
288
291
 
289
- // TODO: Update the previously created genAiInteraction record with the respective success fields and save to DB
290
- const errorsStr = nestedResponse?.status == "error" && nestedResponse?.errors.join('\n ');
291
- // const errorTrace = nestedResponse?.status == "error" && nestedResponse?.error_trace?.join('\n');
292
-
293
-
294
292
  await this.aiInteractionService.update(genAiInteraction.id, {
295
- errorMessage: nestedResponse.status == "error" ? `${errorsStr}` : "",
296
- // errorMessage:"",
297
- // contentType: aiResponse.content_type,
298
- // message: nestedResponse,
293
+ errorMessage: nestedResponse.status == "error" ? `${errorsStr}\n\n${errorTrace}` : "",
294
+ contentType: aiResponse.content_type,
295
+ message: JSON.stringify(nestedResponse),
299
296
  modelUsed: aiResponse.model,
300
297
  responseTimeMs: aiResponse.duration_ms,
298
+ metadata: JSON.stringify(aiResponse, null, 2),
301
299
  isApplied: aiInteraction.isApplied,
302
-
303
- // status: aiResponse.success ? 'succeeded' : 'failed'
304
300
  status: aiResponse.success && nestedResponse.status == "success" ? 'succeeded' : 'failed'
305
301
  }, [], true);
306
302