@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
@@ -0,0 +1,161 @@
1
+ import { ModuleMetadataHelperService } from '../helpers/module-metadata-helper.service';
2
+ import { MetadataExplorerReferencesQueryDto } from '../dtos/metadata-explorer-references-query.dto';
3
+ import { MetadataExplorerSearchQueryDto } from '../dtos/metadata-explorer-search-query.dto';
4
+ import { MetadataExplorerWriteDto } from '../dtos/metadata-explorer-write.dto';
5
+ type MetadataExplorerSectionType = 'object' | 'array';
6
+ type MetadataValidationIssue = {
7
+ path: string;
8
+ message: string;
9
+ severity: 'error' | 'warning';
10
+ };
11
+ type MetadataSearchMatch = {
12
+ path: string;
13
+ sectionKey: string | null;
14
+ matchType: 'key' | 'value';
15
+ valueType: string;
16
+ preview: string;
17
+ };
18
+ export declare class ModuleMetadataExplorerService {
19
+ private readonly moduleMetadataHelperService;
20
+ private readonly logger;
21
+ constructor(moduleMetadataHelperService: ModuleMetadataHelperService);
22
+ getManifest(moduleName: string): Promise<{
23
+ moduleName: string;
24
+ filePath: string;
25
+ lastModifiedAt: string;
26
+ sections: {
27
+ exists: boolean;
28
+ itemCount: number;
29
+ nodeCount: number;
30
+ preview: string;
31
+ key: string;
32
+ title: string;
33
+ jsonPath: string;
34
+ type: MetadataExplorerSectionType;
35
+ description: string;
36
+ }[];
37
+ validation: {
38
+ valid: boolean;
39
+ issues: MetadataValidationIssue[];
40
+ };
41
+ }>;
42
+ getDocument(moduleName: string): Promise<{
43
+ moduleName: string;
44
+ filePath: string;
45
+ lastModifiedAt: string;
46
+ value: any;
47
+ validation: {
48
+ valid: boolean;
49
+ issues: MetadataValidationIssue[];
50
+ };
51
+ }>;
52
+ updateDocument(moduleName: string, dto: MetadataExplorerWriteDto): Promise<{
53
+ moduleName: string;
54
+ filePath: string;
55
+ lastModifiedAt: string;
56
+ value: any;
57
+ validation: {
58
+ valid: boolean;
59
+ issues: MetadataValidationIssue[];
60
+ };
61
+ }>;
62
+ validateDocument(moduleName: string, dto?: MetadataExplorerWriteDto): Promise<{
63
+ valid: boolean;
64
+ issues: MetadataValidationIssue[];
65
+ moduleName: string;
66
+ filePath: string;
67
+ }>;
68
+ getSection(moduleName: string, sectionKey: string): Promise<{
69
+ moduleName: string;
70
+ filePath: string;
71
+ lastModifiedAt: string;
72
+ section: {
73
+ key: string;
74
+ title: string;
75
+ jsonPath: string;
76
+ type: MetadataExplorerSectionType;
77
+ description: string;
78
+ exists: boolean;
79
+ itemCount: number;
80
+ nodeCount: number;
81
+ value: any;
82
+ };
83
+ validation: {
84
+ valid: boolean;
85
+ issues: MetadataValidationIssue[];
86
+ };
87
+ }>;
88
+ updateSection(moduleName: string, sectionKey: string, dto: MetadataExplorerWriteDto): Promise<{
89
+ moduleName: string;
90
+ filePath: string;
91
+ lastModifiedAt: string;
92
+ section: {
93
+ key: string;
94
+ title: string;
95
+ jsonPath: string;
96
+ type: MetadataExplorerSectionType;
97
+ description: string;
98
+ exists: boolean;
99
+ itemCount: number;
100
+ nodeCount: number;
101
+ value: any;
102
+ };
103
+ validation: {
104
+ valid: boolean;
105
+ issues: MetadataValidationIssue[];
106
+ };
107
+ }>;
108
+ validateSection(moduleName: string, sectionKey: string, dto?: MetadataExplorerWriteDto): Promise<{
109
+ valid: boolean;
110
+ issues: MetadataValidationIssue[];
111
+ moduleName: string;
112
+ sectionKey: string;
113
+ section: {
114
+ key: string;
115
+ title: string;
116
+ jsonPath: string;
117
+ type: MetadataExplorerSectionType;
118
+ };
119
+ }>;
120
+ search(moduleName: string, query: MetadataExplorerSearchQueryDto): Promise<{
121
+ moduleName: string;
122
+ query: string;
123
+ sectionKey: string;
124
+ meta: {
125
+ totalMatches: number;
126
+ returned: number;
127
+ limit: number;
128
+ offset: number;
129
+ };
130
+ matches: MetadataSearchMatch[];
131
+ }>;
132
+ findReferences(moduleName: string, query: MetadataExplorerReferencesQueryDto): Promise<{
133
+ moduleName: string;
134
+ needle: string;
135
+ sectionKey: string;
136
+ meta: {
137
+ totalMatches: number;
138
+ returned: number;
139
+ limit: number;
140
+ offset: number;
141
+ };
142
+ matches: MetadataSearchMatch[];
143
+ }>;
144
+ private loadMetadataDocument;
145
+ private writeMetadataDocument;
146
+ private getSectionDefinition;
147
+ private buildSectionResponse;
148
+ private validateDocumentValue;
149
+ private validateSectionValue;
150
+ private getValueAtPath;
151
+ private setValueAtPath;
152
+ private countNodes;
153
+ private buildPreview;
154
+ private collectMatches;
155
+ private matchesNeedle;
156
+ private resolveSectionKey;
157
+ private joinPath;
158
+ private assertValueProvided;
159
+ }
160
+ export {};
161
+ //# sourceMappingURL=module-metadata-explorer.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"module-metadata-explorer.service.d.ts","sourceRoot":"","sources":["../../src/services/module-metadata-explorer.service.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,2BAA2B,EAAE,MAAM,4CAA4C,CAAC;AACzF,OAAO,EAAE,kCAAkC,EAAE,MAAM,gDAAgD,CAAC;AACpG,OAAO,EAAE,8BAA8B,EAAE,MAAM,4CAA4C,CAAC;AAC5F,OAAO,EAAE,wBAAwB,EAAE,MAAM,qCAAqC,CAAC;AAE/E,KAAK,2BAA2B,GAAG,QAAQ,GAAG,OAAO,CAAC;AAUtD,KAAK,uBAAuB,GAAG;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,OAAO,GAAG,SAAS,CAAC;CACjC,CAAC;AAEF,KAAK,mBAAmB,GAAG;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,SAAS,EAAE,KAAK,GAAG,OAAO,CAAC;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;CACnB,CAAC;AAuBF,qBACa,6BAA6B;IAIlC,OAAO,CAAC,QAAQ,CAAC,2BAA2B;IAHhD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAkD;gBAGpD,2BAA2B,EAAE,2BAA2B;IASvE,WAAW,CAAC,UAAU,EAAE,MAAM;;;;;;;;;iBAxD/B,MAAM;mBACJ,MAAM;sBACH,MAAM;kBACV,2BAA2B;yBACpB,MAAM;;;;;;;IAkFb,WAAW,CAAC,UAAU,EAAE,MAAM;;;;;;;;;;IAkB9B,cAAc,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,wBAAwB;;;;;;;;;;IAkBhE,gBAAgB,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,wBAAwB;;;;;;IAkBnE,UAAU,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;IAqBjD,aAAa,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,wBAAwB;;;;;;;;;;;;;;;;;;;;IA0BnF,eAAe,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,wBAAwB;;;;;;;;;;;;IA0BtF,MAAM,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,8BAA8B;;;;;;;;;;;;IA2ChE,cAAc,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,kCAAkC;;;;;;;;;;;;YA2CpE,oBAAoB;YAiCpB,qBAAqB;IAWnC,OAAO,CAAC,oBAAoB;IAc5B,OAAO,CAAC,oBAAoB;IAoB5B,OAAO,CAAC,qBAAqB;IA8C7B,OAAO,CAAC,oBAAoB;IAkD5B,OAAO,CAAC,cAAc;IAWtB,OAAO,CAAC,cAAc;IAqBtB,OAAO,CAAC,UAAU;IAiBlB,OAAO,CAAC,YAAY;IAiBpB,OAAO,CAAC,cAAc;IAyEtB,OAAO,CAAC,aAAa;IAarB,OAAO,CAAC,iBAAiB;IAgBzB,OAAO,CAAC,QAAQ;IAWhB,OAAO,CAAC,mBAAmB;CAK9B"}
@@ -0,0 +1,485 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
19
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
20
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
21
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
22
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
23
+ };
24
+ var __importStar = (this && this.__importStar) || (function () {
25
+ var ownKeys = function(o) {
26
+ ownKeys = Object.getOwnPropertyNames || function (o) {
27
+ var ar = [];
28
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
29
+ return ar;
30
+ };
31
+ return ownKeys(o);
32
+ };
33
+ return function (mod) {
34
+ if (mod && mod.__esModule) return mod;
35
+ var result = {};
36
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
37
+ __setModuleDefault(result, mod);
38
+ return result;
39
+ };
40
+ })();
41
+ var __metadata = (this && this.__metadata) || function (k, v) {
42
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
43
+ };
44
+ var ModuleMetadataExplorerService_1;
45
+ Object.defineProperty(exports, "__esModule", { value: true });
46
+ exports.ModuleMetadataExplorerService = void 0;
47
+ const common_1 = require("@nestjs/common");
48
+ const fs = __importStar(require("fs/promises"));
49
+ const path = __importStar(require("path"));
50
+ const disallow_in_production_decorator_1 = require("../decorators/disallow-in-production.decorator");
51
+ const module_metadata_helper_service_1 = require("../helpers/module-metadata-helper.service");
52
+ const metadata_explorer_write_dto_1 = require("../dtos/metadata-explorer-write.dto");
53
+ const SECTION_DEFINITIONS = [
54
+ { key: 'module', title: 'Module', jsonPath: 'moduleMetadata', type: 'object', description: 'Top-level module metadata excluding nested models.' },
55
+ { key: 'models', title: 'Models', jsonPath: 'moduleMetadata.models', type: 'array', description: 'Model metadata definitions for the module.' },
56
+ { key: 'roles', title: 'Roles', jsonPath: 'roles', type: 'array', description: 'Role metadata definitions.' },
57
+ { key: 'users', title: 'Users', jsonPath: 'users', type: 'array', description: 'Seed users and user-role assignments.' },
58
+ { key: 'permissions', title: 'Permissions', jsonPath: 'permissions', type: 'array', description: 'Permission declarations and explicit additions.' },
59
+ { key: 'actions', title: 'Actions', jsonPath: 'actions', type: 'array', description: 'Action metadata definitions.' },
60
+ { key: 'menus', title: 'Menus', jsonPath: 'menus', type: 'array', description: 'Menu item metadata definitions.' },
61
+ { key: 'views', title: 'Views', jsonPath: 'views', type: 'array', description: 'List, form, kanban, tree, and related view metadata.' },
62
+ { key: 'emailTemplates', title: 'Email Templates', jsonPath: 'emailTemplates', type: 'array', description: 'Email template metadata.' },
63
+ { key: 'smsTemplates', title: 'SMS Templates', jsonPath: 'smsTemplates', type: 'array', description: 'SMS template metadata.' },
64
+ { key: 'mediaStorageProviders', title: 'Media Storage Providers', jsonPath: 'mediaStorageProviders', type: 'array', description: 'Configured media storage providers.' },
65
+ { key: 'savedFilters', title: 'Saved Filters', jsonPath: 'savedFilters', type: 'array', description: 'Saved filter definitions.' },
66
+ { key: 'securityRules', title: 'Security Rules', jsonPath: 'securityRules', type: 'array', description: 'Security rule definitions.' },
67
+ { key: 'listOfValues', title: 'List Of Values', jsonPath: 'listOfValues', type: 'array', description: 'List of values entries.' },
68
+ { key: 'dashboards', title: 'Dashboards', jsonPath: 'dashboards', type: 'array', description: 'Dashboard metadata definitions.' },
69
+ { key: 'testing', title: 'Testing', jsonPath: 'testing', type: 'object', description: 'Testing roles, users, specs, and scenarios.' },
70
+ { key: 'scheduledJobs', title: 'Scheduled Jobs', jsonPath: 'scheduledJobs', type: 'array', description: 'Scheduled job metadata definitions.' },
71
+ { key: 'modelSequences', title: 'Model Sequences', jsonPath: 'modelSequences', type: 'array', description: 'Model sequence definitions.' },
72
+ ];
73
+ let ModuleMetadataExplorerService = ModuleMetadataExplorerService_1 = class ModuleMetadataExplorerService {
74
+ constructor(moduleMetadataHelperService) {
75
+ this.moduleMetadataHelperService = moduleMetadataHelperService;
76
+ this.logger = new common_1.Logger(ModuleMetadataExplorerService_1.name);
77
+ }
78
+ async getManifest(moduleName) {
79
+ const { document, filePath, stats } = await this.loadMetadataDocument(moduleName);
80
+ const validation = this.validateDocumentValue(document);
81
+ const sections = SECTION_DEFINITIONS.map((definition) => {
82
+ const value = this.getValueAtPath(document, definition.jsonPath);
83
+ return {
84
+ ...definition,
85
+ exists: value !== undefined,
86
+ itemCount: Array.isArray(value) ? value.length : undefined,
87
+ nodeCount: this.countNodes(value),
88
+ preview: this.buildPreview(value, 96),
89
+ };
90
+ });
91
+ return {
92
+ moduleName,
93
+ filePath,
94
+ lastModifiedAt: stats.mtime.toISOString(),
95
+ sections,
96
+ validation,
97
+ };
98
+ }
99
+ async getDocument(moduleName) {
100
+ const { document, filePath, stats } = await this.loadMetadataDocument(moduleName);
101
+ return {
102
+ moduleName,
103
+ filePath,
104
+ lastModifiedAt: stats.mtime.toISOString(),
105
+ value: document,
106
+ validation: this.validateDocumentValue(document),
107
+ };
108
+ }
109
+ async updateDocument(moduleName, dto) {
110
+ this.assertValueProvided(dto?.value);
111
+ const validation = this.validateDocumentValue(dto.value);
112
+ if (!validation.valid) {
113
+ throw new common_1.BadRequestException(validation);
114
+ }
115
+ const filePath = await this.moduleMetadataHelperService.getModuleMetadataFilePath(moduleName);
116
+ await this.writeMetadataDocument(filePath, dto.value);
117
+ return this.getDocument(moduleName);
118
+ }
119
+ async validateDocument(moduleName, dto) {
120
+ const filePath = await this.moduleMetadataHelperService.getModuleMetadataFilePath(moduleName);
121
+ const value = dto && Object.prototype.hasOwnProperty.call(dto, 'value')
122
+ ? dto.value
123
+ : (await this.loadMetadataDocument(moduleName)).document;
124
+ return {
125
+ moduleName,
126
+ filePath,
127
+ ...this.validateDocumentValue(value),
128
+ };
129
+ }
130
+ async getSection(moduleName, sectionKey) {
131
+ const definition = this.getSectionDefinition(sectionKey);
132
+ const { document, filePath, stats } = await this.loadMetadataDocument(moduleName);
133
+ const value = this.getValueAtPath(document, definition.jsonPath);
134
+ return {
135
+ moduleName,
136
+ filePath,
137
+ lastModifiedAt: stats.mtime.toISOString(),
138
+ section: this.buildSectionResponse(definition, value),
139
+ validation: this.validateSectionValue(definition, value),
140
+ };
141
+ }
142
+ async updateSection(moduleName, sectionKey, dto) {
143
+ this.assertValueProvided(dto?.value);
144
+ const definition = this.getSectionDefinition(sectionKey);
145
+ const sectionValidation = this.validateSectionValue(definition, dto.value);
146
+ if (!sectionValidation.valid) {
147
+ throw new common_1.BadRequestException(sectionValidation);
148
+ }
149
+ const { document, filePath } = await this.loadMetadataDocument(moduleName);
150
+ this.setValueAtPath(document, definition.jsonPath, dto.value);
151
+ const documentValidation = this.validateDocumentValue(document);
152
+ if (!documentValidation.valid) {
153
+ throw new common_1.BadRequestException(documentValidation);
154
+ }
155
+ await this.writeMetadataDocument(filePath, document);
156
+ return this.getSection(moduleName, sectionKey);
157
+ }
158
+ async validateSection(moduleName, sectionKey, dto) {
159
+ const definition = this.getSectionDefinition(sectionKey);
160
+ const value = dto && Object.prototype.hasOwnProperty.call(dto, 'value')
161
+ ? dto.value
162
+ : this.getValueAtPath((await this.loadMetadataDocument(moduleName)).document, definition.jsonPath);
163
+ return {
164
+ moduleName,
165
+ sectionKey,
166
+ section: {
167
+ key: definition.key,
168
+ title: definition.title,
169
+ jsonPath: definition.jsonPath,
170
+ type: definition.type,
171
+ },
172
+ ...this.validateSectionValue(definition, value),
173
+ };
174
+ }
175
+ async search(moduleName, query) {
176
+ const needle = `${query?.query ?? ''}`.trim();
177
+ if (!needle) {
178
+ throw new common_1.BadRequestException('Search query is required.');
179
+ }
180
+ const { document } = await this.loadMetadataDocument(moduleName);
181
+ const targetSection = query?.sectionKey ? this.getSectionDefinition(query.sectionKey) : null;
182
+ const searchRoot = targetSection ? this.getValueAtPath(document, targetSection.jsonPath) : document;
183
+ const rootPath = targetSection ? targetSection.jsonPath : '';
184
+ const limit = query?.limit ?? 10;
185
+ const offset = query?.offset ?? 0;
186
+ const matches = this.collectMatches(searchRoot, rootPath, {
187
+ needle,
188
+ exact: query?.exact ?? false,
189
+ limit,
190
+ offset,
191
+ previewLength: query?.previewLength ?? 120,
192
+ matchKeys: true,
193
+ matchValues: true,
194
+ });
195
+ return {
196
+ moduleName,
197
+ query: needle,
198
+ sectionKey: targetSection?.key ?? null,
199
+ meta: {
200
+ totalMatches: matches.total,
201
+ returned: matches.items.length,
202
+ limit,
203
+ offset,
204
+ },
205
+ matches: matches.items,
206
+ };
207
+ }
208
+ async findReferences(moduleName, query) {
209
+ const needle = `${query?.needle ?? ''}`.trim();
210
+ if (!needle) {
211
+ throw new common_1.BadRequestException('Reference needle is required.');
212
+ }
213
+ const { document } = await this.loadMetadataDocument(moduleName);
214
+ const targetSection = query?.sectionKey ? this.getSectionDefinition(query.sectionKey) : null;
215
+ const searchRoot = targetSection ? this.getValueAtPath(document, targetSection.jsonPath) : document;
216
+ const rootPath = targetSection ? targetSection.jsonPath : '';
217
+ const limit = query?.limit ?? 10;
218
+ const offset = query?.offset ?? 0;
219
+ const matches = this.collectMatches(searchRoot, rootPath, {
220
+ needle,
221
+ exact: query?.exact ?? true,
222
+ limit,
223
+ offset,
224
+ previewLength: 140,
225
+ matchKeys: query?.matchKeys ?? true,
226
+ matchValues: query?.matchValues ?? true,
227
+ excludePath: query?.excludePath,
228
+ });
229
+ return {
230
+ moduleName,
231
+ needle,
232
+ sectionKey: targetSection?.key ?? null,
233
+ meta: {
234
+ totalMatches: matches.total,
235
+ returned: matches.items.length,
236
+ limit,
237
+ offset,
238
+ },
239
+ matches: matches.items,
240
+ };
241
+ }
242
+ async loadMetadataDocument(moduleName) {
243
+ const filePath = await this.moduleMetadataHelperService.getModuleMetadataFilePath(moduleName);
244
+ if (!filePath) {
245
+ throw new common_1.NotFoundException(`Unable to resolve metadata file for module: ${moduleName}`);
246
+ }
247
+ try {
248
+ const [raw, stats] = await Promise.all([
249
+ fs.readFile(filePath, 'utf-8'),
250
+ fs.stat(filePath),
251
+ ]);
252
+ const document = JSON.parse(raw);
253
+ return { document, filePath, stats };
254
+ }
255
+ catch (error) {
256
+ if (error?.code === 'ENOENT') {
257
+ throw new common_1.NotFoundException(`Metadata file not found for module: ${moduleName}`);
258
+ }
259
+ if (error instanceof SyntaxError) {
260
+ throw new common_1.BadRequestException(`Metadata file for module ${moduleName} contains invalid JSON.`);
261
+ }
262
+ this.logger.error(`Failed to load metadata for module ${moduleName}`, error);
263
+ throw error;
264
+ }
265
+ }
266
+ async writeMetadataDocument(filePath, document) {
267
+ await fs.mkdir(path.dirname(filePath), { recursive: true });
268
+ await fs.writeFile(filePath, `${JSON.stringify(document, null, 2)}\n`, 'utf-8');
269
+ }
270
+ getSectionDefinition(sectionKey) {
271
+ const definition = SECTION_DEFINITIONS.find((item) => item.key === sectionKey);
272
+ if (!definition) {
273
+ throw new common_1.NotFoundException(`Metadata explorer section not found: ${sectionKey}`);
274
+ }
275
+ return definition;
276
+ }
277
+ buildSectionResponse(definition, value) {
278
+ return {
279
+ key: definition.key,
280
+ title: definition.title,
281
+ jsonPath: definition.jsonPath,
282
+ type: definition.type,
283
+ description: definition.description,
284
+ exists: value !== undefined,
285
+ itemCount: Array.isArray(value) ? value.length : undefined,
286
+ nodeCount: this.countNodes(value),
287
+ value,
288
+ };
289
+ }
290
+ validateDocumentValue(document) {
291
+ const issues = [];
292
+ if (!document || typeof document !== 'object' || Array.isArray(document)) {
293
+ issues.push({
294
+ path: '',
295
+ message: 'Metadata document must be a JSON object.',
296
+ severity: 'error',
297
+ });
298
+ }
299
+ const moduleMetadata = document?.moduleMetadata;
300
+ if (!moduleMetadata || typeof moduleMetadata !== 'object' || Array.isArray(moduleMetadata)) {
301
+ issues.push({
302
+ path: 'moduleMetadata',
303
+ message: 'moduleMetadata must be present as an object.',
304
+ severity: 'error',
305
+ });
306
+ }
307
+ if (moduleMetadata && !Array.isArray(moduleMetadata.models)) {
308
+ issues.push({
309
+ path: 'moduleMetadata.models',
310
+ message: 'moduleMetadata.models must be an array.',
311
+ severity: 'error',
312
+ });
313
+ }
314
+ for (const definition of SECTION_DEFINITIONS) {
315
+ const sectionValue = this.getValueAtPath(document, definition.jsonPath);
316
+ const sectionValidation = this.validateSectionValue(definition, sectionValue, true);
317
+ issues.push(...sectionValidation.issues);
318
+ }
319
+ return {
320
+ valid: issues.every((issue) => issue.severity !== 'error'),
321
+ issues,
322
+ };
323
+ }
324
+ validateSectionValue(definition, value, allowUndefined = false) {
325
+ const issues = [];
326
+ if (value === undefined) {
327
+ if (!allowUndefined) {
328
+ issues.push({
329
+ path: definition.jsonPath,
330
+ message: `${definition.title} is missing from the metadata document.`,
331
+ severity: 'error',
332
+ });
333
+ }
334
+ return {
335
+ valid: issues.every((issue) => issue.severity !== 'error'),
336
+ issues,
337
+ };
338
+ }
339
+ const isArray = Array.isArray(value);
340
+ if (definition.type === 'array' && !isArray) {
341
+ issues.push({
342
+ path: definition.jsonPath,
343
+ message: `${definition.title} must be an array.`,
344
+ severity: 'error',
345
+ });
346
+ }
347
+ if (definition.type === 'object' && (value === null || typeof value !== 'object' || isArray)) {
348
+ issues.push({
349
+ path: definition.jsonPath,
350
+ message: `${definition.title} must be an object.`,
351
+ severity: 'error',
352
+ });
353
+ }
354
+ return {
355
+ valid: issues.every((issue) => issue.severity !== 'error'),
356
+ issues,
357
+ };
358
+ }
359
+ getValueAtPath(source, jsonPath) {
360
+ if (!jsonPath)
361
+ return source;
362
+ return jsonPath.split('.').reduce((acc, key) => (acc == null ? undefined : acc[key]), source);
363
+ }
364
+ setValueAtPath(target, jsonPath, value) {
365
+ const parts = jsonPath.split('.');
366
+ let current = target;
367
+ for (let index = 0; index < parts.length - 1; index++) {
368
+ const part = parts[index];
369
+ if (!current[part] || typeof current[part] !== 'object' || Array.isArray(current[part])) {
370
+ current[part] = {};
371
+ }
372
+ current = current[part];
373
+ }
374
+ current[parts[parts.length - 1]] = value;
375
+ }
376
+ countNodes(value) {
377
+ if (value === undefined || value === null)
378
+ return 0;
379
+ if (Array.isArray(value)) {
380
+ return value.reduce((sum, item) => sum + this.countNodes(item), 1);
381
+ }
382
+ if (typeof value === 'object') {
383
+ return Object.values(value).reduce((sum, item) => sum + this.countNodes(item), 1);
384
+ }
385
+ return 1;
386
+ }
387
+ buildPreview(value, maxLength) {
388
+ if (value === undefined)
389
+ return '';
390
+ const normalized = typeof value === 'string'
391
+ ? value
392
+ : JSON.stringify(value);
393
+ if (!normalized)
394
+ return '';
395
+ return normalized.length > maxLength ? `${normalized.slice(0, maxLength)}...` : normalized;
396
+ }
397
+ collectMatches(root, rootPath, opts) {
398
+ const results = [];
399
+ const normalizedNeedle = opts.exact ? opts.needle : opts.needle.toLowerCase();
400
+ const visit = (value, currentPath) => {
401
+ if (value === undefined)
402
+ return;
403
+ if (Array.isArray(value)) {
404
+ value.forEach((item, index) => {
405
+ visit(item, this.joinPath(currentPath, `${index}`));
406
+ });
407
+ return;
408
+ }
409
+ if (value && typeof value === 'object') {
410
+ Object.entries(value).forEach(([key, child]) => {
411
+ const childPath = this.joinPath(currentPath, key);
412
+ if (opts.matchKeys && this.matchesNeedle(key, normalizedNeedle, opts.exact) && childPath !== opts.excludePath) {
413
+ results.push({
414
+ path: childPath,
415
+ sectionKey: this.resolveSectionKey(childPath),
416
+ matchType: 'key',
417
+ valueType: 'key',
418
+ preview: this.buildPreview(child, opts.previewLength),
419
+ });
420
+ }
421
+ visit(child, childPath);
422
+ });
423
+ return;
424
+ }
425
+ if (!opts.matchValues)
426
+ return;
427
+ const comparable = value == null ? '' : `${value}`;
428
+ if (this.matchesNeedle(comparable, normalizedNeedle, opts.exact) && currentPath !== opts.excludePath) {
429
+ results.push({
430
+ path: currentPath,
431
+ sectionKey: this.resolveSectionKey(currentPath),
432
+ matchType: 'value',
433
+ valueType: typeof value,
434
+ preview: this.buildPreview(value, opts.previewLength),
435
+ });
436
+ }
437
+ };
438
+ visit(root, rootPath);
439
+ return {
440
+ total: results.length,
441
+ items: results.slice(opts.offset, opts.offset + opts.limit),
442
+ };
443
+ }
444
+ matchesNeedle(value, normalizedNeedle, exact) {
445
+ if (exact) {
446
+ return value === normalizedNeedle;
447
+ }
448
+ return value.toLowerCase().includes(normalizedNeedle);
449
+ }
450
+ resolveSectionKey(jsonPath) {
451
+ const sorted = [...SECTION_DEFINITIONS].sort((a, b) => b.jsonPath.length - a.jsonPath.length);
452
+ const matched = sorted.find((section) => jsonPath === section.jsonPath
453
+ || jsonPath.startsWith(`${section.jsonPath}.`)
454
+ || jsonPath.startsWith(`${section.jsonPath}[`));
455
+ return matched?.key ?? null;
456
+ }
457
+ joinPath(base, next) {
458
+ if (!base)
459
+ return /^\d+$/.test(next) ? `[${next}]` : next;
460
+ return /^\d+$/.test(next) ? `${base}[${next}]` : `${base}.${next}`;
461
+ }
462
+ assertValueProvided(value) {
463
+ if (value === undefined) {
464
+ throw new common_1.BadRequestException('A JSON value payload is required.');
465
+ }
466
+ }
467
+ };
468
+ exports.ModuleMetadataExplorerService = ModuleMetadataExplorerService;
469
+ __decorate([
470
+ (0, disallow_in_production_decorator_1.DisallowInProduction)(),
471
+ __metadata("design:type", Function),
472
+ __metadata("design:paramtypes", [String, metadata_explorer_write_dto_1.MetadataExplorerWriteDto]),
473
+ __metadata("design:returntype", Promise)
474
+ ], ModuleMetadataExplorerService.prototype, "updateDocument", null);
475
+ __decorate([
476
+ (0, disallow_in_production_decorator_1.DisallowInProduction)(),
477
+ __metadata("design:type", Function),
478
+ __metadata("design:paramtypes", [String, String, metadata_explorer_write_dto_1.MetadataExplorerWriteDto]),
479
+ __metadata("design:returntype", Promise)
480
+ ], ModuleMetadataExplorerService.prototype, "updateSection", null);
481
+ exports.ModuleMetadataExplorerService = ModuleMetadataExplorerService = ModuleMetadataExplorerService_1 = __decorate([
482
+ (0, common_1.Injectable)(),
483
+ __metadata("design:paramtypes", [module_metadata_helper_service_1.ModuleMetadataHelperService])
484
+ ], ModuleMetadataExplorerService);
485
+ //# sourceMappingURL=module-metadata-explorer.service.js.map