@solidstarters/solid-core 1.2.193 → 1.2.200
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/commands/mcp.command.d.ts +20 -0
- package/dist/commands/mcp.command.d.ts.map +1 -0
- package/dist/commands/mcp.command.js +208 -0
- package/dist/commands/mcp.command.js.map +1 -0
- package/dist/commands/refresh-model.command.d.ts +8 -5
- package/dist/commands/refresh-model.command.d.ts.map +1 -1
- package/dist/commands/refresh-model.command.js +32 -0
- package/dist/commands/refresh-model.command.js.map +1 -1
- package/dist/commands/remove-fields.command.js +1 -1
- package/dist/commands/remove-fields.command.js.map +1 -1
- package/dist/commands/seed.command.d.ts +2 -0
- package/dist/commands/seed.command.d.ts.map +1 -1
- package/dist/commands/seed.command.js +28 -1
- package/dist/commands/seed.command.js.map +1 -1
- package/dist/controllers/authentication.controller.js +1 -1
- package/dist/controllers/authentication.controller.js.map +1 -1
- package/dist/controllers/email-template.controller.js +1 -1
- package/dist/controllers/email-template.controller.js.map +1 -1
- package/dist/controllers/field-metadata.controller.d.ts +136 -4
- package/dist/controllers/field-metadata.controller.d.ts.map +1 -1
- package/dist/controllers/field-metadata.controller.js +14 -1
- package/dist/controllers/field-metadata.controller.js.map +1 -1
- package/dist/controllers/media-storage-provider-metadata.controller.js +1 -1
- package/dist/controllers/media-storage-provider-metadata.controller.js.map +1 -1
- package/dist/controllers/model-metadata.controller.js +1 -1
- 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/otp-authentication.controller.js +1 -1
- package/dist/controllers/otp-authentication.controller.js.map +1 -1
- package/dist/controllers/service.controller.js +1 -1
- package/dist/controllers/service.controller.js.map +1 -1
- package/dist/controllers/sms-template.controller.js +1 -1
- package/dist/controllers/sms-template.controller.js.map +1 -1
- package/dist/controllers/test-queue.controller.js +1 -1
- package/dist/controllers/test-queue.controller.js.map +1 -1
- package/dist/controllers/test.controller.js +1 -1
- package/dist/controllers/test.controller.js.map +1 -1
- package/dist/dtos/create-ai-interaction.dto.d.ts +2 -0
- package/dist/dtos/create-ai-interaction.dto.d.ts.map +1 -1
- package/dist/dtos/create-ai-interaction.dto.js +14 -1
- package/dist/dtos/create-ai-interaction.dto.js.map +1 -1
- package/dist/dtos/create-field-metadata.dto.d.ts +22 -5
- package/dist/dtos/create-field-metadata.dto.d.ts.map +1 -1
- package/dist/dtos/create-field-metadata.dto.js +33 -7
- package/dist/dtos/create-field-metadata.dto.js.map +1 -1
- package/dist/dtos/create-import-transaction.dto.d.ts +0 -1
- package/dist/dtos/create-import-transaction.dto.d.ts.map +1 -1
- package/dist/dtos/create-import-transaction.dto.js +1 -7
- package/dist/dtos/create-import-transaction.dto.js.map +1 -1
- package/dist/dtos/create-model-metadata.dto.d.ts +2 -0
- package/dist/dtos/create-model-metadata.dto.d.ts.map +1 -1
- package/dist/dtos/create-model-metadata.dto.js +13 -1
- package/dist/dtos/create-model-metadata.dto.js.map +1 -1
- package/dist/dtos/create-role-metadata.dto.d.ts.map +1 -1
- package/dist/dtos/create-role-metadata.dto.js +5 -1
- package/dist/dtos/create-role-metadata.dto.js.map +1 -1
- package/dist/dtos/resolve-s3-url.dto.d.ts +10 -0
- package/dist/dtos/resolve-s3-url.dto.d.ts.map +1 -0
- package/dist/dtos/resolve-s3-url.dto.js +49 -0
- package/dist/dtos/resolve-s3-url.dto.js.map +1 -0
- package/dist/dtos/update-ai-interaction.dto.d.ts +2 -0
- package/dist/dtos/update-ai-interaction.dto.d.ts.map +1 -1
- package/dist/dtos/update-ai-interaction.dto.js +13 -1
- package/dist/dtos/update-ai-interaction.dto.js.map +1 -1
- package/dist/dtos/update-field-metadata.dto.d.ts.map +1 -1
- package/dist/dtos/update-field-metadata.dto.js.map +1 -1
- package/dist/dtos/update-import-transaction.dto.d.ts +0 -1
- package/dist/dtos/update-import-transaction.dto.d.ts.map +1 -1
- package/dist/dtos/update-import-transaction.dto.js +1 -7
- package/dist/dtos/update-import-transaction.dto.js.map +1 -1
- package/dist/entities/action-metadata.entity.js +4 -4
- package/dist/entities/action-metadata.entity.js.map +1 -1
- package/dist/entities/ai-interaction.entity.d.ts +2 -0
- package/dist/entities/ai-interaction.entity.d.ts.map +1 -1
- package/dist/entities/ai-interaction.entity.js +15 -6
- package/dist/entities/ai-interaction.entity.js.map +1 -1
- package/dist/entities/chatter-message-details.entity.d.ts.map +1 -1
- package/dist/entities/chatter-message-details.entity.js +1 -1
- package/dist/entities/chatter-message-details.entity.js.map +1 -1
- package/dist/entities/chatter-message.entity.js +1 -1
- package/dist/entities/chatter-message.entity.js.map +1 -1
- package/dist/entities/common.entity.d.ts +2 -3
- package/dist/entities/common.entity.d.ts.map +1 -1
- package/dist/entities/common.entity.js +9 -11
- package/dist/entities/common.entity.js.map +1 -1
- package/dist/entities/dashboard-question-sql-dataset-config.entity.js +2 -2
- package/dist/entities/dashboard-question-sql-dataset-config.entity.js.map +1 -1
- package/dist/entities/dashboard-question.entity.js +3 -3
- package/dist/entities/dashboard-question.entity.js.map +1 -1
- package/dist/entities/dashboard-variable.entity.js +3 -3
- package/dist/entities/dashboard-variable.entity.js.map +1 -1
- package/dist/entities/dashboard.entity.js +1 -1
- package/dist/entities/dashboard.entity.js.map +1 -1
- package/dist/entities/email-template.entity.d.ts.map +1 -1
- package/dist/entities/email-template.entity.js +4 -3
- package/dist/entities/email-template.entity.js.map +1 -1
- package/dist/entities/export-template.entity.js +2 -2
- package/dist/entities/export-template.entity.js.map +1 -1
- package/dist/entities/export-transaction.entity.js +2 -2
- package/dist/entities/export-transaction.entity.js.map +1 -1
- package/dist/entities/field-metadata.entity.d.ts +1 -0
- package/dist/entities/field-metadata.entity.d.ts.map +1 -1
- package/dist/entities/field-metadata.entity.js +8 -4
- package/dist/entities/field-metadata.entity.js.map +1 -1
- package/dist/entities/import-transaction-error-log.entity.js +1 -1
- package/dist/entities/import-transaction-error-log.entity.js.map +1 -1
- package/dist/entities/import-transaction.entity.d.ts +0 -1
- package/dist/entities/import-transaction.entity.d.ts.map +1 -1
- package/dist/entities/import-transaction.entity.js +2 -7
- package/dist/entities/import-transaction.entity.js.map +1 -1
- package/dist/entities/legacy-common-with-id.entity.d.ts +5 -0
- package/dist/entities/legacy-common-with-id.entity.d.ts.map +1 -0
- package/dist/entities/legacy-common-with-id.entity.js +32 -0
- package/dist/entities/legacy-common-with-id.entity.js.map +1 -0
- package/dist/entities/legacy-common.entity.d.ts +13 -0
- package/dist/entities/legacy-common.entity.d.ts.map +1 -0
- package/dist/entities/legacy-common.entity.js +67 -0
- package/dist/entities/legacy-common.entity.js.map +1 -0
- package/dist/entities/list-of-values.entity.js +2 -2
- package/dist/entities/list-of-values.entity.js.map +1 -1
- package/dist/entities/locale.entity.js +1 -1
- package/dist/entities/locale.entity.js.map +1 -1
- package/dist/entities/media.entity.d.ts.map +1 -1
- package/dist/entities/media.entity.js +3 -3
- package/dist/entities/media.entity.js.map +1 -1
- package/dist/entities/menu-item-metadata.entity.js +4 -4
- package/dist/entities/menu-item-metadata.entity.js.map +1 -1
- package/dist/entities/model-metadata.entity.d.ts +2 -0
- package/dist/entities/model-metadata.entity.d.ts.map +1 -1
- package/dist/entities/model-metadata.entity.js +11 -3
- package/dist/entities/model-metadata.entity.js.map +1 -1
- package/dist/entities/mq-message-queue.entity.js +1 -1
- package/dist/entities/mq-message-queue.entity.js.map +1 -1
- package/dist/entities/mq-message.entity.d.ts +3 -3
- package/dist/entities/mq-message.entity.d.ts.map +1 -1
- package/dist/entities/mq-message.entity.js +10 -10
- package/dist/entities/mq-message.entity.js.map +1 -1
- package/dist/entities/saved-filters.entity.js +4 -4
- package/dist/entities/saved-filters.entity.js.map +1 -1
- package/dist/entities/scheduled-job.entity.js +4 -4
- package/dist/entities/scheduled-job.entity.js.map +1 -1
- package/dist/entities/security-rule.entity.js +2 -2
- package/dist/entities/security-rule.entity.js.map +1 -1
- package/dist/entities/setting.entity.js +2 -2
- package/dist/entities/setting.entity.js.map +1 -1
- package/dist/entities/sms-template.entity.js +2 -2
- package/dist/entities/sms-template.entity.js.map +1 -1
- package/dist/entities/user-activity-history.entity.d.ts.map +1 -1
- package/dist/entities/user-activity-history.entity.js +1 -1
- package/dist/entities/user-activity-history.entity.js.map +1 -1
- package/dist/entities/user-view-metadata.entity.js +2 -2
- package/dist/entities/user-view-metadata.entity.js.map +1 -1
- package/dist/entities/user.entity.js +13 -15
- package/dist/entities/user.entity.js.map +1 -1
- package/dist/entities/view-metadata.entity.js +3 -3
- package/dist/entities/view-metadata.entity.js.map +1 -1
- package/dist/helpers/date.helper.d.ts +1 -1
- package/dist/helpers/date.helper.d.ts.map +1 -1
- package/dist/helpers/date.helper.js +24 -2
- package/dist/helpers/date.helper.js.map +1 -1
- package/dist/helpers/model-metadata-helper.service.d.ts +4 -1
- package/dist/helpers/model-metadata-helper.service.d.ts.map +1 -1
- package/dist/helpers/model-metadata-helper.service.js +48 -30
- package/dist/helpers/model-metadata-helper.service.js.map +1 -1
- package/dist/helpers/module.helper.d.ts.map +1 -1
- package/dist/helpers/module.helper.js +1 -3
- package/dist/helpers/module.helper.js.map +1 -1
- package/dist/helpers/schematic.service.d.ts +9 -3
- package/dist/helpers/schematic.service.d.ts.map +1 -1
- package/dist/helpers/schematic.service.js +49 -32
- package/dist/helpers/schematic.service.js.map +1 -1
- package/dist/helpers/solid-registry.d.ts +3 -2
- package/dist/helpers/solid-registry.d.ts.map +1 -1
- package/dist/helpers/solid-registry.js +10 -0
- package/dist/helpers/solid-registry.js.map +1 -1
- package/dist/helpers/typeorm-db-helper.d.ts +3 -0
- package/dist/helpers/typeorm-db-helper.d.ts.map +1 -0
- package/dist/helpers/typeorm-db-helper.js +24 -0
- package/dist/helpers/typeorm-db-helper.js.map +1 -0
- package/dist/index.d.ts +4 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -1
- package/dist/index.js.map +1 -1
- package/dist/interfaces.d.ts +3 -0
- package/dist/interfaces.d.ts.map +1 -1
- package/dist/interfaces.js.map +1 -1
- package/dist/jobs/database/trigger-mcp-client-subscriber-database.service.d.ts.map +1 -1
- package/dist/jobs/database/trigger-mcp-client-subscriber-database.service.js +6 -1
- package/dist/jobs/database/trigger-mcp-client-subscriber-database.service.js.map +1 -1
- package/dist/seeders/module-metadata-seeder.service.d.ts +1 -1
- package/dist/seeders/module-metadata-seeder.service.d.ts.map +1 -1
- package/dist/seeders/module-metadata-seeder.service.js +39 -17
- package/dist/seeders/module-metadata-seeder.service.js.map +1 -1
- package/dist/seeders/seed-data/solid-core-metadata.json +53 -468
- package/dist/seeders/system-fields-seeder.service.d.ts.map +1 -1
- package/dist/seeders/system-fields-seeder.service.js +1 -1
- package/dist/seeders/system-fields-seeder.service.js.map +1 -1
- package/dist/services/ai-interaction.service.js +1 -1
- package/dist/services/ai-interaction.service.js.map +1 -1
- package/dist/services/computed-fields/entity/alpha-num-external-id-computed-field-provider.d.ts.map +1 -1
- package/dist/services/computed-fields/entity/alpha-num-external-id-computed-field-provider.js +6 -4
- package/dist/services/computed-fields/entity/alpha-num-external-id-computed-field-provider.js.map +1 -1
- package/dist/services/crud-helper.service.d.ts +8 -0
- package/dist/services/crud-helper.service.d.ts.map +1 -1
- package/dist/services/crud-helper.service.js +28 -5
- package/dist/services/crud-helper.service.js.map +1 -1
- package/dist/services/crud.service.d.ts +4 -1
- package/dist/services/crud.service.d.ts.map +1 -1
- package/dist/services/crud.service.js +87 -7
- package/dist/services/crud.service.js.map +1 -1
- package/dist/services/field-metadata.service.d.ts +143 -6
- package/dist/services/field-metadata.service.d.ts.map +1 -1
- package/dist/services/field-metadata.service.js +211 -56
- package/dist/services/field-metadata.service.js.map +1 -1
- package/dist/services/menu-item-metadata.service.d.ts +3 -1
- package/dist/services/menu-item-metadata.service.d.ts.map +1 -1
- package/dist/services/menu-item-metadata.service.js +31 -11
- package/dist/services/menu-item-metadata.service.js.map +1 -1
- package/dist/services/model-metadata.service.d.ts.map +1 -1
- package/dist/services/model-metadata.service.js +14 -3
- package/dist/services/model-metadata.service.js.map +1 -1
- package/dist/services/mq-message.service.d.ts.map +1 -1
- package/dist/services/mq-message.service.js +3 -4
- package/dist/services/mq-message.service.js.map +1 -1
- package/dist/services/queues/publisher-factory.service.d.ts.map +1 -1
- package/dist/services/queues/publisher-factory.service.js +4 -0
- package/dist/services/queues/publisher-factory.service.js.map +1 -1
- package/dist/{providers → services/selection-providers}/list-of-values-selection-providers.service.d.ts +2 -2
- package/dist/services/selection-providers/list-of-values-selection-providers.service.d.ts.map +1 -0
- package/dist/{providers → services/selection-providers}/list-of-values-selection-providers.service.js +3 -3
- package/dist/services/selection-providers/list-of-values-selection-providers.service.js.map +1 -0
- package/dist/services/selection-providers/pseudo-foreign-key-selection-provider.service.d.ts +20 -0
- package/dist/services/selection-providers/pseudo-foreign-key-selection-provider.service.d.ts.map +1 -0
- package/dist/services/selection-providers/pseudo-foreign-key-selection-provider.service.js +87 -0
- package/dist/services/selection-providers/pseudo-foreign-key-selection-provider.service.js.map +1 -0
- package/dist/services/setting.service.d.ts.map +1 -1
- package/dist/services/setting.service.js +2 -1
- package/dist/services/setting.service.js.map +1 -1
- package/dist/services/solid-introspect.service.d.ts +19 -3
- package/dist/services/solid-introspect.service.d.ts.map +1 -1
- package/dist/services/solid-introspect.service.js +83 -11
- package/dist/services/solid-introspect.service.js.map +1 -1
- package/dist/services/view-metadata.service.d.ts +3 -1
- package/dist/services/view-metadata.service.d.ts.map +1 -1
- package/dist/services/view-metadata.service.js +31 -5
- package/dist/services/view-metadata.service.js.map +1 -1
- package/dist/solid-core.module.d.ts.map +1 -1
- package/dist/solid-core.module.js +5 -1
- package/dist/solid-core.module.js.map +1 -1
- package/dist/subscribers/audit.subscriber.d.ts +3 -2
- package/dist/subscribers/audit.subscriber.d.ts.map +1 -1
- package/dist/subscribers/audit.subscriber.js +6 -12
- package/dist/subscribers/audit.subscriber.js.map +1 -1
- package/dist/subscribers/computed-entity-field.subscriber.d.ts +3 -2
- package/dist/subscribers/computed-entity-field.subscriber.d.ts.map +1 -1
- package/dist/subscribers/computed-entity-field.subscriber.js +7 -9
- package/dist/subscribers/computed-entity-field.subscriber.js.map +1 -1
- package/dist/subscribers/created-by-updated-by.subscriber.d.ts +4 -2
- package/dist/subscribers/created-by-updated-by.subscriber.d.ts.map +1 -1
- package/dist/subscribers/created-by-updated-by.subscriber.js +10 -8
- package/dist/subscribers/created-by-updated-by.subscriber.js.map +1 -1
- package/dist/subscribers/field-metadata.subscriber.d.ts.map +1 -1
- package/dist/subscribers/field-metadata.subscriber.js +0 -1
- package/dist/subscribers/field-metadata.subscriber.js.map +1 -1
- package/dist/subscribers/model-metadata.subscriber.d.ts.map +1 -1
- package/dist/subscribers/model-metadata.subscriber.js +3 -2
- package/dist/subscribers/model-metadata.subscriber.js.map +1 -1
- package/dist/subscribers/soft-delete-aware-event.subscriber.d.ts +3 -2
- package/dist/subscribers/soft-delete-aware-event.subscriber.d.ts.map +1 -1
- package/dist/subscribers/soft-delete-aware-event.subscriber.js +6 -11
- package/dist/subscribers/soft-delete-aware-event.subscriber.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +1 -1
- package/sql/mssql/proc_CleanupModelMetadata.sql +175 -0
- package/sql/mssql/proc_CleanupModuleMetadata.sql +78 -0
- package/sql/mssql/scratchpad.sql +10 -0
- package/sql/postgres/proc_CleanupModelMetadata.sql +148 -0
- package/sql/postgres/proc_CleanupModuleMetadata.sql +50 -0
- package/sql/postgres/scratchpad.sql +12 -0
- package/sql-server-changes.txt +88 -0
- package/src/commands/mcp.command.ts +215 -0
- package/src/commands/refresh-model.command.ts +37 -5
- package/src/commands/remove-fields.command.ts +1 -1
- package/src/commands/seed.command.ts +34 -15
- package/src/controllers/authentication.controller.ts +1 -1
- package/src/controllers/email-template.controller.ts +1 -1
- package/src/controllers/field-metadata.controller.ts +7 -1
- package/src/controllers/media-storage-provider-metadata.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/otp-authentication.controller.ts +1 -1
- package/src/controllers/service.controller.ts +1 -1
- package/src/controllers/sms-template.controller.ts +1 -1
- package/src/controllers/test-queue.controller.ts +1 -1
- package/src/controllers/test.controller.ts +1 -1
- package/src/dtos/create-ai-interaction.dto.ts +16 -9
- package/src/dtos/create-field-metadata.dto.ts +42 -12
- package/src/dtos/create-import-transaction.dto.ts +0 -4
- package/src/dtos/create-model-metadata.dto.ts +10 -0
- package/src/dtos/create-role-metadata.dto.ts +8 -2
- package/src/dtos/resolve-s3-url.dto.ts +33 -0
- package/src/dtos/update-ai-interaction.dto.ts +16 -9
- package/src/dtos/update-field-metadata.dto.ts +1 -2
- package/src/dtos/update-import-transaction.dto.ts +0 -4
- package/src/entities/action-metadata.entity.ts +4 -4
- package/src/entities/ai-interaction.entity.ts +16 -12
- package/src/entities/chatter-message-details.entity.ts +18 -18
- package/src/entities/chatter-message.entity.ts +2 -2
- package/src/entities/common.entity.ts +19 -10
- package/src/entities/dashboard-question-sql-dataset-config.entity.ts +2 -2
- package/src/entities/dashboard-question.entity.ts +3 -3
- package/src/entities/dashboard-variable.entity.ts +3 -3
- package/src/entities/dashboard.entity.ts +1 -1
- package/src/entities/email-template.entity.ts +4 -3
- package/src/entities/export-template.entity.ts +2 -2
- package/src/entities/export-transaction.entity.ts +2 -2
- package/src/entities/field-metadata.entity.ts +6 -3
- package/src/entities/import-transaction-error-log.entity.ts +2 -2
- package/src/entities/import-transaction.entity.ts +2 -5
- package/src/entities/legacy-common-with-id.entity.ts +11 -0
- package/src/entities/legacy-common.entity.ts +57 -0
- package/src/entities/list-of-values.entity.ts +2 -2
- package/src/entities/locale.entity.ts +1 -1
- package/src/entities/media.entity.ts +25 -25
- package/src/entities/menu-item-metadata.entity.ts +4 -4
- package/src/entities/model-metadata.entity.ts +9 -2
- package/src/entities/mq-message-queue.entity.ts +1 -1
- package/src/entities/mq-message.entity.ts +34 -34
- package/src/entities/saved-filters.entity.ts +5 -5
- package/src/entities/scheduled-job.entity.ts +4 -4
- package/src/entities/security-rule.entity.ts +2 -2
- package/src/entities/setting.entity.ts +2 -2
- package/src/entities/sms-template.entity.ts +2 -2
- package/src/entities/user-activity-history.entity.ts +14 -14
- package/src/entities/user-view-metadata.entity.ts +2 -2
- package/src/entities/user.entity.ts +15 -15
- package/src/entities/view-metadata.entity.ts +3 -3
- package/src/helpers/date.helper.ts +31 -10
- package/src/helpers/model-metadata-helper.service.ts +63 -32
- package/src/helpers/module.helper.ts +4 -3
- package/src/helpers/schematic.service.ts +72 -46
- package/src/helpers/solid-registry.ts +14 -2
- package/src/helpers/typeorm-db-helper.ts +26 -0
- package/src/index.ts +4 -1
- package/src/interfaces.ts +3 -0
- package/src/jobs/database/trigger-mcp-client-subscriber-database.service.ts +17 -21
- package/src/seeders/module-metadata-seeder.service.ts +73 -29
- package/src/seeders/seed-data/solid-core-metadata.json +55 -470
- package/src/seeders/system-fields-seeder.service.ts +34 -35
- package/src/services/ai-interaction.service.ts +1 -1
- package/src/services/computed-fields/entity/alpha-num-external-id-computed-field-provider.ts +13 -9
- package/src/services/crud-helper.service.ts +32 -4
- package/src/services/crud.service.ts +158 -10
- package/src/services/field-metadata.service.ts +272 -67
- package/src/services/menu-item-metadata.service.ts +81 -50
- package/src/services/model-metadata.service.ts +18 -3
- package/src/services/mq-message.service.ts +16 -15
- package/src/services/queues/publisher-factory.service.ts +2 -1
- package/src/{providers → services/selection-providers}/list-of-values-selection-providers.service.ts +2 -2
- package/src/services/selection-providers/pseudo-foreign-key-selection-provider.service.ts +94 -0
- package/src/services/setting.service.ts +13 -10
- package/src/services/solid-introspect.service.ts +110 -10
- package/src/services/view-metadata.service.ts +48 -18
- package/src/solid-core.module.ts +5 -1
- package/src/subscribers/audit.subscriber.ts +12 -8
- package/src/subscribers/computed-entity-field.subscriber.ts +13 -7
- package/src/subscribers/created-by-updated-by.subscriber.ts +14 -8
- package/src/subscribers/field-metadata.subscriber.ts +1 -1
- package/src/subscribers/model-metadata.subscriber.ts +4 -2
- package/src/subscribers/soft-delete-aware-event.subscriber.ts +12 -6
- package/dist/providers/list-of-values-selection-providers.service.d.ts.map +0 -1
- package/dist/providers/list-of-values-selection-providers.service.js.map +0 -1
- package/src/commands/ingest-rag-chunking-strategy-for.md +0 -224
- package/src/entities/user.entity.ts.bkp +0 -144
- package/src/services/docker exec -it mssql //" +0 -8
|
@@ -1,18 +1,24 @@
|
|
|
1
|
-
import { Injectable } from "@nestjs/common";
|
|
1
|
+
import { Injectable, Scope } from "@nestjs/common";
|
|
2
2
|
import { InjectDataSource } from "@nestjs/typeorm";
|
|
3
3
|
import { User } from "src/entities/user.entity";
|
|
4
4
|
import { ActiveUserData } from "src/interfaces/active-user-data.interface";
|
|
5
5
|
import { RequestContextService } from "src/services/request-context.service";
|
|
6
6
|
import { DataSource, EntitySubscriberInterface, EventSubscriber, InsertEvent, UpdateEvent } from "typeorm";
|
|
7
7
|
|
|
8
|
-
@Injectable()
|
|
9
|
-
@EventSubscriber()
|
|
8
|
+
@Injectable({scope: Scope.TRANSIENT})
|
|
9
|
+
// @EventSubscriber()
|
|
10
10
|
export class CreatedByUpdatedBySubscriber implements EntitySubscriberInterface {
|
|
11
|
+
private dataSource: DataSource;
|
|
11
12
|
constructor(
|
|
12
13
|
@InjectDataSource()
|
|
13
|
-
private readonly
|
|
14
|
+
private readonly defaultDataSource: DataSource,
|
|
14
15
|
private readonly requestContextService: RequestContextService,
|
|
15
16
|
) {
|
|
17
|
+
// this.dataSource.subscribers.push(this);
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
bindToDataSource(dataSource: DataSource) {
|
|
21
|
+
this.dataSource = dataSource;
|
|
16
22
|
this.dataSource.subscribers.push(this);
|
|
17
23
|
}
|
|
18
24
|
|
|
@@ -36,16 +42,16 @@ export class CreatedByUpdatedBySubscriber implements EntitySubscriberInterface {
|
|
|
36
42
|
|
|
37
43
|
const loadedUser = await this.loadUser(activeUserOrUndefined as unknown as ActiveUserData);
|
|
38
44
|
if (isInsert) {
|
|
39
|
-
event.entity.createdBy = loadedUser;
|
|
40
|
-
event.entity.updatedBy = loadedUser; // For insert, we set both createdBy and updatedBy to the same user
|
|
45
|
+
event.entity.createdBy = loadedUser?.id;
|
|
46
|
+
event.entity.updatedBy = loadedUser?.id; // For insert, we set both createdBy and updatedBy to the same user
|
|
41
47
|
}
|
|
42
48
|
else {
|
|
43
|
-
event.entity.updatedBy = loadedUser;
|
|
49
|
+
event.entity.updatedBy = loadedUser?.id;
|
|
44
50
|
}
|
|
45
51
|
}
|
|
46
52
|
|
|
47
53
|
private async loadUser(activeUser: ActiveUserData): Promise<User> {
|
|
48
|
-
const userRepo = this.
|
|
54
|
+
const userRepo = this.defaultDataSource.getRepository(User); // Assuming 'User' is the entity name for users in your application
|
|
49
55
|
const loadedUser = await userRepo.findOne({
|
|
50
56
|
where: { id: activeUser.sub }, // Assuming 'sub' is the user ID in the JWT token
|
|
51
57
|
});
|
|
@@ -4,7 +4,7 @@ import { ModelMetadataHelperService } from 'src/helpers/model-metadata-helper.se
|
|
|
4
4
|
import { DataSource, EntitySubscriberInterface, EventSubscriber, InsertEvent, UpdateEvent } from 'typeorm';
|
|
5
5
|
import { FieldMetadata } from '../entities/field-metadata.entity';
|
|
6
6
|
|
|
7
|
-
@EventSubscriber()
|
|
7
|
+
// @EventSubscriber()
|
|
8
8
|
@Injectable()
|
|
9
9
|
export class FieldMetadataSubscriber implements EntitySubscriberInterface<FieldMetadata> {
|
|
10
10
|
private readonly logger = new Logger(FieldMetadataSubscriber.name);
|
|
@@ -5,7 +5,7 @@ import { DataSource, EntitySubscriberInterface, EventSubscriber, InsertEvent } f
|
|
|
5
5
|
import { FieldMetadata } from '../entities/field-metadata.entity';
|
|
6
6
|
import { ModelMetadata } from '../entities/model-metadata.entity';
|
|
7
7
|
|
|
8
|
-
@EventSubscriber()
|
|
8
|
+
// @EventSubscriber()
|
|
9
9
|
@Injectable()
|
|
10
10
|
export class ModelMetadataSubscriber implements EntitySubscriberInterface<ModelMetadata> {
|
|
11
11
|
private readonly logger = new Logger(ModelMetadataSubscriber.name);
|
|
@@ -35,7 +35,9 @@ export class ModelMetadataSubscriber implements EntitySubscriberInterface<ModelM
|
|
|
35
35
|
|
|
36
36
|
|
|
37
37
|
private systemFieldMetadataToBeAdded(event: InsertEvent<ModelMetadata>) {
|
|
38
|
-
const
|
|
38
|
+
const isLegacyTable = event.entity.isLegacyTable;
|
|
39
|
+
const isLegacyTableWithId = event.entity.isLegacyTableWithId;
|
|
40
|
+
const systemFieldsDefaultMetadata = this.modelHelperService.getSystemFieldsMetadata(isLegacyTable, isLegacyTableWithId);
|
|
39
41
|
// map and add the model as event.entity for the above metadata
|
|
40
42
|
const systemFieldsMetadata = systemFieldsDefaultMetadata.map(field => ({
|
|
41
43
|
...field,
|
|
@@ -1,19 +1,25 @@
|
|
|
1
|
-
import { Injectable, Logger, NotFoundException } from "@nestjs/common";
|
|
1
|
+
import { Injectable, Logger, NotFoundException, Scope } from "@nestjs/common";
|
|
2
2
|
import { InjectDataSource } from "@nestjs/typeorm";
|
|
3
3
|
import { DataSource, EntitySubscriberInterface, EventSubscriber, RecoverEvent, SoftRemoveEvent } from "typeorm";
|
|
4
4
|
|
|
5
5
|
|
|
6
|
-
@EventSubscriber()
|
|
7
|
-
@Injectable()
|
|
6
|
+
// @EventSubscriber()
|
|
7
|
+
@Injectable({scope: Scope.TRANSIENT})
|
|
8
8
|
export class SoftDeleteAwareEventSubscriber implements EntitySubscriberInterface {
|
|
9
9
|
private readonly logger = new Logger(SoftDeleteAwareEventSubscriber.name);
|
|
10
|
+
private dataSource: DataSource;
|
|
10
11
|
constructor(
|
|
11
|
-
@InjectDataSource()
|
|
12
|
-
private readonly dataSource: DataSource,
|
|
12
|
+
// @InjectDataSource()
|
|
13
|
+
// private readonly dataSource: DataSource,
|
|
13
14
|
) {
|
|
14
|
-
this.dataSource.subscribers.push(this);
|
|
15
|
+
// this.dataSource.subscribers.push(this);
|
|
15
16
|
}
|
|
16
17
|
|
|
18
|
+
bindToDataSource(dataSource: DataSource) {
|
|
19
|
+
this.dataSource = dataSource;
|
|
20
|
+
this.dataSource.subscribers.push(this);
|
|
21
|
+
}
|
|
22
|
+
|
|
17
23
|
beforeSoftRemove(event: SoftRemoveEvent<any>): Promise<any> | void {
|
|
18
24
|
if (!event.entity) return;
|
|
19
25
|
const entity = event.entity;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"list-of-values-selection-providers.service.d.ts","sourceRoot":"","sources":["../../src/providers/list-of-values-selection-providers.service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,oCAAoC,CAAC;AAIzE,OAAO,EAAE,kBAAkB,EAAE,yBAAyB,EAAE,wBAAwB,EAAE,MAAM,eAAe,CAAC;AAIxG,UAAU,2BAA4B,SAAQ,yBAAyB;IACnE,IAAI,EAAE,MAAM,CAAC;CAChB;AAID,qBAEa,6BAA8B,YAAW,kBAAkB,CAAC,2BAA2B,CAAC;IACrF,OAAO,CAAC,QAAQ,CAAC,mBAAmB;gBAAnB,mBAAmB,EAAE,mBAAmB;IAErE,IAAI,IAAI,MAAM;IAId,IAAI,IAAI,MAAM;IAId,KAAK,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,2BAA2B,GAAG,OAAO,CAAC,wBAAwB,GAAG,GAAG,CAAC;IAMhG,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,2BAA2B,GAAG,OAAO,CAAC,SAAS,wBAAwB,EAAE,CAAC;CA0B/G"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"list-of-values-selection-providers.service.js","sourceRoot":"","sources":["../../src/providers/list-of-values-selection-providers.service.ts"],"names":[],"mappings":";;;;;;;;;;;;AACA,+EAAyE;AAEzE,6FAAgF;AAChF,2CAA4C;AAG5C,iEAA4D;AAM5D,MAAM,aAAa,GAAG,GAAG,CAAC;AAInB,IAAM,6BAA6B,GAAnC,MAAM,6BAA6B;IACtC,YAA6B,mBAAwC;QAAxC,wBAAmB,GAAnB,mBAAmB,CAAqB;IAAI,CAAC;IAE1E,IAAI;QACA,OAAO,+BAA+B,CAAC;IAC3C,CAAC;IAED,IAAI;QACA,OAAO,wBAAwB,CAAC;IACpC,CAAC;IAED,KAAK,CAAC,WAAmB,EAAE,IAAiC;QACxD,MAAM,GAAG,GAAG,IAAI,CAAC,mBAAmB,CAAC,qBAAqB,CAAC,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,CAAA;QAElF,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC/C,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,KAAa,EAAE,IAAiC;QACzD,MAAM,gBAAgB,GAAG,IAAI,kCAAc,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC;QAC9D,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACZ,gBAAgB,CAAC,OAAO,GAAG;gBACvB,IAAI,EAAE;oBACF,GAAG,EAAE,IAAI,CAAC,IAAI;iBACjB;aACJ,CAAC;QACN,CAAC;QACD,IAAI,KAAK,EAAE,CAAC;YACR,gBAAgB,CAAC,OAAO,GAAG;gBACvB,GAAG,gBAAgB,CAAC,OAAO;gBAC3B,OAAO,EAAE;oBACL,UAAU,EAAE,IAAI,KAAK,GAAG;iBAC3B;aACJ,CAAC;QACN,CAAC;QACD,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QACnE,MAAM,eAAe,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;YAC3C,OAAO;gBACH,KAAK,EAAE,GAAG,CAAC,OAAO;gBAClB,KAAK,EAAE,GAAG,CAAC,KAAK;aACnB,CAAA;QACL,CAAC,CAAC,CAAC;QACH,OAAO,eAAe,CAAC;IAC3B,CAAC;CACJ,CAAA;AA3CY,sEAA6B;wCAA7B,6BAA6B;IAFzC,IAAA,gDAAiB,GAAE;IACnB,IAAA,mBAAU,GAAE;qCAEyC,4CAAmB;GAD5D,6BAA6B,CA2CzC","sourcesContent":["\nimport { ListOfValuesService } from \"../services/list-of-values.service\";\nimport { PaginationQueryDto } from \"src/dtos/pagination-query.dto\";\nimport { SelectionProvider } from \"src/decorators/selection-provider.decorator\";\nimport { Injectable } from \"@nestjs/common\";\nimport { ISelectionProvider, ISelectionProviderContext, ISelectionProviderValues } from \"../interfaces\";\nimport { filter } from \"rxjs\";\nimport { BasicFilterDto } from \"src/dtos/basic-filters.dto\";\n\ninterface ListOfValuesProviderContext extends ISelectionProviderContext {\n type: string;\n}\n\nconst DEFAULT_LIMIT = 100;\n\n@SelectionProvider()\n@Injectable()\nexport class ListOfValuesSelectionProvider implements ISelectionProvider<ListOfValuesProviderContext> {\n constructor(private readonly listOfValuesService: ListOfValuesService) { }\n\n name(): string {\n return 'ListOfValuesSelectionProvider';\n }\n\n help(): string {\n return \"# This is lov proivder\";\n }\n\n value(optionValue: string, ctxt: ListOfValuesProviderContext): Promise<ISelectionProviderValues | any> {\n const lov = this.listOfValuesService.findOneByValueAndType(optionValue, ctxt.type)\n\n throw new Error(\"Method not implemented.\");\n }\n\n async values(query: string, ctxt: ListOfValuesProviderContext): Promise<readonly ISelectionProviderValues[]> {\n const basicFilterQuery = new BasicFilterDto(DEFAULT_LIMIT, 0);\n if (ctxt.type) {\n basicFilterQuery.filters = {\n type: {\n $eq: ctxt.type\n }\n };\n }\n if (query) {\n basicFilterQuery.filters = {\n ...basicFilterQuery.filters,\n display: {\n $containsi: `%${query}%`\n }\n };\n }\n const lovs = await this.listOfValuesService.find(basicFilterQuery);\n const selectionValues = lovs.records.map(lov => {\n return {\n label: lov.display,\n value: lov.value\n }\n });\n return selectionValues;\n }\n}"]}
|
|
@@ -1,224 +0,0 @@
|
|
|
1
|
-
# Optimized RAG Chunking Strategy for Solid No-Code Platform Metadata
|
|
2
|
-
|
|
3
|
-
## Executive Summary
|
|
4
|
-
|
|
5
|
-
This document outlines an intelligent chunking strategy for ingesting Solid no-code platform metadata into R2R vector database to enable effective retrieval for LLM-powered MCP tools.
|
|
6
|
-
|
|
7
|
-
## System Architecture Context
|
|
8
|
-
|
|
9
|
-
**Platform**: Solid no-code platform with metadata-driven code generation
|
|
10
|
-
**RAG System**: R2R (https://r2r-docs.sciphi.ai/)
|
|
11
|
-
**Integration**: MCP client → MCP server → LLM tools (createModule, createModel, addField, etc.)
|
|
12
|
-
**Workflow**: User chat → tool call → RAG retrieval → LLM context → metadata JSON generation → database seeding → code generation
|
|
13
|
-
|
|
14
|
-
## Chunking Strategy
|
|
15
|
-
|
|
16
|
-
### 1. Hierarchical Semantic Chunking
|
|
17
|
-
|
|
18
|
-
**Primary Strategy**: Create chunks based on logical metadata boundaries while maintaining semantic relationships.
|
|
19
|
-
|
|
20
|
-
#### Level 1: Module-Level Chunks
|
|
21
|
-
```
|
|
22
|
-
Chunk Type: "module_overview"
|
|
23
|
-
Content: Module metadata + high-level model summaries
|
|
24
|
-
Size: ~500-800 tokens
|
|
25
|
-
Purpose: Provide context for module-level operations
|
|
26
|
-
```
|
|
27
|
-
|
|
28
|
-
#### Level 2: Model-Level Chunks
|
|
29
|
-
```
|
|
30
|
-
Chunk Type: "model_definition"
|
|
31
|
-
Content: Complete model with all fields + relationships
|
|
32
|
-
Size: ~800-1200 tokens per model
|
|
33
|
-
Purpose: Support model creation/modification operations
|
|
34
|
-
```
|
|
35
|
-
|
|
36
|
-
#### Level 3: Field-Level Chunks
|
|
37
|
-
```
|
|
38
|
-
Chunk Type: "field_specification"
|
|
39
|
-
Content: Individual field + its configuration + usage patterns
|
|
40
|
-
Size: ~200-400 tokens per field
|
|
41
|
-
Purpose: Enable precise field-level modifications
|
|
42
|
-
```
|
|
43
|
-
|
|
44
|
-
#### Level 4: Cross-Reference Chunks
|
|
45
|
-
```
|
|
46
|
-
Chunk Type: "relationship_mapping"
|
|
47
|
-
Content: Relations between models + dependency chains
|
|
48
|
-
Size: ~300-600 tokens
|
|
49
|
-
Purpose: Maintain referential integrity during modifications
|
|
50
|
-
```
|
|
51
|
-
|
|
52
|
-
### 2. Functional Domain Chunks
|
|
53
|
-
|
|
54
|
-
#### UI/UX Configuration Chunks
|
|
55
|
-
```
|
|
56
|
-
Chunk Type: "ui_configuration"
|
|
57
|
-
Content: Views + layouts + actions + menus (grouped by feature)
|
|
58
|
-
Size: ~600-1000 tokens
|
|
59
|
-
Purpose: Support UI generation and modification
|
|
60
|
-
```
|
|
61
|
-
|
|
62
|
-
#### Security & Permissions Chunks
|
|
63
|
-
```
|
|
64
|
-
Chunk Type: "security_rules"
|
|
65
|
-
Content: Roles + permissions + security rules (grouped)
|
|
66
|
-
Size: ~400-800 tokens
|
|
67
|
-
Purpose: Maintain security context during operations
|
|
68
|
-
```
|
|
69
|
-
|
|
70
|
-
#### Integration Chunks
|
|
71
|
-
```
|
|
72
|
-
Chunk Type: "system_integration"
|
|
73
|
-
Content: Email/SMS templates + media providers + scheduled jobs
|
|
74
|
-
Size: ~300-600 tokens per integration type
|
|
75
|
-
Purpose: Support system-level configurations
|
|
76
|
-
```
|
|
77
|
-
|
|
78
|
-
### 3. Chunk Metadata Enhancement
|
|
79
|
-
|
|
80
|
-
Each chunk should include structured metadata:
|
|
81
|
-
|
|
82
|
-
```json
|
|
83
|
-
{
|
|
84
|
-
"chunk_id": "unique_identifier",
|
|
85
|
-
"chunk_type": "model_definition|field_specification|ui_configuration|etc",
|
|
86
|
-
"module_name": "fees-portal",
|
|
87
|
-
"model_name": "institute|feeType|etc",
|
|
88
|
-
"component_names": ["field1", "field2"],
|
|
89
|
-
"relationships": ["related_model1", "related_model2"],
|
|
90
|
-
"last_modified": "timestamp",
|
|
91
|
-
"version": "semantic_version",
|
|
92
|
-
"dependencies": ["required_chunks"],
|
|
93
|
-
"keywords": ["domain_specific_terms"]
|
|
94
|
-
}
|
|
95
|
-
```
|
|
96
|
-
|
|
97
|
-
### 4. Overlap Strategy for Context Preservation
|
|
98
|
-
|
|
99
|
-
- **Boundary Overlap**: 50-100 token overlap between related chunks
|
|
100
|
-
- **Reference Preservation**: Include parent/child context in each chunk
|
|
101
|
-
- **Relationship Chains**: Maintain connection information across chunk boundaries
|
|
102
|
-
|
|
103
|
-
## R2R Integration Implementation
|
|
104
|
-
|
|
105
|
-
### Document Ingestion API Usage
|
|
106
|
-
|
|
107
|
-
Based on R2R documentation, use these endpoints:
|
|
108
|
-
|
|
109
|
-
#### Initial Ingestion
|
|
110
|
-
```bash
|
|
111
|
-
POST /v1/documents
|
|
112
|
-
Content-Type: multipart/form-data
|
|
113
|
-
|
|
114
|
-
# Ingest chunked documents with metadata
|
|
115
|
-
curl -X POST "http://localhost:7272/v1/documents" \
|
|
116
|
-
-H "Authorization: Bearer <token>" \
|
|
117
|
-
-F "file=@chunk_module_overview.json" \
|
|
118
|
-
-F "metadata={\"chunk_type\":\"module_overview\",\"module\":\"fees-portal\"}"
|
|
119
|
-
```
|
|
120
|
-
|
|
121
|
-
#### Update Existing Documents
|
|
122
|
-
```bash
|
|
123
|
-
PUT /v1/documents/{document_id}
|
|
124
|
-
Content-Type: multipart/form-data
|
|
125
|
-
|
|
126
|
-
# Update specific chunks when metadata changes
|
|
127
|
-
curl -X PUT "http://localhost:7272/v1/documents/{doc_id}" \
|
|
128
|
-
-H "Authorization: Bearer <token>" \
|
|
129
|
-
-F "file=@updated_chunk.json" \
|
|
130
|
-
-F "metadata={\"version\":\"1.1.0\",\"last_modified\":\"2025-01-15T10:30:00Z\"}"
|
|
131
|
-
```
|
|
132
|
-
|
|
133
|
-
### CLI Ingestion Command Structure
|
|
134
|
-
|
|
135
|
-
Create a CLI command for automated ingestion:
|
|
136
|
-
|
|
137
|
-
```bash
|
|
138
|
-
# Initial ingestion
|
|
139
|
-
solid-cli rag:ingest --metadata-file ./metadata.json --strategy hierarchical
|
|
140
|
-
|
|
141
|
-
# Update ingestion (incremental)
|
|
142
|
-
solid-cli rag:update --changed-components "institute.fields,views" --strategy differential
|
|
143
|
-
|
|
144
|
-
# Full re-ingestion
|
|
145
|
-
solid-cli rag:reingest --metadata-file ./metadata.json --force
|
|
146
|
-
```
|
|
147
|
-
|
|
148
|
-
## Retrieval Optimization
|
|
149
|
-
|
|
150
|
-
### Query Enhancement Strategies
|
|
151
|
-
|
|
152
|
-
1. **Semantic Search**: Use embedding-based retrieval for concept matching
|
|
153
|
-
2. **Hybrid Search**: Combine semantic + keyword search for precision
|
|
154
|
-
3. **Contextual Filtering**: Apply metadata filters based on operation type
|
|
155
|
-
|
|
156
|
-
### MCP Tool Integration
|
|
157
|
-
|
|
158
|
-
Each MCP tool should specify its retrieval requirements:
|
|
159
|
-
|
|
160
|
-
```python
|
|
161
|
-
# Example for addField tool
|
|
162
|
-
def addField(model_name: str, field_spec: dict):
|
|
163
|
-
# Retrieve relevant chunks
|
|
164
|
-
query = f"model definition {model_name} field types relationships"
|
|
165
|
-
|
|
166
|
-
context_chunks = r2r_client.search(
|
|
167
|
-
query=query,
|
|
168
|
-
filters={
|
|
169
|
-
"chunk_type": ["model_definition", "field_specification"],
|
|
170
|
-
"model_name": model_name,
|
|
171
|
-
"module_name": "fees-portal"
|
|
172
|
-
},
|
|
173
|
-
limit=5
|
|
174
|
-
)
|
|
175
|
-
|
|
176
|
-
# Pass context to LLM for field generation
|
|
177
|
-
return generate_field_json(context_chunks, field_spec)
|
|
178
|
-
```
|
|
179
|
-
|
|
180
|
-
## Versioning & Change Management
|
|
181
|
-
|
|
182
|
-
### Differential Updates
|
|
183
|
-
- Track changes at component level (model, field, view, etc.)
|
|
184
|
-
- Update only affected chunks + dependents
|
|
185
|
-
- Maintain version history for rollback capability
|
|
186
|
-
|
|
187
|
-
### Consistency Checks
|
|
188
|
-
- Validate cross-references after updates
|
|
189
|
-
- Ensure relationship integrity
|
|
190
|
-
- Verify permission consistency
|
|
191
|
-
|
|
192
|
-
## Performance Considerations
|
|
193
|
-
|
|
194
|
-
### Chunk Size Optimization
|
|
195
|
-
- Target 200-1200 tokens per chunk for optimal retrieval
|
|
196
|
-
- Balance between context completeness and search precision
|
|
197
|
-
- Monitor retrieval latency and adjust sizes accordingly
|
|
198
|
-
|
|
199
|
-
### Indexing Strategy
|
|
200
|
-
- Create composite indexes on frequently queried metadata fields
|
|
201
|
-
- Optimize for common query patterns (model + field combinations)
|
|
202
|
-
- Regular index maintenance and optimization
|
|
203
|
-
|
|
204
|
-
## Implementation Checklist
|
|
205
|
-
|
|
206
|
-
- [ ] Implement hierarchical chunking algorithm
|
|
207
|
-
- [ ] Create metadata extraction and enhancement pipeline
|
|
208
|
-
- [ ] Set up R2R ingestion endpoints integration
|
|
209
|
-
- [ ] Build CLI commands for ingestion management
|
|
210
|
-
- [ ] Develop retrieval optimization for each MCP tool
|
|
211
|
-
- [ ] Implement versioning and change tracking
|
|
212
|
-
- [ ] Create monitoring and performance metrics
|
|
213
|
-
- [ ] Test with real metadata updates and tool operations
|
|
214
|
-
|
|
215
|
-
## Success Metrics
|
|
216
|
-
|
|
217
|
-
1. **Retrieval Accuracy**: >95% relevant context retrieval for tool operations
|
|
218
|
-
2. **Update Efficiency**: <30s for incremental metadata updates
|
|
219
|
-
3. **Context Quality**: LLM tools produce correct JSON with minimal hallucination
|
|
220
|
-
4. **System Performance**: <200ms average retrieval time per tool operation
|
|
221
|
-
|
|
222
|
-
---
|
|
223
|
-
|
|
224
|
-
*This strategy ensures your RAG pipeline provides precise, contextual information to your MCP tools while maintaining system performance and update efficiency.*
|
|
@@ -1,144 +0,0 @@
|
|
|
1
|
-
import { CommonEntity } from 'src/entities/common.entity';
|
|
2
|
-
import { Column, Entity, JoinTable, ManyToMany } from 'typeorm';
|
|
3
|
-
import { RoleMetadata } from './role-metadata.entity';
|
|
4
|
-
|
|
5
|
-
@Entity("ss_iam_user")
|
|
6
|
-
export class User extends CommonEntity {
|
|
7
|
-
@Column({ nullable: true })
|
|
8
|
-
fullName: string;
|
|
9
|
-
|
|
10
|
-
@Column({ unique: true })
|
|
11
|
-
username: string;
|
|
12
|
-
|
|
13
|
-
@Column({ unique: true, nullable: true })
|
|
14
|
-
email: string;
|
|
15
|
-
|
|
16
|
-
@Column({ unique: true, nullable: true })
|
|
17
|
-
mobile: string;
|
|
18
|
-
|
|
19
|
-
/**
|
|
20
|
-
* This was kept nullable for users created using provider of type Google etc.
|
|
21
|
-
*/
|
|
22
|
-
@Column({ nullable: true })
|
|
23
|
-
password: string;
|
|
24
|
-
|
|
25
|
-
@Column({ default: false })
|
|
26
|
-
forcePasswordChange: boolean = false;
|
|
27
|
-
|
|
28
|
-
@Column({ name: 'last_login_provider', default: 'local' })
|
|
29
|
-
lastLoginProvider: string;
|
|
30
|
-
|
|
31
|
-
@Column({ name: "access_code", nullable: true })
|
|
32
|
-
accessCode: string;
|
|
33
|
-
|
|
34
|
-
@Column({ name: "google_access_token", nullable: true })
|
|
35
|
-
googleAccessToken: string;
|
|
36
|
-
|
|
37
|
-
@Column({ name: "google_id", nullable: true })
|
|
38
|
-
googleId: string;
|
|
39
|
-
|
|
40
|
-
@Column({ name: "google_profile_picture", nullable: true })
|
|
41
|
-
googleProfilePicture: string;
|
|
42
|
-
|
|
43
|
-
// @Column({ name: "otp", nullable: true })
|
|
44
|
-
// otpOnLogin: string;
|
|
45
|
-
|
|
46
|
-
// @Column({ name: "last_otp_created_at", nullable: true, type: 'timestamp' })
|
|
47
|
-
// lastOtpOnLoginCreatedAt: Date;
|
|
48
|
-
|
|
49
|
-
@Column({ default: false })
|
|
50
|
-
active: boolean;
|
|
51
|
-
|
|
52
|
-
// @Column('json', { nullable: true })
|
|
53
|
-
// @JoinTable(
|
|
54
|
-
// {
|
|
55
|
-
// name: 'ss_iam_user_role_metadata',
|
|
56
|
-
// joinColumn: { name: 'user_id', referencedColumnName: 'id', foreignKeyConstraintName: 'fk_ss_user_role_user_id' },
|
|
57
|
-
// inverseJoinColumn: { name: 'role_id', referencedColumnName: 'id', foreignKeyConstraintName: 'fk_ss_user_role_role_id' }
|
|
58
|
-
// }
|
|
59
|
-
// )
|
|
60
|
-
// @ManyToMany(
|
|
61
|
-
// type => RoleMetadata,
|
|
62
|
-
// (role) => role.users,
|
|
63
|
-
// {
|
|
64
|
-
// cascade: true, // or optionally just insert or update ['insert']
|
|
65
|
-
// }
|
|
66
|
-
// )
|
|
67
|
-
// roles: RoleMetadata[];
|
|
68
|
-
@ManyToMany(() => RoleMetadata, roleMetadata => roleMetadata.users, { cascade: true })
|
|
69
|
-
@JoinTable()
|
|
70
|
-
roles: RoleMetadata[];
|
|
71
|
-
|
|
72
|
-
// @JoinTable(
|
|
73
|
-
// {
|
|
74
|
-
// name: 'ss_user_permission',
|
|
75
|
-
// joinColumn: { name: 'user_id', referencedColumnName: 'id', foreignKeyConstraintName: 'fk_ss_user_permission_role_id' },
|
|
76
|
-
// inverseJoinColumn: { name: 'permission_id', referencedColumnName: 'id', foreignKeyConstraintName: 'fk_ss_user_permission_user_id' }
|
|
77
|
-
// }
|
|
78
|
-
// )
|
|
79
|
-
// @ManyToMany(
|
|
80
|
-
// type => Permission,
|
|
81
|
-
// (permission) => permission.users,
|
|
82
|
-
// {
|
|
83
|
-
// cascade: true, // or optionally just insert or update ['insert']
|
|
84
|
-
// }
|
|
85
|
-
// )
|
|
86
|
-
// permissions: Permission[];
|
|
87
|
-
|
|
88
|
-
// Forgot password fields
|
|
89
|
-
// Email
|
|
90
|
-
@Column({ name: "forgot_password_confirmed_at", nullable: true, type: 'timestamp' })
|
|
91
|
-
forgotPasswordConfirmedAt: Date;
|
|
92
|
-
|
|
93
|
-
@Column({ name: "verification_token_on_forgot_password", nullable: true })
|
|
94
|
-
verificationTokenOnForgotPassword: string;
|
|
95
|
-
|
|
96
|
-
@Column({ name: "verification_token_on_forgot_password_expires_at", nullable: true, type: 'timestamp' })
|
|
97
|
-
verificationTokenOnForgotPasswordExpiresAt: Date;
|
|
98
|
-
|
|
99
|
-
// Verification fields
|
|
100
|
-
// Registration
|
|
101
|
-
// Email
|
|
102
|
-
@Column({ name: "email_verified_on_registration_at", nullable: true, type: 'timestamp' })
|
|
103
|
-
emailVerifiedOnRegistrationAt: Date;
|
|
104
|
-
|
|
105
|
-
@Column({ name: "email_verification_token_on_registration", nullable: true })
|
|
106
|
-
emailVerificationTokenOnRegistration: string;
|
|
107
|
-
|
|
108
|
-
@Column({ name: "email_verification_token_on_registration_expires_at", nullable: true, type: 'timestamp' })
|
|
109
|
-
emailVerificationTokenOnRegistrationExpiresAt: Date;
|
|
110
|
-
|
|
111
|
-
// Mobile
|
|
112
|
-
@Column({ name: "mobile_verified_on_registration_at", nullable: true, type: 'timestamp' })
|
|
113
|
-
mobileVerifiedOnRegistrationAt: Date;
|
|
114
|
-
|
|
115
|
-
@Column({ name: "mobile_verification_token_on_registration", nullable: true })
|
|
116
|
-
mobileVerificationTokenOnRegistration: string;
|
|
117
|
-
|
|
118
|
-
@Column({ name: "mobile_verification_token_on_registration_expires_at", nullable: true, type: 'timestamp' })
|
|
119
|
-
mobileVerificationTokenOnRegistrationExpiresAt: Date;
|
|
120
|
-
|
|
121
|
-
// Login
|
|
122
|
-
// Email
|
|
123
|
-
@Column({ name: "email_verified_on_login_at", nullable: true, type: 'timestamp' })
|
|
124
|
-
emailVerifiedOnLoginAt: Date;
|
|
125
|
-
|
|
126
|
-
@Column({ name: "email_verification_token_on_login", nullable: true })
|
|
127
|
-
emailVerificationTokenOnLogin: string;
|
|
128
|
-
|
|
129
|
-
@Column({ name: "email_verification_token_on_login_expires_at", nullable: true, type: 'timestamp' })
|
|
130
|
-
emailVerificationTokenOnLoginExpiresAt: Date;
|
|
131
|
-
|
|
132
|
-
// Mobile
|
|
133
|
-
@Column({ name: "mobile_verified_on_login_at", nullable: true, type: 'timestamp' })
|
|
134
|
-
mobileVerifiedOnLoginAt: Date;
|
|
135
|
-
|
|
136
|
-
@Column({ name: "mobile_verification_token_on_login", nullable: true })
|
|
137
|
-
mobileVerificationTokenOnLogin: string;
|
|
138
|
-
|
|
139
|
-
@Column({ name: "mobile_verification_token_on_login_expires_at", nullable: true, type: 'timestamp' })
|
|
140
|
-
mobileVerificationTokenOnLoginExpiresAt: Date;
|
|
141
|
-
|
|
142
|
-
@Column({ type: 'jsonb', nullable: true })
|
|
143
|
-
customPayload: any;
|
|
144
|
-
}
|