@solidxai/core 0.1.10-beta.2 → 0.1.10-beta.22

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 (320) hide show
  1. package/CLAUDE.md +18 -0
  2. package/CURRENT_PROMPT +6 -0
  3. package/dist/commands/refresh-model.command.d.ts +1 -7
  4. package/dist/commands/refresh-model.command.d.ts.map +1 -1
  5. package/dist/commands/refresh-model.command.js +4 -49
  6. package/dist/commands/refresh-model.command.js.map +1 -1
  7. package/dist/commands/refresh-module.command.d.ts +0 -2
  8. package/dist/commands/refresh-module.command.d.ts.map +1 -1
  9. package/dist/commands/refresh-module.command.js +3 -16
  10. package/dist/commands/refresh-module.command.js.map +1 -1
  11. package/dist/commands/test-data.command.d.ts +2 -0
  12. package/dist/commands/test-data.command.d.ts.map +1 -1
  13. package/dist/commands/test-data.command.js +32 -6
  14. package/dist/commands/test-data.command.js.map +1 -1
  15. package/dist/controllers/action-metadata.controller.js +1 -1
  16. package/dist/controllers/action-metadata.controller.js.map +1 -1
  17. package/dist/controllers/chatter-message.controller.d.ts +2 -0
  18. package/dist/controllers/chatter-message.controller.d.ts.map +1 -1
  19. package/dist/controllers/chatter-message.controller.js +17 -0
  20. package/dist/controllers/chatter-message.controller.js.map +1 -1
  21. package/dist/controllers/facebook-authentication.controller.js +1 -1
  22. package/dist/controllers/facebook-authentication.controller.js.map +1 -1
  23. package/dist/controllers/google-authentication.controller.js +1 -1
  24. package/dist/controllers/google-authentication.controller.js.map +1 -1
  25. package/dist/controllers/gupshup-webhook.controller.d.ts +11 -0
  26. package/dist/controllers/gupshup-webhook.controller.d.ts.map +1 -0
  27. package/dist/controllers/gupshup-webhook.controller.js +87 -0
  28. package/dist/controllers/gupshup-webhook.controller.js.map +1 -0
  29. package/dist/controllers/mcp-audit-log.controller.d.ts +35 -0
  30. package/dist/controllers/mcp-audit-log.controller.d.ts.map +1 -0
  31. package/dist/controllers/mcp-audit-log.controller.js +147 -0
  32. package/dist/controllers/mcp-audit-log.controller.js.map +1 -0
  33. package/dist/controllers/menu-item-metadata.controller.js +1 -1
  34. package/dist/controllers/menu-item-metadata.controller.js.map +1 -1
  35. package/dist/controllers/meta-cloud-whatsapp-webhook.controller.d.ts +16 -0
  36. package/dist/controllers/meta-cloud-whatsapp-webhook.controller.d.ts.map +1 -0
  37. package/dist/controllers/meta-cloud-whatsapp-webhook.controller.js +133 -0
  38. package/dist/controllers/meta-cloud-whatsapp-webhook.controller.js.map +1 -0
  39. package/dist/controllers/microsoft-authentication.controller.js +1 -1
  40. package/dist/controllers/microsoft-authentication.controller.js.map +1 -1
  41. package/dist/controllers/model-metadata.controller.d.ts +1 -1
  42. package/dist/controllers/model-metadata.controller.js +2 -2
  43. package/dist/controllers/model-metadata.controller.js.map +1 -1
  44. package/dist/controllers/module-metadata.controller.js +1 -1
  45. package/dist/controllers/module-metadata.controller.js.map +1 -1
  46. package/dist/controllers/mq-message-queue.controller.js +1 -1
  47. package/dist/controllers/mq-message-queue.controller.js.map +1 -1
  48. package/dist/controllers/mq-message.controller.js +1 -1
  49. package/dist/controllers/mq-message.controller.js.map +1 -1
  50. package/dist/controllers/view-metadata.controller.js +1 -1
  51. package/dist/controllers/view-metadata.controller.js.map +1 -1
  52. package/dist/dtos/create-mcp-audit-log.dto.d.ts +19 -0
  53. package/dist/dtos/create-mcp-audit-log.dto.d.ts.map +1 -0
  54. package/dist/dtos/create-mcp-audit-log.dto.js +118 -0
  55. package/dist/dtos/create-mcp-audit-log.dto.js.map +1 -0
  56. package/dist/dtos/update-chatter-note-message.dto.d.ts +5 -0
  57. package/dist/dtos/update-chatter-note-message.dto.d.ts.map +1 -0
  58. package/dist/dtos/update-chatter-note-message.dto.js +34 -0
  59. package/dist/dtos/update-chatter-note-message.dto.js.map +1 -0
  60. package/dist/dtos/update-mcp-audit-log.dto.d.ts +19 -0
  61. package/dist/dtos/update-mcp-audit-log.dto.d.ts.map +1 -0
  62. package/dist/dtos/update-mcp-audit-log.dto.js +117 -0
  63. package/dist/dtos/update-mcp-audit-log.dto.js.map +1 -0
  64. package/dist/dtos/update-user.dto.d.ts +1 -0
  65. package/dist/dtos/update-user.dto.d.ts.map +1 -1
  66. package/dist/dtos/update-user.dto.js +7 -1
  67. package/dist/dtos/update-user.dto.js.map +1 -1
  68. package/dist/entities/chatter-message-details.entity.d.ts.map +1 -1
  69. package/dist/entities/chatter-message-details.entity.js +0 -1
  70. package/dist/entities/chatter-message-details.entity.js.map +1 -1
  71. package/dist/entities/mcp-audit-log.entity.d.ts +19 -0
  72. package/dist/entities/mcp-audit-log.entity.d.ts.map +1 -0
  73. package/dist/entities/mcp-audit-log.entity.js +90 -0
  74. package/dist/entities/mcp-audit-log.entity.js.map +1 -0
  75. package/dist/entities/user.entity.js +1 -0
  76. package/dist/entities/user.entity.js.map +1 -1
  77. package/dist/factories/whatsapp.factory.d.ts.map +1 -1
  78. package/dist/factories/whatsapp.factory.js +13 -11
  79. package/dist/factories/whatsapp.factory.js.map +1 -1
  80. package/dist/helpers/bootstrap.helper.d.ts +1 -0
  81. package/dist/helpers/bootstrap.helper.d.ts.map +1 -1
  82. package/dist/helpers/bootstrap.helper.js +8 -3
  83. package/dist/helpers/bootstrap.helper.js.map +1 -1
  84. package/dist/helpers/command.service.d.ts +1 -0
  85. package/dist/helpers/command.service.d.ts.map +1 -1
  86. package/dist/helpers/command.service.js +1 -0
  87. package/dist/helpers/command.service.js.map +1 -1
  88. package/dist/helpers/field-crud-managers/BigIntFieldCrudManager.js.map +1 -1
  89. package/dist/helpers/field-crud-managers/SelectionDynamicFieldCrudManager.js.map +1 -1
  90. package/dist/helpers/module-metadata-helper.service.js.map +1 -1
  91. package/dist/index.d.ts +6 -0
  92. package/dist/index.d.ts.map +1 -1
  93. package/dist/index.js +6 -0
  94. package/dist/index.js.map +1 -1
  95. package/dist/interfaces.d.ts +1 -2
  96. package/dist/interfaces.d.ts.map +1 -1
  97. package/dist/interfaces.js.map +1 -1
  98. package/dist/jobs/database/chatter-queue-subscriber-database.service.d.ts.map +1 -1
  99. package/dist/jobs/database/chatter-queue-subscriber-database.service.js +3 -3
  100. package/dist/jobs/database/chatter-queue-subscriber-database.service.js.map +1 -1
  101. package/dist/jobs/database/trigger-mcp-client-subscriber-database.service.js.map +1 -1
  102. package/dist/jobs/rabbitmq/chatter-queue-subscriber.service.d.ts.map +1 -1
  103. package/dist/jobs/rabbitmq/chatter-queue-subscriber.service.js +3 -3
  104. package/dist/jobs/rabbitmq/chatter-queue-subscriber.service.js.map +1 -1
  105. package/dist/jobs/redis/chatter-queue-subscriber-redis.service.d.ts.map +1 -1
  106. package/dist/jobs/redis/chatter-queue-subscriber-redis.service.js +3 -3
  107. package/dist/jobs/redis/chatter-queue-subscriber-redis.service.js.map +1 -1
  108. package/dist/listeners/user-registration.listener.d.ts +5 -2
  109. package/dist/listeners/user-registration.listener.d.ts.map +1 -1
  110. package/dist/listeners/user-registration.listener.js +37 -4
  111. package/dist/listeners/user-registration.listener.js.map +1 -1
  112. package/dist/repository/mcp-audit-log.repository.d.ts +12 -0
  113. package/dist/repository/mcp-audit-log.repository.d.ts.map +1 -0
  114. package/dist/repository/mcp-audit-log.repository.js +34 -0
  115. package/dist/repository/mcp-audit-log.repository.js.map +1 -0
  116. package/dist/repository/security-rule.repository.js.map +1 -1
  117. package/dist/seeders/module-metadata-seeder.service.js.map +1 -1
  118. package/dist/seeders/module-test-data.service.d.ts +9 -0
  119. package/dist/seeders/module-test-data.service.d.ts.map +1 -1
  120. package/dist/seeders/module-test-data.service.js +155 -18
  121. package/dist/seeders/module-test-data.service.js.map +1 -1
  122. package/dist/seeders/permission-metadata-seeder.service.js.map +1 -1
  123. package/dist/seeders/seed-data/solid-core-metadata.json +506 -49
  124. package/dist/services/authentication.service.d.ts +6 -1
  125. package/dist/services/authentication.service.d.ts.map +1 -1
  126. package/dist/services/authentication.service.js +145 -15
  127. package/dist/services/authentication.service.js.map +1 -1
  128. package/dist/services/chatter-message.service.d.ts +13 -4
  129. package/dist/services/chatter-message.service.d.ts.map +1 -1
  130. package/dist/services/chatter-message.service.js +117 -37
  131. package/dist/services/chatter-message.service.js.map +1 -1
  132. package/dist/services/crud.service.js.map +1 -1
  133. package/dist/services/csv.service.js.map +1 -1
  134. package/dist/services/dashboard.service.js.map +1 -1
  135. package/dist/services/database/database-bootstrap.service.js.map +1 -1
  136. package/dist/services/excel.service.js.map +1 -1
  137. package/dist/services/export-transaction.service.js.map +1 -1
  138. package/dist/services/field-metadata.service.js.map +1 -1
  139. package/dist/services/fixtures.service.js.map +1 -1
  140. package/dist/services/import-transaction.service.js.map +1 -1
  141. package/dist/services/list-of-values.service.js.map +1 -1
  142. package/dist/services/mcp-audit-log.service.d.ts +12 -0
  143. package/dist/services/mcp-audit-log.service.d.ts.map +1 -0
  144. package/dist/services/mcp-audit-log.service.js +38 -0
  145. package/dist/services/mcp-audit-log.service.js.map +1 -0
  146. package/dist/services/mediaStorageProviders/file-s3-storage-provider.d.ts +1 -0
  147. package/dist/services/mediaStorageProviders/file-s3-storage-provider.d.ts.map +1 -1
  148. package/dist/services/mediaStorageProviders/file-s3-storage-provider.js +11 -0
  149. package/dist/services/mediaStorageProviders/file-s3-storage-provider.js.map +1 -1
  150. package/dist/services/mediaStorageProviders/file-storage-provider.d.ts +1 -0
  151. package/dist/services/mediaStorageProviders/file-storage-provider.d.ts.map +1 -1
  152. package/dist/services/mediaStorageProviders/file-storage-provider.js +6 -0
  153. package/dist/services/mediaStorageProviders/file-storage-provider.js.map +1 -1
  154. package/dist/services/model-metadata.service.d.ts +4 -1
  155. package/dist/services/model-metadata.service.d.ts.map +1 -1
  156. package/dist/services/model-metadata.service.js +24 -24
  157. package/dist/services/model-metadata.service.js.map +1 -1
  158. package/dist/services/module-metadata.service.d.ts +4 -1
  159. package/dist/services/module-metadata.service.d.ts.map +1 -1
  160. package/dist/services/module-metadata.service.js +19 -2
  161. package/dist/services/module-metadata.service.js.map +1 -1
  162. package/dist/services/queues/database-publisher.service.js +3 -3
  163. package/dist/services/queues/database-publisher.service.js.map +1 -1
  164. package/dist/services/queues/database-subscriber.service.js.map +1 -1
  165. package/dist/services/queues/rabbitmq-publisher.service.js +3 -3
  166. package/dist/services/queues/rabbitmq-publisher.service.js.map +1 -1
  167. package/dist/services/queues/rabbitmq-subscriber.service.js.map +1 -1
  168. package/dist/services/queues/redis-publisher.service.d.ts.map +1 -1
  169. package/dist/services/queues/redis-publisher.service.js +4 -1
  170. package/dist/services/queues/redis-publisher.service.js.map +1 -1
  171. package/dist/services/queues/redis-subscriber.service.js.map +1 -1
  172. package/dist/services/role-metadata.service.js.map +1 -1
  173. package/dist/services/scheduled-jobs/scheduler.service.js.map +1 -1
  174. package/dist/services/settings/default-settings-provider.service.d.ts +232 -8
  175. package/dist/services/settings/default-settings-provider.service.d.ts.map +1 -1
  176. package/dist/services/settings/default-settings-provider.service.js +119 -4
  177. package/dist/services/settings/default-settings-provider.service.js.map +1 -1
  178. package/dist/services/sms/TwilioSMSService.js.map +1 -1
  179. package/dist/services/solid-introspect.service.js.map +1 -1
  180. package/dist/services/user-activity-history.service.js.map +1 -1
  181. package/dist/services/user.service.js +1 -1
  182. package/dist/services/user.service.js.map +1 -1
  183. package/dist/services/view-metadata.service.d.ts.map +1 -1
  184. package/dist/services/view-metadata.service.js +17 -2
  185. package/dist/services/view-metadata.service.js.map +1 -1
  186. package/dist/services/whatsapp/GupshupOtpWhatsappService.d.ts +11 -0
  187. package/dist/services/whatsapp/GupshupOtpWhatsappService.d.ts.map +1 -0
  188. package/dist/services/whatsapp/GupshupOtpWhatsappService.js +127 -0
  189. package/dist/services/whatsapp/GupshupOtpWhatsappService.js.map +1 -0
  190. package/dist/services/whatsapp/MetaCloudWhatsappService.d.ts +17 -0
  191. package/dist/services/whatsapp/MetaCloudWhatsappService.d.ts.map +1 -0
  192. package/dist/services/whatsapp/MetaCloudWhatsappService.js +209 -0
  193. package/dist/services/whatsapp/MetaCloudWhatsappService.js.map +1 -0
  194. package/dist/solid-core.module.d.ts +2 -2
  195. package/dist/solid-core.module.d.ts.map +1 -1
  196. package/dist/solid-core.module.js +22 -6
  197. package/dist/solid-core.module.js.map +1 -1
  198. package/dist/subscribers/computed-entity-field.subscriber.js.map +1 -1
  199. package/dist/subscribers/security-rule.subscriber.d.ts.map +1 -1
  200. package/dist/subscribers/security-rule.subscriber.js.map +1 -1
  201. package/dist/subscribers/view-metadata.subscriber.js.map +1 -1
  202. package/dist/testing/adapters/ui/playwright-adapter.d.ts +1 -0
  203. package/dist/testing/adapters/ui/playwright-adapter.d.ts.map +1 -1
  204. package/dist/testing/adapters/ui/playwright-adapter.js +3 -0
  205. package/dist/testing/adapters/ui/playwright-adapter.js.map +1 -1
  206. package/dist/testing/core/testing-engine.js.map +1 -1
  207. package/dist/testing/reporter/console-reporter.d.ts +10 -0
  208. package/dist/testing/reporter/console-reporter.d.ts.map +1 -1
  209. package/dist/testing/reporter/console-reporter.js +21 -0
  210. package/dist/testing/reporter/console-reporter.js.map +1 -1
  211. package/dist/testing/reporter/reporter.types.d.ts +7 -0
  212. package/dist/testing/reporter/reporter.types.d.ts.map +1 -1
  213. package/dist/testing/reporter/reporter.types.js.map +1 -1
  214. package/dist/testing/reporter/webhook-reporter.js.map +1 -1
  215. package/dist/testing/runner/run-from-metadata.d.ts.map +1 -1
  216. package/dist/testing/runner/run-from-metadata.js +20 -1
  217. package/dist/testing/runner/run-from-metadata.js.map +1 -1
  218. package/dist/testing/steps/ui/index.d.ts.map +1 -1
  219. package/dist/testing/steps/ui/index.js +2 -0
  220. package/dist/testing/steps/ui/index.js.map +1 -1
  221. package/dist/testing/steps/ui/manual.step.d.ts +3 -0
  222. package/dist/testing/steps/ui/manual.step.d.ts.map +1 -0
  223. package/dist/testing/steps/ui/manual.step.js +56 -0
  224. package/dist/testing/steps/ui/manual.step.js.map +1 -0
  225. package/dist/winston.logger.d.ts +5 -0
  226. package/dist/winston.logger.d.ts.map +1 -1
  227. package/dist/winston.logger.js +6 -4
  228. package/dist/winston.logger.js.map +1 -1
  229. package/package.json +8 -8
  230. package/src/commands/refresh-model.command.ts +6 -51
  231. package/src/commands/refresh-module.command.ts +3 -16
  232. package/src/commands/test-data.command.ts +29 -6
  233. package/src/controllers/action-metadata.controller.ts +1 -1
  234. package/src/controllers/chatter-message.controller.ts +12 -0
  235. package/src/controllers/facebook-authentication.controller.ts +1 -1
  236. package/src/controllers/google-authentication.controller.ts +1 -1
  237. package/src/controllers/gupshup-webhook.controller.ts +91 -0
  238. package/src/controllers/mcp-audit-log.controller.ts +70 -0
  239. package/src/controllers/menu-item-metadata.controller.ts +1 -1
  240. package/src/controllers/meta-cloud-whatsapp-webhook.controller.ts +155 -0
  241. package/src/controllers/microsoft-authentication.controller.ts +1 -1
  242. package/src/controllers/model-metadata.controller.ts +1 -1
  243. package/src/controllers/module-metadata.controller.ts +1 -1
  244. package/src/controllers/mq-message-queue.controller.ts +1 -1
  245. package/src/controllers/mq-message.controller.ts +1 -1
  246. package/src/controllers/view-metadata.controller.ts +1 -1
  247. package/src/dtos/create-mcp-audit-log.dto.ts +84 -0
  248. package/src/dtos/update-chatter-note-message.dto.ts +14 -0
  249. package/src/dtos/update-mcp-audit-log.dto.ts +83 -0
  250. package/src/dtos/update-user.dto.ts +4 -0
  251. package/src/entities/chatter-message-details.entity.ts +1 -2
  252. package/src/entities/mcp-audit-log.entity.ts +55 -0
  253. package/src/entities/user.entity.ts +1 -1
  254. package/src/factories/whatsapp.factory.ts +33 -32
  255. package/src/helpers/bootstrap.helper.ts +16 -6
  256. package/src/helpers/command.service.ts +2 -0
  257. package/src/helpers/field-crud-managers/BigIntFieldCrudManager.ts +1 -1
  258. package/src/helpers/field-crud-managers/SelectionDynamicFieldCrudManager.ts +1 -1
  259. package/src/helpers/field-crud-managers/field-quality-check-fixes.md +208 -0
  260. package/src/helpers/module-metadata-helper.service.ts +1 -1
  261. package/src/index.ts +6 -0
  262. package/src/interfaces.ts +1 -3
  263. package/src/jobs/database/chatter-queue-subscriber-database.service.ts +4 -2
  264. package/src/jobs/database/trigger-mcp-client-subscriber-database.service.ts +1 -1
  265. package/src/jobs/rabbitmq/chatter-queue-subscriber.service.ts +4 -2
  266. package/src/jobs/redis/chatter-queue-subscriber-redis.service.ts +10 -3
  267. package/src/listeners/user-registration.listener.ts +49 -6
  268. package/src/repository/mcp-audit-log.repository.ts +17 -0
  269. package/src/repository/security-rule.repository.ts +1 -1
  270. package/src/seeders/module-metadata-seeder.service.ts +4 -4
  271. package/src/seeders/module-test-data.service.ts +186 -17
  272. package/src/seeders/permission-metadata-seeder.service.ts +1 -1
  273. package/src/seeders/seed-data/solid-core-metadata.json +506 -49
  274. package/src/services/authentication.service.ts +267 -44
  275. package/src/services/chatter-message.service.ts +140 -40
  276. package/src/services/crud.service.ts +1 -1
  277. package/src/services/csv.service.ts +1 -1
  278. package/src/services/dashboard.service.ts +1 -1
  279. package/src/services/database/database-bootstrap.service.ts +1 -1
  280. package/src/services/excel.service.ts +1 -1
  281. package/src/services/export-transaction.service.ts +2 -2
  282. package/src/services/field-metadata.service.ts +1 -1
  283. package/src/services/fixtures.service.ts +2 -2
  284. package/src/services/import-transaction.service.ts +2 -2
  285. package/src/services/list-of-values.service.ts +1 -1
  286. package/src/services/mcp-audit-log.service.ts +19 -0
  287. package/src/services/mediaStorageProviders/file-s3-storage-provider.ts +12 -0
  288. package/src/services/mediaStorageProviders/file-storage-provider.ts +8 -1
  289. package/src/services/model-metadata.service.ts +36 -34
  290. package/src/services/module-metadata.service.ts +19 -7
  291. package/src/services/queues/database-publisher.service.ts +4 -4
  292. package/src/services/queues/database-subscriber.service.ts +1 -1
  293. package/src/services/queues/rabbitmq-publisher.service.ts +7 -7
  294. package/src/services/queues/rabbitmq-subscriber.service.ts +8 -8
  295. package/src/services/queues/redis-publisher.service.ts +7 -4
  296. package/src/services/queues/redis-subscriber.service.ts +4 -4
  297. package/src/services/role-metadata.service.ts +1 -1
  298. package/src/services/scheduled-jobs/scheduler.service.ts +5 -5
  299. package/src/services/settings/default-settings-provider.service.ts +119 -4
  300. package/src/services/sms/TwilioSMSService.ts +2 -2
  301. package/src/services/solid-introspect.service.ts +2 -2
  302. package/src/services/user-activity-history.service.ts +1 -1
  303. package/src/services/user.service.ts +1 -1
  304. package/src/services/view-metadata.service.ts +25 -8
  305. package/src/services/whatsapp/GupshupOtpWhatsappService.ts +174 -0
  306. package/src/services/whatsapp/MetaCloudWhatsappService.ts +253 -0
  307. package/src/solid-core.module.ts +213 -196
  308. package/src/subscribers/computed-entity-field.subscriber.ts +1 -1
  309. package/src/subscribers/security-rule.subscriber.ts +8 -8
  310. package/src/subscribers/view-metadata.subscriber.ts +1 -1
  311. package/src/testing/README.md +55 -2
  312. package/src/testing/adapters/ui/playwright-adapter.ts +4 -0
  313. package/src/testing/core/testing-engine.ts +2 -2
  314. package/src/testing/reporter/console-reporter.ts +27 -0
  315. package/src/testing/reporter/reporter.types.ts +7 -0
  316. package/src/testing/reporter/webhook-reporter.ts +1 -1
  317. package/src/testing/runner/run-from-metadata.ts +19 -1
  318. package/src/testing/steps/ui/index.ts +2 -0
  319. package/src/testing/steps/ui/manual.step.ts +80 -0
  320. package/src/winston.logger.ts +5 -7
@@ -4,7 +4,6 @@ import { ModuleMetadataService } from '../services/module-metadata.service';
4
4
  import { CommandError } from './helper';
5
5
 
6
6
  interface CommandOptions {
7
- id: number;
8
7
  name: string;
9
8
  dryRun: boolean;
10
9
  }
@@ -28,7 +27,6 @@ export class RefreshModuleCommand extends CommandRunner {
28
27
  return;
29
28
  }
30
29
  const codeGenerationOptions = {
31
- moduleId: options.id,
32
30
  moduleUserKey: options.name,
33
31
  dryRun: options.dryRun,
34
32
  };
@@ -36,16 +34,7 @@ export class RefreshModuleCommand extends CommandRunner {
36
34
  }
37
35
 
38
36
  @Option({
39
- flags: '-i, --id [module ID]',
40
- description: 'Module ID from the ss_module_metadata table',
41
- })
42
- parseId(val: string): number {
43
- return +val;
44
- }
45
-
46
- // Accept the module name as an argument
47
- @Option({
48
- flags: '-n, --name [module name]',
37
+ flags: '-n, --name <module name>',
49
38
  description: 'Module Name from the ss_module_metadata table',
50
39
  })
51
40
  parseName(val: string): string {
@@ -61,11 +50,9 @@ export class RefreshModuleCommand extends CommandRunner {
61
50
  return (val === 'false') ? false : true;
62
51
  }
63
52
 
64
-
65
- // Validate the options passed
66
53
  validate(options: CommandOptions): CommandError[] {
67
- if (!options.id && !options.name) {
68
- return [new CommandError('Module ID or Module Name is required')];
54
+ if (!options.name) {
55
+ return [new CommandError('Module Name is required')];
69
56
  }
70
57
  return [];
71
58
  }
@@ -7,6 +7,7 @@ interface TestDataCommandOptions {
7
7
  modulesToTest?: string;
8
8
  setup?: boolean;
9
9
  teardown?: boolean;
10
+ unlink?: boolean;
10
11
  }
11
12
 
12
13
  @SubCommand({
@@ -25,17 +26,18 @@ export class TestDataCommand extends CommandRunner {
25
26
  const load = Boolean(options?.load);
26
27
  const setup = Boolean(options?.setup);
27
28
  const teardown = Boolean(options?.teardown);
29
+ const unlink = Boolean(options?.unlink);
28
30
 
29
- const selectedModes = [load, setup, teardown].filter(Boolean).length;
31
+ const selectedModes = [load, setup, teardown, unlink].filter(Boolean).length;
30
32
  if (selectedModes > 1) {
31
- this.logger.error('Please specify only one of --load, --setup, or --teardown.');
32
- console.log('Please specify only one of --load, --setup, or --teardown.');
33
+ this.logger.error('Please specify only one of --load, --setup, --teardown, or --unlink.');
34
+ console.log('Please specify only one of --load, --setup, --teardown, or --unlink.');
33
35
  return;
34
36
  }
35
37
 
36
- if (!load && !setup && !teardown) {
37
- this.logger.error('Please specify one of --load, --setup, or --teardown.');
38
- console.log('Please specify one of --load, --setup, or --teardown.');
38
+ if (!load && !setup && !teardown && !unlink) {
39
+ this.logger.error('Please specify one of --load, --setup, --teardown, or --unlink.');
40
+ console.log('Please specify one of --load, --setup, --teardown, or --unlink.');
39
41
  return;
40
42
  }
41
43
 
@@ -65,6 +67,19 @@ export class TestDataCommand extends CommandRunner {
65
67
  await this.testDataService.setupTestData(modulesToTest ?? undefined);
66
68
  return;
67
69
  }
70
+
71
+ if (unlink) {
72
+ const modulesToTest = options?.modulesToTest ? options.modulesToTest.split(',').map((m) => m.trim()).filter(Boolean) : null;
73
+ if (modulesToTest?.length) {
74
+ this.logger.log(`Test data unlink for modules: ${modulesToTest.join(', ')}`);
75
+ console.log(`Test data unlink for modules: ${modulesToTest.join(', ')}`);
76
+ } else {
77
+ this.logger.log('Test data unlink for all modules.');
78
+ console.log('Test data unlink for all modules.');
79
+ }
80
+ await this.testDataService.removeTestData(modulesToTest ?? undefined);
81
+ return;
82
+ }
68
83
  } catch (err: any) {
69
84
  const message = err?.message ?? String(err);
70
85
  this.logger.error(message);
@@ -109,4 +124,12 @@ export class TestDataCommand extends CommandRunner {
109
124
  return val;
110
125
  }
111
126
 
127
+ @Option({
128
+ flags: '--unlink',
129
+ description: 'Delete test data from testing.data sections in reverse order',
130
+ })
131
+ parseUnlink(): boolean {
132
+ return true;
133
+ }
134
+
112
135
  }
@@ -7,7 +7,7 @@ import { UpdateActionMetadataDto } from '../dtos/update-action-metadata.dto';
7
7
  import { SolidRequestContextDto } from 'src/dtos/solid-request-context.dto';
8
8
  import { SolidRequestContextDecorator } from 'src/decorators/solid-request-context.decorator';
9
9
 
10
- @ApiTags('App Builder')
10
+ @ApiTags('Solid Core')
11
11
  @Controller('action-metadata') //FIXME: Change this to the model plural name
12
12
  export class ActionMetadataController {
13
13
  constructor(private readonly service: ActionMetadataService) { }
@@ -5,6 +5,7 @@ import { ChatterMessageService } from '../services/chatter-message.service';
5
5
  import { CreateChatterMessageDto } from '../dtos/create-chatter-message.dto';
6
6
  import { UpdateChatterMessageDto } from '../dtos/update-chatter-message.dto';
7
7
  import { PostChatterMessageDto } from '../dtos/post-chatter-message.dto';
8
+ import { UpdateChatterNoteMessageDto } from '../dtos/update-chatter-note-message.dto';
8
9
  import { SolidRequestContextDecorator } from 'src/decorators/solid-request-context.decorator';
9
10
  import { SolidRequestContextDto } from 'src/dtos/solid-request-context.dto';
10
11
  import { Public } from 'src/decorators/public.decorator';
@@ -127,4 +128,15 @@ export class ChatterMessageController {
127
128
  async markCompleted(@Param('id') id: string) {
128
129
  return this.service.markCompleted(+id);
129
130
  }
131
+
132
+ @ApiBearerAuth("jwt")
133
+ @Patch(':id/note')
134
+ @UseInterceptors(AnyFilesInterceptor())
135
+ async updateCustomNoteMessage(
136
+ @Param('id') id: string,
137
+ @Body() updateDto: UpdateChatterNoteMessageDto,
138
+ @UploadedFiles() files: Array<Express.Multer.File>,
139
+ ) {
140
+ return this.service.updateCustomNoteMessage(+id, updateDto, files);
141
+ }
130
142
  }
@@ -24,7 +24,7 @@ import { UserService } from "../services/user.service";
24
24
  import type { SolidCoreSetting } from "../services/settings/default-settings-provider.service";
25
25
 
26
26
  @Auth(AuthType.None)
27
- @ApiTags("Iam")
27
+ @ApiTags("Solid Core")
28
28
  @Controller("iam/facebook")
29
29
  export class FacebookAuthenticationController {
30
30
  constructor(
@@ -16,7 +16,7 @@ import type { SolidCoreSetting } from "src/services/settings/default-settings-pr
16
16
 
17
17
  @Auth(AuthType.None)
18
18
  @Controller('iam/google')
19
- @ApiTags("Iam")
19
+ @ApiTags("Solid Core")
20
20
  // @UseGuards(ThrottlerGuard)
21
21
  // @SkipThrottle({ login: false, short: false, burst: true, sustained: true }) //Enable the login throttle only
22
22
  export class GoogleAuthenticationController {
@@ -0,0 +1,91 @@
1
+ import {
2
+ Body,
3
+ Controller,
4
+ HttpCode,
5
+ HttpStatus,
6
+ Logger,
7
+ Post,
8
+ Req,
9
+ } from "@nestjs/common";
10
+ import { ApiTags } from "@nestjs/swagger";
11
+ import { Request } from "express";
12
+ import { Auth } from "src/decorators/auth.decorator";
13
+ import { Public } from "src/decorators/public.decorator";
14
+ import { AuthType } from "src/enums/auth-type.enum";
15
+
16
+ @Auth(AuthType.None)
17
+ @Controller("webhook/whatsapp/gupshup")
18
+ @ApiTags("Solid Core")
19
+ export class GupshupWebhookController {
20
+ private readonly logger = new Logger(GupshupWebhookController.name);
21
+
22
+ @Public()
23
+ @Post()
24
+ @HttpCode(HttpStatus.OK)
25
+ async receiveWebhook(@Req() req: Request, @Body() body: unknown) {
26
+ const userAgent = req.headers["user-agent"] ?? null;
27
+ this.logger.log(
28
+ `Received Gupshup WhatsApp webhook${userAgent ? ` from ${userAgent}` : ""}`,
29
+ );
30
+ this.logger.debug(`Gupshup webhook payload: ${JSON.stringify(body)}`);
31
+
32
+ const statusInfo = this.extractStatusInfo(body);
33
+ if (statusInfo) {
34
+ this.logger.log(
35
+ `Gupshup delivery update: status=${statusInfo.status ?? "unknown"}, messageId=${statusInfo.messageId ?? "n/a"}, destination=${statusInfo.destination ?? "n/a"}, reason=${statusInfo.reason ?? "n/a"}`,
36
+ );
37
+ }
38
+
39
+ return {
40
+ success: true,
41
+ message: "Webhook received",
42
+ };
43
+ }
44
+
45
+ private extractStatusInfo(body: unknown): {
46
+ status?: string;
47
+ messageId?: string;
48
+ destination?: string;
49
+ reason?: string;
50
+ } | null {
51
+ if (!body || typeof body !== "object") {
52
+ return null;
53
+ }
54
+
55
+ const payload = body as Record<string, unknown>;
56
+
57
+ const status =
58
+ this.asString(payload.status) ||
59
+ this.asString(payload.messageStatus) ||
60
+ this.asString((payload.payload as Record<string, unknown>)?.status) ||
61
+ this.asString((payload.payload as Record<string, unknown>)?.type);
62
+
63
+ const messageId =
64
+ this.asString(payload.messageId) ||
65
+ this.asString(payload.id) ||
66
+ this.asString((payload.payload as Record<string, unknown>)?.id) ||
67
+ this.asString((payload.payload as Record<string, unknown>)?.messageId);
68
+
69
+ const destination =
70
+ this.asString(payload.destination) ||
71
+ this.asString(payload.phone) ||
72
+ this.asString((payload.payload as Record<string, unknown>)?.destination) ||
73
+ this.asString((payload.payload as Record<string, unknown>)?.phone);
74
+
75
+ const reason =
76
+ this.asString(payload.reason) ||
77
+ this.asString(payload.error) ||
78
+ this.asString((payload.payload as Record<string, unknown>)?.reason) ||
79
+ this.asString((payload.payload as Record<string, unknown>)?.error);
80
+
81
+ if (!status && !messageId && !destination && !reason) {
82
+ return null;
83
+ }
84
+
85
+ return { status, messageId, destination, reason };
86
+ }
87
+
88
+ private asString(value: unknown): string | undefined {
89
+ return typeof value === "string" && value.trim() ? value.trim() : undefined;
90
+ }
91
+ }
@@ -0,0 +1,70 @@
1
+ import { Body, Controller, Delete, Get, Param, Patch, Post, Put, Query, UploadedFiles, UseInterceptors } from '@nestjs/common';
2
+ import { AnyFilesInterceptor } from '@nestjs/platform-express';
3
+ import { ApiBearerAuth, ApiQuery, ApiTags } from '@nestjs/swagger';
4
+ import { CreateMcpAuditLogDto } from 'src/dtos/create-mcp-audit-log.dto';
5
+ import { UpdateMcpAuditLogDto } from 'src/dtos/update-mcp-audit-log.dto';
6
+ import { McpAuditLogService } from 'src/services/mcp-audit-log.service';
7
+
8
+ @ApiTags('Solid Core')
9
+ @Controller('mcp-audit-log')
10
+ export class McpAuditLogController {
11
+ constructor(private readonly service: McpAuditLogService) {}
12
+
13
+ @ApiBearerAuth('jwt')
14
+ @Post()
15
+ @UseInterceptors(AnyFilesInterceptor())
16
+ create(@Body() createDto: CreateMcpAuditLogDto, @UploadedFiles() files: Array<Express.Multer.File>) {
17
+ return this.service.create(createDto, files);
18
+ }
19
+
20
+ @ApiBearerAuth('jwt')
21
+ @Post('/bulk')
22
+ @UseInterceptors(AnyFilesInterceptor())
23
+ insertMany(@Body() createDtos: CreateMcpAuditLogDto[], @UploadedFiles() filesArray: Express.Multer.File[][] = []) {
24
+ return this.service.insertMany(createDtos, filesArray);
25
+ }
26
+
27
+ @ApiBearerAuth('jwt')
28
+ @Put(':id')
29
+ @UseInterceptors(AnyFilesInterceptor())
30
+ update(@Param('id') id: number, @Body() updateDto: UpdateMcpAuditLogDto, @UploadedFiles() files: Array<Express.Multer.File>) {
31
+ return this.service.update(id, updateDto, files);
32
+ }
33
+
34
+ @ApiBearerAuth('jwt')
35
+ @Patch(':id')
36
+ @UseInterceptors(AnyFilesInterceptor())
37
+ partialUpdate(@Param('id') id: number, @Body() updateDto: UpdateMcpAuditLogDto, @UploadedFiles() files: Array<Express.Multer.File>) {
38
+ return this.service.update(id, updateDto, files, true);
39
+ }
40
+
41
+ @ApiBearerAuth('jwt')
42
+ @ApiQuery({ name: 'limit', required: false, type: Number })
43
+ @ApiQuery({ name: 'offset', required: false, type: Number })
44
+ @ApiQuery({ name: 'fields', required: false, type: Array })
45
+ @ApiQuery({ name: 'sort', required: false, type: Array })
46
+ @ApiQuery({ name: 'populate', required: false, type: Array })
47
+ @ApiQuery({ name: 'filters', required: false, type: Array })
48
+ @Get()
49
+ findMany(@Query() query: any) {
50
+ return this.service.find(query);
51
+ }
52
+
53
+ @ApiBearerAuth('jwt')
54
+ @Get(':id')
55
+ findOne(@Param('id') id: string, @Query() query: any) {
56
+ return this.service.findOne(+id, query);
57
+ }
58
+
59
+ @ApiBearerAuth('jwt')
60
+ @Delete('/bulk')
61
+ deleteMany(@Body() ids: number[]) {
62
+ return this.service.deleteMany(ids);
63
+ }
64
+
65
+ @ApiBearerAuth('jwt')
66
+ @Delete(':id')
67
+ delete(@Param('id') id: number) {
68
+ return this.service.delete(id);
69
+ }
70
+ }
@@ -9,7 +9,7 @@ import { ActiveUserData } from 'src/interfaces/active-user-data.interface';
9
9
  import { SolidRequestContextDto } from 'src/dtos/solid-request-context.dto';
10
10
  import { SolidRequestContextDecorator } from 'src/decorators/solid-request-context.decorator';
11
11
 
12
- @ApiTags('App Builder')
12
+ @ApiTags('Solid Core')
13
13
  @Controller('menu-item-metadata') //FIXME: Change this to the model plural name
14
14
  export class MenuItemMetadataController {
15
15
  constructor(private readonly service: MenuItemMetadataService) { }
@@ -0,0 +1,155 @@
1
+ import {
2
+ Body,
3
+ Controller,
4
+ Get,
5
+ HttpCode,
6
+ HttpStatus,
7
+ Logger,
8
+ Post,
9
+ Query,
10
+ Res,
11
+ } from "@nestjs/common";
12
+ import { ApiTags } from "@nestjs/swagger";
13
+ import { Response } from "express";
14
+ import { Auth } from "src/decorators/auth.decorator";
15
+ import { Public } from "src/decorators/public.decorator";
16
+ import { AuthType } from "src/enums/auth-type.enum";
17
+ import { SettingService } from "src/services/setting.service";
18
+ import type { SolidCoreSetting } from "src/services/settings/default-settings-provider.service";
19
+
20
+ @Auth(AuthType.None)
21
+ @Controller("webhook/whatsapp/meta-cloud")
22
+ @ApiTags("Solid Core")
23
+ export class MetaCloudWhatsappWebhookController {
24
+ private readonly logger = new Logger(MetaCloudWhatsappWebhookController.name);
25
+
26
+ constructor(private readonly settingService: SettingService) {}
27
+
28
+ @Public()
29
+ @Get()
30
+ verifyWebhook(@Query() query: Record<string, unknown>, @Res() res: Response) {
31
+ const mode = this.resolveQueryValue(query, "hub.mode", "hub_mode", "mode");
32
+ const verifyToken = this.resolveQueryValue(
33
+ query,
34
+ "hub.verify_token",
35
+ "hub_verify_token",
36
+ "verify_token",
37
+ );
38
+ const challenge = this.resolveQueryValue(
39
+ query,
40
+ "hub.challenge",
41
+ "hub_challenge",
42
+ "challenge",
43
+ );
44
+
45
+ const configuredVerifyToken =
46
+ this.settingService.getConfigValue<SolidCoreSetting>(
47
+ "metaWhatsappWebhookVerifyToken",
48
+ ) || process.env.COMMON_META_WHATSAPP_WEBHOOK_VERIFY_TOKEN;
49
+
50
+ const isVerificationCall = mode === "subscribe";
51
+ const tokenMatches =
52
+ !!configuredVerifyToken && verifyToken === configuredVerifyToken;
53
+
54
+ if (isVerificationCall && tokenMatches && challenge) {
55
+ this.logger.log("Meta Cloud WhatsApp webhook verified successfully.");
56
+ res.writeHead(HttpStatus.OK, {
57
+ "Content-Type": "text/plain",
58
+ "Content-Length": Buffer.byteLength(String(challenge)),
59
+ });
60
+ res.write(String(challenge));
61
+ return res.end();
62
+ }
63
+
64
+ this.logger.warn(
65
+ `Meta Cloud webhook verification failed. mode=${mode ?? "n/a"}, tokenMatch=${tokenMatches}`,
66
+ );
67
+
68
+ res.writeHead(HttpStatus.FORBIDDEN, { "Content-Type": "text/plain" });
69
+ return res.end("Webhook verification failed");
70
+ }
71
+
72
+ @Public()
73
+ @Post()
74
+ @HttpCode(HttpStatus.OK)
75
+ async receiveWebhook(@Body() body: unknown) {
76
+ this.logger.log("Received Meta Cloud WhatsApp webhook");
77
+ this.logger.debug(`Meta Cloud webhook payload: ${JSON.stringify(body)}`);
78
+
79
+ const statusInfo = this.extractStatusInfo(body);
80
+ if (statusInfo) {
81
+ this.logger.log(
82
+ `Meta Cloud delivery update: status=${statusInfo.status ?? "unknown"}, messageId=${statusInfo.messageId ?? "n/a"}, destination=${statusInfo.destination ?? "n/a"}, reason=${statusInfo.reason ?? "n/a"}`,
83
+ );
84
+ }
85
+
86
+ return {
87
+ success: true,
88
+ message: "Webhook received",
89
+ };
90
+ }
91
+
92
+ private extractStatusInfo(body: unknown): {
93
+ status?: string;
94
+ messageId?: string;
95
+ destination?: string;
96
+ reason?: string;
97
+ } | null {
98
+ if (!body || typeof body !== "object") {
99
+ return null;
100
+ }
101
+
102
+ const payload = body as Record<string, unknown>;
103
+ const entries = payload.entry as Array<Record<string, unknown>> | undefined;
104
+ const changes = entries?.[0]?.changes as Array<Record<string, unknown>> | undefined;
105
+ const value = changes?.[0]?.value as Record<string, unknown> | undefined;
106
+ const statuses = value?.statuses as Array<Record<string, unknown>> | undefined;
107
+ const status = statuses?.[0];
108
+
109
+ if (!status) {
110
+ return null;
111
+ }
112
+
113
+ const errors = status.errors as Array<Record<string, unknown>> | undefined;
114
+
115
+ return {
116
+ status: this.asString(status.status),
117
+ messageId: this.asString(status.id),
118
+ destination: this.asString(status.recipient_id),
119
+ reason:
120
+ this.asString(errors?.[0]?.title) || this.asString(errors?.[0]?.message),
121
+ };
122
+ }
123
+
124
+ private asString(value: unknown): string | undefined {
125
+ return typeof value === "string" && value.trim() ? value.trim() : undefined;
126
+ }
127
+
128
+ private resolveQueryValue(
129
+ query: Record<string, unknown>,
130
+ ...keys: string[]
131
+ ): string | undefined {
132
+ for (const key of keys) {
133
+ const directValue = this.asString(query[key]);
134
+ if (directValue) {
135
+ return directValue;
136
+ }
137
+ }
138
+
139
+ const hubRaw = query.hub;
140
+ if (hubRaw && typeof hubRaw === "object" && !Array.isArray(hubRaw)) {
141
+ const hub = hubRaw as Record<string, unknown>;
142
+ for (const key of ["mode", "verify_token", "challenge"]) {
143
+ const value = this.asString(hub[key]);
144
+ if (
145
+ value &&
146
+ keys.some((candidate) => candidate.endsWith(key) || candidate === key)
147
+ ) {
148
+ return value;
149
+ }
150
+ }
151
+ }
152
+
153
+ return undefined;
154
+ }
155
+ }
@@ -24,7 +24,7 @@ import { UserService } from "../services/user.service";
24
24
  import type { SolidCoreSetting } from "../services/settings/default-settings-provider.service";
25
25
 
26
26
  @Auth(AuthType.None)
27
- @ApiTags("Iam")
27
+ @ApiTags("Solid Core")
28
28
  @Controller("iam/microsoft")
29
29
  export class MicrosoftAuthenticationController {
30
30
  constructor(
@@ -92,7 +92,7 @@ export class ModelMetadataController {
92
92
  @ApiBearerAuth("jwt")
93
93
  @Post(':id/generate-code')
94
94
  generateCode(@Param('id', ParseIntPipe) id: number) {
95
- return this.modelMetadataService.handleGenerateCode({ modelId: id });
95
+ return this.modelMetadataService.generateCodeViaCtl(id);
96
96
  }
97
97
 
98
98
  @ApiBearerAuth("jwt")
@@ -62,7 +62,7 @@ export class ModuleMetadataController {
62
62
  @ApiBearerAuth("jwt")
63
63
  @Post(':id/generate-code')
64
64
  generateCode(@Param('id', ParseIntPipe) id: number) {
65
- return this.moduleMetadataService.generateCode({ moduleId: id });
65
+ return this.moduleMetadataService.generateCodeViaCtl(id);
66
66
  }
67
67
 
68
68
 
@@ -7,7 +7,7 @@ import { MqMessageQueueService } from '../services/mq-message-queue.service';
7
7
  import { SolidRequestContextDto } from 'src/dtos/solid-request-context.dto';
8
8
  import { SolidRequestContextDecorator } from 'src/decorators/solid-request-context.decorator';
9
9
 
10
- @ApiTags('Queues')
10
+ @ApiTags('Solid Core')
11
11
  @Controller('mq-message-queue') //FIXME: Change this to the model plural name
12
12
  export class MqMessageQueueController {
13
13
  constructor(protected readonly service: MqMessageQueueService) { }
@@ -7,7 +7,7 @@ import { AnyFilesInterceptor } from '@nestjs/platform-express';
7
7
  import { SolidRequestContextDecorator } from 'src/decorators/solid-request-context.decorator';
8
8
  import { SolidRequestContextDto } from 'src/dtos/solid-request-context.dto';
9
9
 
10
- @ApiTags('Queues')
10
+ @ApiTags('Solid Core')
11
11
  @Controller('mq-message') //FIXME: Change this to the model plural name
12
12
  export class MqMessageController {
13
13
  constructor(protected readonly service: MqMessageService) { }
@@ -9,7 +9,7 @@ import { SolidRequestContextDto } from 'src/dtos/solid-request-context.dto';
9
9
  import { ActiveUser } from 'src/decorators/active-user.decorator';
10
10
  import { ActiveUserData } from 'src/interfaces/active-user-data.interface';
11
11
 
12
- @ApiTags('App Builder')
12
+ @ApiTags('Solid Core')
13
13
  @Controller('view-metadata') //FIXME: Change this to the model plural name
14
14
  export class ViewMetadataController {
15
15
  constructor(private readonly service: ViewMetadataService) { }
@@ -0,0 +1,84 @@
1
+ import { ApiProperty } from '@nestjs/swagger';
2
+ import { IsDate, IsInt, IsNotEmpty, IsNumber, IsOptional, IsString } from 'class-validator';
3
+
4
+ export class CreateMcpAuditLogDto {
5
+ @IsOptional()
6
+ @IsInt()
7
+ @ApiProperty()
8
+ userId: number;
9
+
10
+ @IsOptional()
11
+ @IsInt()
12
+ @ApiProperty()
13
+ apiKeyId: number;
14
+
15
+ @IsOptional()
16
+ @IsString()
17
+ @ApiProperty()
18
+ username: string;
19
+
20
+ @IsNotEmpty()
21
+ @IsString()
22
+ @ApiProperty()
23
+ transport: string;
24
+
25
+ @IsOptional()
26
+ @IsString()
27
+ @ApiProperty()
28
+ mcpSessionId: string;
29
+
30
+ @IsOptional()
31
+ @IsString()
32
+ @ApiProperty()
33
+ clientAddr: string;
34
+
35
+ @IsNotEmpty()
36
+ @IsString()
37
+ @ApiProperty()
38
+ method: string;
39
+
40
+ @IsOptional()
41
+ @IsString()
42
+ @ApiProperty()
43
+ requestId: string;
44
+
45
+ @IsOptional()
46
+ @IsString()
47
+ @ApiProperty()
48
+ toolName: string;
49
+
50
+ @IsOptional()
51
+ @IsString()
52
+ @ApiProperty()
53
+ requestParams: string;
54
+
55
+ @IsNotEmpty()
56
+ @IsString()
57
+ @ApiProperty()
58
+ status: string;
59
+
60
+ @IsOptional()
61
+ @IsString()
62
+ @ApiProperty()
63
+ responseResult: string;
64
+
65
+ @IsOptional()
66
+ @IsInt()
67
+ @ApiProperty()
68
+ errorCode: number;
69
+
70
+ @IsOptional()
71
+ @IsString()
72
+ @ApiProperty()
73
+ errorMessage: string;
74
+
75
+ @IsOptional()
76
+ @IsNumber()
77
+ @ApiProperty()
78
+ durationMs: number;
79
+
80
+ @IsOptional()
81
+ @IsDate()
82
+ @ApiProperty()
83
+ createdAt: Date;
84
+ }
@@ -0,0 +1,14 @@
1
+ import { ApiProperty } from '@nestjs/swagger';
2
+ import { IsNotEmpty, IsOptional, IsString } from 'class-validator';
3
+
4
+ export class UpdateChatterNoteMessageDto {
5
+ @IsString()
6
+ @IsOptional()
7
+ @ApiProperty()
8
+ messageBody: string;
9
+
10
+ @IsString()
11
+ @IsOptional()
12
+ @ApiProperty({ required: false, description: 'Comma-separated media IDs to remove from this note.' })
13
+ removeAttachmentIds?: string;
14
+ }