@solidxai/core 0.1.11-beta.2 → 0.1.11-beta.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (145) hide show
  1. package/dist/commands/migrate-removed-fields.command.d.ts +19 -0
  2. package/dist/commands/migrate-removed-fields.command.d.ts.map +1 -0
  3. package/dist/commands/migrate-removed-fields.command.js +77 -0
  4. package/dist/commands/migrate-removed-fields.command.js.map +1 -0
  5. package/dist/controllers/datasource-introspection.controller.d.ts +38 -1
  6. package/dist/controllers/datasource-introspection.controller.d.ts.map +1 -1
  7. package/dist/controllers/datasource-introspection.controller.js +38 -0
  8. package/dist/controllers/datasource-introspection.controller.js.map +1 -1
  9. package/dist/dtos/datasource-introspection-mapping.dto.d.ts +5 -0
  10. package/dist/dtos/datasource-introspection-mapping.dto.d.ts.map +1 -1
  11. package/dist/dtos/datasource-introspection-mapping.dto.js +24 -2
  12. package/dist/dtos/datasource-introspection-mapping.dto.js.map +1 -1
  13. package/dist/entities/{legacy-common-with-id.entity.d.ts → legacy-common-with-generated-id.entity.d.ts} +2 -2
  14. package/dist/entities/legacy-common-with-generated-id.entity.d.ts.map +1 -0
  15. package/dist/entities/{legacy-common-with-id.entity.js → legacy-common-with-generated-id.entity.js} +4 -4
  16. package/dist/entities/legacy-common-with-generated-id.entity.js.map +1 -0
  17. package/dist/entities/{legacy-common.entity.d.ts → legacy-common.entity-with-existing-id.entity.d.ts} +1 -1
  18. package/dist/entities/legacy-common.entity-with-existing-id.entity.d.ts.map +1 -0
  19. package/dist/entities/{legacy-common.entity.js → legacy-common.entity-with-existing-id.entity.js} +1 -1
  20. package/dist/entities/legacy-common.entity-with-existing-id.entity.js.map +1 -0
  21. package/dist/helpers/command.service.d.ts +2 -0
  22. package/dist/helpers/command.service.d.ts.map +1 -1
  23. package/dist/helpers/command.service.js +6 -2
  24. package/dist/helpers/command.service.js.map +1 -1
  25. package/dist/helpers/model-metadata-helper.service.js +3 -3
  26. package/dist/helpers/model-metadata-helper.service.js.map +1 -1
  27. package/dist/helpers/nodemon-heartbeat.d.ts +5 -0
  28. package/dist/helpers/nodemon-heartbeat.d.ts.map +1 -0
  29. package/dist/helpers/nodemon-heartbeat.js +67 -0
  30. package/dist/helpers/nodemon-heartbeat.js.map +1 -0
  31. package/dist/index.d.ts +3 -2
  32. package/dist/index.d.ts.map +1 -1
  33. package/dist/index.js +3 -2
  34. package/dist/index.js.map +1 -1
  35. package/dist/interfaces/datasource-introspection-provider.interface.d.ts +1 -0
  36. package/dist/interfaces/datasource-introspection-provider.interface.d.ts.map +1 -1
  37. package/dist/interfaces/datasource-introspection-provider.interface.js.map +1 -1
  38. package/dist/seeders/module-metadata-seeder.service.d.ts +7 -1
  39. package/dist/seeders/module-metadata-seeder.service.d.ts.map +1 -1
  40. package/dist/seeders/module-metadata-seeder.service.js +101 -1
  41. package/dist/seeders/module-metadata-seeder.service.js.map +1 -1
  42. package/dist/seeders/seed-data/solid-core-metadata.json +121 -34
  43. package/dist/services/api-key.service.d.ts.map +1 -1
  44. package/dist/services/api-key.service.js.map +1 -1
  45. package/dist/services/computed-fields/entity/concat-entity-computed-field-provider.service.d.ts +4 -0
  46. package/dist/services/computed-fields/entity/concat-entity-computed-field-provider.service.d.ts.map +1 -1
  47. package/dist/services/computed-fields/entity/concat-entity-computed-field-provider.service.js +18 -1
  48. package/dist/services/computed-fields/entity/concat-entity-computed-field-provider.service.js.map +1 -1
  49. package/dist/services/crud.service.d.ts +1 -0
  50. package/dist/services/crud.service.d.ts.map +1 -1
  51. package/dist/services/crud.service.js +27 -0
  52. package/dist/services/crud.service.js.map +1 -1
  53. package/dist/services/datasource-introspection/mssql-datasource-introspection-provider.service.d.ts.map +1 -1
  54. package/dist/services/datasource-introspection/mssql-datasource-introspection-provider.service.js +12 -0
  55. package/dist/services/datasource-introspection/mssql-datasource-introspection-provider.service.js.map +1 -1
  56. package/dist/services/datasource-introspection/mysql-datasource-introspection-provider.service.d.ts.map +1 -1
  57. package/dist/services/datasource-introspection/mysql-datasource-introspection-provider.service.js +2 -0
  58. package/dist/services/datasource-introspection/mysql-datasource-introspection-provider.service.js.map +1 -1
  59. package/dist/services/datasource-introspection/postgres-datasource-introspection-provider.service.d.ts.map +1 -1
  60. package/dist/services/datasource-introspection/postgres-datasource-introspection-provider.service.js +28 -15
  61. package/dist/services/datasource-introspection/postgres-datasource-introspection-provider.service.js.map +1 -1
  62. package/dist/services/datasource-introspection.service.d.ts +53 -2
  63. package/dist/services/datasource-introspection.service.d.ts.map +1 -1
  64. package/dist/services/datasource-introspection.service.js +559 -174
  65. package/dist/services/datasource-introspection.service.js.map +1 -1
  66. package/dist/services/import-transaction.service.d.ts.map +1 -1
  67. package/dist/services/import-transaction.service.js +3 -0
  68. package/dist/services/import-transaction.service.js.map +1 -1
  69. package/dist/services/mediaStorageProviders/file-s3-storage-provider.js +10 -10
  70. package/dist/services/mediaStorageProviders/file-s3-storage-provider.js.map +1 -1
  71. package/dist/services/model-metadata.service.d.ts +1 -0
  72. package/dist/services/model-metadata.service.d.ts.map +1 -1
  73. package/dist/services/model-metadata.service.js +28 -0
  74. package/dist/services/model-metadata.service.js.map +1 -1
  75. package/dist/services/module-metadata.service.d.ts.map +1 -1
  76. package/dist/services/module-metadata.service.js +27 -0
  77. package/dist/services/module-metadata.service.js.map +1 -1
  78. package/dist/services/removed-field-migration.service.d.ts +30 -0
  79. package/dist/services/removed-field-migration.service.d.ts.map +1 -0
  80. package/dist/services/removed-field-migration.service.js +319 -0
  81. package/dist/services/removed-field-migration.service.js.map +1 -0
  82. package/dist/solid-core.module.d.ts.map +1 -1
  83. package/dist/solid-core.module.js +4 -0
  84. package/dist/solid-core.module.js.map +1 -1
  85. package/dist/subscribers/audit.subscriber.d.ts +4 -1
  86. package/dist/subscribers/audit.subscriber.d.ts.map +1 -1
  87. package/dist/subscribers/audit.subscriber.js +54 -6
  88. package/dist/subscribers/audit.subscriber.js.map +1 -1
  89. package/dist-tests/api/authenticate.spec.js +119 -0
  90. package/dist-tests/api/authenticate.spec.js.map +1 -0
  91. package/dist-tests/api/crud-service.findOne.cityMaster.spec.js +97 -0
  92. package/dist-tests/api/crud-service.findOne.cityMaster.spec.js.map +1 -0
  93. package/dist-tests/api/ping.spec.js +21 -0
  94. package/dist-tests/api/ping.spec.js.map +1 -0
  95. package/dist-tests/helpers/auth.js +41 -0
  96. package/dist-tests/helpers/auth.js.map +1 -0
  97. package/dist-tests/helpers/env.js +11 -0
  98. package/dist-tests/helpers/env.js.map +1 -0
  99. package/docs/agent-hub-grooming.md +301 -0
  100. package/docs/dashboards/AGENTIC_DASHBOARD_IMPLEMENTATION_PLAN.md +438 -0
  101. package/docs/dashboards/dashboard-curl-smoke-tests.txt +146 -0
  102. package/docs/dashboards/delete-legacy-dashboard-metadata.sql +172 -0
  103. package/docs/datasource-introspection-ddl-analysis.md +326 -0
  104. package/docs/datasource-introspection-implementation-plan.md +306 -0
  105. package/docs/grouping-enhancements.md +89 -0
  106. package/docs/java-spring/README.md +3 -0
  107. package/docs/java-spring/solid-core-module-deep-dive-report.md +1317 -0
  108. package/docs/module-package-import-handoff.md +691 -0
  109. package/docs/seed-changes.md +65 -0
  110. package/docs/test-data-workflow.md +200 -0
  111. package/docs/type-declaration-import-issue.md +24 -0
  112. package/package.json +1 -1
  113. package/src/commands/migrate-removed-fields.command.ts +81 -0
  114. package/src/controllers/datasource-introspection.controller.ts +27 -1
  115. package/src/dtos/datasource-introspection-mapping.dto.ts +15 -0
  116. package/src/entities/{legacy-common-with-id.entity.ts → legacy-common-with-generated-id.entity.ts} +1 -1
  117. package/src/helpers/command.service.ts +10 -2
  118. package/src/helpers/model-metadata-helper.service.ts +1 -1
  119. package/src/helpers/nodemon-heartbeat.ts +59 -0
  120. package/src/index.ts +3 -2
  121. package/src/interfaces/datasource-introspection-provider.interface.ts +1 -0
  122. package/src/seeders/module-metadata-seeder.service.ts +118 -0
  123. package/src/seeders/seed-data/solid-core-metadata.json +121 -34
  124. package/src/services/api-key.service.ts +36 -36
  125. package/src/services/computed-fields/entity/concat-entity-computed-field-provider.service.ts +15 -1
  126. package/src/services/crud.service.ts +36 -11
  127. package/src/services/datasource-introspection/mssql-datasource-introspection-provider.service.ts +12 -0
  128. package/src/services/datasource-introspection/mysql-datasource-introspection-provider.service.ts +2 -0
  129. package/src/services/datasource-introspection/postgres-datasource-introspection-provider.service.ts +28 -15
  130. package/src/services/datasource-introspection.service.ts +653 -150
  131. package/src/services/import-transaction.service.ts +5 -0
  132. package/src/services/mediaStorageProviders/file-s3-storage-provider.ts +2 -2
  133. package/src/services/model-metadata.service.ts +45 -1
  134. package/src/services/module-metadata.service.ts +35 -0
  135. package/src/services/removed-field-migration.service.ts +334 -0
  136. package/src/solid-core.module.ts +4 -0
  137. package/src/subscribers/audit.subscriber.ts +70 -5
  138. package/.claude/settings.local.json +0 -15
  139. package/CLAUDE.md +0 -26
  140. package/dist/entities/legacy-common-with-id.entity.d.ts.map +0 -1
  141. package/dist/entities/legacy-common-with-id.entity.js.map +0 -1
  142. package/dist/entities/legacy-common.entity.d.ts.map +0 -1
  143. package/dist/entities/legacy-common.entity.js.map +0 -1
  144. package/src/services/1.js +0 -6
  145. /package/src/entities/{legacy-common.entity.ts → legacy-common.entity-with-existing-id.entity.ts} +0 -0
@@ -52,6 +52,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
52
52
  exports.ModuleMetadataSeederService = void 0;
53
53
  const common_1 = require("@nestjs/common");
54
54
  const fs = __importStar(require("fs"));
55
+ const os = __importStar(require("os"));
55
56
  const path = __importStar(require("path"));
56
57
  const security_rule_repository_1 = require("../repository/security-rule.repository");
57
58
  const authentication_service_1 = require("../services/authentication.service");
@@ -64,6 +65,7 @@ const typeorm_1 = require("typeorm");
64
65
  const module_helper_1 = require("../helpers/module.helper");
65
66
  const solid_registry_1 = require("../helpers/solid-registry");
66
67
  const action_metadata_service_1 = require("../services/action-metadata.service");
68
+ const api_key_service_1 = require("../services/api-key.service");
67
69
  const field_metadata_service_1 = require("../services/field-metadata.service");
68
70
  const media_storage_provider_metadata_service_1 = require("../services/media-storage-provider-metadata.service");
69
71
  const model_metadata_service_1 = require("../services/model-metadata.service");
@@ -76,6 +78,7 @@ const action_metadata_entity_1 = require("../entities/action-metadata.entity");
76
78
  const menu_item_metadata_entity_1 = require("../entities/menu-item-metadata.entity");
77
79
  const module_metadata_entity_1 = require("../entities/module-metadata.entity");
78
80
  const role_metadata_entity_1 = require("../entities/role-metadata.entity");
81
+ const user_entity_1 = require("../entities/user.entity");
79
82
  const create_menu_item_metadata_dto_1 = require("../dtos/create-menu-item-metadata.dto");
80
83
  const create_user_dto_1 = require("../dtos/create-user.dto");
81
84
  const create_role_metadata_dto_1 = require("../dtos/create-role-metadata.dto");
@@ -83,6 +86,7 @@ const permission_metadata_repository_1 = require("../repository/permission-metad
83
86
  const saved_filters_repository_1 = require("../repository/saved-filters.repository");
84
87
  const scheduled_job_repository_1 = require("../repository/scheduled-job.repository");
85
88
  const setting_repository_1 = require("../repository/setting.repository");
89
+ const user_api_key_repository_1 = require("../repository/user-api-key.repository");
86
90
  const model_sequence_repository_1 = require("../repository/model-sequence.repository");
87
91
  const locale_repository_1 = require("../repository/locale.repository");
88
92
  const model_sequence_entity_1 = require("../entities/model-sequence.entity");
@@ -95,7 +99,7 @@ const model_metadata_entity_1 = require("../entities/model-metadata.entity");
95
99
  const permission_metadata_entity_1 = require("../entities/permission-metadata.entity");
96
100
  const view_metadata_entity_1 = require("../entities/view-metadata.entity");
97
101
  let ModuleMetadataSeederService = ModuleMetadataSeederService_1 = class ModuleMetadataSeederService {
98
- constructor(moduleMetadataService, modelMetadataService, fieldMetadataService, mediaStorageProviderMetadataService, roleService, userService, authenticationService, solidActionService, solidViewService, emailTemplateService, smsTemplateService, listOfValuesService, permissionRepo, solidRegistry, settingService, settingsRepo, securityRuleRepo, systemFieldsSeederService, scheduledJobRepository, savedFiltersRepo, dataSource, modelSequenceRepo, localeRepo) {
102
+ constructor(moduleMetadataService, modelMetadataService, fieldMetadataService, mediaStorageProviderMetadataService, roleService, userService, authenticationService, apiKeyService, solidActionService, solidViewService, emailTemplateService, smsTemplateService, listOfValuesService, userApiKeyRepository, permissionRepo, solidRegistry, settingService, settingsRepo, securityRuleRepo, systemFieldsSeederService, scheduledJobRepository, savedFiltersRepo, dataSource, modelSequenceRepo, localeRepo) {
99
103
  this.moduleMetadataService = moduleMetadataService;
100
104
  this.modelMetadataService = modelMetadataService;
101
105
  this.fieldMetadataService = fieldMetadataService;
@@ -103,11 +107,13 @@ let ModuleMetadataSeederService = ModuleMetadataSeederService_1 = class ModuleMe
103
107
  this.roleService = roleService;
104
108
  this.userService = userService;
105
109
  this.authenticationService = authenticationService;
110
+ this.apiKeyService = apiKeyService;
106
111
  this.solidActionService = solidActionService;
107
112
  this.solidViewService = solidViewService;
108
113
  this.emailTemplateService = emailTemplateService;
109
114
  this.smsTemplateService = smsTemplateService;
110
115
  this.listOfValuesService = listOfValuesService;
116
+ this.userApiKeyRepository = userApiKeyRepository;
111
117
  this.permissionRepo = permissionRepo;
112
118
  this.solidRegistry = solidRegistry;
113
119
  this.settingService = settingService;
@@ -1075,6 +1081,7 @@ let ModuleMetadataSeederService = ModuleMetadataSeederService_1 = class ModuleMe
1075
1081
  }
1076
1082
  for (let l = 0; l < users.length; l++) {
1077
1083
  const user = users[l];
1084
+ const isSystemAdminUser = user.username === 'sa';
1078
1085
  let exisitingUser = await this.timeOperation('user-find-by-username', () => this.userService.findOneByUsername(user.username), {
1079
1086
  component: 'users',
1080
1087
  serviceCall: 'userService.findOneByUsername',
@@ -1084,14 +1091,105 @@ let ModuleMetadataSeederService = ModuleMetadataSeederService_1 = class ModuleMe
1084
1091
  if (user.username === 'sa') {
1085
1092
  user.password = create_user_dto_1.DEFAULT_SA_PASSWORD;
1086
1093
  }
1094
+ if (isSystemAdminUser) {
1095
+ user.isAllowedToGenerateApiKeys = true;
1096
+ }
1087
1097
  exisitingUser = await this.timeOperation('user-sign-up', () => this.authenticationService.signUp(user), {
1088
1098
  component: 'users',
1089
1099
  serviceCall: 'authenticationService.signUp',
1090
1100
  details: `username=${user.username}`,
1091
1101
  });
1102
+ if (isSystemAdminUser) {
1103
+ await this.timeOperation('seed-sa-api-key', async () => {
1104
+ const generatedApiKey = await this.apiKeyService.generate(exisitingUser.id, {
1105
+ name: 'Default SA API Key',
1106
+ });
1107
+ await this.writeSolidxAdminApiKeyConfig(generatedApiKey);
1108
+ }, {
1109
+ component: 'users',
1110
+ serviceCall: 'apiKeyService.generate',
1111
+ details: `username=${user.username}`,
1112
+ });
1113
+ }
1092
1114
  this.logger.log(`Newly created user ${user.username}`);
1093
1115
  }
1116
+ if (isSystemAdminUser) {
1117
+ await this.ensureSystemAdminApiKey(exisitingUser);
1118
+ }
1119
+ }
1120
+ }
1121
+ async ensureSystemAdminApiKey(existingUser) {
1122
+ if (!existingUser?.id) {
1123
+ return;
1124
+ }
1125
+ if (!existingUser.isAllowedToGenerateApiKeys) {
1126
+ await this.timeOperation('enable-sa-api-key-generation', () => this.userApiKeyRepository.manager.update(user_entity_1.User, { id: existingUser.id }, {
1127
+ isAllowedToGenerateApiKeys: true,
1128
+ }), {
1129
+ component: 'users',
1130
+ serviceCall: 'userRepository.update',
1131
+ details: `username=${existingUser.username}`,
1132
+ });
1133
+ existingUser.isAllowedToGenerateApiKeys = true;
1134
+ }
1135
+ const existingDefaultKey = await this.timeOperation('find-sa-default-api-key', () => this.userApiKeyRepository.findOne({
1136
+ where: {
1137
+ user: { id: existingUser.id },
1138
+ name: 'Default SA API Key',
1139
+ },
1140
+ relations: {
1141
+ user: true,
1142
+ },
1143
+ }), {
1144
+ component: 'users',
1145
+ serviceCall: 'userApiKeyRepository.findOne',
1146
+ details: `username=${existingUser.username}`,
1147
+ });
1148
+ if (existingDefaultKey) {
1149
+ return;
1150
+ }
1151
+ await this.timeOperation('seed-sa-api-key', async () => {
1152
+ const generatedApiKey = await this.apiKeyService.generate(existingUser.id, {
1153
+ name: 'Default SA API Key',
1154
+ });
1155
+ await this.writeSolidxAdminApiKeyConfig(generatedApiKey);
1156
+ }, {
1157
+ component: 'users',
1158
+ serviceCall: 'apiKeyService.generate',
1159
+ details: `username=${existingUser.username}`,
1160
+ });
1161
+ }
1162
+ async writeSolidxAdminApiKeyConfig(generatedApiKey) {
1163
+ const solidxDir = path.join(os.homedir(), '.solidx');
1164
+ const configPath = path.join(solidxDir, 'mcp.json');
1165
+ await fs.promises.mkdir(solidxDir, { recursive: true });
1166
+ let existingConfig = {};
1167
+ if (fs.existsSync(configPath)) {
1168
+ const rawConfig = await fs.promises.readFile(configPath, 'utf8');
1169
+ if (rawConfig.trim()) {
1170
+ const parsedConfig = JSON.parse(rawConfig);
1171
+ if (parsedConfig && typeof parsedConfig === 'object' && !Array.isArray(parsedConfig)) {
1172
+ existingConfig = parsedConfig;
1173
+ }
1174
+ else {
1175
+ this.logger.warn(`Expected ${configPath} to contain a JSON object. Overwriting with a new object.`);
1176
+ }
1177
+ }
1094
1178
  }
1179
+ const nextConfig = {
1180
+ ...existingConfig,
1181
+ solidxAdminApiKey: {
1182
+ id: generatedApiKey.record.id,
1183
+ name: generatedApiKey.record.name,
1184
+ apiKey: generatedApiKey.apiKey,
1185
+ maskedKey: generatedApiKey.record.maskedKey,
1186
+ isActive: generatedApiKey.record.isActive,
1187
+ expiresAt: generatedApiKey.record.expiresAt,
1188
+ createdAt: generatedApiKey.record.createdAt,
1189
+ updatedAt: generatedApiKey.record.updatedAt,
1190
+ },
1191
+ };
1192
+ await fs.promises.writeFile(configPath, `${JSON.stringify(nextConfig, null, 2)}\n`, 'utf8');
1095
1193
  }
1096
1194
  async seedModuleModelFields(moduleMetadata) {
1097
1195
  const fieldMetadataRepo = this.dataSource.getRepository(field_metadata_entity_1.FieldMetadata);
@@ -2079,11 +2177,13 @@ exports.ModuleMetadataSeederService = ModuleMetadataSeederService = ModuleMetada
2079
2177
  role_metadata_service_1.RoleMetadataService,
2080
2178
  user_service_1.UserService,
2081
2179
  authentication_service_1.AuthenticationService,
2180
+ api_key_service_1.ApiKeyService,
2082
2181
  action_metadata_service_1.ActionMetadataService,
2083
2182
  view_metadata_service_1.ViewMetadataService,
2084
2183
  email_template_service_1.EmailTemplateService,
2085
2184
  sms_template_service_1.SmsTemplateService,
2086
2185
  list_of_values_service_1.ListOfValuesService,
2186
+ user_api_key_repository_1.UserApiKeyRepository,
2087
2187
  permission_metadata_repository_1.PermissionMetadataRepository,
2088
2188
  solid_registry_1.SolidRegistry,
2089
2189
  setting_service_1.SettingService,