@solidxai/core 0.1.10-beta.0 → 0.1.10-beta.11

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 (269) hide show
  1. package/.claude/settings.local.json +15 -0
  2. package/CLAUDE.md +18 -0
  3. package/CURRENT_PROMPT +6 -0
  4. package/dist/commands/refresh-model.command.d.ts +0 -4
  5. package/dist/commands/refresh-model.command.d.ts.map +1 -1
  6. package/dist/commands/refresh-model.command.js +0 -32
  7. package/dist/commands/refresh-model.command.js.map +1 -1
  8. package/dist/commands/run-tests.command.d.ts +2 -0
  9. package/dist/commands/run-tests.command.d.ts.map +1 -1
  10. package/dist/commands/run-tests.command.js +49 -17
  11. package/dist/commands/run-tests.command.js.map +1 -1
  12. package/dist/controllers/action-metadata.controller.js +1 -1
  13. package/dist/controllers/action-metadata.controller.js.map +1 -1
  14. package/dist/controllers/facebook-authentication.controller.js +1 -1
  15. package/dist/controllers/facebook-authentication.controller.js.map +1 -1
  16. package/dist/controllers/google-authentication.controller.js +1 -1
  17. package/dist/controllers/google-authentication.controller.js.map +1 -1
  18. package/dist/controllers/mcp-audit-log.controller.d.ts +35 -0
  19. package/dist/controllers/mcp-audit-log.controller.d.ts.map +1 -0
  20. package/dist/controllers/mcp-audit-log.controller.js +147 -0
  21. package/dist/controllers/mcp-audit-log.controller.js.map +1 -0
  22. package/dist/controllers/menu-item-metadata.controller.js +1 -1
  23. package/dist/controllers/menu-item-metadata.controller.js.map +1 -1
  24. package/dist/controllers/microsoft-authentication.controller.js +1 -1
  25. package/dist/controllers/microsoft-authentication.controller.js.map +1 -1
  26. package/dist/controllers/model-metadata.controller.d.ts +1 -1
  27. package/dist/controllers/model-metadata.controller.js +2 -2
  28. package/dist/controllers/model-metadata.controller.js.map +1 -1
  29. package/dist/controllers/module-metadata.controller.js +1 -1
  30. package/dist/controllers/module-metadata.controller.js.map +1 -1
  31. package/dist/controllers/mq-message-queue.controller.js +1 -1
  32. package/dist/controllers/mq-message-queue.controller.js.map +1 -1
  33. package/dist/controllers/mq-message.controller.js +1 -1
  34. package/dist/controllers/mq-message.controller.js.map +1 -1
  35. package/dist/controllers/user.controller.d.ts.map +1 -1
  36. package/dist/controllers/user.controller.js.map +1 -1
  37. package/dist/controllers/view-metadata.controller.js +1 -1
  38. package/dist/controllers/view-metadata.controller.js.map +1 -1
  39. package/dist/dtos/create-mcp-audit-log.dto.d.ts +19 -0
  40. package/dist/dtos/create-mcp-audit-log.dto.d.ts.map +1 -0
  41. package/dist/dtos/create-mcp-audit-log.dto.js +118 -0
  42. package/dist/dtos/create-mcp-audit-log.dto.js.map +1 -0
  43. package/dist/dtos/update-mcp-audit-log.dto.d.ts +19 -0
  44. package/dist/dtos/update-mcp-audit-log.dto.d.ts.map +1 -0
  45. package/dist/dtos/update-mcp-audit-log.dto.js +117 -0
  46. package/dist/dtos/update-mcp-audit-log.dto.js.map +1 -0
  47. package/dist/dtos/update-user.dto.d.ts +1 -0
  48. package/dist/dtos/update-user.dto.d.ts.map +1 -1
  49. package/dist/dtos/update-user.dto.js +7 -1
  50. package/dist/dtos/update-user.dto.js.map +1 -1
  51. package/dist/entities/chatter-message-details.entity.d.ts.map +1 -1
  52. package/dist/entities/chatter-message-details.entity.js +0 -1
  53. package/dist/entities/chatter-message-details.entity.js.map +1 -1
  54. package/dist/entities/mcp-audit-log.entity.d.ts +19 -0
  55. package/dist/entities/mcp-audit-log.entity.d.ts.map +1 -0
  56. package/dist/entities/mcp-audit-log.entity.js +90 -0
  57. package/dist/entities/mcp-audit-log.entity.js.map +1 -0
  58. package/dist/entities/user.entity.js +1 -0
  59. package/dist/entities/user.entity.js.map +1 -1
  60. package/dist/helpers/bootstrap.helper.d.ts.map +1 -1
  61. package/dist/helpers/bootstrap.helper.js +2 -0
  62. package/dist/helpers/bootstrap.helper.js.map +1 -1
  63. package/dist/helpers/command.service.d.ts +1 -0
  64. package/dist/helpers/command.service.d.ts.map +1 -1
  65. package/dist/helpers/command.service.js +1 -0
  66. package/dist/helpers/command.service.js.map +1 -1
  67. package/dist/helpers/field-crud-managers/BigIntFieldCrudManager.js.map +1 -1
  68. package/dist/helpers/field-crud-managers/SelectionDynamicFieldCrudManager.js.map +1 -1
  69. package/dist/helpers/module-metadata-helper.service.js.map +1 -1
  70. package/dist/index.d.ts +4 -0
  71. package/dist/index.d.ts.map +1 -1
  72. package/dist/index.js +4 -0
  73. package/dist/index.js.map +1 -1
  74. package/dist/interfaces.d.ts +0 -2
  75. package/dist/interfaces.d.ts.map +1 -1
  76. package/dist/interfaces.js.map +1 -1
  77. package/dist/jobs/database/chatter-queue-subscriber-database.service.d.ts.map +1 -1
  78. package/dist/jobs/database/chatter-queue-subscriber-database.service.js +3 -3
  79. package/dist/jobs/database/chatter-queue-subscriber-database.service.js.map +1 -1
  80. package/dist/jobs/database/trigger-mcp-client-subscriber-database.service.js.map +1 -1
  81. package/dist/jobs/rabbitmq/chatter-queue-subscriber.service.d.ts.map +1 -1
  82. package/dist/jobs/rabbitmq/chatter-queue-subscriber.service.js +3 -3
  83. package/dist/jobs/rabbitmq/chatter-queue-subscriber.service.js.map +1 -1
  84. package/dist/jobs/redis/chatter-queue-subscriber-redis.service.d.ts.map +1 -1
  85. package/dist/jobs/redis/chatter-queue-subscriber-redis.service.js +3 -3
  86. package/dist/jobs/redis/chatter-queue-subscriber-redis.service.js.map +1 -1
  87. package/dist/repository/mcp-audit-log.repository.d.ts +12 -0
  88. package/dist/repository/mcp-audit-log.repository.d.ts.map +1 -0
  89. package/dist/repository/mcp-audit-log.repository.js +34 -0
  90. package/dist/repository/mcp-audit-log.repository.js.map +1 -0
  91. package/dist/repository/security-rule.repository.js.map +1 -1
  92. package/dist/seeders/module-metadata-seeder.service.js.map +1 -1
  93. package/dist/seeders/module-test-data.service.d.ts +7 -0
  94. package/dist/seeders/module-test-data.service.d.ts.map +1 -1
  95. package/dist/seeders/module-test-data.service.js +94 -18
  96. package/dist/seeders/module-test-data.service.js.map +1 -1
  97. package/dist/seeders/permission-metadata-seeder.service.js.map +1 -1
  98. package/dist/seeders/seed-data/solid-core-metadata.json +380 -2
  99. package/dist/services/authentication.service.d.ts.map +1 -1
  100. package/dist/services/authentication.service.js +5 -5
  101. package/dist/services/authentication.service.js.map +1 -1
  102. package/dist/services/chatter-message.service.d.ts +6 -3
  103. package/dist/services/chatter-message.service.d.ts.map +1 -1
  104. package/dist/services/chatter-message.service.js +23 -35
  105. package/dist/services/chatter-message.service.js.map +1 -1
  106. package/dist/services/crud.service.js.map +1 -1
  107. package/dist/services/csv.service.js.map +1 -1
  108. package/dist/services/dashboard.service.js.map +1 -1
  109. package/dist/services/database/database-bootstrap.service.js.map +1 -1
  110. package/dist/services/excel.service.js.map +1 -1
  111. package/dist/services/export-transaction.service.js.map +1 -1
  112. package/dist/services/field-metadata.service.js +2 -2
  113. package/dist/services/field-metadata.service.js.map +1 -1
  114. package/dist/services/fixtures.service.js.map +1 -1
  115. package/dist/services/import-transaction.service.js.map +1 -1
  116. package/dist/services/list-of-values.service.js.map +1 -1
  117. package/dist/services/mcp-audit-log.service.d.ts +12 -0
  118. package/dist/services/mcp-audit-log.service.d.ts.map +1 -0
  119. package/dist/services/mcp-audit-log.service.js +38 -0
  120. package/dist/services/mcp-audit-log.service.js.map +1 -0
  121. package/dist/services/model-metadata.service.d.ts +4 -1
  122. package/dist/services/model-metadata.service.d.ts.map +1 -1
  123. package/dist/services/model-metadata.service.js +23 -24
  124. package/dist/services/model-metadata.service.js.map +1 -1
  125. package/dist/services/module-metadata.service.d.ts +4 -1
  126. package/dist/services/module-metadata.service.d.ts.map +1 -1
  127. package/dist/services/module-metadata.service.js +18 -2
  128. package/dist/services/module-metadata.service.js.map +1 -1
  129. package/dist/services/queues/database-publisher.service.js +3 -3
  130. package/dist/services/queues/database-publisher.service.js.map +1 -1
  131. package/dist/services/queues/database-subscriber.service.js +3 -3
  132. package/dist/services/queues/database-subscriber.service.js.map +1 -1
  133. package/dist/services/queues/rabbitmq-publisher.service.js +3 -3
  134. package/dist/services/queues/rabbitmq-publisher.service.js.map +1 -1
  135. package/dist/services/queues/rabbitmq-subscriber.service.js +4 -4
  136. package/dist/services/queues/rabbitmq-subscriber.service.js.map +1 -1
  137. package/dist/services/queues/redis-publisher.service.d.ts.map +1 -1
  138. package/dist/services/queues/redis-publisher.service.js +4 -1
  139. package/dist/services/queues/redis-publisher.service.js.map +1 -1
  140. package/dist/services/queues/redis-subscriber.service.d.ts.map +1 -1
  141. package/dist/services/queues/redis-subscriber.service.js +4 -1
  142. package/dist/services/queues/redis-subscriber.service.js.map +1 -1
  143. package/dist/services/role-metadata.service.js.map +1 -1
  144. package/dist/services/scheduled-jobs/scheduler.service.js.map +1 -1
  145. package/dist/services/settings/default-settings-provider.service.d.ts +58 -8
  146. package/dist/services/settings/default-settings-provider.service.d.ts.map +1 -1
  147. package/dist/services/settings/default-settings-provider.service.js +21 -4
  148. package/dist/services/settings/default-settings-provider.service.js.map +1 -1
  149. package/dist/services/sms/TwilioSMSService.js.map +1 -1
  150. package/dist/services/solid-introspect.service.js.map +1 -1
  151. package/dist/services/user-activity-history.service.js.map +1 -1
  152. package/dist/services/view-metadata.service.d.ts.map +1 -1
  153. package/dist/services/view-metadata.service.js +17 -2
  154. package/dist/services/view-metadata.service.js.map +1 -1
  155. package/dist/solid-core.module.d.ts +1 -0
  156. package/dist/solid-core.module.d.ts.map +1 -1
  157. package/dist/solid-core.module.js +9 -0
  158. package/dist/solid-core.module.js.map +1 -1
  159. package/dist/subscribers/computed-entity-field.subscriber.js.map +1 -1
  160. package/dist/subscribers/security-rule.subscriber.d.ts.map +1 -1
  161. package/dist/subscribers/security-rule.subscriber.js.map +1 -1
  162. package/dist/subscribers/view-metadata.subscriber.js.map +1 -1
  163. package/dist/testing/core/testing-engine.js.map +1 -1
  164. package/dist/testing/reporter/console-reporter.d.ts +10 -0
  165. package/dist/testing/reporter/console-reporter.d.ts.map +1 -1
  166. package/dist/testing/reporter/console-reporter.js +21 -0
  167. package/dist/testing/reporter/console-reporter.js.map +1 -1
  168. package/dist/testing/reporter/reporter.types.d.ts +7 -0
  169. package/dist/testing/reporter/reporter.types.d.ts.map +1 -1
  170. package/dist/testing/reporter/reporter.types.js.map +1 -1
  171. package/dist/testing/reporter/webhook-reporter.d.ts +54 -0
  172. package/dist/testing/reporter/webhook-reporter.d.ts.map +1 -0
  173. package/dist/testing/reporter/webhook-reporter.js +74 -0
  174. package/dist/testing/reporter/webhook-reporter.js.map +1 -0
  175. package/dist/testing/runner/run-from-metadata.d.ts.map +1 -1
  176. package/dist/testing/runner/run-from-metadata.js +20 -1
  177. package/dist/testing/runner/run-from-metadata.js.map +1 -1
  178. package/package.json +8 -8
  179. package/src/commands/refresh-model.command.ts +1 -32
  180. package/src/commands/run-tests.command.ts +45 -17
  181. package/src/controllers/action-metadata.controller.ts +1 -1
  182. package/src/controllers/facebook-authentication.controller.ts +1 -1
  183. package/src/controllers/google-authentication.controller.ts +1 -1
  184. package/src/controllers/mcp-audit-log.controller.ts +70 -0
  185. package/src/controllers/menu-item-metadata.controller.ts +1 -1
  186. package/src/controllers/microsoft-authentication.controller.ts +1 -1
  187. package/src/controllers/model-metadata.controller.ts +1 -1
  188. package/src/controllers/module-metadata.controller.ts +1 -1
  189. package/src/controllers/mq-message-queue.controller.ts +1 -1
  190. package/src/controllers/mq-message.controller.ts +1 -1
  191. package/src/controllers/user.controller.ts +16 -16
  192. package/src/controllers/view-metadata.controller.ts +1 -1
  193. package/src/dtos/create-mcp-audit-log.dto.ts +84 -0
  194. package/src/dtos/update-mcp-audit-log.dto.ts +83 -0
  195. package/src/dtos/update-user.dto.ts +4 -0
  196. package/src/entities/chatter-message-details.entity.ts +1 -2
  197. package/src/entities/mcp-audit-log.entity.ts +55 -0
  198. package/src/entities/user.entity.ts +1 -1
  199. package/src/helpers/bootstrap.helper.ts +3 -0
  200. package/src/helpers/command.service.ts +2 -0
  201. package/src/helpers/field-crud-managers/BigIntFieldCrudManager.ts +1 -1
  202. package/src/helpers/field-crud-managers/SelectionDynamicFieldCrudManager.ts +1 -1
  203. package/src/helpers/module-metadata-helper.service.ts +1 -1
  204. package/src/index.ts +4 -0
  205. package/src/interfaces.ts +0 -2
  206. package/src/jobs/database/chatter-queue-subscriber-database.service.ts +4 -2
  207. package/src/jobs/database/trigger-mcp-client-subscriber-database.service.ts +1 -1
  208. package/src/jobs/rabbitmq/chatter-queue-subscriber.service.ts +4 -2
  209. package/src/jobs/redis/chatter-queue-subscriber-redis.service.ts +10 -3
  210. package/src/repository/mcp-audit-log.repository.ts +17 -0
  211. package/src/repository/security-rule.repository.ts +1 -1
  212. package/src/seeders/module-metadata-seeder.service.ts +4 -4
  213. package/src/seeders/module-test-data.service.ts +107 -15
  214. package/src/seeders/permission-metadata-seeder.service.ts +1 -1
  215. package/src/seeders/seed-data/solid-core-metadata.json +380 -2
  216. package/src/services/1.js +6 -0
  217. package/src/services/authentication.service.ts +19 -31
  218. package/src/services/chatter-message.service.ts +28 -38
  219. package/src/services/crud.service.ts +3 -3
  220. package/src/services/csv.service.ts +1 -1
  221. package/src/services/dashboard.service.ts +1 -1
  222. package/src/services/database/database-bootstrap.service.ts +1 -1
  223. package/src/services/excel.service.ts +1 -1
  224. package/src/services/export-transaction.service.ts +2 -2
  225. package/src/services/field-metadata.service.ts +3 -3
  226. package/src/services/fixtures.service.ts +2 -2
  227. package/src/services/import-transaction.service.ts +2 -2
  228. package/src/services/list-of-values.service.ts +1 -1
  229. package/src/services/mcp-audit-log.service.ts +19 -0
  230. package/src/services/model-metadata.service.ts +35 -34
  231. package/src/services/module-metadata.service.ts +18 -7
  232. package/src/services/queues/database-publisher.service.ts +4 -4
  233. package/src/services/queues/database-subscriber.service.ts +7 -7
  234. package/src/services/queues/rabbitmq-publisher.service.ts +7 -7
  235. package/src/services/queues/rabbitmq-subscriber.service.ts +13 -13
  236. package/src/services/queues/redis-publisher.service.ts +7 -4
  237. package/src/services/queues/redis-subscriber.service.ts +9 -6
  238. package/src/services/role-metadata.service.ts +1 -1
  239. package/src/services/scheduled-jobs/scheduler.service.ts +5 -5
  240. package/src/services/settings/default-settings-provider.service.ts +21 -4
  241. package/src/services/sms/TwilioSMSService.ts +2 -2
  242. package/src/services/solid-introspect.service.ts +2 -2
  243. package/src/services/user-activity-history.service.ts +1 -1
  244. package/src/services/view-metadata.service.ts +25 -8
  245. package/src/solid-core.module.ts +9 -0
  246. package/src/subscribers/computed-entity-field.subscriber.ts +1 -1
  247. package/src/subscribers/security-rule.subscriber.ts +8 -8
  248. package/src/subscribers/view-metadata.subscriber.ts +1 -1
  249. package/src/testing/core/testing-engine.ts +2 -2
  250. package/src/testing/reporter/console-reporter.ts +27 -0
  251. package/src/testing/reporter/reporter.types.ts +7 -0
  252. package/src/testing/reporter/webhook-reporter.ts +116 -0
  253. package/src/testing/runner/run-from-metadata.ts +19 -1
  254. package/dist-tests/api/authenticate.spec.js +0 -119
  255. package/dist-tests/api/authenticate.spec.js.map +0 -1
  256. package/dist-tests/api/crud-service.findOne.cityMaster.spec.js +0 -97
  257. package/dist-tests/api/crud-service.findOne.cityMaster.spec.js.map +0 -1
  258. package/dist-tests/api/ping.spec.js +0 -21
  259. package/dist-tests/api/ping.spec.js.map +0 -1
  260. package/dist-tests/helpers/auth.js +0 -41
  261. package/dist-tests/helpers/auth.js.map +0 -1
  262. package/dist-tests/helpers/env.js +0 -11
  263. package/dist-tests/helpers/env.js.map +0 -1
  264. package/docs/grouping-enhancements.md +0 -89
  265. package/docs/java-spring/README.md +0 -3
  266. package/docs/java-spring/solid-core-module-deep-dive-report.md +0 -1317
  267. package/docs/seed-changes.md +0 -65
  268. package/docs/test-data-workflow.md +0 -200
  269. package/docs/type-declaration-import-issue.md +0 -24
@@ -16,9 +16,9 @@ export abstract class DatabaseSubscriber<T> implements OnModuleInit, QueueSubscr
16
16
  protected readonly mqMessageQueueService: MqMessageQueueService,
17
17
  protected readonly poller: PollerService,
18
18
  ) {
19
- this.serviceRole = process.env.QUEUES_SERVICE_ROLE;
20
- if (!this.serviceRole) {
21
- this.logger.debug('Queue service Role is not defined in the environment variables');
19
+ this.serviceRole = process.env.QUEUES_SERVICE_ROLE || 'both';
20
+ if (!process.env.QUEUES_SERVICE_ROLE) {
21
+ this.logger.debug('QUEUES_SERVICE_ROLE is not defined. Defaulting DatabaseSubscriber service role to "both".');
22
22
  }
23
23
  // this.logger.debug(`DatabaseSubscriber instance created with options: ${JSON.stringify(this.options())}`);
24
24
  }
@@ -60,7 +60,7 @@ export abstract class DatabaseSubscriber<T> implements OnModuleInit, QueueSubscr
60
60
 
61
61
  await this.processMessage(message);
62
62
  }
63
- catch (error) {
63
+ catch (error: any) {
64
64
  this.logger.error(`Error processing message: ${error.message}`);
65
65
 
66
66
  // if an error occurs then if retryCount is set we start retrying.
@@ -108,7 +108,7 @@ export abstract class DatabaseSubscriber<T> implements OnModuleInit, QueueSubscr
108
108
  this.logger.log(`DatabaseSubscriber for queue ${queueName} is disabled because it does not match QUEUES_QUEUE_NAME_REGEX_TO_ENABLE=${queueNameRegex}`);
109
109
  return;
110
110
  }
111
- } catch (error) {
111
+ } catch (error: any) {
112
112
  this.logger.error(`Invalid QUEUES_QUEUE_NAME_REGEX_TO_ENABLE regex "${queueNameRegex}". Subscriber for queue ${queueName} will not start.`);
113
113
  return;
114
114
  }
@@ -152,7 +152,7 @@ export abstract class DatabaseSubscriber<T> implements OnModuleInit, QueueSubscr
152
152
  private async retryMessage(message: QueueMessage<T>) {
153
153
  try {
154
154
  await this.processMessage(message);
155
- } catch (error) {
155
+ } catch (error: any) {
156
156
  if (message.currentRetry < message.retryCount) {
157
157
  await this.updateStatusInDatabase('retrying', message);
158
158
 
@@ -203,7 +203,7 @@ export abstract class DatabaseSubscriber<T> implements OnModuleInit, QueueSubscr
203
203
  this.logger.debug(`Message status updated to ${stage} for messageId: ${mqMessage.id}`);
204
204
  }
205
205
  }
206
- catch (error) {
206
+ catch (error: any) {
207
207
  this.logger.error(error.message, error.stack);
208
208
  }
209
209
  }
@@ -22,12 +22,12 @@ export abstract class RabbitMqPublisher<T> implements OnModuleDestroy, QueuePubl
22
22
  protected readonly mqMessageQueueService: MqMessageQueueService,
23
23
  ) {
24
24
  this.url = process.env.QUEUES_RABBIT_MQ_URL;
25
- this.serviceRole = process.env.QUEUES_SERVICE_ROLE;
25
+ this.serviceRole = process.env.QUEUES_SERVICE_ROLE || 'both';
26
26
  if (!this.url) {
27
27
  this.logger.debug('RabbitMqPublisher url is not defined in the environment variables');
28
28
  }
29
- if (!this.serviceRole) {
30
- this.logger.debug('Queue service Role is not defined in the environment variables');
29
+ if (!process.env.QUEUES_SERVICE_ROLE) {
30
+ this.logger.debug('QUEUES_SERVICE_ROLE is not defined. Defaulting RabbitMqPublisher service role to "both".');
31
31
  }
32
32
  // this.logger.debug(`RabbitMqPublisher instance created with options: ${JSON.stringify(this.options())} and url: ${this.url}`);
33
33
  }
@@ -118,7 +118,7 @@ export abstract class RabbitMqPublisher<T> implements OnModuleDestroy, QueuePubl
118
118
  if (this.channel) {
119
119
  try {
120
120
  await this.channel.close();
121
- } catch (err) {
121
+ } catch (err: any) {
122
122
  this.logger.warn(
123
123
  `RabbitMqPublisher error closing channel: ${(err as Error).message}`,
124
124
  );
@@ -130,7 +130,7 @@ export abstract class RabbitMqPublisher<T> implements OnModuleDestroy, QueuePubl
130
130
  if (this.connection) {
131
131
  try {
132
132
  await this.connection.close();
133
- } catch (err) {
133
+ } catch (err: any) {
134
134
  this.logger.warn(
135
135
  `RabbitMqPublisher error closing connection: ${(err as Error).message}`,
136
136
  );
@@ -189,7 +189,7 @@ export abstract class RabbitMqPublisher<T> implements OnModuleDestroy, QueuePubl
189
189
  // }
190
190
  // await channel.waitForConfirms();
191
191
  // this.logger.debug('RabbitMqPublisher Message published successfully');
192
- } catch (err) {
192
+ } catch (err: any) {
193
193
  this.logger.error(`RabbitMqPublisher Message publish failed: ${JSON.stringify(err)}`);
194
194
  if (err instanceof Error) {
195
195
  this.logger.error(`RabbitMqPublisher Error stack: ${err.stack}`);
@@ -224,7 +224,7 @@ export abstract class RabbitMqPublisher<T> implements OnModuleDestroy, QueuePubl
224
224
  mqMessageQueueId: mqMessageQueue.id,
225
225
  });
226
226
  }
227
- catch (error) {
227
+ catch (error: any) {
228
228
  this.logger.error(error.message, error.stack);
229
229
  }
230
230
 
@@ -31,12 +31,12 @@ export abstract class RabbitMqSubscriber<T> implements OnModuleInit, QueueSubscr
31
31
 
32
32
  constructor(protected readonly mqMessageService: MqMessageService, protected readonly mqMessageQueueService: MqMessageQueueService) {
33
33
  this.url = process.env.QUEUES_RABBIT_MQ_URL;
34
- this.serviceRole = process.env.QUEUES_SERVICE_ROLE;
34
+ this.serviceRole = process.env.QUEUES_SERVICE_ROLE || 'both';
35
35
  if (!this.url) {
36
36
  this.logger.debug('RabbitMqPublisher url is not defined in the environment variables');
37
37
  }
38
- if (!this.serviceRole) {
39
- this.logger.debug('Queue service Role is not defined in the environment variables');
38
+ if (!process.env.QUEUES_SERVICE_ROLE) {
39
+ this.logger.debug('QUEUES_SERVICE_ROLE is not defined. Defaulting RabbitMqSubscriber service role to "both".');
40
40
  }
41
41
  // this.logger.debug(`RabbitMqSubscriber instance created with options: ${JSON.stringify(this.options())} and url: ${this.url}`);
42
42
  }
@@ -85,7 +85,7 @@ export abstract class RabbitMqSubscriber<T> implements OnModuleInit, QueueSubscr
85
85
  async onModuleInit(): Promise<void> {
86
86
  // Not using SettingService here as that will necessitate all implementors of RabbitMqSubscriber to also inject SettingService which is not ideal.
87
87
  // Instead we directly read the environment variables here.
88
- const defaultBroker = process.env.QUEUES_DEFAULT_BROKER || 'rabbitmq';
88
+ const defaultBroker = process.env.QUEUES_DEFAULT_BROKER || 'database';
89
89
  const solidCliRunning = process.env.SOLID_CLI_RUNNING || "false";
90
90
  const queueNameRegex = (process.env.QUEUES_QUEUE_NAME_REGEX_TO_ENABLE || '').trim();
91
91
  const roleAllowed = ['both', 'subscriber'].includes(this.serviceRole);
@@ -107,7 +107,7 @@ export abstract class RabbitMqSubscriber<T> implements OnModuleInit, QueueSubscr
107
107
  this.logger.log(`RabbitMqSubscriber for queue ${queueName} is disabled because it does not match QUEUES_QUEUE_NAME_REGEX_TO_ENABLE=${queueNameRegex}`);
108
108
  return;
109
109
  }
110
- } catch (error) {
110
+ } catch (error: any) {
111
111
  this.logger.error(`Invalid QUEUES_QUEUE_NAME_REGEX_TO_ENABLE regex "${queueNameRegex}". Subscriber for queue ${queueName} will not start.`);
112
112
  return;
113
113
  }
@@ -116,7 +116,7 @@ export abstract class RabbitMqSubscriber<T> implements OnModuleInit, QueueSubscr
116
116
  const namespacedQueueName = buildNamespacedQueueName(queueName);
117
117
  try {
118
118
  await this.connectAndConsume(namespacedQueueName);
119
- } catch (err) {
119
+ } catch (err: any) {
120
120
  this.logger.error(`Failed to connect to RabbitMQ for queue ${namespacedQueueName}: ${(err as Error).message}`, (err as Error).stack);
121
121
  this.triggerReconnect(namespacedQueueName, 'initial connection failure');
122
122
  }
@@ -142,7 +142,7 @@ export abstract class RabbitMqSubscriber<T> implements OnModuleInit, QueueSubscr
142
142
  let connection: amqp.Connection;
143
143
  try {
144
144
  connection = await this.establishConnection();
145
- } catch (err) {
145
+ } catch (err: any) {
146
146
  this.logger.error(`Failed to connect to RabbitMQ for queue ${queueName}: ${(err as Error).message}`, (err as Error).stack);
147
147
  throw err;
148
148
  }
@@ -210,7 +210,7 @@ export abstract class RabbitMqSubscriber<T> implements OnModuleInit, QueueSubscr
210
210
  const messageContentString = rawMessage.content.toString();
211
211
  message = JSON.parse(messageContentString) as QueueMessage<T>;
212
212
  this.logger.debug(`rabbitmq subscriber received message with id: ${message.messageId} for queue ${queueName}`);
213
- } catch (error) {
213
+ } catch (error: any) {
214
214
  this.logger.error(`Invalid JSON message on queue ${queueName}: ${(error as Error).message}`);
215
215
  await this.publishToFailedQueue(queueName, rawMessage.content, channel, error);
216
216
  channel.ack(rawMessage);
@@ -223,7 +223,7 @@ export abstract class RabbitMqSubscriber<T> implements OnModuleInit, QueueSubscr
223
223
 
224
224
  try {
225
225
  await this.processMessage(message, rawMessage, channel, queueName);
226
- } catch (error) {
226
+ } catch (error: any) {
227
227
  await this.handleProcessingError(message, rawMessage, channel, error, queueName);
228
228
  }
229
229
  },
@@ -277,7 +277,7 @@ export abstract class RabbitMqSubscriber<T> implements OnModuleInit, QueueSubscr
277
277
  channel.sendToQueue(failedQueue, body, errorMessage ? {
278
278
  headers: { 'x-error': errorMessage }
279
279
  } : undefined);
280
- } catch (err) {
280
+ } catch (err: any) {
281
281
  this.logger.error(`Failed to publish to failed queue ${failedQueue}: ${(err as Error).message}`);
282
282
  }
283
283
  }
@@ -302,7 +302,7 @@ export abstract class RabbitMqSubscriber<T> implements OnModuleInit, QueueSubscr
302
302
  this.reconnectAttempt = 0;
303
303
  this.logger.log(`RabbitMqSubscriber reconnected for queue ${queueName}`);
304
304
  return;
305
- } catch (err) {
305
+ } catch (err: any) {
306
306
  this.reconnectAttempt += 1;
307
307
  const delay = this.backoff();
308
308
  this.logger.warn(`RabbitMqSubscriber reconnect failed for queue ${queueName}; retrying in ${delay}ms`);
@@ -407,7 +407,7 @@ export abstract class RabbitMqSubscriber<T> implements OnModuleInit, QueueSubscr
407
407
  await this.mqMessageService.repo.update(mqMessage.id, updatedFields);
408
408
  }
409
409
  }
410
- catch (error) {
410
+ catch (error: any) {
411
411
  this.logger.error(error.message, error.stack);
412
412
  }
413
413
 
@@ -485,7 +485,7 @@ export abstract class RabbitMqSubscriber<T> implements OnModuleInit, QueueSubscr
485
485
  // - If timeoutPromise rejects first, we fail fast with timeout error.
486
486
  // This ensures we mark DB status via normal error handling before broker ack-timeout.
487
487
  return await Promise.race([subscribePromise, timeoutPromise]);
488
- } catch (error) {
488
+ } catch (error: any) {
489
489
  const errorMessage = (error as Error)?.message || String(error);
490
490
  this.logger.error(
491
491
  `Subscriber execution failed for queue ${queueName} and messageId ${messageId}: ${errorMessage}`,
@@ -16,7 +16,10 @@ export abstract class RedisPublisher<T> implements OnModuleDestroy, QueuePublish
16
16
  protected readonly mqMessageService: MqMessageService,
17
17
  protected readonly mqMessageQueueService: MqMessageQueueService,
18
18
  ) {
19
- this.serviceRole = process.env.QUEUES_SERVICE_ROLE;
19
+ this.serviceRole = process.env.QUEUES_SERVICE_ROLE || 'both';
20
+ if (!process.env.QUEUES_SERVICE_ROLE) {
21
+ this.logger.debug('QUEUES_SERVICE_ROLE is not defined. Defaulting RedisPublisher service role to "both".');
22
+ }
20
23
  if (!process.env.QUEUES_REDIS_URL) {
21
24
  this.logger.debug('RedisPublisher: QUEUES_REDIS_URL is not defined in the environment variables');
22
25
  }
@@ -65,7 +68,7 @@ export abstract class RedisPublisher<T> implements OnModuleDestroy, QueuePublish
65
68
  const client = this.getClient();
66
69
  await client.publish(namespacedQueueName, JSON.stringify(message));
67
70
  this.logger.debug(`RedisPublisher published message ${message.messageId} to channel ${namespacedQueueName}`);
68
- } catch (err) {
71
+ } catch (err: any) {
69
72
  this.logger.error(`RedisPublisher failed to publish message: ${(err as Error).message}`, (err as Error).stack);
70
73
  }
71
74
 
@@ -87,8 +90,8 @@ export abstract class RedisPublisher<T> implements OnModuleDestroy, QueuePublish
87
90
  parentEntity: message.parentEntity,
88
91
  mqMessageQueueId: mqMessageQueue.id,
89
92
  });
90
- } catch (error) {
93
+ } catch (error: any) {
91
94
  this.logger.error(error.message, error.stack);
92
95
  }
93
96
  }
94
- }
97
+ }
@@ -17,7 +17,10 @@ export abstract class RedisSubscriber<T> implements OnModuleInit, OnModuleDestro
17
17
  protected readonly mqMessageService: MqMessageService,
18
18
  protected readonly mqMessageQueueService: MqMessageQueueService,
19
19
  ) {
20
- this.serviceRole = process.env.QUEUES_SERVICE_ROLE;
20
+ this.serviceRole = process.env.QUEUES_SERVICE_ROLE || 'both';
21
+ if (!process.env.QUEUES_SERVICE_ROLE) {
22
+ this.logger.debug('QUEUES_SERVICE_ROLE is not defined. Defaulting RedisSubscriber service role to "both".');
23
+ }
21
24
  if (!process.env.QUEUES_REDIS_URL) {
22
25
  this.logger.debug('RedisSubscriber: QUEUES_REDIS_URL is not defined in the environment variables');
23
26
  }
@@ -50,7 +53,7 @@ export abstract class RedisSubscriber<T> implements OnModuleInit, OnModuleDestro
50
53
  );
51
54
  return;
52
55
  }
53
- } catch (error) {
56
+ } catch (error: any) {
54
57
  this.logger.error(
55
58
  `Invalid QUEUES_QUEUE_NAME_REGEX_TO_ENABLE regex "${queueNameRegex}". Subscriber for queue ${queueName} will not start.`,
56
59
  );
@@ -92,7 +95,7 @@ export abstract class RedisSubscriber<T> implements OnModuleInit, OnModuleDestro
92
95
  let message: QueueMessage<T> = null;
93
96
  try {
94
97
  message = JSON.parse(rawMessage) as QueueMessage<T>;
95
- } catch (error) {
98
+ } catch (error: any) {
96
99
  this.logger.error(`RedisSubscriber invalid JSON on channel ${channel}: ${(error as Error).message}`);
97
100
  return;
98
101
  }
@@ -103,7 +106,7 @@ export abstract class RedisSubscriber<T> implements OnModuleInit, OnModuleDestro
103
106
 
104
107
  try {
105
108
  await this.processMessage(message);
106
- } catch (error) {
109
+ } catch (error: any) {
107
110
  await this.handleProcessingError(message, error, channel);
108
111
  }
109
112
  });
@@ -147,7 +150,7 @@ export abstract class RedisSubscriber<T> implements OnModuleInit, OnModuleDestro
147
150
  try {
148
151
  await this.connectAndSubscribe(channel);
149
152
  this.logger.log(`RedisSubscriber reconnected for channel ${channel}`);
150
- } catch (err) {
153
+ } catch (err: any) {
151
154
  this.triggerReconnect(channel, `reconnect failed: ${(err as Error).message}`);
152
155
  }
153
156
  }, delay);
@@ -201,7 +204,7 @@ export abstract class RedisSubscriber<T> implements OnModuleInit, OnModuleDestro
201
204
  if (stage === 'failed') updatedFields['error'] = error;
202
205
  await this.mqMessageService.repo.update(mqMessage.id, updatedFields);
203
206
  }
204
- } catch (err) {
207
+ } catch (err: any) {
205
208
  this.logger.error(err.message, err.stack);
206
209
  }
207
210
  }
@@ -91,7 +91,7 @@ export class RoleMetadataService extends CRUDService<RoleMetadata> {
91
91
  }
92
92
  */
93
93
  }
94
- } catch (error) {
94
+ } catch (error: any) {
95
95
  this.logger.error(error);
96
96
  }
97
97
  }
@@ -36,7 +36,7 @@ export class SchedulerServiceImpl implements ISchedulerService {
36
36
  if (jobsRegexToEnable && jobsRegexToEnable !== "all") {
37
37
  try {
38
38
  jobsRegex = new RegExp(jobsRegexToEnable);
39
- } catch (error) {
39
+ } catch (error: any) {
40
40
  this.logger.error(`Invalid SOLID_SCHEDULER_JOBS_REGEX_TO_ENABLE regex "${jobsRegexToEnable}". Scheduler loop will skip this run.`);
41
41
  return;
42
42
  }
@@ -101,7 +101,7 @@ export class SchedulerServiceImpl implements ISchedulerService {
101
101
 
102
102
  await this.scheduledJobRepo.save(job);
103
103
  this.logger.log(`[${now.getTime()}]: scheduler service finished running job: ${job.job}`);
104
- } catch (err) {
104
+ } catch (err: any) {
105
105
  this.logger.error(`[${now.getTime()}]: scheduler service failed to run job ${job.job}`, err.stack);
106
106
  } finally {
107
107
  this.runningJobs.delete(jobKey);
@@ -153,7 +153,7 @@ export class SchedulerServiceImpl implements ISchedulerService {
153
153
  try {
154
154
  const parsed = JSON.parse(dayOfWeek);
155
155
  return Array.isArray(parsed) ? parsed : [];
156
- } catch (error) {
156
+ } catch (error: any) {
157
157
  this.logger.warn(`Invalid dayOfWeek JSON '${dayOfWeek}'`, error as any);
158
158
  return [];
159
159
  }
@@ -217,10 +217,10 @@ export class SchedulerServiceImpl implements ISchedulerService {
217
217
  if (runAfterNext.getTime() - nextRun.getTime() < 60000) {
218
218
  throw new Error('Cron expression interval must be at least 1 minute');
219
219
  }
220
-
220
+
221
221
  this.logger.log(`Custom cron '${job.cronExpression}' next run: ${nextRun}`);
222
222
  return nextRun;
223
- } catch (error) {
223
+ } catch (error: any) {
224
224
  this.logger.error(`Invalid cron expression for job ${job.scheduleName}: ${job.cronExpression}. Reason: ${(error as Error).message}`);
225
225
  // Fallback to daily if cron parsing fails
226
226
  return new Date(base.getTime() + 24 * 60 * 60 * 1000);
@@ -724,7 +724,11 @@ const getSolidCoreSettings = (isProd: boolean) =>
724
724
  label: "Registration Validation Type",
725
725
  group: "authentication-settings",
726
726
  sortOrder: 30,
727
- controlType: "shortText",
727
+ controlType: "selectionStatic",
728
+ options: [
729
+ { label: "Email", value: "email" },
730
+ { label: "Mobile", value: "mobile" },
731
+ ],
728
732
  },
729
733
  {
730
734
  moduleName: "solid-core",
@@ -734,7 +738,12 @@ const getSolidCoreSettings = (isProd: boolean) =>
734
738
  label: "Login Validation Type",
735
739
  group: "authentication-settings",
736
740
  sortOrder: 40,
737
- controlType: "shortText",
741
+ controlType: "selectionStatic",
742
+ options: [
743
+ { label: "Email", value: "email" },
744
+ { label: "Mobile", value: "mobile" },
745
+ { label: "Selectable", value: "selectable" },
746
+ ],
738
747
  },
739
748
  {
740
749
  moduleName: "solid-core",
@@ -899,7 +908,11 @@ const getSolidCoreSettings = (isProd: boolean) =>
899
908
  (
900
909
  process.env.IAM_SEND_WELCOME_EMAIL_ON_SIGNUP ?? "false"
901
910
  ).toLowerCase() === "true",
902
- level: SettingLevel.SystemEnv,
911
+ level: SettingLevel.SystemAdminEditable,
912
+ label: "Send Welcome Email On Signup",
913
+ group: "authentication-settings",
914
+ sortOrder: 180,
915
+ controlType: "boolean",
903
916
  },
904
917
  {
905
918
  moduleName: "solid-core",
@@ -908,7 +921,11 @@ const getSolidCoreSettings = (isProd: boolean) =>
908
921
  (
909
922
  process.env.IAM_SEND_WELCOME_SMS_ON_SIGNUP ?? "false"
910
923
  ).toLowerCase() === "true",
911
- level: SettingLevel.SystemEnv,
924
+ level: SettingLevel.SystemAdminEditable,
925
+ label: "Send Welcome SMS On Signup",
926
+ group: "authentication-settings",
927
+ sortOrder: 190,
928
+ controlType: "boolean",
912
929
  },
913
930
  {
914
931
  moduleName: "solid-core",
@@ -69,7 +69,7 @@ export class TwilioSMSService implements ISMS {
69
69
  try {
70
70
  const bodyTemplate = Handlebars.compile(smsTemplate.body);
71
71
  body = bodyTemplate(templateParams);
72
- } catch (error) {
72
+ } catch (error: any) {
73
73
  throw new Error('Unable to compile sms template body');
74
74
  }
75
75
  // Finally send the email.
@@ -110,7 +110,7 @@ export class TwilioSMSService implements ISMS {
110
110
  }
111
111
 
112
112
  return r;
113
- } catch (error) {
113
+ } catch (error: any) {
114
114
  throw new Error(error);
115
115
  }
116
116
  }
@@ -197,7 +197,7 @@ export class SolidIntrospectService implements OnApplicationBootstrap {
197
197
  let ds: DataSource | undefined;
198
198
  try {
199
199
  ds = this.moduleRef.get<DataSource>(token, { strict: false });
200
- } catch (err) {
200
+ } catch (err: any) {
201
201
  this.logger.warn(`DataSource token for "${dsName ?? 'default'}" not found: ${err?.message ?? err}`);
202
202
  }
203
203
  if (!ds) {
@@ -209,7 +209,7 @@ export class SolidIntrospectService implements OnApplicationBootstrap {
209
209
  if (!ds.isInitialized) {
210
210
  try {
211
211
  await ds.initialize(); // only if you need to initialize here; in many apps datasources are created earlier
212
- } catch (err) {
212
+ } catch (err: any) {
213
213
  this.logger.error(`Failed to initialize DataSource "${dsName}": ${err}`);
214
214
  continue;
215
215
  }
@@ -38,7 +38,7 @@ export class UserActivityHistoryService extends CRUDService<UserActivityHistory>
38
38
  ipAddress: ip,
39
39
  userAgent,
40
40
  });
41
- } catch (err) {
41
+ } catch (err: any) {
42
42
  this._logger.warn(`Failed to log event "${event}" for user ${user?.id}: ${err}`);
43
43
  }
44
44
  }
@@ -134,6 +134,7 @@ export class ViewMetadataService extends CRUDService<ViewMetadata> {
134
134
  let viewModes = [];
135
135
  const menuItemModelId = menuItem?.action?.model?.id;
136
136
  const menuItemModuleId = menuItem?.module?.id;
137
+ const collectionViewTypes = ['card', 'list', 'kanban', 'tree'];
137
138
  if (menuItemModelId && menuItemModuleId) {
138
139
  const actionQb = await this.actionMetadataService.repo.createSecurityRuleAwareQueryBuilder('action');
139
140
  const actionsForViewModes = await actionQb
@@ -142,16 +143,32 @@ export class ViewMetadataService extends CRUDService<ViewMetadata> {
142
143
  .leftJoinAndSelect('action.view', 'view')
143
144
  .where('model.id = :modelId', { modelId: menuItemModelId })
144
145
  .andWhere('module.id = :moduleId', { moduleId: menuItemModuleId })
145
- .andWhere('view.type IN (:...viewTypes)', { viewTypes: ['card', 'list', 'kanban', 'tree'] })
146
+ .andWhere('view.type IN (:...viewTypes)', { viewTypes: collectionViewTypes })
146
147
  .getMany();
147
148
 
148
- viewModes = actionsForViewModes.map(actionItem => ({
149
- type: actionItem.view?.type ?? '',
150
- menuItemId: menuItem.id,
151
- menuItemName: menuItem.displayName,
152
- actionId: actionItem.id ?? '',
153
- actionName: actionItem.displayName ?? '',
154
- }));
149
+ const canonicalActionsByViewType = new Map();
150
+ for (const actionItem of actionsForViewModes) {
151
+ const resolvedViewType = actionItem.view?.type;
152
+ if (!resolvedViewType || canonicalActionsByViewType.has(resolvedViewType)) {
153
+ continue;
154
+ }
155
+ canonicalActionsByViewType.set(resolvedViewType, actionItem);
156
+ }
157
+
158
+ if (action?.view?.type && collectionViewTypes.includes(action.view.type) && action?.id) {
159
+ canonicalActionsByViewType.set(action.view.type, action);
160
+ }
161
+
162
+ viewModes = collectionViewTypes
163
+ .map((resolvedViewType) => canonicalActionsByViewType.get(resolvedViewType))
164
+ .filter(Boolean)
165
+ .map(actionItem => ({
166
+ type: actionItem.view?.type ?? '',
167
+ menuItemId: menuItem.id,
168
+ menuItemName: menuItem.displayName,
169
+ actionId: actionItem.id ?? '',
170
+ actionName: actionItem.displayName ?? '',
171
+ }));
155
172
  }
156
173
 
157
174
  const viewId = action?.view?.id
@@ -1,3 +1,4 @@
1
+ import 'multer';
1
2
  import { Global, MiddlewareConsumer, Module, NestModule } from '@nestjs/common';
2
3
  import * as express from 'express';
3
4
  import { ConfigModule, ConfigService } from '@nestjs/config';
@@ -190,6 +191,7 @@ import { SavedFiltersController } from './controllers/saved-filters.controller';
190
191
  import { ScheduledJobController } from './controllers/scheduled-job.controller';
191
192
  import { AgentSessionController } from './controllers/agent-session.controller';
192
193
  import { AgentEventController } from './controllers/agent-event.controller';
194
+ import { McpAuditLogController } from './controllers/mcp-audit-log.controller';
193
195
  import { SecurityRuleController } from './controllers/security-rule.controller';
194
196
  import { SettingController } from './controllers/setting.controller';
195
197
  import { InfoController } from './controllers/info.controller';
@@ -216,6 +218,7 @@ import { SavedFilters } from './entities/saved-filters.entity';
216
218
  import { ScheduledJob } from './entities/scheduled-job.entity';
217
219
  import { AgentSession } from './entities/agent-session.entity';
218
220
  import { AgentEvent } from './entities/agent-event.entity';
221
+ import { McpAuditLog } from './entities/mcp-audit-log.entity';
219
222
  import { SecurityRule } from './entities/security-rule.entity';
220
223
  import { Setting } from './entities/setting.entity';
221
224
  import { UserActivityHistory } from './entities/user-activity-history.entity';
@@ -294,6 +297,7 @@ import { SavedFiltersRepository } from './repository/saved-filters.repository';
294
297
  import { ScheduledJobRepository } from './repository/scheduled-job.repository';
295
298
  import { AgentSessionRepository } from './repository/agent-session.repository';
296
299
  import { AgentEventRepository } from './repository/agent-event.repository';
300
+ import { McpAuditLogRepository } from './repository/mcp-audit-log.repository';
297
301
  import { SecurityRuleRepository } from './repository/security-rule.repository';
298
302
  import { SettingRepository } from './repository/setting.repository';
299
303
  import { SmsTemplateRepository } from './repository/sms-template.repository';
@@ -343,6 +347,7 @@ import { SavedFiltersService } from './services/saved-filters.service';
343
347
  import { ScheduledJobService } from './services/scheduled-job.service';
344
348
  import { AgentSessionService } from './services/agent-session.service';
345
349
  import { AgentEventService } from './services/agent-event.service';
350
+ import { McpAuditLogService } from './services/mcp-audit-log.service';
346
351
  import { SchedulerServiceImpl } from './services/scheduled-jobs/scheduler.service';
347
352
  import { SecurityRuleService } from './services/security-rule.service';
348
353
  import { ListOfDashboardQuestionProvidersSelectionProvider } from './services/selection-providers/list-of-dashboard-question-providers-selection-provider.service';
@@ -426,6 +431,7 @@ import { Entity } from 'typeorm';
426
431
  ScheduledJob,
427
432
  AgentSession,
428
433
  AgentEvent,
434
+ McpAuditLog,
429
435
  SecurityRule,
430
436
  Setting,
431
437
  SmsTemplate,
@@ -504,6 +510,7 @@ import { Entity } from 'typeorm';
504
510
  ScheduledJobController,
505
511
  AgentSessionController,
506
512
  AgentEventController,
513
+ McpAuditLogController,
507
514
  SecurityRuleController,
508
515
  ServiceController,
509
516
  SettingController,
@@ -773,8 +780,10 @@ import { Entity } from 'typeorm';
773
780
  ScheduledJobRepository,
774
781
  AgentSessionRepository,
775
782
  AgentEventRepository,
783
+ McpAuditLogRepository,
776
784
  AgentSessionService,
777
785
  AgentEventService,
786
+ McpAuditLogService,
778
787
  ScheduledJobSubscriber,
779
788
  AlphaNumExternalIdComputationProvider,
780
789
  ListOfValuesSubscriber,
@@ -142,7 +142,7 @@ export class ComputedEntityFieldSubscriber implements EntitySubscriberInterface
142
142
  const providerInstance = provider.instance as IEntityPreComputeFieldProvider<any, any, any>; // IEntityComputedFieldProvider
143
143
  const computedValue = await providerInstance.preComputeValue(entity, computedFieldMetadata); //FIXME There should some way to check/assert if the provider actually has a postComputeAndSaveValue
144
144
  return computedValue; //TODO: This line here is just for backward compatibility, once the pre compute interface is change to return void, we will get rid of it.
145
- } catch (error) {
145
+ } catch (error: any) {
146
146
  throw new InternalServerErrorException(`Error evaluating computed field ${computedFieldMetadata.fieldName} for model ${computedFieldMetadata.modelName} for triggered entity ${entity.constructor.name}: ${error.message}`);
147
147
  }
148
148
  }
@@ -27,19 +27,19 @@ export class SecurityRuleSubscriber implements EntitySubscriberInterface<Securit
27
27
  async afterInsert(event: InsertEvent<SecurityRule>) {
28
28
  await this.saveSecurityRules(event);
29
29
  }
30
-
30
+
31
31
  async afterUpdate(event: UpdateEvent<SecurityRule>) {
32
32
  await this.saveSecurityRules(event);
33
33
  }
34
34
 
35
- async saveSecurityRules(event: UpdateEvent<SecurityRule>| InsertEvent<SecurityRule>) {
35
+ async saveSecurityRules(event: UpdateEvent<SecurityRule> | InsertEvent<SecurityRule>) {
36
36
  const securityRule = event.entity as SecurityRule;
37
37
  const modelMetadata = event.entity.modelMetadata;
38
38
  if (!modelMetadata) {
39
39
  this.logger.error(`Model metadata not found for security rule with id ${event.entity.id}`);
40
40
  return;
41
41
  }
42
-
42
+
43
43
  const modelMetadataRepo = this.dataSource.getRepository(ModelMetadata);
44
44
  const populatedModelMetadata = await modelMetadataRepo.findOne({
45
45
  where: {
@@ -58,7 +58,7 @@ export class SecurityRuleSubscriber implements EntitySubscriberInterface<Securit
58
58
  const filePath = await this.moduleMetadataHelperService.getModuleMetadataFilePath(populatedModelMetadata.module.name);
59
59
  try {
60
60
  await fs.access(filePath);
61
- } catch (error) {
61
+ } catch (error: any) {
62
62
  // FIXME - Should we actually delete the security rule here, if the file is not found?
63
63
  this.logger.error(`File not found at path: ${filePath}`);
64
64
  return;
@@ -67,13 +67,13 @@ export class SecurityRuleSubscriber implements EntitySubscriberInterface<Securit
67
67
 
68
68
  if (metaData.securityRules) {
69
69
  const securityRuleIndex = metaData.securityRules?.findIndex((ruleFromFile: { name: string }) => ruleFromFile.name === securityRule.name);
70
- const {id, roleId, modelMetadataId, ...requiredDto} = await this.securityRuleRepo.toDto(securityRule)
71
- metaData.securityRules[securityRuleIndex] = {...requiredDto, securityRuleConfig: JSON.parse(securityRule.securityRuleConfig)}
70
+ const { id, roleId, modelMetadataId, ...requiredDto } = await this.securityRuleRepo.toDto(securityRule)
71
+ metaData.securityRules[securityRuleIndex] = { ...requiredDto, securityRuleConfig: JSON.parse(securityRule.securityRuleConfig) }
72
72
  }
73
73
  else {
74
74
  const securityRules = []
75
- const {id, roleId, modelMetadataId, ...requiredDto} = await this.securityRuleRepo.toDto(securityRule)
76
- securityRules.push({...requiredDto, securityRuleConfig: JSON.parse(securityRule.securityRuleConfig)})
75
+ const { id, roleId, modelMetadataId, ...requiredDto } = await this.securityRuleRepo.toDto(securityRule)
76
+ securityRules.push({ ...requiredDto, securityRuleConfig: JSON.parse(securityRule.securityRuleConfig) })
77
77
  metaData.securityRules = securityRules
78
78
  }
79
79
  // Write the updated object back to the file
@@ -43,7 +43,7 @@ export class ViewMetadataSubsciber implements EntitySubscriberInterface<ViewMeta
43
43
  const filePath = await this.moduleMetadataHelperService.getModuleMetadataFilePath(viewMetadata.model.module.name);
44
44
  try {
45
45
  await fs.access(filePath);
46
- } catch (error) {
46
+ } catch (error: any) {
47
47
  this.logger.error(`File not found at path: ${filePath}`);
48
48
  return;
49
49
  }
@@ -57,7 +57,7 @@ export class TestingEngine {
57
57
  } else {
58
58
  await execute();
59
59
  }
60
- } catch (err) {
60
+ } catch (err: any) {
61
61
  scenarioError = err;
62
62
  } finally {
63
63
  const durationMs = Date.now() - scenarioStart;
@@ -108,7 +108,7 @@ export class TestingEngine {
108
108
  // console.log(`Step ${resolvedStep.name} attempting to saveAs ${resolvedStep.saveAs}`, JSON.stringify(result));
109
109
  ctx.resources.set(resolvedStep.saveAs, result);
110
110
  }
111
- } catch (err) {
111
+ } catch (err: any) {
112
112
  stepError = err;
113
113
  throw err;
114
114
  } finally {