@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.
- package/CLAUDE.md +18 -0
- package/CURRENT_PROMPT +6 -0
- package/dist/commands/refresh-model.command.d.ts +1 -7
- package/dist/commands/refresh-model.command.d.ts.map +1 -1
- package/dist/commands/refresh-model.command.js +4 -49
- package/dist/commands/refresh-model.command.js.map +1 -1
- package/dist/commands/refresh-module.command.d.ts +0 -2
- package/dist/commands/refresh-module.command.d.ts.map +1 -1
- package/dist/commands/refresh-module.command.js +3 -16
- package/dist/commands/refresh-module.command.js.map +1 -1
- package/dist/commands/test-data.command.d.ts +2 -0
- package/dist/commands/test-data.command.d.ts.map +1 -1
- package/dist/commands/test-data.command.js +32 -6
- package/dist/commands/test-data.command.js.map +1 -1
- package/dist/controllers/action-metadata.controller.js +1 -1
- package/dist/controllers/action-metadata.controller.js.map +1 -1
- package/dist/controllers/chatter-message.controller.d.ts +2 -0
- package/dist/controllers/chatter-message.controller.d.ts.map +1 -1
- package/dist/controllers/chatter-message.controller.js +17 -0
- package/dist/controllers/chatter-message.controller.js.map +1 -1
- package/dist/controllers/facebook-authentication.controller.js +1 -1
- package/dist/controllers/facebook-authentication.controller.js.map +1 -1
- package/dist/controllers/google-authentication.controller.js +1 -1
- package/dist/controllers/google-authentication.controller.js.map +1 -1
- package/dist/controllers/gupshup-webhook.controller.d.ts +11 -0
- package/dist/controllers/gupshup-webhook.controller.d.ts.map +1 -0
- package/dist/controllers/gupshup-webhook.controller.js +87 -0
- package/dist/controllers/gupshup-webhook.controller.js.map +1 -0
- package/dist/controllers/mcp-audit-log.controller.d.ts +35 -0
- package/dist/controllers/mcp-audit-log.controller.d.ts.map +1 -0
- package/dist/controllers/mcp-audit-log.controller.js +147 -0
- package/dist/controllers/mcp-audit-log.controller.js.map +1 -0
- package/dist/controllers/menu-item-metadata.controller.js +1 -1
- package/dist/controllers/menu-item-metadata.controller.js.map +1 -1
- package/dist/controllers/meta-cloud-whatsapp-webhook.controller.d.ts +16 -0
- package/dist/controllers/meta-cloud-whatsapp-webhook.controller.d.ts.map +1 -0
- package/dist/controllers/meta-cloud-whatsapp-webhook.controller.js +133 -0
- package/dist/controllers/meta-cloud-whatsapp-webhook.controller.js.map +1 -0
- package/dist/controllers/microsoft-authentication.controller.js +1 -1
- package/dist/controllers/microsoft-authentication.controller.js.map +1 -1
- package/dist/controllers/model-metadata.controller.d.ts +1 -1
- package/dist/controllers/model-metadata.controller.js +2 -2
- package/dist/controllers/model-metadata.controller.js.map +1 -1
- package/dist/controllers/module-metadata.controller.js +1 -1
- package/dist/controllers/module-metadata.controller.js.map +1 -1
- package/dist/controllers/mq-message-queue.controller.js +1 -1
- package/dist/controllers/mq-message-queue.controller.js.map +1 -1
- package/dist/controllers/mq-message.controller.js +1 -1
- package/dist/controllers/mq-message.controller.js.map +1 -1
- package/dist/controllers/view-metadata.controller.js +1 -1
- package/dist/controllers/view-metadata.controller.js.map +1 -1
- package/dist/dtos/create-mcp-audit-log.dto.d.ts +19 -0
- package/dist/dtos/create-mcp-audit-log.dto.d.ts.map +1 -0
- package/dist/dtos/create-mcp-audit-log.dto.js +118 -0
- package/dist/dtos/create-mcp-audit-log.dto.js.map +1 -0
- package/dist/dtos/update-chatter-note-message.dto.d.ts +5 -0
- package/dist/dtos/update-chatter-note-message.dto.d.ts.map +1 -0
- package/dist/dtos/update-chatter-note-message.dto.js +34 -0
- package/dist/dtos/update-chatter-note-message.dto.js.map +1 -0
- package/dist/dtos/update-mcp-audit-log.dto.d.ts +19 -0
- package/dist/dtos/update-mcp-audit-log.dto.d.ts.map +1 -0
- package/dist/dtos/update-mcp-audit-log.dto.js +117 -0
- package/dist/dtos/update-mcp-audit-log.dto.js.map +1 -0
- package/dist/dtos/update-user.dto.d.ts +1 -0
- package/dist/dtos/update-user.dto.d.ts.map +1 -1
- package/dist/dtos/update-user.dto.js +7 -1
- package/dist/dtos/update-user.dto.js.map +1 -1
- package/dist/entities/chatter-message-details.entity.d.ts.map +1 -1
- package/dist/entities/chatter-message-details.entity.js +0 -1
- package/dist/entities/chatter-message-details.entity.js.map +1 -1
- package/dist/entities/mcp-audit-log.entity.d.ts +19 -0
- package/dist/entities/mcp-audit-log.entity.d.ts.map +1 -0
- package/dist/entities/mcp-audit-log.entity.js +90 -0
- package/dist/entities/mcp-audit-log.entity.js.map +1 -0
- package/dist/entities/user.entity.js +1 -0
- package/dist/entities/user.entity.js.map +1 -1
- package/dist/factories/whatsapp.factory.d.ts.map +1 -1
- package/dist/factories/whatsapp.factory.js +13 -11
- package/dist/factories/whatsapp.factory.js.map +1 -1
- package/dist/helpers/bootstrap.helper.d.ts +1 -0
- package/dist/helpers/bootstrap.helper.d.ts.map +1 -1
- package/dist/helpers/bootstrap.helper.js +8 -3
- package/dist/helpers/bootstrap.helper.js.map +1 -1
- package/dist/helpers/command.service.d.ts +1 -0
- package/dist/helpers/command.service.d.ts.map +1 -1
- package/dist/helpers/command.service.js +1 -0
- package/dist/helpers/command.service.js.map +1 -1
- package/dist/helpers/field-crud-managers/BigIntFieldCrudManager.js.map +1 -1
- package/dist/helpers/field-crud-managers/SelectionDynamicFieldCrudManager.js.map +1 -1
- package/dist/helpers/module-metadata-helper.service.js.map +1 -1
- package/dist/index.d.ts +6 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -0
- package/dist/index.js.map +1 -1
- package/dist/interfaces.d.ts +1 -2
- package/dist/interfaces.d.ts.map +1 -1
- package/dist/interfaces.js.map +1 -1
- package/dist/jobs/database/chatter-queue-subscriber-database.service.d.ts.map +1 -1
- package/dist/jobs/database/chatter-queue-subscriber-database.service.js +3 -3
- package/dist/jobs/database/chatter-queue-subscriber-database.service.js.map +1 -1
- package/dist/jobs/database/trigger-mcp-client-subscriber-database.service.js.map +1 -1
- package/dist/jobs/rabbitmq/chatter-queue-subscriber.service.d.ts.map +1 -1
- package/dist/jobs/rabbitmq/chatter-queue-subscriber.service.js +3 -3
- package/dist/jobs/rabbitmq/chatter-queue-subscriber.service.js.map +1 -1
- package/dist/jobs/redis/chatter-queue-subscriber-redis.service.d.ts.map +1 -1
- package/dist/jobs/redis/chatter-queue-subscriber-redis.service.js +3 -3
- package/dist/jobs/redis/chatter-queue-subscriber-redis.service.js.map +1 -1
- package/dist/listeners/user-registration.listener.d.ts +5 -2
- package/dist/listeners/user-registration.listener.d.ts.map +1 -1
- package/dist/listeners/user-registration.listener.js +37 -4
- package/dist/listeners/user-registration.listener.js.map +1 -1
- package/dist/repository/mcp-audit-log.repository.d.ts +12 -0
- package/dist/repository/mcp-audit-log.repository.d.ts.map +1 -0
- package/dist/repository/mcp-audit-log.repository.js +34 -0
- package/dist/repository/mcp-audit-log.repository.js.map +1 -0
- package/dist/repository/security-rule.repository.js.map +1 -1
- package/dist/seeders/module-metadata-seeder.service.js.map +1 -1
- package/dist/seeders/module-test-data.service.d.ts +9 -0
- package/dist/seeders/module-test-data.service.d.ts.map +1 -1
- package/dist/seeders/module-test-data.service.js +155 -18
- package/dist/seeders/module-test-data.service.js.map +1 -1
- package/dist/seeders/permission-metadata-seeder.service.js.map +1 -1
- package/dist/seeders/seed-data/solid-core-metadata.json +506 -49
- package/dist/services/authentication.service.d.ts +6 -1
- package/dist/services/authentication.service.d.ts.map +1 -1
- package/dist/services/authentication.service.js +145 -15
- package/dist/services/authentication.service.js.map +1 -1
- package/dist/services/chatter-message.service.d.ts +13 -4
- package/dist/services/chatter-message.service.d.ts.map +1 -1
- package/dist/services/chatter-message.service.js +117 -37
- package/dist/services/chatter-message.service.js.map +1 -1
- package/dist/services/crud.service.js.map +1 -1
- package/dist/services/csv.service.js.map +1 -1
- package/dist/services/dashboard.service.js.map +1 -1
- package/dist/services/database/database-bootstrap.service.js.map +1 -1
- package/dist/services/excel.service.js.map +1 -1
- package/dist/services/export-transaction.service.js.map +1 -1
- package/dist/services/field-metadata.service.js.map +1 -1
- package/dist/services/fixtures.service.js.map +1 -1
- package/dist/services/import-transaction.service.js.map +1 -1
- package/dist/services/list-of-values.service.js.map +1 -1
- package/dist/services/mcp-audit-log.service.d.ts +12 -0
- package/dist/services/mcp-audit-log.service.d.ts.map +1 -0
- package/dist/services/mcp-audit-log.service.js +38 -0
- package/dist/services/mcp-audit-log.service.js.map +1 -0
- package/dist/services/mediaStorageProviders/file-s3-storage-provider.d.ts +1 -0
- package/dist/services/mediaStorageProviders/file-s3-storage-provider.d.ts.map +1 -1
- package/dist/services/mediaStorageProviders/file-s3-storage-provider.js +11 -0
- package/dist/services/mediaStorageProviders/file-s3-storage-provider.js.map +1 -1
- package/dist/services/mediaStorageProviders/file-storage-provider.d.ts +1 -0
- package/dist/services/mediaStorageProviders/file-storage-provider.d.ts.map +1 -1
- package/dist/services/mediaStorageProviders/file-storage-provider.js +6 -0
- package/dist/services/mediaStorageProviders/file-storage-provider.js.map +1 -1
- package/dist/services/model-metadata.service.d.ts +4 -1
- package/dist/services/model-metadata.service.d.ts.map +1 -1
- package/dist/services/model-metadata.service.js +24 -24
- package/dist/services/model-metadata.service.js.map +1 -1
- package/dist/services/module-metadata.service.d.ts +4 -1
- package/dist/services/module-metadata.service.d.ts.map +1 -1
- package/dist/services/module-metadata.service.js +19 -2
- package/dist/services/module-metadata.service.js.map +1 -1
- package/dist/services/queues/database-publisher.service.js +3 -3
- package/dist/services/queues/database-publisher.service.js.map +1 -1
- package/dist/services/queues/database-subscriber.service.js.map +1 -1
- package/dist/services/queues/rabbitmq-publisher.service.js +3 -3
- package/dist/services/queues/rabbitmq-publisher.service.js.map +1 -1
- package/dist/services/queues/rabbitmq-subscriber.service.js.map +1 -1
- package/dist/services/queues/redis-publisher.service.d.ts.map +1 -1
- package/dist/services/queues/redis-publisher.service.js +4 -1
- package/dist/services/queues/redis-publisher.service.js.map +1 -1
- package/dist/services/queues/redis-subscriber.service.js.map +1 -1
- package/dist/services/role-metadata.service.js.map +1 -1
- package/dist/services/scheduled-jobs/scheduler.service.js.map +1 -1
- package/dist/services/settings/default-settings-provider.service.d.ts +232 -8
- package/dist/services/settings/default-settings-provider.service.d.ts.map +1 -1
- package/dist/services/settings/default-settings-provider.service.js +119 -4
- package/dist/services/settings/default-settings-provider.service.js.map +1 -1
- package/dist/services/sms/TwilioSMSService.js.map +1 -1
- package/dist/services/solid-introspect.service.js.map +1 -1
- package/dist/services/user-activity-history.service.js.map +1 -1
- package/dist/services/user.service.js +1 -1
- package/dist/services/user.service.js.map +1 -1
- package/dist/services/view-metadata.service.d.ts.map +1 -1
- package/dist/services/view-metadata.service.js +17 -2
- package/dist/services/view-metadata.service.js.map +1 -1
- package/dist/services/whatsapp/GupshupOtpWhatsappService.d.ts +11 -0
- package/dist/services/whatsapp/GupshupOtpWhatsappService.d.ts.map +1 -0
- package/dist/services/whatsapp/GupshupOtpWhatsappService.js +127 -0
- package/dist/services/whatsapp/GupshupOtpWhatsappService.js.map +1 -0
- package/dist/services/whatsapp/MetaCloudWhatsappService.d.ts +17 -0
- package/dist/services/whatsapp/MetaCloudWhatsappService.d.ts.map +1 -0
- package/dist/services/whatsapp/MetaCloudWhatsappService.js +209 -0
- package/dist/services/whatsapp/MetaCloudWhatsappService.js.map +1 -0
- package/dist/solid-core.module.d.ts +2 -2
- package/dist/solid-core.module.d.ts.map +1 -1
- package/dist/solid-core.module.js +22 -6
- package/dist/solid-core.module.js.map +1 -1
- package/dist/subscribers/computed-entity-field.subscriber.js.map +1 -1
- package/dist/subscribers/security-rule.subscriber.d.ts.map +1 -1
- package/dist/subscribers/security-rule.subscriber.js.map +1 -1
- package/dist/subscribers/view-metadata.subscriber.js.map +1 -1
- package/dist/testing/adapters/ui/playwright-adapter.d.ts +1 -0
- package/dist/testing/adapters/ui/playwright-adapter.d.ts.map +1 -1
- package/dist/testing/adapters/ui/playwright-adapter.js +3 -0
- package/dist/testing/adapters/ui/playwright-adapter.js.map +1 -1
- package/dist/testing/core/testing-engine.js.map +1 -1
- package/dist/testing/reporter/console-reporter.d.ts +10 -0
- package/dist/testing/reporter/console-reporter.d.ts.map +1 -1
- package/dist/testing/reporter/console-reporter.js +21 -0
- package/dist/testing/reporter/console-reporter.js.map +1 -1
- package/dist/testing/reporter/reporter.types.d.ts +7 -0
- package/dist/testing/reporter/reporter.types.d.ts.map +1 -1
- package/dist/testing/reporter/reporter.types.js.map +1 -1
- package/dist/testing/reporter/webhook-reporter.js.map +1 -1
- package/dist/testing/runner/run-from-metadata.d.ts.map +1 -1
- package/dist/testing/runner/run-from-metadata.js +20 -1
- package/dist/testing/runner/run-from-metadata.js.map +1 -1
- package/dist/testing/steps/ui/index.d.ts.map +1 -1
- package/dist/testing/steps/ui/index.js +2 -0
- package/dist/testing/steps/ui/index.js.map +1 -1
- package/dist/testing/steps/ui/manual.step.d.ts +3 -0
- package/dist/testing/steps/ui/manual.step.d.ts.map +1 -0
- package/dist/testing/steps/ui/manual.step.js +56 -0
- package/dist/testing/steps/ui/manual.step.js.map +1 -0
- package/dist/winston.logger.d.ts +5 -0
- package/dist/winston.logger.d.ts.map +1 -1
- package/dist/winston.logger.js +6 -4
- package/dist/winston.logger.js.map +1 -1
- package/package.json +8 -8
- package/src/commands/refresh-model.command.ts +6 -51
- package/src/commands/refresh-module.command.ts +3 -16
- package/src/commands/test-data.command.ts +29 -6
- package/src/controllers/action-metadata.controller.ts +1 -1
- package/src/controllers/chatter-message.controller.ts +12 -0
- package/src/controllers/facebook-authentication.controller.ts +1 -1
- package/src/controllers/google-authentication.controller.ts +1 -1
- package/src/controllers/gupshup-webhook.controller.ts +91 -0
- package/src/controllers/mcp-audit-log.controller.ts +70 -0
- package/src/controllers/menu-item-metadata.controller.ts +1 -1
- package/src/controllers/meta-cloud-whatsapp-webhook.controller.ts +155 -0
- package/src/controllers/microsoft-authentication.controller.ts +1 -1
- package/src/controllers/model-metadata.controller.ts +1 -1
- package/src/controllers/module-metadata.controller.ts +1 -1
- package/src/controllers/mq-message-queue.controller.ts +1 -1
- package/src/controllers/mq-message.controller.ts +1 -1
- package/src/controllers/view-metadata.controller.ts +1 -1
- package/src/dtos/create-mcp-audit-log.dto.ts +84 -0
- package/src/dtos/update-chatter-note-message.dto.ts +14 -0
- package/src/dtos/update-mcp-audit-log.dto.ts +83 -0
- package/src/dtos/update-user.dto.ts +4 -0
- package/src/entities/chatter-message-details.entity.ts +1 -2
- package/src/entities/mcp-audit-log.entity.ts +55 -0
- package/src/entities/user.entity.ts +1 -1
- package/src/factories/whatsapp.factory.ts +33 -32
- package/src/helpers/bootstrap.helper.ts +16 -6
- package/src/helpers/command.service.ts +2 -0
- package/src/helpers/field-crud-managers/BigIntFieldCrudManager.ts +1 -1
- package/src/helpers/field-crud-managers/SelectionDynamicFieldCrudManager.ts +1 -1
- package/src/helpers/field-crud-managers/field-quality-check-fixes.md +208 -0
- package/src/helpers/module-metadata-helper.service.ts +1 -1
- package/src/index.ts +6 -0
- package/src/interfaces.ts +1 -3
- package/src/jobs/database/chatter-queue-subscriber-database.service.ts +4 -2
- package/src/jobs/database/trigger-mcp-client-subscriber-database.service.ts +1 -1
- package/src/jobs/rabbitmq/chatter-queue-subscriber.service.ts +4 -2
- package/src/jobs/redis/chatter-queue-subscriber-redis.service.ts +10 -3
- package/src/listeners/user-registration.listener.ts +49 -6
- package/src/repository/mcp-audit-log.repository.ts +17 -0
- package/src/repository/security-rule.repository.ts +1 -1
- package/src/seeders/module-metadata-seeder.service.ts +4 -4
- package/src/seeders/module-test-data.service.ts +186 -17
- package/src/seeders/permission-metadata-seeder.service.ts +1 -1
- package/src/seeders/seed-data/solid-core-metadata.json +506 -49
- package/src/services/authentication.service.ts +267 -44
- package/src/services/chatter-message.service.ts +140 -40
- package/src/services/crud.service.ts +1 -1
- package/src/services/csv.service.ts +1 -1
- package/src/services/dashboard.service.ts +1 -1
- package/src/services/database/database-bootstrap.service.ts +1 -1
- package/src/services/excel.service.ts +1 -1
- package/src/services/export-transaction.service.ts +2 -2
- package/src/services/field-metadata.service.ts +1 -1
- package/src/services/fixtures.service.ts +2 -2
- package/src/services/import-transaction.service.ts +2 -2
- package/src/services/list-of-values.service.ts +1 -1
- package/src/services/mcp-audit-log.service.ts +19 -0
- package/src/services/mediaStorageProviders/file-s3-storage-provider.ts +12 -0
- package/src/services/mediaStorageProviders/file-storage-provider.ts +8 -1
- package/src/services/model-metadata.service.ts +36 -34
- package/src/services/module-metadata.service.ts +19 -7
- package/src/services/queues/database-publisher.service.ts +4 -4
- package/src/services/queues/database-subscriber.service.ts +1 -1
- package/src/services/queues/rabbitmq-publisher.service.ts +7 -7
- package/src/services/queues/rabbitmq-subscriber.service.ts +8 -8
- package/src/services/queues/redis-publisher.service.ts +7 -4
- package/src/services/queues/redis-subscriber.service.ts +4 -4
- package/src/services/role-metadata.service.ts +1 -1
- package/src/services/scheduled-jobs/scheduler.service.ts +5 -5
- package/src/services/settings/default-settings-provider.service.ts +119 -4
- package/src/services/sms/TwilioSMSService.ts +2 -2
- package/src/services/solid-introspect.service.ts +2 -2
- package/src/services/user-activity-history.service.ts +1 -1
- package/src/services/user.service.ts +1 -1
- package/src/services/view-metadata.service.ts +25 -8
- package/src/services/whatsapp/GupshupOtpWhatsappService.ts +174 -0
- package/src/services/whatsapp/MetaCloudWhatsappService.ts +253 -0
- package/src/solid-core.module.ts +213 -196
- package/src/subscribers/computed-entity-field.subscriber.ts +1 -1
- package/src/subscribers/security-rule.subscriber.ts +8 -8
- package/src/subscribers/view-metadata.subscriber.ts +1 -1
- package/src/testing/README.md +55 -2
- package/src/testing/adapters/ui/playwright-adapter.ts +4 -0
- package/src/testing/core/testing-engine.ts +2 -2
- package/src/testing/reporter/console-reporter.ts +27 -0
- package/src/testing/reporter/reporter.types.ts +7 -0
- package/src/testing/reporter/webhook-reporter.ts +1 -1
- package/src/testing/runner/run-from-metadata.ts +19 -1
- package/src/testing/steps/ui/index.ts +2 -0
- package/src/testing/steps/ui/manual.step.ts +80 -0
- package/src/winston.logger.ts +5 -7
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import { ApiProperty } from '@nestjs/swagger';
|
|
2
|
+
import { IsInt, IsNumber, IsOptional, IsString } from 'class-validator';
|
|
3
|
+
|
|
4
|
+
export class UpdateMcpAuditLogDto {
|
|
5
|
+
@IsOptional()
|
|
6
|
+
@IsInt()
|
|
7
|
+
id: number;
|
|
8
|
+
|
|
9
|
+
@IsOptional()
|
|
10
|
+
@IsInt()
|
|
11
|
+
@ApiProperty()
|
|
12
|
+
userId: number;
|
|
13
|
+
|
|
14
|
+
@IsOptional()
|
|
15
|
+
@IsInt()
|
|
16
|
+
@ApiProperty()
|
|
17
|
+
apiKeyId: number;
|
|
18
|
+
|
|
19
|
+
@IsOptional()
|
|
20
|
+
@IsString()
|
|
21
|
+
@ApiProperty()
|
|
22
|
+
username: string;
|
|
23
|
+
|
|
24
|
+
@IsOptional()
|
|
25
|
+
@IsString()
|
|
26
|
+
@ApiProperty()
|
|
27
|
+
transport: string;
|
|
28
|
+
|
|
29
|
+
@IsOptional()
|
|
30
|
+
@IsString()
|
|
31
|
+
@ApiProperty()
|
|
32
|
+
mcpSessionId: string;
|
|
33
|
+
|
|
34
|
+
@IsOptional()
|
|
35
|
+
@IsString()
|
|
36
|
+
@ApiProperty()
|
|
37
|
+
clientAddr: string;
|
|
38
|
+
|
|
39
|
+
@IsOptional()
|
|
40
|
+
@IsString()
|
|
41
|
+
@ApiProperty()
|
|
42
|
+
method: string;
|
|
43
|
+
|
|
44
|
+
@IsOptional()
|
|
45
|
+
@IsString()
|
|
46
|
+
@ApiProperty()
|
|
47
|
+
requestId: string;
|
|
48
|
+
|
|
49
|
+
@IsOptional()
|
|
50
|
+
@IsString()
|
|
51
|
+
@ApiProperty()
|
|
52
|
+
toolName: string;
|
|
53
|
+
|
|
54
|
+
@IsOptional()
|
|
55
|
+
@IsString()
|
|
56
|
+
@ApiProperty()
|
|
57
|
+
requestParams: string;
|
|
58
|
+
|
|
59
|
+
@IsOptional()
|
|
60
|
+
@IsString()
|
|
61
|
+
@ApiProperty()
|
|
62
|
+
status: string;
|
|
63
|
+
|
|
64
|
+
@IsOptional()
|
|
65
|
+
@IsString()
|
|
66
|
+
@ApiProperty()
|
|
67
|
+
responseResult: string;
|
|
68
|
+
|
|
69
|
+
@IsOptional()
|
|
70
|
+
@IsInt()
|
|
71
|
+
@ApiProperty()
|
|
72
|
+
errorCode: number;
|
|
73
|
+
|
|
74
|
+
@IsOptional()
|
|
75
|
+
@IsString()
|
|
76
|
+
@ApiProperty()
|
|
77
|
+
errorMessage: string;
|
|
78
|
+
|
|
79
|
+
@IsOptional()
|
|
80
|
+
@IsNumber()
|
|
81
|
+
@ApiProperty()
|
|
82
|
+
durationMs: number;
|
|
83
|
+
}
|
|
@@ -18,7 +18,6 @@ export class ChatterMessageDetails extends CommonEntity {
|
|
|
18
18
|
@Column({ type: "varchar", nullable: true })
|
|
19
19
|
oldValueDisplay: string;
|
|
20
20
|
|
|
21
|
-
@Index()
|
|
22
21
|
@Column({ type: "varchar", nullable: true })
|
|
23
22
|
newValueDisplay: string;
|
|
24
23
|
|
|
@@ -30,4 +29,4 @@ export class ChatterMessageDetails extends CommonEntity {
|
|
|
30
29
|
|
|
31
30
|
@Column({ type: "varchar", nullable: true })
|
|
32
31
|
fieldType: string;
|
|
33
|
-
}
|
|
32
|
+
}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { Column, Entity, Index } from 'typeorm';
|
|
2
|
+
import { CommonEntity } from 'src/entities/common.entity';
|
|
3
|
+
import { getColumnType } from 'src/helpers/typeorm-db-helper';
|
|
4
|
+
|
|
5
|
+
@Entity({ name: 'ss_mcp_audit_log' })
|
|
6
|
+
export class McpAuditLog extends CommonEntity {
|
|
7
|
+
@Index()
|
|
8
|
+
@Column({ nullable: true })
|
|
9
|
+
userId: number;
|
|
10
|
+
|
|
11
|
+
@Column({ nullable: true })
|
|
12
|
+
apiKeyId: number;
|
|
13
|
+
|
|
14
|
+
@Column({ nullable: true, length: 128 })
|
|
15
|
+
username: string;
|
|
16
|
+
|
|
17
|
+
@Column({ length: 32 })
|
|
18
|
+
transport: string;
|
|
19
|
+
|
|
20
|
+
@Index()
|
|
21
|
+
@Column({ nullable: true, length: 64 })
|
|
22
|
+
mcpSessionId: string;
|
|
23
|
+
|
|
24
|
+
@Column({ nullable: true, length: 64 })
|
|
25
|
+
clientAddr: string;
|
|
26
|
+
|
|
27
|
+
@Index()
|
|
28
|
+
@Column({ length: 64 })
|
|
29
|
+
method: string;
|
|
30
|
+
|
|
31
|
+
@Column({ nullable: true, length: 64 })
|
|
32
|
+
requestId: string;
|
|
33
|
+
|
|
34
|
+
@Index()
|
|
35
|
+
@Column({ nullable: true, length: 128 })
|
|
36
|
+
toolName: string;
|
|
37
|
+
|
|
38
|
+
@Column({ nullable: true, ...getColumnType('longText') })
|
|
39
|
+
requestParams: string;
|
|
40
|
+
|
|
41
|
+
@Column({ length: 16 })
|
|
42
|
+
status: string;
|
|
43
|
+
|
|
44
|
+
@Column({ nullable: true, ...getColumnType('longText') })
|
|
45
|
+
responseResult: string;
|
|
46
|
+
|
|
47
|
+
@Column({ nullable: true })
|
|
48
|
+
errorCode: number;
|
|
49
|
+
|
|
50
|
+
@Column({ nullable: true, ...getColumnType('longText') })
|
|
51
|
+
errorMessage: string;
|
|
52
|
+
|
|
53
|
+
@Column({ nullable: true, ...getColumnType('decimal') })
|
|
54
|
+
durationMs: number;
|
|
55
|
+
}
|
|
@@ -1,42 +1,43 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { ConfigType } from "@nestjs/config";
|
|
1
|
+
import { Injectable, Logger } from "@nestjs/common";
|
|
3
2
|
import { ModuleRef } from "@nestjs/core";
|
|
4
3
|
import { SolidRegistry } from "src/helpers/solid-registry";
|
|
5
4
|
import { IWhatsAppTransport } from "src/interfaces";
|
|
6
5
|
import { SettingService } from "src/services/setting.service";
|
|
7
6
|
import type { SolidCoreSetting } from "src/services/settings/default-settings-provider.service";
|
|
8
7
|
|
|
9
|
-
function norm(s?: string) {
|
|
10
|
-
return s?.trim().toLowerCase();
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
// This factory will be use to return a mail service instance, using the configured environment variables
|
|
14
8
|
@Injectable()
|
|
15
9
|
export class WhatsAppFactory {
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
10
|
+
private readonly logger = new Logger(WhatsAppFactory.name);
|
|
11
|
+
|
|
12
|
+
constructor(
|
|
13
|
+
private readonly moduleRef: ModuleRef,
|
|
14
|
+
private readonly solidRegistry: SolidRegistry,
|
|
15
|
+
private readonly settingService: SettingService,
|
|
16
|
+
) {}
|
|
17
|
+
|
|
18
|
+
getWhatsappService(name?: string): IWhatsAppTransport {
|
|
19
|
+
const providerKey =
|
|
20
|
+
name ||
|
|
21
|
+
this.settingService.getConfigValue<SolidCoreSetting>("whatsappProvider");
|
|
22
|
+
|
|
23
|
+
if (!providerKey) {
|
|
24
|
+
throw new Error("Unable to resolve whatsapp provider");
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
const whatsappProviders = this.solidRegistry.getWhatsappProviders();
|
|
28
|
+
|
|
29
|
+
if (!whatsappProviders.length) {
|
|
30
|
+
throw new Error("No whatsapp providers are registered.");
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
const whatsappServiceProvider = whatsappProviders.find((provider) =>
|
|
34
|
+
provider.name?.toLowerCase().includes(providerKey.toLowerCase()),
|
|
35
|
+
);
|
|
36
|
+
|
|
37
|
+
if (!whatsappServiceProvider) {
|
|
38
|
+
throw new Error(`WhatsApp provider '${providerKey}' not found`);
|
|
40
39
|
}
|
|
41
40
|
|
|
42
|
-
|
|
41
|
+
return whatsappServiceProvider.instance as IWhatsAppTransport;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { ValidationPipe } from '@nestjs/common';
|
|
2
2
|
import { NestFactory } from '@nestjs/core';
|
|
3
|
+
import { WsAdapter } from '@nestjs/platform-ws';
|
|
3
4
|
import { DocumentBuilder, SwaggerModule } from '@nestjs/swagger';
|
|
4
5
|
import { NextFunction, Request, Response } from 'express';
|
|
5
6
|
import helmet from 'helmet';
|
|
@@ -8,7 +9,7 @@ import { existsSync } from 'fs';
|
|
|
8
9
|
import { resolve } from 'path';
|
|
9
10
|
import { WINSTON_MODULE_NEST_PROVIDER, WinstonModule } from 'nest-winston';
|
|
10
11
|
import { CommandFactory } from 'nest-commander';
|
|
11
|
-
import {
|
|
12
|
+
import { createWinstonLoggerConfig } from '../winston.logger';
|
|
12
13
|
import { WrapResponseInterceptor } from '../interceptors/wrap-response.interceptor';
|
|
13
14
|
import { buildDefaultCorsOptions } from './cors.helper';
|
|
14
15
|
import { buildDefaultSecurityHeaderOptions, buildPermissionsPolicyHeader, PermissionsPolicyConfig } from './security.helper';
|
|
@@ -49,6 +50,8 @@ export interface SolidBootstrapOptions {
|
|
|
49
50
|
swagger?: SolidSwaggerOptions | false;
|
|
50
51
|
/** Permissions-Policy header overrides (merged with defaults). */
|
|
51
52
|
permissionsPolicyOverrides?: Partial<PermissionsPolicyConfig>;
|
|
53
|
+
/** Show full NestJS init logs during bootstrap (route mapping, module deps, pollers). Defaults to false. */
|
|
54
|
+
verboseBootstrap?: boolean;
|
|
52
55
|
}
|
|
53
56
|
|
|
54
57
|
/**
|
|
@@ -69,11 +72,12 @@ export async function bootstrapSolidApp(
|
|
|
69
72
|
): Promise<void> {
|
|
70
73
|
registerGlobalProcessHandlers();
|
|
71
74
|
|
|
72
|
-
const { globalPrefix = 'api', swagger = {}, permissionsPolicyOverrides = {} } = options;
|
|
75
|
+
const { globalPrefix = 'api', swagger = {}, permissionsPolicyOverrides = {}, verboseBootstrap = false } = options;
|
|
73
76
|
|
|
77
|
+
const startTime = Date.now();
|
|
74
78
|
const appModule = await appModuleFactory();
|
|
75
79
|
const app = await NestFactory.create(appModule, {
|
|
76
|
-
logger: WinstonModule.createLogger(
|
|
80
|
+
logger: WinstonModule.createLogger({ ...createWinstonLoggerConfig(), level: verboseBootstrap ? 'debug' : 'error' }),
|
|
77
81
|
});
|
|
78
82
|
|
|
79
83
|
const apiEnabled = parseBooleanEnv('API_ENABLED', true);
|
|
@@ -114,9 +118,6 @@ export async function bootstrapSolidApp(
|
|
|
114
118
|
next();
|
|
115
119
|
});
|
|
116
120
|
|
|
117
|
-
// Winston logger
|
|
118
|
-
app.useLogger(app.get(WINSTON_MODULE_NEST_PROVIDER));
|
|
119
|
-
|
|
120
121
|
const port = process.env.PORT || 3000;
|
|
121
122
|
|
|
122
123
|
if (globalPrefix) {
|
|
@@ -178,7 +179,16 @@ export async function bootstrapSolidApp(
|
|
|
178
179
|
const types = require('pg').types;
|
|
179
180
|
types.setTypeParser(types.builtins.INT8, (val: string) => parseInt(val));
|
|
180
181
|
|
|
182
|
+
app.useWebSocketAdapter(new WsAdapter(app));
|
|
183
|
+
|
|
181
184
|
await app.listen(port);
|
|
185
|
+
|
|
186
|
+
// Wire up Winston as the runtime logger only AFTER listen — this suppresses all
|
|
187
|
+
// framework init noise (route mapping, module deps, onModuleInit) during boot.
|
|
188
|
+
app.useLogger(app.get(WINSTON_MODULE_NEST_PROVIDER));
|
|
189
|
+
|
|
190
|
+
const elapsed = ((Date.now() - startTime) / 1000).toFixed(2);
|
|
191
|
+
process.stdout.write(`\x1b[32mServer started on port ${port} in ${elapsed}s\x1b[0m\n`);
|
|
182
192
|
}
|
|
183
193
|
|
|
184
194
|
// ---- CLI bootstrap ----
|
|
@@ -4,6 +4,7 @@ import { spawn } from 'child_process';
|
|
|
4
4
|
export type CommandWithArgs = {
|
|
5
5
|
command: string;
|
|
6
6
|
args: string[];
|
|
7
|
+
cwd?: string;
|
|
7
8
|
};
|
|
8
9
|
|
|
9
10
|
@Injectable()
|
|
@@ -43,6 +44,7 @@ export class CommandService {
|
|
|
43
44
|
const child = spawn(command, spawnArgs, {
|
|
44
45
|
shell: isWindows, // Use shell on Windows to handle .cmd files
|
|
45
46
|
stdio: ['pipe', 'pipe', 'pipe'],
|
|
47
|
+
cwd: commandWithArgs.cwd,
|
|
46
48
|
});
|
|
47
49
|
|
|
48
50
|
let stdout = '';
|
|
@@ -20,7 +20,7 @@ export class BigIntFieldCrudManager implements FieldCrudManager {
|
|
|
20
20
|
if (typeof fieldValue === 'string' || typeof fieldValue === 'number') {
|
|
21
21
|
fieldValue = BigInt(fieldValue);
|
|
22
22
|
}
|
|
23
|
-
} catch (err) {
|
|
23
|
+
} catch (err: any) {
|
|
24
24
|
return [{ field: this.options.fieldName, error: 'Invalid numeric value' }];
|
|
25
25
|
}
|
|
26
26
|
}
|
|
@@ -119,7 +119,7 @@ export class SelectionDynamicFieldCrudManager implements FieldCrudManager {
|
|
|
119
119
|
}
|
|
120
120
|
return false;
|
|
121
121
|
}
|
|
122
|
-
catch (error) {
|
|
122
|
+
catch (error: any) {
|
|
123
123
|
// Use the values method as a fallback, if the value method is not implemented
|
|
124
124
|
const values = await providerInstance.values('', ctxt);
|
|
125
125
|
const isValid = values.some(v => v.value === fieldValue);
|
|
@@ -0,0 +1,208 @@
|
|
|
1
|
+
# Field Quality Checks And Fixes
|
|
2
|
+
|
|
3
|
+
This checklist tracks backend issues and logical enhancements for each field type in `solid-core-module`.
|
|
4
|
+
|
|
5
|
+
Use it for backend concerns only:
|
|
6
|
+
|
|
7
|
+
- CRUD validation
|
|
8
|
+
- transformation and normalization
|
|
9
|
+
- persistence behavior
|
|
10
|
+
- relation semantics
|
|
11
|
+
- field-level correctness and consistency
|
|
12
|
+
|
|
13
|
+
Frontend widget and rendering concerns belong in `solid-core-ui`.
|
|
14
|
+
|
|
15
|
+
## `shortText`
|
|
16
|
+
|
|
17
|
+
- [ ] Resolve the `length` versus `max` contract for `shortText` and document one clear meaning for each attribute.
|
|
18
|
+
- [ ] Decide whether backend validation should also enforce `min`, so `shortText` constraints remain consistent even outside generated form flows.
|
|
19
|
+
- [ ] Return the configured regex mismatch message when `regexPatternNotMatchingErrorMsg` is present instead of always using a generic regex error.
|
|
20
|
+
- [ ] Clarify and implement the expected behavior for `defaultValue` when a create payload omits a `shortText` field.
|
|
21
|
+
- [ ] Decide whether `shortText` should support optional normalization such as trimming or whitespace collapsing, and keep that decision consistent across comparable text field types.
|
|
22
|
+
- [ ] Review whether uniqueness should receive any pre-save validation support at the CRUD layer or continue to rely entirely on persistence-layer constraints.
|
|
23
|
+
- [ ] Add targeted coverage for partial update behavior, empty string versus null handling, regex validation, and max-length enforcement.
|
|
24
|
+
- [ ] Review whether the text-oriented managers share enough behavior to justify a common validation utility or base manager without weakening field-specific semantics.
|
|
25
|
+
|
|
26
|
+
## `longText`
|
|
27
|
+
|
|
28
|
+
- [ ] Decide whether backend validation should also enforce `min` and `max`, so `longText` constraints remain consistent outside generated form flows.
|
|
29
|
+
- [ ] Return the configured regex mismatch message when `regexPatternNotMatchingErrorMsg` is present instead of always using a generic regex error.
|
|
30
|
+
- [ ] Clarify and implement the expected behavior for `defaultValue` when a create payload omits a `longText` field.
|
|
31
|
+
- [ ] Decide whether `longText` should support optional normalization such as trimming trailing whitespace while preserving intentional line breaks.
|
|
32
|
+
- [ ] Review whether uniqueness should receive any pre-save validation support at the CRUD layer or continue to rely entirely on persistence-layer constraints.
|
|
33
|
+
- [ ] Add targeted coverage for multiline content, regex validation, partial updates, and empty string versus null handling.
|
|
34
|
+
- [ ] Review whether the text-oriented managers share enough behavior to justify a common validation utility or base manager without weakening field-specific semantics.
|
|
35
|
+
|
|
36
|
+
## `richText`
|
|
37
|
+
|
|
38
|
+
- [ ] Decide whether backend validation should also enforce `min` and `max`, so `richText` constraints remain consistent outside generated form flows.
|
|
39
|
+
- [ ] Return the configured regex mismatch message when `regexPatternNotMatchingErrorMsg` is present instead of always using a generic regex error.
|
|
40
|
+
- [ ] Clarify and implement the expected behavior for `defaultValue` when a create payload omits a `richText` field.
|
|
41
|
+
- [ ] Decide whether `richText` should support optional normalization or sanitization at save time, and define that behavior explicitly.
|
|
42
|
+
- [ ] Review whether uniqueness should receive any pre-save validation support at the CRUD layer or continue to rely entirely on persistence-layer constraints.
|
|
43
|
+
- [ ] Add targeted coverage for rich HTML-like content, regex validation, partial updates, and empty string versus null handling.
|
|
44
|
+
- [ ] Review whether the text-oriented managers share enough behavior to justify a common validation utility or base manager without weakening field-specific semantics.
|
|
45
|
+
|
|
46
|
+
## `json`
|
|
47
|
+
|
|
48
|
+
- [ ] Clarify and implement the expected behavior for `defaultValue` when a create payload omits a `json` field.
|
|
49
|
+
- [ ] Decide whether backend validation should accept only stringified JSON or also handle already-parsed object and array payloads more explicitly.
|
|
50
|
+
- [ ] Review whether the current JSON validation error should distinguish between invalid JSON syntax and unsupported runtime value shapes.
|
|
51
|
+
- [ ] Decide whether normalization or canonical stringification should happen before persistence for comparable JSON values.
|
|
52
|
+
- [ ] Review whether uniqueness should receive any pre-save validation support at the CRUD layer or continue to rely entirely on persistence-layer constraints.
|
|
53
|
+
- [ ] Add targeted coverage for object payloads, array payloads, stringified JSON payloads, invalid JSON, partial updates, and empty string versus null handling.
|
|
54
|
+
|
|
55
|
+
## `int`
|
|
56
|
+
|
|
57
|
+
- [ ] Fix the current min/max activation rule, because backend validation only applies numeric bounds when the configured value is greater than `0`, which skips valid `0` and negative thresholds.
|
|
58
|
+
- [ ] Clarify and implement the expected behavior for `defaultValue` when a create payload omits an `int` field.
|
|
59
|
+
- [ ] Decide whether the CRUD layer should normalize numeric strings into integers more explicitly before validation and persistence.
|
|
60
|
+
- [ ] Review whether integer fields should reject decimal-shaped inputs more clearly when values arrive from metadata-driven clients as strings.
|
|
61
|
+
- [ ] Review whether uniqueness should receive any pre-save validation support at the CRUD layer or continue to rely entirely on persistence-layer constraints.
|
|
62
|
+
- [ ] Add targeted coverage for `0`, negative values, numeric strings, invalid decimal-like input, min/max bounds, and partial update behavior.
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
## `bigint`
|
|
66
|
+
|
|
67
|
+
- [ ] Clarify the authored support surface for `bigint`, because the CRUD manager contains numeric bound logic while the authored field surface does not currently present `min` and `max` in the same way as `int` and `decimal`.
|
|
68
|
+
- [ ] Fix or clarify the current numeric-bound activation rule if bigint bounds are intended to be supported, since the logic only applies bounds when the configured value is greater than `0`.
|
|
69
|
+
- [ ] Clarify and implement the expected behavior for `defaultValue` when a create payload omits a `bigint` field.
|
|
70
|
+
- [ ] Decide what the canonical runtime contract should be for bigint inputs: native `bigint`, numeric strings, or finite JavaScript numbers.
|
|
71
|
+
- [ ] Review whether accepting finite JavaScript numbers for bigint validation is sufficient when exact large-integer fidelity matters.
|
|
72
|
+
- [ ] Review whether uniqueness should receive any pre-save validation support at the CRUD layer or continue to rely entirely on persistence-layer constraints.
|
|
73
|
+
- [ ] Add targeted coverage for numeric strings, very large values, invalid numeric input, bound handling, null handling, and partial update behavior.
|
|
74
|
+
|
|
75
|
+
|
|
76
|
+
## `decimal`
|
|
77
|
+
|
|
78
|
+
- [ ] Fix the current min/max activation rule, because backend validation only applies numeric bounds when the configured value is greater than `0`, which skips valid `0` and negative thresholds.
|
|
79
|
+
- [ ] Clarify and implement the expected behavior for `defaultValue` when a create payload omits a `decimal` field.
|
|
80
|
+
- [ ] Decide whether the CRUD layer should normalize numeric strings into decimal numbers more explicitly before validation and persistence.
|
|
81
|
+
- [ ] Review whether decimal fields need an explicit precision-and-scale contract instead of relying entirely on the persistence-layer `ormType`.
|
|
82
|
+
- [ ] Review whether uniqueness should receive any pre-save validation support at the CRUD layer or continue to rely entirely on persistence-layer constraints.
|
|
83
|
+
- [ ] Add targeted coverage for `0`, negative values, fractional values, numeric strings, invalid numeric input, min/max bounds, and partial update behavior.
|
|
84
|
+
|
|
85
|
+
|
|
86
|
+
## `boolean`
|
|
87
|
+
|
|
88
|
+
- [ ] Clarify and implement the expected behavior for `defaultValue` when a create payload omits a `boolean` field.
|
|
89
|
+
- [ ] Decide whether boolean CRUD validation should accept only runtime booleans or also normalize `"true"` and `"false"` string payloads when they arrive from metadata-driven clients.
|
|
90
|
+
- [ ] Review whether the required validation path should distinguish more clearly between an omitted value and an explicit `false` value, especially for partial updates.
|
|
91
|
+
- [ ] Review whether uniqueness should receive any pre-save validation support at the CRUD layer or continue to rely entirely on persistence-layer constraints.
|
|
92
|
+
- [ ] Add targeted coverage for `true`, `false`, null, empty string, string booleans, and partial update behavior.
|
|
93
|
+
|
|
94
|
+
## `date`
|
|
95
|
+
|
|
96
|
+
- [ ] Clarify and implement the expected behavior for `defaultValue` when a create payload omits a `date` field.
|
|
97
|
+
- [ ] Review whether the CRUD layer should accept only runtime `Date` objects or also normalize common serialized date inputs more explicitly before validation.
|
|
98
|
+
- [ ] Decide whether `date` and `datetime` should continue to share the same backend validation path or receive more distinct normalization and validation behavior.
|
|
99
|
+
- [ ] Review whether uniqueness should receive any pre-save validation support at the CRUD layer or continue to rely entirely on persistence-layer constraints.
|
|
100
|
+
- [ ] Add targeted coverage for `Date` objects, serialized date strings, null handling, invalid date inputs, and partial update behavior.
|
|
101
|
+
|
|
102
|
+
## `datetime`
|
|
103
|
+
|
|
104
|
+
- [ ] Clarify and implement the expected behavior for `defaultValue` when a create payload omits a `datetime` field.
|
|
105
|
+
- [ ] Review whether the CRUD layer should accept only runtime `Date` objects or also normalize common serialized datetime inputs more explicitly before validation.
|
|
106
|
+
- [ ] Decide whether `date` and `datetime` should continue to share the same backend validation path or receive more distinct normalization and validation behavior.
|
|
107
|
+
- [ ] Review whether timezone normalization rules should be documented and enforced more explicitly at save time.
|
|
108
|
+
- [ ] Review whether uniqueness should receive any pre-save validation support at the CRUD layer or continue to rely entirely on persistence-layer constraints.
|
|
109
|
+
- [ ] Add targeted coverage for `Date` objects, serialized datetime strings, null handling, timezone-sensitive values, invalid datetime inputs, and partial update behavior.
|
|
110
|
+
|
|
111
|
+
## `time`
|
|
112
|
+
|
|
113
|
+
- [ ] Add an explicit CRUD-manager path for `SolidFieldType.time`, since the field currently has core UI support but is not routed through a dedicated backend field manager.
|
|
114
|
+
- [ ] Clarify and implement the expected behavior for `defaultValue` when a create payload omits a `time` field.
|
|
115
|
+
- [ ] Decide what canonical persisted shape `time` should use: pure time string, database-native time value, or a normalized timestamp-derived representation.
|
|
116
|
+
- [ ] Review whether the CRUD layer should normalize common time inputs such as `HH:mm:ss`, ISO timestamps, and UI-submitted values more explicitly before validation and persistence.
|
|
117
|
+
- [ ] Review whether uniqueness should receive any pre-save validation support at the CRUD layer or continue to rely entirely on persistence-layer constraints.
|
|
118
|
+
- [ ] Add targeted coverage for `HH:mm:ss` inputs, ISO-style inputs, invalid time values, null handling, and partial update behavior.
|
|
119
|
+
|
|
120
|
+
## `email`
|
|
121
|
+
|
|
122
|
+
- [ ] Decide whether backend validation should also enforce `min`, so email constraints remain consistent outside generated form flows.
|
|
123
|
+
- [ ] Return the configured regex mismatch message when `regexPatternNotMatchingErrorMsg` is present instead of always using a generic regex error.
|
|
124
|
+
- [ ] Clarify and implement the expected behavior for `defaultValue` when a create payload omits an `email` field.
|
|
125
|
+
- [ ] Decide whether email values should support optional normalization such as trimming and lowercasing before persistence.
|
|
126
|
+
- [ ] Review whether uniqueness should receive any pre-save validation support at the CRUD layer or continue to rely entirely on persistence-layer constraints.
|
|
127
|
+
- [ ] Add targeted coverage for max-length enforcement, regex overrides, invalid email formats, null handling, and partial update behavior.
|
|
128
|
+
|
|
129
|
+
## `password`
|
|
130
|
+
|
|
131
|
+
- [ ] Return the configured regex mismatch message when `regexPatternNotMatchingErrorMsg` is present instead of always using a generic password-regex error.
|
|
132
|
+
- [ ] Review whether password validation should produce clearer error messages for min, max, regex, and confirm-password mismatch failures.
|
|
133
|
+
- [ ] Clarify and implement the expected behavior for `defaultValue` on password fields, including whether it should be ignored entirely for secure create flows.
|
|
134
|
+
- [ ] Review whether password hashing and password-update flows should share a more explicit single contract across create and update operations.
|
|
135
|
+
- [ ] Decide whether password normalization should include trimming or whether exact raw user input should always be preserved before hashing.
|
|
136
|
+
- [ ] Add targeted coverage for create-required behavior, update-optional behavior, confirm-password mismatch, hashing behavior, regex fallback behavior, and partial update behavior.
|
|
137
|
+
|
|
138
|
+
## `selectionStatic`
|
|
139
|
+
|
|
140
|
+
- [ ] Clarify and implement the expected behavior for `defaultValue` when a create payload omits a `selectionStatic` field, especially for multi-select fields.
|
|
141
|
+
- [ ] Decide whether the CRUD layer should normalize single-select and multi-select payloads into one consistent stored shape before persistence.
|
|
142
|
+
- [ ] Review whether the current `selectionStaticValues` parsing should validate malformed `value:label` entries more explicitly instead of assuming a valid authored format.
|
|
143
|
+
- [ ] Add clearer error messaging when the submitted value has the wrong type versus when it is simply not part of the authored option set.
|
|
144
|
+
- [ ] Review whether numeric selection values need more explicit normalization, especially when values can arrive as strings from metadata-driven clients.
|
|
145
|
+
- [ ] Add targeted coverage for single-select string values, single-select numeric values, JSON-stringified multi-select arrays, invalid option tokens, malformed arrays, and partial update behavior.
|
|
146
|
+
|
|
147
|
+
## `selectionDynamic`
|
|
148
|
+
|
|
149
|
+
- [ ] Clarify and implement the expected behavior for `defaultValue` when a create payload omits a `selectionDynamic` field, especially for multi-select fields.
|
|
150
|
+
- [ ] Review whether the CRUD layer should normalize single-select and multi-select payloads into one consistent stored shape before persistence.
|
|
151
|
+
- [ ] Add clearer error messaging when the submitted value has the wrong type, when the provider rejects the value, and when the provider itself cannot be resolved.
|
|
152
|
+
- [ ] Review whether numeric selection values need more explicit normalization, especially when values can arrive as strings from metadata-driven clients.
|
|
153
|
+
- [ ] Clarify how `validateOnSave` in `selectionDynamicProviderCtxt` should be treated as part of the supported field contract and whether more provider-context keys should be validated.
|
|
154
|
+
- [ ] Add targeted coverage for provider-backed single-select values, JSON-stringified multi-select arrays, invalid provider names, `validateOnSave: false`, invalid option values, and partial update behavior.
|
|
155
|
+
|
|
156
|
+
## `many-to-one`
|
|
157
|
+
|
|
158
|
+
- [ ] Clarify and document the preferred request contract for single relations, because accepting both `<fieldName>Id` and `<fieldName>UserKey` is useful but easy to apply inconsistently across clients.
|
|
159
|
+
- [ ] Review whether the CRUD layer should normalize empty strings for `<fieldName>Id` and `<fieldName>UserKey` more explicitly before required validation runs.
|
|
160
|
+
- [ ] Decide whether user-key-based lookup failures should return a more specific error message than generic required or invalid relation errors.
|
|
161
|
+
- [ ] Review whether relation resolution should support optional fixed-filter enforcement at save time in addition to UI-level filtering.
|
|
162
|
+
- [ ] Consider whether uniqueness on a `many-to-one` field should receive clearer pre-save validation when the authored intent effectively makes the relation one-to-one.
|
|
163
|
+
- [ ] Add targeted coverage for id-based lookup, user-key-based lookup, missing required relations, invalid id shapes, invalid user keys, and partial update behavior.
|
|
164
|
+
|
|
165
|
+
## `one-to-many`
|
|
166
|
+
|
|
167
|
+
- [ ] Clarify and document the command contract for collection relations so `set`, `clear`, `link`, `unlink`, `create`, `update`, and `delete` are easier to use consistently from clients.
|
|
168
|
+
- [ ] Review whether malformed or unsupported command values should return more specific validation errors than the current generic failure path.
|
|
169
|
+
- [ ] Decide whether create-time and update-time collection mutation semantics should be normalized more explicitly, especially where some commands are intentionally update-only.
|
|
170
|
+
- [ ] Review whether `relationCoModelFieldName` should be validated more aggressively, because this field is central to child binding and inverse resolution.
|
|
171
|
+
- [ ] Consider whether `relationFieldFixedFilter` should be enforced during relation mutation so child records cannot be linked outside the authored collection scope.
|
|
172
|
+
- [ ] Add targeted coverage for `set`, `clear`, `link`, `unlink`, `create`, `update`, `delete`, invalid command payloads, and partial update behavior.
|
|
173
|
+
|
|
174
|
+
## `many-to-many`
|
|
175
|
+
|
|
176
|
+
- [ ] Clarify and document owner-side versus inverse-side mutation semantics so clients understand which effective field names and id lists are honored during CRUD operations.
|
|
177
|
+
- [ ] Review whether malformed owner-side metadata such as missing `isRelationManyToManyOwner` or mismatched inverse names should fail earlier and more clearly.
|
|
178
|
+
- [ ] Decide whether `relationJoinTableName` and related ownership attrs need stronger validation at metadata authoring time to avoid ambiguous join behavior later.
|
|
179
|
+
- [ ] Review whether `relationFieldFixedFilter` should be enforced during membership mutation so unsupported links cannot be created through direct payloads.
|
|
180
|
+
- [ ] Consider whether create, update, and delete operations against related entities should be more clearly separated from plain membership operations such as `set`, `link`, and `unlink`.
|
|
181
|
+
- [ ] Add targeted coverage for owner-side mutations, inverse-side mutations, `set`, `clear`, `link`, `unlink`, related-entity create/update/delete flows, and partial update behavior.
|
|
182
|
+
|
|
183
|
+
## `mediaSingle`
|
|
184
|
+
|
|
185
|
+
- [ ] Clarify and implement the expected behavior for `defaultValue` when a create payload omits a `mediaSingle` field, including whether the field should ever accept persisted references without a new upload.
|
|
186
|
+
- [ ] Review whether media validation should normalize authored `mediaTypes` values more explicitly so unsupported tokens fail early and predictably.
|
|
187
|
+
- [ ] Consider whether storage-provider resolution should fail with a clearer field-specific error when `mediaStorageProviderUserKey` is missing or invalid.
|
|
188
|
+
- [ ] Review whether replace and delete semantics should be more explicit in the CRUD layer when an existing asset is being updated or removed.
|
|
189
|
+
- [ ] Consider whether upload validation should be refactored into shared utilities so size, type, and required checks stay consistent across media field types.
|
|
190
|
+
- [ ] Add targeted coverage for required create-time uploads, oversized files, unsupported media types, missing providers, replacement flows, and partial update behavior.
|
|
191
|
+
|
|
192
|
+
## `mediaMultiple`
|
|
193
|
+
|
|
194
|
+
- [ ] Align collection-level validation with the single-media path so `mediaTypes` and `mediaMaxSizeKb` are enforced consistently for every uploaded file.
|
|
195
|
+
- [ ] Clarify and implement the expected behavior for `defaultValue` when a create payload omits a `mediaMultiple` field, including whether persisted media references should ever be accepted directly.
|
|
196
|
+
- [ ] Review whether storage-provider resolution should fail with a clearer field-specific error when `mediaStorageProviderUserKey` is missing or invalid.
|
|
197
|
+
- [ ] Decide what the canonical update semantics should be for attachment collections: append-only, replace-all, explicit remove, or a more command-style contract.
|
|
198
|
+
- [ ] Consider whether media collection validation should report per-file errors more explicitly when one file fails and others succeed.
|
|
199
|
+
- [ ] Add targeted coverage for required create-time collections, mixed valid and invalid uploads, oversized files, unsupported media types, missing providers, and partial update behavior.
|
|
200
|
+
|
|
201
|
+
## `computed`
|
|
202
|
+
|
|
203
|
+
- [ ] Clarify and document the supported provider contract more explicitly, including what a computed-field provider must return and how failures should be surfaced to callers.
|
|
204
|
+
- [ ] Review whether `computedFieldValueProviderCtxt` should be validated as JSON earlier and with clearer error messaging before provider execution begins.
|
|
205
|
+
- [ ] Decide whether inline computation should remain skipped on partial updates by default, or whether some computed fields need an opt-in recompute path during patch-style operations.
|
|
206
|
+
- [ ] Review whether `computedFieldTriggerConfig` should be validated more aggressively so unsupported operations or malformed trigger definitions fail earlier.
|
|
207
|
+
- [ ] Consider whether the CRUD layer should verify that the provider’s returned value matches `computedFieldValueType` before persistence.
|
|
208
|
+
- [ ] Add targeted coverage for inline provider execution, malformed provider context, missing providers, trigger-configured fields, partial updates, and mismatched computed value types.
|
|
@@ -23,7 +23,7 @@ export class ModuleMetadataHelperService {
|
|
|
23
23
|
const fileContent = await fs.readFile(configFilePath, 'utf8');
|
|
24
24
|
return JSON.parse(fileContent);
|
|
25
25
|
}
|
|
26
|
-
catch (error) {
|
|
26
|
+
catch (error: any) {
|
|
27
27
|
this.logger.error(`module metadata configuration non existent at: ${configFilePath}`);
|
|
28
28
|
}
|
|
29
29
|
|
package/src/index.ts
CHANGED
|
@@ -29,6 +29,7 @@ export * from './decorators/settings-provider.decorator'
|
|
|
29
29
|
export * from './decorators/extension-user-creation-provider.decorator'
|
|
30
30
|
|
|
31
31
|
export * from './dtos/post-chatter-message.dto'
|
|
32
|
+
export * from './dtos/update-chatter-note-message.dto'
|
|
32
33
|
export * from './dtos/security-rule-config.dto'
|
|
33
34
|
export * from './dtos/basic-filters.dto'
|
|
34
35
|
export * from './dtos/solid-request-context.dto'
|
|
@@ -49,6 +50,7 @@ export * from './dtos/create-mq-message-queue.dto'
|
|
|
49
50
|
export * from './dtos/create-mq-message.dto'
|
|
50
51
|
export * from './dtos/create-agent-session.dto'
|
|
51
52
|
export * from './dtos/create-agent-event.dto'
|
|
53
|
+
export * from './dtos/create-mcp-audit-log.dto'
|
|
52
54
|
export * from './dtos/create-scheduled-job.dto'
|
|
53
55
|
export * from './dtos/create-permission-metadata.dto'
|
|
54
56
|
export * from './dtos/create-role-metadata.dto'
|
|
@@ -89,6 +91,7 @@ export * from './dtos/update-mq-message-queue.dto'
|
|
|
89
91
|
export * from './dtos/update-mq-message.dto'
|
|
90
92
|
export * from './dtos/update-agent-session.dto'
|
|
91
93
|
export * from './dtos/update-agent-event.dto'
|
|
94
|
+
export * from './dtos/update-mcp-audit-log.dto'
|
|
92
95
|
export * from './dtos/update-scheduled-job.dto'
|
|
93
96
|
export * from './dtos/update-permission-metadata.dto'
|
|
94
97
|
export * from './dtos/update-role-metadata.dto'
|
|
@@ -122,6 +125,7 @@ export * from './entities/mq-message-queue.entity'
|
|
|
122
125
|
export * from './entities/mq-message.entity'
|
|
123
126
|
export * from './entities/agent-session.entity'
|
|
124
127
|
export * from './entities/agent-event.entity'
|
|
128
|
+
export * from './entities/mcp-audit-log.entity'
|
|
125
129
|
export * from './entities/scheduled-job.entity'
|
|
126
130
|
export * from './entities/permission-metadata.entity'
|
|
127
131
|
export * from './entities/role-metadata.entity'
|
|
@@ -297,6 +301,7 @@ export * from './services/mq-message-queue.service'
|
|
|
297
301
|
export * from './services/mq-message.service'
|
|
298
302
|
export * from './services/agent-session.service'
|
|
299
303
|
export * from './services/agent-event.service'
|
|
304
|
+
export * from './services/mcp-audit-log.service'
|
|
300
305
|
export * from './services/scheduled-job.service'
|
|
301
306
|
export * from './services/pdf.service'
|
|
302
307
|
export * from './services/permission-metadata.service'
|
|
@@ -318,6 +323,7 @@ export * from './services/solid-introspect.service'
|
|
|
318
323
|
export * from './services/user.service'
|
|
319
324
|
export * from './services/view-metadata.service'
|
|
320
325
|
export * from './services/whatsapp/Msg91WhatsappService' //rename
|
|
326
|
+
export * from './services/whatsapp/GupshupOtpWhatsappService'
|
|
321
327
|
export * from './services/setting.service'
|
|
322
328
|
export * from './services/encryption.service'
|
|
323
329
|
export * from './services/info.service'
|
package/src/interfaces.ts
CHANGED
|
@@ -42,6 +42,7 @@ export interface ValidationError {
|
|
|
42
42
|
export interface MediaStorageProvider<T> {
|
|
43
43
|
store(files: Express.Multer.File[], entity: T, mediaFieldMetadata: FieldMetadata): Promise<Media[]>;
|
|
44
44
|
delete(entity: T, mediaFieldMetadata: FieldMetadata): Promise<void>;
|
|
45
|
+
deleteByMediaRecord(media: Media): Promise<void>;
|
|
45
46
|
retrieve(entity: T, mediaFieldMetadata: FieldMetadata): Promise<Media[]>;
|
|
46
47
|
storeStreams(streamPairs: [Readable, string][], entity: T, mediaFieldMetadata: FieldMetadata): Promise<Media[]>;
|
|
47
48
|
// delete(file: string): Promise<void>;
|
|
@@ -121,8 +122,6 @@ export interface CodeGenerationOptions {
|
|
|
121
122
|
fieldIdsForRemoval?: number[];
|
|
122
123
|
fieldNamesForRemoval?: string[];
|
|
123
124
|
dryRun?: boolean;
|
|
124
|
-
fieldIdsForRefresh?: number[];
|
|
125
|
-
fieldNamesForRefresh?: string[];
|
|
126
125
|
}
|
|
127
126
|
|
|
128
127
|
export interface TriggerMcpClientOptions {
|
|
@@ -450,4 +449,3 @@ export interface AuditQueuePayload {
|
|
|
450
449
|
updatedColumnNames?: string[];
|
|
451
450
|
userId?: number | null;
|
|
452
451
|
}
|
|
453
|
-
|