@solidxai/core 0.1.10-beta.26 → 0.1.10-beta.27

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 (274) hide show
  1. package/.claude/settings.local.json +15 -0
  2. package/CLAUDE.md +26 -0
  3. package/ai-interaction-cleanup.sql +53 -0
  4. package/dist/controllers/service.controller.d.ts +1 -5
  5. package/dist/controllers/service.controller.d.ts.map +1 -1
  6. package/dist/controllers/service.controller.js +6 -11
  7. package/dist/controllers/service.controller.js.map +1 -1
  8. package/dist/controllers/test.controller.d.ts +1 -6
  9. package/dist/controllers/test.controller.d.ts.map +1 -1
  10. package/dist/controllers/test.controller.js +2 -20
  11. package/dist/controllers/test.controller.js.map +1 -1
  12. package/dist/dtos/create-permission-metadata.dto.d.ts.map +1 -1
  13. package/dist/dtos/create-permission-metadata.dto.js +2 -0
  14. package/dist/dtos/create-permission-metadata.dto.js.map +1 -1
  15. package/dist/dtos/create-role-metadata.dto.d.ts +2 -0
  16. package/dist/dtos/create-role-metadata.dto.d.ts.map +1 -1
  17. package/dist/dtos/create-role-metadata.dto.js +13 -1
  18. package/dist/dtos/create-role-metadata.dto.js.map +1 -1
  19. package/dist/dtos/import-instructions.dto.d.ts +2 -0
  20. package/dist/dtos/import-instructions.dto.d.ts.map +1 -1
  21. package/dist/dtos/import-instructions.dto.js +15 -1
  22. package/dist/dtos/import-instructions.dto.js.map +1 -1
  23. package/dist/dtos/update-permission-metadata.dto.d.ts.map +1 -1
  24. package/dist/dtos/update-permission-metadata.dto.js +3 -1
  25. package/dist/dtos/update-permission-metadata.dto.js.map +1 -1
  26. package/dist/dtos/update-role-metadata.dto.d.ts +2 -0
  27. package/dist/dtos/update-role-metadata.dto.d.ts.map +1 -1
  28. package/dist/dtos/update-role-metadata.dto.js +13 -1
  29. package/dist/dtos/update-role-metadata.dto.js.map +1 -1
  30. package/dist/entities/action-metadata.entity.d.ts.map +1 -1
  31. package/dist/entities/action-metadata.entity.js +1 -0
  32. package/dist/entities/action-metadata.entity.js.map +1 -1
  33. package/dist/entities/agent-event.entity.d.ts.map +1 -1
  34. package/dist/entities/agent-event.entity.js +1 -0
  35. package/dist/entities/agent-event.entity.js.map +1 -1
  36. package/dist/entities/agent-session.entity.d.ts.map +1 -1
  37. package/dist/entities/agent-session.entity.js +1 -0
  38. package/dist/entities/agent-session.entity.js.map +1 -1
  39. package/dist/entities/chatter-message.entity.d.ts.map +1 -1
  40. package/dist/entities/chatter-message.entity.js +2 -0
  41. package/dist/entities/chatter-message.entity.js.map +1 -1
  42. package/dist/entities/email-template.entity.d.ts.map +1 -1
  43. package/dist/entities/email-template.entity.js +1 -0
  44. package/dist/entities/email-template.entity.js.map +1 -1
  45. package/dist/entities/field-metadata.entity.d.ts.map +1 -1
  46. package/dist/entities/field-metadata.entity.js +4 -0
  47. package/dist/entities/field-metadata.entity.js.map +1 -1
  48. package/dist/entities/list-of-values.entity.d.ts.map +1 -1
  49. package/dist/entities/list-of-values.entity.js +4 -0
  50. package/dist/entities/list-of-values.entity.js.map +1 -1
  51. package/dist/entities/locale.entity.d.ts.map +1 -1
  52. package/dist/entities/locale.entity.js +1 -0
  53. package/dist/entities/locale.entity.js.map +1 -1
  54. package/dist/entities/media.entity.d.ts.map +1 -1
  55. package/dist/entities/media.entity.js +1 -0
  56. package/dist/entities/media.entity.js.map +1 -1
  57. package/dist/entities/menu-item-metadata.entity.d.ts.map +1 -1
  58. package/dist/entities/menu-item-metadata.entity.js +2 -0
  59. package/dist/entities/menu-item-metadata.entity.js.map +1 -1
  60. package/dist/entities/model-metadata.entity.d.ts.map +1 -1
  61. package/dist/entities/model-metadata.entity.js +3 -0
  62. package/dist/entities/model-metadata.entity.js.map +1 -1
  63. package/dist/entities/module-metadata.entity.d.ts.map +1 -1
  64. package/dist/entities/module-metadata.entity.js +2 -0
  65. package/dist/entities/module-metadata.entity.js.map +1 -1
  66. package/dist/entities/permission-metadata.entity.d.ts.map +1 -1
  67. package/dist/entities/permission-metadata.entity.js.map +1 -1
  68. package/dist/entities/role-metadata.entity.d.ts +2 -0
  69. package/dist/entities/role-metadata.entity.d.ts.map +1 -1
  70. package/dist/entities/role-metadata.entity.js +10 -2
  71. package/dist/entities/role-metadata.entity.js.map +1 -1
  72. package/dist/entities/saved-filters.entity.d.ts.map +1 -1
  73. package/dist/entities/saved-filters.entity.js +3 -0
  74. package/dist/entities/saved-filters.entity.js.map +1 -1
  75. package/dist/entities/scheduled-job.entity.d.ts.map +1 -1
  76. package/dist/entities/scheduled-job.entity.js +2 -0
  77. package/dist/entities/scheduled-job.entity.js.map +1 -1
  78. package/dist/entities/security-rule.entity.d.ts.map +1 -1
  79. package/dist/entities/security-rule.entity.js +1 -0
  80. package/dist/entities/security-rule.entity.js.map +1 -1
  81. package/dist/entities/sms-template.entity.d.ts.map +1 -1
  82. package/dist/entities/sms-template.entity.js +2 -0
  83. package/dist/entities/sms-template.entity.js.map +1 -1
  84. package/dist/entities/user-activity-history.entity.d.ts.map +1 -1
  85. package/dist/entities/user-activity-history.entity.js +1 -0
  86. package/dist/entities/user-activity-history.entity.js.map +1 -1
  87. package/dist/entities/user.entity.d.ts.map +1 -1
  88. package/dist/entities/user.entity.js +2 -0
  89. package/dist/entities/user.entity.js.map +1 -1
  90. package/dist/entities/view-metadata.entity.d.ts.map +1 -1
  91. package/dist/entities/view-metadata.entity.js +2 -0
  92. package/dist/entities/view-metadata.entity.js.map +1 -1
  93. package/dist/helpers/module.helper.js +0 -5
  94. package/dist/helpers/module.helper.js.map +1 -1
  95. package/dist/index.d.ts +0 -5
  96. package/dist/index.d.ts.map +1 -1
  97. package/dist/index.js +0 -5
  98. package/dist/index.js.map +1 -1
  99. package/dist/interfaces.d.ts +0 -8
  100. package/dist/interfaces.d.ts.map +1 -1
  101. package/dist/interfaces.js.map +1 -1
  102. package/dist/seeders/seed-data/solid-core-metadata.json +317 -814
  103. package/dist/services/crud-helper.service.d.ts.map +1 -1
  104. package/dist/services/crud-helper.service.js +11 -3
  105. package/dist/services/crud-helper.service.js.map +1 -1
  106. package/dist/services/import-transaction.service.d.ts.map +1 -1
  107. package/dist/services/import-transaction.service.js +6 -0
  108. package/dist/services/import-transaction.service.js.map +1 -1
  109. package/dist/solid-core.module.d.ts.map +1 -1
  110. package/dist/solid-core.module.js +0 -29
  111. package/dist/solid-core.module.js.map +1 -1
  112. package/dist/subscribers/scheduled-job.subscriber.js +1 -1
  113. package/dist/subscribers/scheduled-job.subscriber.js.map +1 -1
  114. package/dist/subscribers/security-rule.subscriber.js +1 -1
  115. package/dist/subscribers/security-rule.subscriber.js.map +1 -1
  116. package/package.json +4 -4
  117. package/src/controllers/service.controller.ts +4 -7
  118. package/src/controllers/test.controller.ts +0 -9
  119. package/src/dtos/create-permission-metadata.dto.ts +3 -0
  120. package/src/dtos/create-role-metadata.dto.ts +11 -1
  121. package/src/dtos/import-instructions.dto.ts +11 -1
  122. package/src/dtos/update-permission-metadata.dto.ts +4 -1
  123. package/src/dtos/update-role-metadata.dto.ts +21 -1
  124. package/src/entities/action-metadata.entity.ts +1 -0
  125. package/src/entities/agent-event.entity.ts +1 -0
  126. package/src/entities/agent-session.entity.ts +1 -0
  127. package/src/entities/chatter-message.entity.ts +2 -0
  128. package/src/entities/email-template.entity.ts +1 -0
  129. package/src/entities/field-metadata.entity.ts +4 -1
  130. package/src/entities/list-of-values.entity.ts +5 -1
  131. package/src/entities/locale.entity.ts +1 -0
  132. package/src/entities/media.entity.ts +1 -0
  133. package/src/entities/menu-item-metadata.entity.ts +2 -0
  134. package/src/entities/model-metadata.entity.ts +3 -0
  135. package/src/entities/module-metadata.entity.ts +2 -0
  136. package/src/entities/permission-metadata.entity.ts +2 -2
  137. package/src/entities/role-metadata.entity.ts +11 -3
  138. package/src/entities/saved-filters.entity.ts +3 -0
  139. package/src/entities/scheduled-job.entity.ts +2 -0
  140. package/src/entities/security-rule.entity.ts +1 -0
  141. package/src/entities/sms-template.entity.ts +2 -0
  142. package/src/entities/user-activity-history.entity.ts +1 -0
  143. package/src/entities/user.entity.ts +2 -0
  144. package/src/entities/view-metadata.entity.ts +2 -0
  145. package/src/helpers/module.helper.ts +5 -5
  146. package/src/index.ts +0 -5
  147. package/src/interfaces.ts +0 -8
  148. package/src/seeders/seed-data/solid-core-metadata.json +317 -814
  149. package/src/services/1.js +6 -0
  150. package/src/services/crud-helper.service.ts +9 -3
  151. package/src/services/import-transaction.service.ts +11 -1
  152. package/src/solid-core.module.ts +0 -31
  153. package/src/subscribers/scheduled-job.subscriber.ts +1 -1
  154. package/src/subscribers/security-rule.subscriber.ts +1 -1
  155. package/dist/commands/ingest.command.d.ts +0 -16
  156. package/dist/commands/ingest.command.d.ts.map +0 -1
  157. package/dist/commands/ingest.command.js +0 -50
  158. package/dist/commands/ingest.command.js.map +0 -1
  159. package/dist/controllers/ai-interaction.controller.d.ts +0 -29
  160. package/dist/controllers/ai-interaction.controller.d.ts.map +0 -1
  161. package/dist/controllers/ai-interaction.controller.js +0 -218
  162. package/dist/controllers/ai-interaction.controller.js.map +0 -1
  163. package/dist/dtos/create-ai-interaction.dto.d.ts +0 -23
  164. package/dist/dtos/create-ai-interaction.dto.d.ts.map +0 -1
  165. package/dist/dtos/create-ai-interaction.dto.js +0 -149
  166. package/dist/dtos/create-ai-interaction.dto.js.map +0 -1
  167. package/dist/dtos/invoke-ai-prompt.dto.d.ts +0 -5
  168. package/dist/dtos/invoke-ai-prompt.dto.d.ts.map +0 -1
  169. package/dist/dtos/invoke-ai-prompt.dto.js +0 -30
  170. package/dist/dtos/invoke-ai-prompt.dto.js.map +0 -1
  171. package/dist/dtos/update-ai-interaction.dto.d.ts +0 -24
  172. package/dist/dtos/update-ai-interaction.dto.d.ts.map +0 -1
  173. package/dist/dtos/update-ai-interaction.dto.js +0 -150
  174. package/dist/dtos/update-ai-interaction.dto.js.map +0 -1
  175. package/dist/entities/ai-interaction.entity.d.ts +0 -24
  176. package/dist/entities/ai-interaction.entity.d.ts.map +0 -1
  177. package/dist/entities/ai-interaction.entity.js +0 -116
  178. package/dist/entities/ai-interaction.entity.js.map +0 -1
  179. package/dist/jobs/database/trigger-mcp-client-publisher-database.service.d.ts +0 -11
  180. package/dist/jobs/database/trigger-mcp-client-publisher-database.service.d.ts.map +0 -1
  181. package/dist/jobs/database/trigger-mcp-client-publisher-database.service.js +0 -39
  182. package/dist/jobs/database/trigger-mcp-client-publisher-database.service.js.map +0 -1
  183. package/dist/jobs/database/trigger-mcp-client-queue-options.d.ts +0 -8
  184. package/dist/jobs/database/trigger-mcp-client-queue-options.d.ts.map +0 -1
  185. package/dist/jobs/database/trigger-mcp-client-queue-options.js +0 -10
  186. package/dist/jobs/database/trigger-mcp-client-queue-options.js.map +0 -1
  187. package/dist/jobs/database/trigger-mcp-client-subscriber-database.service.d.ts +0 -25
  188. package/dist/jobs/database/trigger-mcp-client-subscriber-database.service.d.ts.map +0 -1
  189. package/dist/jobs/database/trigger-mcp-client-subscriber-database.service.js +0 -222
  190. package/dist/jobs/database/trigger-mcp-client-subscriber-database.service.js.map +0 -1
  191. package/dist/jobs/rabbitmq/trigger-mcp-client-publisher.service.d.ts +0 -11
  192. package/dist/jobs/rabbitmq/trigger-mcp-client-publisher.service.d.ts.map +0 -1
  193. package/dist/jobs/rabbitmq/trigger-mcp-client-publisher.service.js +0 -39
  194. package/dist/jobs/rabbitmq/trigger-mcp-client-publisher.service.js.map +0 -1
  195. package/dist/jobs/rabbitmq/trigger-mcp-client-queue-options.d.ts +0 -8
  196. package/dist/jobs/rabbitmq/trigger-mcp-client-queue-options.d.ts.map +0 -1
  197. package/dist/jobs/rabbitmq/trigger-mcp-client-queue-options.js +0 -10
  198. package/dist/jobs/rabbitmq/trigger-mcp-client-queue-options.js.map +0 -1
  199. package/dist/jobs/rabbitmq/trigger-mcp-client-subscriber.service.d.ts +0 -18
  200. package/dist/jobs/rabbitmq/trigger-mcp-client-subscriber.service.d.ts.map +0 -1
  201. package/dist/jobs/rabbitmq/trigger-mcp-client-subscriber.service.js +0 -103
  202. package/dist/jobs/rabbitmq/trigger-mcp-client-subscriber.service.js.map +0 -1
  203. package/dist/jobs/redis/trigger-mcp-client-publisher-redis.service.d.ts +0 -11
  204. package/dist/jobs/redis/trigger-mcp-client-publisher-redis.service.d.ts.map +0 -1
  205. package/dist/jobs/redis/trigger-mcp-client-publisher-redis.service.js +0 -39
  206. package/dist/jobs/redis/trigger-mcp-client-publisher-redis.service.js.map +0 -1
  207. package/dist/jobs/redis/trigger-mcp-client-queue-options-redis.d.ts +0 -8
  208. package/dist/jobs/redis/trigger-mcp-client-queue-options-redis.d.ts.map +0 -1
  209. package/dist/jobs/redis/trigger-mcp-client-queue-options-redis.js +0 -10
  210. package/dist/jobs/redis/trigger-mcp-client-queue-options-redis.js.map +0 -1
  211. package/dist/jobs/redis/trigger-mcp-client-subscriber-redis.service.d.ts +0 -18
  212. package/dist/jobs/redis/trigger-mcp-client-subscriber-redis.service.d.ts.map +0 -1
  213. package/dist/jobs/redis/trigger-mcp-client-subscriber-redis.service.js +0 -103
  214. package/dist/jobs/redis/trigger-mcp-client-subscriber-redis.service.js.map +0 -1
  215. package/dist/repository/ai-interaction.repository.d.ts +0 -12
  216. package/dist/repository/ai-interaction.repository.d.ts.map +0 -1
  217. package/dist/repository/ai-interaction.repository.js +0 -34
  218. package/dist/repository/ai-interaction.repository.js.map +0 -1
  219. package/dist/services/ai-interaction.service.d.ts +0 -23
  220. package/dist/services/ai-interaction.service.d.ts.map +0 -1
  221. package/dist/services/ai-interaction.service.js +0 -217
  222. package/dist/services/ai-interaction.service.js.map +0 -1
  223. package/dist/services/genai/ingest-metadata.service.d.ts +0 -38
  224. package/dist/services/genai/ingest-metadata.service.d.ts.map +0 -1
  225. package/dist/services/genai/ingest-metadata.service.js +0 -542
  226. package/dist/services/genai/ingest-metadata.service.js.map +0 -1
  227. package/dist/services/genai/mcp-handlers/mcp-handler-factory.service.d.ts +0 -9
  228. package/dist/services/genai/mcp-handlers/mcp-handler-factory.service.d.ts.map +0 -1
  229. package/dist/services/genai/mcp-handlers/mcp-handler-factory.service.js +0 -39
  230. package/dist/services/genai/mcp-handlers/mcp-handler-factory.service.js.map +0 -1
  231. package/dist/services/genai/r2r-helper.service.d.ts +0 -9
  232. package/dist/services/genai/r2r-helper.service.d.ts.map +0 -1
  233. package/dist/services/genai/r2r-helper.service.js +0 -40
  234. package/dist/services/genai/r2r-helper.service.js.map +0 -1
  235. package/dist-tests/api/authenticate.spec.js +0 -119
  236. package/dist-tests/api/authenticate.spec.js.map +0 -1
  237. package/dist-tests/api/crud-service.findOne.cityMaster.spec.js +0 -97
  238. package/dist-tests/api/crud-service.findOne.cityMaster.spec.js.map +0 -1
  239. package/dist-tests/api/ping.spec.js +0 -21
  240. package/dist-tests/api/ping.spec.js.map +0 -1
  241. package/dist-tests/helpers/auth.js +0 -41
  242. package/dist-tests/helpers/auth.js.map +0 -1
  243. package/dist-tests/helpers/env.js +0 -11
  244. package/dist-tests/helpers/env.js.map +0 -1
  245. package/docs/dashboards/AGENTIC_DASHBOARD_IMPLEMENTATION_PLAN.md +0 -438
  246. package/docs/dashboards/dashboard-curl-smoke-tests.txt +0 -146
  247. package/docs/dashboards/delete-legacy-dashboard-metadata.sql +0 -172
  248. package/docs/grouping-enhancements.md +0 -89
  249. package/docs/java-spring/README.md +0 -3
  250. package/docs/java-spring/solid-core-module-deep-dive-report.md +0 -1317
  251. package/docs/module-package-import-handoff.md +0 -691
  252. package/docs/seed-changes.md +0 -65
  253. package/docs/test-data-workflow.md +0 -200
  254. package/docs/type-declaration-import-issue.md +0 -24
  255. package/src/commands/ingest.command.ts +0 -36
  256. package/src/controllers/ai-interaction.controller.ts +0 -112
  257. package/src/dtos/create-ai-interaction.dto.ts +0 -89
  258. package/src/dtos/invoke-ai-prompt.dto.ts +0 -10
  259. package/src/dtos/update-ai-interaction.dto.ts +0 -93
  260. package/src/entities/ai-interaction.entity.ts +0 -71
  261. package/src/jobs/database/trigger-mcp-client-publisher-database.service.ts +0 -22
  262. package/src/jobs/database/trigger-mcp-client-queue-options.ts +0 -9
  263. package/src/jobs/database/trigger-mcp-client-subscriber-database.service.ts +0 -278
  264. package/src/jobs/rabbitmq/trigger-mcp-client-publisher.service.ts +0 -22
  265. package/src/jobs/rabbitmq/trigger-mcp-client-queue-options.ts +0 -9
  266. package/src/jobs/rabbitmq/trigger-mcp-client-subscriber.service.ts +0 -104
  267. package/src/jobs/redis/trigger-mcp-client-publisher-redis.service.ts +0 -23
  268. package/src/jobs/redis/trigger-mcp-client-queue-options-redis.ts +0 -9
  269. package/src/jobs/redis/trigger-mcp-client-subscriber-redis.service.ts +0 -98
  270. package/src/repository/ai-interaction.repository.ts +0 -17
  271. package/src/services/ai-interaction.service.ts +0 -239
  272. package/src/services/genai/ingest-metadata.service.ts +0 -798
  273. package/src/services/genai/mcp-handlers/mcp-handler-factory.service.ts +0 -33
  274. package/src/services/genai/r2r-helper.service.ts +0 -37
@@ -1,542 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
19
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
20
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
21
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
22
- return c > 3 && r && Object.defineProperty(target, key, r), r;
23
- };
24
- var __importStar = (this && this.__importStar) || (function () {
25
- var ownKeys = function(o) {
26
- ownKeys = Object.getOwnPropertyNames || function (o) {
27
- var ar = [];
28
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
29
- return ar;
30
- };
31
- return ownKeys(o);
32
- };
33
- return function (mod) {
34
- if (mod && mod.__esModule) return mod;
35
- var result = {};
36
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
37
- __setModuleDefault(result, mod);
38
- return result;
39
- };
40
- })();
41
- var __metadata = (this && this.__metadata) || function (k, v) {
42
- if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
43
- };
44
- var IngestMetadataService_1;
45
- Object.defineProperty(exports, "__esModule", { value: true });
46
- exports.IngestMetadataService = void 0;
47
- const common_1 = require("@nestjs/common");
48
- const crypto = __importStar(require("crypto"));
49
- const fs = __importStar(require("fs"));
50
- const path = __importStar(require("path"));
51
- const module_helper_1 = require("../../helpers/module.helper");
52
- const r2r_helper_service_1 = require("./r2r-helper.service");
53
- let IngestMetadataService = IngestMetadataService_1 = class IngestMetadataService {
54
- constructor(r2rService) {
55
- this.r2rService = r2rService;
56
- this.logger = new common_1.Logger(IngestMetadataService_1.name);
57
- }
58
- _sha256OfJson(obj) {
59
- const s = JSON.stringify(obj);
60
- return crypto.createHash('sha256').update(s).digest('hex');
61
- }
62
- _oneLineBool(b) {
63
- return b ? 'yes' : 'no';
64
- }
65
- _shortList(arr, max = 10) {
66
- if (!Array.isArray(arr) || arr.length === 0)
67
- return 'none';
68
- const a = arr.slice(0, max);
69
- return `${a.join(', ')}${arr.length > max ? ', …' : ''}`;
70
- }
71
- async ingest() {
72
- this.ragClient = await this.r2rService.getClient();
73
- this.logger.debug(`getting dynamics modules`);
74
- const enabledModules = (0, module_helper_1.getDynamicModuleNamesBasedOnMetadata)();
75
- this.logger.log(`ingesting metadata`);
76
- for (let i = 0; i < enabledModules.length; i++) {
77
- const enabledModule = enabledModules[i];
78
- const fileName = `${enabledModule}-metadata.json`;
79
- const enabledModuleSeedFile = `src/${enabledModule}/metadata/${fileName}`;
80
- const fullPath = path.join(process.cwd(), enabledModuleSeedFile);
81
- const overallMetadata = JSON.parse(fs.readFileSync(fullPath, 'utf-8').toString());
82
- const moduleMetadata = overallMetadata.moduleMetadata;
83
- const enabledModulIngestionInfoFile = `src/${enabledModule}/metadata/genai/${enabledModule}-ingested-info.json`;
84
- const enabledModulIngestionInfoFullPath = path.join(process.cwd(), enabledModulIngestionInfoFile);
85
- const ingestionInfo = fs.existsSync(enabledModulIngestionInfoFullPath) ? JSON.parse(fs.readFileSync(enabledModulIngestionInfoFullPath, 'utf-8').toString()) : {};
86
- const enabledModulIngestionInfoDir = path.dirname(enabledModulIngestionInfoFullPath);
87
- if (!fs.existsSync(enabledModulIngestionInfoDir)) {
88
- fs.mkdirSync(enabledModulIngestionInfoDir, { recursive: true });
89
- }
90
- ingestionInfo.moduleName = enabledModule;
91
- this.logger.log(`[Start] Processing module metadata for ${moduleMetadata.name}`);
92
- const collectionId = await this.resolveRagCollectionForModule(ingestionInfo, enabledModule);
93
- ingestionInfo.collectionId = collectionId;
94
- await this.deleteInsertRagChunkForModule(ingestionInfo, moduleMetadata);
95
- for (const model of moduleMetadata.models) {
96
- await this.deleteInsertRagChunkForModel(ingestionInfo, enabledModule, model);
97
- }
98
- fs.writeFileSync(enabledModulIngestionInfoFullPath, JSON.stringify({ ...ingestionInfo }, null, 2), 'utf8');
99
- }
100
- }
101
- async resolveRagCollectionForModule(ingestionInfo, moduleName) {
102
- this.logger.debug(`Resolving RAG collection for module: ${moduleName}`);
103
- const collectionName = `${moduleName}-rag-collection`;
104
- const existingCollection = await this.ragClient.collections.retrieveByName({
105
- name: collectionName
106
- });
107
- if (existingCollection) {
108
- try {
109
- await this.ragClient.collections.delete({ id: existingCollection.results.id });
110
- }
111
- catch (e) {
112
- this.logger.warn(`[Warn] Failed deleteByFilter for collection': ${String(e)}`);
113
- }
114
- }
115
- const r = await this.ragClient.collections.create({
116
- name: collectionName,
117
- description: `Collection created to group all documents, chunks related to module: ${moduleName}`
118
- });
119
- return r.results.id;
120
- }
121
- async deleteInsertRagDocumentForModuleMetadataJsonFile(ingestionInfo, fullPath, fileName) {
122
- this.logger.debug(`Ingesting file: ${fullPath}`);
123
- const jsonStr = fs.readFileSync(fullPath, 'utf-8');
124
- const contentHash = this._sha256OfJson(JSON.parse(jsonStr));
125
- if (ingestionInfo.documentHash === contentHash && ingestionInfo.documentId) {
126
- this.logger.log(`[Skip] Unchanged: ${fileName} (hash=${contentHash.slice(0, 8)}…)`);
127
- return;
128
- }
129
- if (ingestionInfo.documentId) {
130
- try {
131
- await this.ragClient.documents.delete({ id: ingestionInfo.documentId });
132
- }
133
- catch (e) {
134
- this.logger.warn(`[Warn] Failed deleting prior document ${ingestionInfo.documentId}: ${String(e)}`);
135
- }
136
- }
137
- const ingestResult = await this.ragClient.documents.create({
138
- file: {
139
- path: fullPath,
140
- name: fileName
141
- },
142
- collectionIds: [ingestionInfo.collectionId],
143
- metadata: {
144
- contentHash,
145
- fileName
146
- },
147
- });
148
- const newId = ingestResult?.results?.documentId;
149
- if (!newId) {
150
- throw new Error(`R2R did not return a documentId for ${fileName}`);
151
- }
152
- ingestionInfo.documentId = newId;
153
- ingestionInfo.documentHash = contentHash;
154
- this.logger.log(`[OK] Ingested ${fileName} → id=${newId}, hash=${contentHash.slice(0, 8)}…`);
155
- }
156
- async deleteInsertRagChunkForModule(ingestionInfo, moduleMetadata) {
157
- const moduleName = moduleMetadata?.name;
158
- const schemaHash = this._sha256OfJson({
159
- name: moduleMetadata?.name ?? null,
160
- description: moduleMetadata?.description ?? null,
161
- models: (moduleMetadata?.models ?? []).map((m) => ({
162
- singularName: m?.singularName ?? null,
163
- description: m?.description ?? null,
164
- })),
165
- });
166
- if (ingestionInfo.moduleHash === schemaHash && ingestionInfo.moduleChunkId) {
167
- this.logger.log(`[Skip] Module unchanged: ${moduleName}`);
168
- return;
169
- }
170
- const models = moduleMetadata?.models ?? [];
171
- const modelLines = models.map((m) => {
172
- const name = m?.singularName;
173
- const desc = m?.description ? `: ${m.description}` : '';
174
- return `- ${name}${desc}`;
175
- });
176
- const text = `SolidX Module: ${moduleName}
177
- Purpose: ${moduleMetadata?.description ?? 'N/A'}
178
-
179
- Models (${models.length}):
180
- ${modelLines.join('\n')}
181
-
182
- Usage: Use this chunk to choose the correct model/field chunks for code generation or metadata edits.`;
183
- const metadata = {
184
- collectionName: `${moduleName}-rag-collection`,
185
- kind: 'solidx-metadata',
186
- type: 'module',
187
- moduleName,
188
- modelCount: models.length,
189
- schemaHash,
190
- models: models.map((m) => m?.singularName).filter(Boolean),
191
- };
192
- try {
193
- const deleteResult = await this.ragClient.documents.deleteByFilter({
194
- filters: {
195
- "$and": [
196
- { 'metadata.kind': { $eq: 'solidx-metadata' } },
197
- { 'metadata.type': { $eq: 'module' } },
198
- { 'metadata.moduleName': { $eq: moduleName } },
199
- { 'metadata.collectionName': { $eq: `${moduleName}-rag-collection` } },
200
- ]
201
- },
202
- });
203
- this.logger.log(`Deleted existing module document for moduleName: ${moduleName}. Got response:`, deleteResult);
204
- }
205
- catch (e) {
206
- this.logger.warn(`[Warn] Failed deleteByFilter for module '${moduleName}': ${String(e)}`);
207
- }
208
- const r = await this.ragClient.documents.create({
209
- chunks: [text],
210
- metadata: metadata,
211
- collectionIds: [ingestionInfo.collectionId],
212
- });
213
- const newId = r?.results?.documentId;
214
- if (!newId) {
215
- throw new Error(`R2R did not return a documentId while creating module chunk for module name ${moduleName}`);
216
- }
217
- ingestionInfo.moduleChunkId = r.results?.documentId;
218
- ingestionInfo.moduleHash = schemaHash;
219
- this.logger.log(`[OK] Ingested module ${moduleName} → id=${newId}, hash=${schemaHash.slice(0, 8)}…`);
220
- }
221
- async deleteInsertRagChunkForModel(ingestionInfo, moduleName, model) {
222
- const modelName = model?.singularName;
223
- const schemaHash = this._sha256OfJson(model);
224
- const modelsArr = ingestionInfo.models ?? (ingestionInfo.models = []);
225
- let modelEntry = modelsArr.find(m => m.modelName === modelName);
226
- if (!modelEntry) {
227
- modelEntry = { modelName, fields: [] };
228
- modelsArr.push(modelEntry);
229
- }
230
- if (modelEntry.modelHash === schemaHash && modelEntry.modelChunkId) {
231
- this.logger.log(`[Skip] Model unchanged: ${moduleName}.${modelName}`);
232
- return;
233
- }
234
- const fields = Array.isArray(model?.fields) ? model.fields : [];
235
- const userkey = fields.find((f) => f?.isUserKey)?.name ?? 'id';
236
- const uniques = fields.filter((f) => f?.unique).map((f) => f.name);
237
- const required = fields.filter((f) => f?.required).map((f) => f.name);
238
- const rels = fields
239
- .filter((f) => f.type === 'relation')
240
- .map((f) => `${modelName}.${f.name} -> ${f.relationCoModelSingularName}.${f.relationCoModelColumnName ?? 'id'}`);
241
- const fieldSummaryLines = fields.slice(0, 30).map((f) => {
242
- const bits = [
243
- `${f.name}:${f.type}`,
244
- f.required ? 'req' : '',
245
- f.unique ? 'unique' : '',
246
- f.isUserKey ? 'userkey' : '',
247
- f.relationCoModelSingularName ? `rel->${f.relationCoModelSingularName}` : '',
248
- ].filter(Boolean).join('|');
249
- return `- ${bits}`;
250
- });
251
- const text = `SolidX Model: ${modelName}
252
- Module: ${moduleName}
253
- Purpose: ${model?.description ?? 'N/A'}
254
-
255
- Signature:
256
- - Primary: ${userkey}
257
- - Unique: ${uniques.length ? uniques.join(', ') : 'none'}
258
- - Required (${required.length}): ${required.slice(0, 12).join(', ')}${required.length > 12 ? '…' : ''}
259
-
260
- Relations (${rels.length}):
261
- ${rels.length ? `- ${rels.join('\n- ')}` : 'None'}
262
-
263
- Fields (${fields.length}) [name:type|flags]:
264
- ${fieldSummaryLines.join('\n')}
265
-
266
- Usage: Use this chunk to generate DTOs, subscribers, custom service methods, and CRUD handlers for ${modelName}.
267
-
268
- Full model metadata json:
269
- ${JSON.stringify(model)}
270
-
271
- `;
272
- const metadata = {
273
- collectionName: `${moduleName}-rag-collection`,
274
- kind: 'solidx-metadata',
275
- type: 'model',
276
- moduleName,
277
- modelName,
278
- fieldCount: fields.length,
279
- requiredCount: required.length,
280
- relationCount: rels.length,
281
- userkey: userkey,
282
- uniqueFields: uniques,
283
- hasTimestamps: !!fields.find((f) => ['time', 'date', 'datetime'].includes(f.type)),
284
- schemaHash,
285
- };
286
- try {
287
- const deleteResult = await this.ragClient.documents.deleteByFilter({
288
- filters: {
289
- "$and": [
290
- { 'metadata.kind': { $eq: 'solidx-metadata' } },
291
- { 'metadata.type': { $eq: 'model' } },
292
- { 'metadata.moduleName': { $eq: moduleName } },
293
- { 'metadata.modelName': { $eq: modelName } },
294
- { 'metadata.collectionName': { $eq: `${moduleName}-rag-collection` } },
295
- ]
296
- },
297
- });
298
- this.logger.log(`Deleted existing model document for modelName: ${modelName}. Got response:`, deleteResult);
299
- }
300
- catch (e) {
301
- this.logger.warn(`[Warn] Failed deleteByFilter for module '${moduleName}': ${String(e)}`);
302
- }
303
- const r = await this.ragClient.documents.create({
304
- chunks: [text],
305
- metadata,
306
- collectionIds: [ingestionInfo.collectionId],
307
- });
308
- const newId = r?.results?.documentId;
309
- if (!newId) {
310
- throw new Error(`R2R did not return a documentId while creating model chunk for ${moduleName}.${modelName}`);
311
- }
312
- modelEntry.modelChunkId = newId;
313
- modelEntry.modelHash = schemaHash;
314
- this.logger.log(`[OK] Ingested model ${moduleName}.${modelName} → id=${newId}, hash=${schemaHash.slice(0, 8)}…`);
315
- }
316
- _buildFieldTextAndMetadata(moduleName, modelName, f) {
317
- const name = f?.name;
318
- const displayName = f?.displayName ?? name;
319
- const description = f?.description ?? 'N/A';
320
- const type = f?.type;
321
- const ormType = f?.ormType ?? null;
322
- const required = !!f?.required;
323
- const unique = !!f?.unique;
324
- const index = !!f?.index;
325
- const length = f?.length ?? null;
326
- const min = f?.min ?? null;
327
- const max = f?.max ?? null;
328
- const defaultValue = f?.defaultValue ?? null;
329
- const regex = f?.regexPattern ?? null;
330
- const regexErr = f?.regexPatternNotMatchingErrorMsg ?? null;
331
- const relationType = f?.relationType ?? null;
332
- const relModule = f?.relationModelModuleName ?? null;
333
- const relModel = f?.relationCoModelSingularName ?? null;
334
- const relField = f?.relationCoModelFieldName ?? 'id';
335
- const relCascade = f?.relationCascade ?? null;
336
- const relFixedFilter = f?.relationFieldFixedFilter ?? null;
337
- const selectionDynProvider = f?.selectionDynamicProvider ?? null;
338
- const selectionDynCtxt = f?.selectionDynamicProviderCtxt ?? null;
339
- const selectionStatic = Array.isArray(f?.selectionStaticValues) ? f.selectionStaticValues : null;
340
- const selectionValueType = f?.selectionValueType ?? null;
341
- const isMultiSelect = !!f?.isMultiSelect;
342
- const mediaTypes = Array.isArray(f?.mediaTypes) ? f.mediaTypes : null;
343
- const mediaMaxSizeKb = f?.mediaMaxSizeKb ?? null;
344
- const mediaStorageProvider = f?.mediaStorageProviderUserKey ?? null;
345
- const computedProvider = f?.computedFieldValueProvider ?? null;
346
- const computedProviderCtxt = f?.computedFieldValueProviderCtxt ?? null;
347
- const computedValueType = f?.computedFieldValueType ?? null;
348
- const computedTriggerCfg = f?.computedFieldTriggerConfig ?? null;
349
- const isPrivate = !!f?.private;
350
- const enableAuditTracking = !!f?.enableAuditTracking;
351
- const isUserKey = !!f?.isUserKey;
352
- const isSystem = !!f?.isSystem;
353
- const isMarkedForRemoval = !!f?.isMarkedForRemoval;
354
- const columnName = f?.columnName ?? null;
355
- const relCoModelColumn = f?.relationCoModelColumnName ?? null;
356
- const uuid = f?.uuid ?? null;
357
- const relationSummary = (() => {
358
- if (!relationType || !relModel)
359
- return 'none';
360
- const parts = [
361
- `type=${relationType}`,
362
- relModule ? `module=${relModule}` : null,
363
- `model=${relModel}`,
364
- relField ? `field=${relField}` : null,
365
- relCascade ? `cascade=${relCascade}` : null,
366
- relFixedFilter ? `fixedFilter=${relFixedFilter}` : null,
367
- ].filter(Boolean);
368
- return parts.join(', ');
369
- })();
370
- const selectionSummary = (() => {
371
- const parts = [];
372
- if (selectionDynProvider)
373
- parts.push(`dynamicProvider=${selectionDynProvider}`);
374
- if (selectionDynCtxt)
375
- parts.push(`dynamicCtxt=${selectionDynCtxt}`);
376
- if (selectionStatic?.length)
377
- parts.push(`static=[${this._shortList(selectionStatic, 12)}]`);
378
- if (selectionValueType)
379
- parts.push(`valueType=${selectionValueType}`);
380
- parts.push(`multiSelect=${this._oneLineBool(isMultiSelect)}`);
381
- return parts.length ? parts.join(', ') : 'none';
382
- })();
383
- const mediaSummary = (() => {
384
- const parts = [];
385
- if (mediaTypes?.length)
386
- parts.push(`types=[${this._shortList(mediaTypes, 12)}]`);
387
- if (mediaMaxSizeKb)
388
- parts.push(`maxSizeKb=${mediaMaxSizeKb}`);
389
- if (mediaStorageProvider)
390
- parts.push(`storageProvider=${typeof mediaStorageProvider === 'string' ? mediaStorageProvider : 'set'}`);
391
- return parts.length ? parts.join(', ') : 'none';
392
- })();
393
- const computedSummary = (() => {
394
- const parts = [];
395
- if (computedProvider)
396
- parts.push(`provider=${computedProvider}`);
397
- if (computedProviderCtxt)
398
- parts.push(`providerCtxt=${computedProviderCtxt}`);
399
- if (computedValueType)
400
- parts.push(`valueType=${computedValueType}`);
401
- if (computedTriggerCfg?.length)
402
- parts.push(`triggers=${computedTriggerCfg.length}`);
403
- return parts.length ? parts.join(', ') : 'none';
404
- })();
405
- const securitySummary = [
406
- `private=${this._oneLineBool(isPrivate)}`,
407
- `auditTracking=${this._oneLineBool(enableAuditTracking)}`
408
- ].filter(Boolean).join(', ');
409
- const constraintSummary = [
410
- `required=${this._oneLineBool(required)}`,
411
- `unique=${this._oneLineBool(unique)}`,
412
- `index=${this._oneLineBool(index)}`,
413
- length !== null ? `length=${length}` : null,
414
- min !== null ? `min=${min}` : null,
415
- max !== null ? `max=${max}` : null,
416
- defaultValue !== null ? `default=${defaultValue}` : null,
417
- regex ? `regex=${regex}${regexErr ? ` (${regexErr})` : ''}` : null
418
- ].filter(Boolean).join(', ');
419
- const mappingSummary = [
420
- columnName ? `column=${columnName}` : null,
421
- relCoModelColumn ? `relColumn=${relCoModelColumn}` : null,
422
- uuid ? `uuid=${uuid}` : null,
423
- `userKey=${this._oneLineBool(isUserKey)}`,
424
- `system=${this._oneLineBool(isSystem)}`,
425
- `markedForRemoval=${this._oneLineBool(isMarkedForRemoval)}`
426
- ].filter(Boolean).join(', ');
427
- const text = [
428
- `SolidX Field: ${name} (${displayName})`,
429
- `Model: ${modelName}`,
430
- `Module: ${moduleName}`,
431
- ``,
432
- `Type: ${type}${ormType ? ` (orm=${ormType})` : ''}`,
433
- `Description: ${description}`,
434
- ``,
435
- `Constraints: ${constraintSummary || 'none'}`,
436
- `Relation: ${relationSummary}`,
437
- `Selection: ${selectionSummary}`,
438
- `Media: ${mediaSummary}`,
439
- `Computed: ${computedSummary}`,
440
- `Security/Privacy/Audit: ${securitySummary}`,
441
- `Mapping/Flags: ${mappingSummary || 'none'}`,
442
- ``,
443
- `Usage: Use this chunk to generate exact field contracts (DTO, form control, DB column), `,
444
- `validation rules, relation wiring, and UI widgets (selection/media/computed).`,
445
- ].join('\n');
446
- const metadata = {
447
- kind: 'solidx-metadata',
448
- type: 'field',
449
- moduleName,
450
- modelName,
451
- fieldName: name,
452
- displayName,
453
- description,
454
- dataType: type,
455
- ormType,
456
- required,
457
- unique,
458
- index,
459
- defaultValue,
460
- length,
461
- min,
462
- max,
463
- regexPattern: regex,
464
- regexPatternNotMatchingErrorMsg: regexErr,
465
- relationType,
466
- relationModelModuleName: relModule,
467
- relationCoModelSingularName: relModel,
468
- relationCoModelFieldName: relField,
469
- relationCascade: relCascade,
470
- relationFieldFixedFilter: relFixedFilter,
471
- selectionDynProvider,
472
- selectionDynCtxt,
473
- selectionStaticValues: selectionStatic,
474
- selectionValueType,
475
- isMultiSelect,
476
- mediaTypes,
477
- mediaMaxSizeKb,
478
- mediaStorageProvider: mediaStorageProvider ? (typeof mediaStorageProvider === 'string' ? mediaStorageProvider : 'set') : null,
479
- computedFieldValueProvider: computedProvider,
480
- computedFieldValueProviderCtxt: computedProviderCtxt,
481
- computedFieldValueType: computedValueType,
482
- computedFieldTriggerConfigCount: Array.isArray(computedTriggerCfg) ? computedTriggerCfg.length : 0,
483
- private: isPrivate,
484
- enableAuditTracking,
485
- columnName,
486
- relationCoModelColumnName: relCoModelColumn,
487
- isUserKey,
488
- isSystem,
489
- isMarkedForRemoval,
490
- };
491
- return { text, metadata };
492
- }
493
- async deleteInsertRagChunkForField(ingestionInfo, moduleName, modelName, field) {
494
- const fieldName = field?.name ?? 'unknown_field';
495
- const schemaHash = this._sha256OfJson(field);
496
- const modelsArr = ingestionInfo.models ?? (ingestionInfo.models = []);
497
- let modelEntry = modelsArr.find(m => m.modelName === modelName);
498
- if (!modelEntry) {
499
- modelEntry = { modelName, fields: [] };
500
- modelsArr.push(modelEntry);
501
- }
502
- const fieldsArr = modelEntry.fields ?? (modelEntry.fields = []);
503
- let fieldEntry = fieldsArr.find(f => f.fieldName === fieldName);
504
- if (!fieldEntry) {
505
- fieldEntry = { fieldName };
506
- fieldsArr.push(fieldEntry);
507
- }
508
- if (fieldEntry.fieldHash === schemaHash && fieldEntry.fieldChunkId) {
509
- this.logger.log(`[Skip] Field unchanged: ${moduleName}.${modelName}.${fieldName}`);
510
- return fieldEntry.fieldChunkId;
511
- }
512
- const { text, metadata } = this._buildFieldTextAndMetadata(moduleName, modelName, field);
513
- metadata.schemaHash = schemaHash;
514
- if (fieldEntry.fieldChunkId) {
515
- try {
516
- await this.ragClient.documents.delete({ id: fieldEntry.fieldChunkId });
517
- }
518
- catch (e) {
519
- this.logger.warn(`[Warn] Failed deleting old field chunk (${fieldEntry.fieldChunkId}): ${String(e)}`);
520
- }
521
- }
522
- const r = await this.ragClient.documents.create({
523
- raw_text: text,
524
- metadata,
525
- collectionIds: [ingestionInfo.collectionId],
526
- });
527
- const newId = r?.results?.documentId;
528
- if (!newId) {
529
- throw new Error(`R2R did not return a documentId while creating field chunk for ${moduleName}.${modelName}.${fieldName}`);
530
- }
531
- fieldEntry.fieldChunkId = newId;
532
- fieldEntry.fieldHash = schemaHash;
533
- this.logger.log(`[OK] Ingested field ${moduleName}.${modelName}.${fieldName} → id=${newId}, hash=${schemaHash.slice(0, 8)}…`);
534
- return newId;
535
- }
536
- };
537
- exports.IngestMetadataService = IngestMetadataService;
538
- exports.IngestMetadataService = IngestMetadataService = IngestMetadataService_1 = __decorate([
539
- (0, common_1.Injectable)(),
540
- __metadata("design:paramtypes", [r2r_helper_service_1.R2RHelperService])
541
- ], IngestMetadataService);
542
- //# sourceMappingURL=ingest-metadata.service.js.map