@solidstarters/solid-core 1.2.180 → 1.2.184

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 (170) hide show
  1. package/dev-grooming-docs/ozzy-prompts.txt +60 -3
  2. package/dist/config/iam.config.d.ts.map +1 -1
  3. package/dist/config/iam.config.js +2 -1
  4. package/dist/config/iam.config.js.map +1 -1
  5. package/dist/controllers/service.controller.d.ts.map +1 -1
  6. package/dist/controllers/service.controller.js +0 -1
  7. package/dist/controllers/service.controller.js.map +1 -1
  8. package/dist/decorators/active-user.decorator.d.ts +1 -1
  9. package/dist/dtos/create-menu-item-metadata.dto.d.ts +3 -0
  10. package/dist/dtos/create-menu-item-metadata.dto.d.ts.map +1 -1
  11. package/dist/dtos/create-menu-item-metadata.dto.js +4 -1
  12. package/dist/dtos/create-menu-item-metadata.dto.js.map +1 -1
  13. package/dist/dtos/create-role-metadata.dto.d.ts +4 -0
  14. package/dist/dtos/create-role-metadata.dto.d.ts.map +1 -1
  15. package/dist/dtos/create-role-metadata.dto.js +45 -1
  16. package/dist/dtos/create-role-metadata.dto.js.map +1 -1
  17. package/dist/interfaces.d.ts +20 -0
  18. package/dist/interfaces.d.ts.map +1 -1
  19. package/dist/interfaces.js.map +1 -1
  20. package/dist/jobs/database/trigger-mcp-client-subscriber-database.service.d.ts +13 -5
  21. package/dist/jobs/database/trigger-mcp-client-subscriber-database.service.d.ts.map +1 -1
  22. package/dist/jobs/database/trigger-mcp-client-subscriber-database.service.js +97 -13
  23. package/dist/jobs/database/trigger-mcp-client-subscriber-database.service.js.map +1 -1
  24. package/dist/repository/view-metadata.repository.d.ts +1 -0
  25. package/dist/repository/view-metadata.repository.d.ts.map +1 -1
  26. package/dist/repository/view-metadata.repository.js +14 -0
  27. package/dist/repository/view-metadata.repository.js.map +1 -1
  28. package/dist/seeders/module-metadata-seeder.service.d.ts +52 -42
  29. package/dist/seeders/module-metadata-seeder.service.d.ts.map +1 -1
  30. package/dist/seeders/module-metadata-seeder.service.js +259 -202
  31. package/dist/seeders/module-metadata-seeder.service.js.map +1 -1
  32. package/dist/seeders/permission-metadata-seeder.service.js +0 -1
  33. package/dist/seeders/permission-metadata-seeder.service.js.map +1 -1
  34. package/dist/seeders/seed-data/solid-core-metadata.json +2 -3
  35. package/dist/services/ai-interaction.service.d.ts +3 -3
  36. package/dist/services/ai-interaction.service.d.ts.map +1 -1
  37. package/dist/services/ai-interaction.service.js +5 -5
  38. package/dist/services/ai-interaction.service.js.map +1 -1
  39. package/dist/services/chatter-message.service.d.ts.map +1 -1
  40. package/dist/services/chatter-message.service.js +9 -2
  41. package/dist/services/chatter-message.service.js.map +1 -1
  42. package/dist/services/genai/ingest-metadata.service.d.ts.map +1 -1
  43. package/dist/services/genai/ingest-metadata.service.js +46 -35
  44. package/dist/services/genai/ingest-metadata.service.js.map +1 -1
  45. package/dist/services/{mcp-tool-response-handlers/mcp-tool-response-handler-factory.service.d.ts → genai/mcp-handlers/mcp-handler-factory.service.d.ts} +3 -3
  46. package/dist/services/genai/mcp-handlers/mcp-handler-factory.service.d.ts.map +1 -0
  47. package/dist/services/{mcp-tool-response-handlers/mcp-tool-response-handler-factory.service.js → genai/mcp-handlers/mcp-handler-factory.service.js} +10 -10
  48. package/dist/services/genai/mcp-handlers/mcp-handler-factory.service.js.map +1 -0
  49. package/dist/services/genai/mcp-handlers/solid-add-fields-to-model-mcp-handler.service.d.ts +12 -0
  50. package/dist/services/genai/mcp-handlers/solid-add-fields-to-model-mcp-handler.service.d.ts.map +1 -0
  51. package/dist/services/{mcp-tool-response-handlers/solid-add-field-mcp-tool-response-handler.service.js → genai/mcp-handlers/solid-add-fields-to-model-mcp-handler.service.js} +19 -20
  52. package/dist/services/genai/mcp-handlers/solid-add-fields-to-model-mcp-handler.service.js.map +1 -0
  53. package/dist/services/genai/mcp-handlers/solid-add-question-to-dashboard-mcp-handler.service.d.ts +12 -0
  54. package/dist/services/genai/mcp-handlers/solid-add-question-to-dashboard-mcp-handler.service.d.ts.map +1 -0
  55. package/dist/services/genai/mcp-handlers/solid-add-question-to-dashboard-mcp-handler.service.js +41 -0
  56. package/dist/services/genai/mcp-handlers/solid-add-question-to-dashboard-mcp-handler.service.js.map +1 -0
  57. package/dist/services/genai/mcp-handlers/solid-add-variable-to-dashboard-mcp-handler.service.d.ts +12 -0
  58. package/dist/services/genai/mcp-handlers/solid-add-variable-to-dashboard-mcp-handler.service.d.ts.map +1 -0
  59. package/dist/services/genai/mcp-handlers/solid-add-variable-to-dashboard-mcp-handler.service.js +42 -0
  60. package/dist/services/genai/mcp-handlers/solid-add-variable-to-dashboard-mcp-handler.service.js.map +1 -0
  61. package/dist/services/genai/mcp-handlers/solid-create-computed-provider-mcp-handler.service.d.ts +16 -0
  62. package/dist/services/genai/mcp-handlers/solid-create-computed-provider-mcp-handler.service.d.ts.map +1 -0
  63. package/dist/services/genai/mcp-handlers/solid-create-computed-provider-mcp-handler.service.js +75 -0
  64. package/dist/services/genai/mcp-handlers/solid-create-computed-provider-mcp-handler.service.js.map +1 -0
  65. package/dist/services/{mcp-tool-response-handlers/solid-create-dashboard-mcp-tool-response-handler.service.d.ts → genai/mcp-handlers/solid-create-dashboard-mcp-handler.service.d.ts} +9 -9
  66. package/dist/services/genai/mcp-handlers/solid-create-dashboard-mcp-handler.service.d.ts.map +1 -0
  67. package/dist/services/{mcp-tool-response-handlers/solid-create-dashboard-mcp-tool-response-handler.service.js → genai/mcp-handlers/solid-create-dashboard-mcp-handler.service.js} +16 -14
  68. package/dist/services/genai/mcp-handlers/solid-create-dashboard-mcp-handler.service.js.map +1 -0
  69. package/dist/services/genai/mcp-handlers/solid-create-dashboard-question-mcp-handler.service.d.ts +12 -0
  70. package/dist/services/genai/mcp-handlers/solid-create-dashboard-question-mcp-handler.service.d.ts.map +1 -0
  71. package/dist/services/{mcp-tool-response-handlers/solid-create-dashboard-question-mcp-tool-response-handler.service.js → genai/mcp-handlers/solid-create-dashboard-question-mcp-handler.service.js} +8 -8
  72. package/dist/services/genai/mcp-handlers/solid-create-dashboard-question-mcp-handler.service.js.map +1 -0
  73. package/dist/services/{mcp-tool-response-handlers/solid-create-dashboard-question-sql-dataset-config-mcp-tool-response-handler.service.d.ts → genai/mcp-handlers/solid-create-dashboard-question-sql-dataset-config-mcp-handler.service.d.ts} +4 -4
  74. package/dist/services/genai/mcp-handlers/solid-create-dashboard-question-sql-dataset-config-mcp-handler.service.d.ts.map +1 -0
  75. package/dist/services/{mcp-tool-response-handlers/solid-create-dashboard-question-sql-dataset-config-mcp-tool-response-handler.service.js → genai/mcp-handlers/solid-create-dashboard-question-sql-dataset-config-mcp-handler.service.js} +8 -8
  76. package/dist/services/genai/mcp-handlers/solid-create-dashboard-question-sql-dataset-config-mcp-handler.service.js.map +1 -0
  77. package/dist/services/genai/mcp-handlers/solid-create-dashboard-widget-mcp-handler.service.d.ts +12 -0
  78. package/dist/services/genai/mcp-handlers/solid-create-dashboard-widget-mcp-handler.service.d.ts.map +1 -0
  79. package/dist/services/{mcp-tool-response-handlers/solid-create-dashboard-widget-mcp-tool-response-handler.service.js → genai/mcp-handlers/solid-create-dashboard-widget-mcp-handler.service.js} +8 -8
  80. package/dist/services/genai/mcp-handlers/solid-create-dashboard-widget-mcp-handler.service.js.map +1 -0
  81. package/dist/services/genai/mcp-handlers/solid-create-model-with-fields-mcp-handler.service.d.ts +14 -0
  82. package/dist/services/genai/mcp-handlers/solid-create-model-with-fields-mcp-handler.service.d.ts.map +1 -0
  83. package/dist/services/{mcp-tool-response-handlers/solid-create-model-with-fields-mcp-tool-response-handler.service.js → genai/mcp-handlers/solid-create-model-with-fields-mcp-handler.service.js} +14 -16
  84. package/dist/services/genai/mcp-handlers/solid-create-model-with-fields-mcp-handler.service.js.map +1 -0
  85. package/dist/services/{mcp-tool-response-handlers/solid-create-module-mcp-tool-response-handler.service.d.ts → genai/mcp-handlers/solid-create-module-mcp-handler.service.d.ts} +4 -4
  86. package/dist/services/genai/mcp-handlers/solid-create-module-mcp-handler.service.d.ts.map +1 -0
  87. package/dist/services/{mcp-tool-response-handlers/solid-create-module-mcp-tool-response-handler.service.js → genai/mcp-handlers/solid-create-module-mcp-handler.service.js} +13 -10
  88. package/dist/services/genai/mcp-handlers/solid-create-module-mcp-handler.service.js.map +1 -0
  89. package/dist/services/{mcp-tool-response-handlers/solid-save-model-layout-mcp-tool-response-handler.service.d.ts → genai/mcp-handlers/solid-update-layout-mcp-handler.service.d.ts} +3 -3
  90. package/dist/services/genai/mcp-handlers/solid-update-layout-mcp-handler.service.d.ts.map +1 -0
  91. package/dist/services/{mcp-tool-response-handlers/solid-save-model-layout-mcp-tool-response-handler.service.js → genai/mcp-handlers/solid-update-layout-mcp-handler.service.js} +12 -10
  92. package/dist/services/genai/mcp-handlers/solid-update-layout-mcp-handler.service.js.map +1 -0
  93. package/dist/services/import-transaction.service.js +2 -2
  94. package/dist/services/import-transaction.service.js.map +1 -1
  95. package/dist/services/menu-item-metadata.service.d.ts.map +1 -1
  96. package/dist/services/menu-item-metadata.service.js +0 -2
  97. package/dist/services/menu-item-metadata.service.js.map +1 -1
  98. package/dist/services/model-metadata.service.d.ts.map +1 -1
  99. package/dist/services/model-metadata.service.js.map +1 -1
  100. package/dist/services/module-metadata.service.d.ts.map +1 -1
  101. package/dist/services/module-metadata.service.js +1 -1
  102. package/dist/services/module-metadata.service.js.map +1 -1
  103. package/dist/services/role-metadata.service.d.ts.map +1 -1
  104. package/dist/services/role-metadata.service.js +1 -7
  105. package/dist/services/role-metadata.service.js.map +1 -1
  106. package/dist/services/solid-ts-morph.service.d.ts +28 -0
  107. package/dist/services/solid-ts-morph.service.d.ts.map +1 -0
  108. package/dist/services/solid-ts-morph.service.js +222 -0
  109. package/dist/services/solid-ts-morph.service.js.map +1 -0
  110. package/dist/solid-core.module.d.ts.map +1 -1
  111. package/dist/solid-core.module.js +26 -18
  112. package/dist/solid-core.module.js.map +1 -1
  113. package/dist/tsconfig.tsbuildinfo +1 -1
  114. package/package.json +6 -4
  115. package/solid_seed_fixes.ts.txt +93 -0
  116. package/src/config/iam.config.ts +2 -1
  117. package/src/controllers/service.controller.ts +4 -1
  118. package/src/dtos/create-menu-item-metadata.dto.ts +5 -1
  119. package/src/dtos/create-role-metadata.dto.ts +60 -1
  120. package/src/interfaces.ts +29 -2
  121. package/src/jobs/database/trigger-mcp-client-subscriber-database.service.ts +113 -13
  122. package/src/repository/view-metadata.repository.ts +15 -0
  123. package/src/seeders/module-metadata-seeder.service.ts +355 -282
  124. package/src/seeders/permission-metadata-seeder.service.ts +1 -1
  125. package/src/seeders/seed-data/solid-core-metadata.json +3 -5
  126. package/src/services/ai-interaction.service.ts +3 -5
  127. package/src/services/chatter-message.service.ts +11 -3
  128. package/src/services/genai/ingest-metadata.service.ts +115 -39
  129. package/src/services/{mcp-tool-response-handlers/mcp-tool-response-handler-factory.service.ts → genai/mcp-handlers/mcp-handler-factory.service.ts} +5 -5
  130. package/src/services/genai/mcp-handlers/solid-add-fields-to-model-mcp-handler.service.ts +68 -0
  131. package/src/services/genai/mcp-handlers/solid-add-question-to-dashboard-mcp-handler.service.ts +43 -0
  132. package/src/services/genai/mcp-handlers/solid-add-variable-to-dashboard-mcp-handler.service.ts +44 -0
  133. package/src/services/genai/mcp-handlers/solid-create-computed-provider-mcp-handler.service.ts +71 -0
  134. package/src/services/{mcp-tool-response-handlers/solid-create-dashboard-mcp-tool-response-handler.service.ts → genai/mcp-handlers/solid-create-dashboard-mcp-handler.service.ts} +11 -10
  135. package/src/services/{mcp-tool-response-handlers/solid-create-dashboard-question-mcp-tool-response-handler.service.ts → genai/mcp-handlers/solid-create-dashboard-question-mcp-handler.service.ts} +3 -3
  136. package/src/services/{mcp-tool-response-handlers/solid-create-dashboard-question-sql-dataset-config-mcp-tool-response-handler.service.ts → genai/mcp-handlers/solid-create-dashboard-question-sql-dataset-config-mcp-handler.service.ts} +3 -3
  137. package/src/services/{mcp-tool-response-handlers/solid-create-dashboard-widget-mcp-tool-response-handler.service.ts → genai/mcp-handlers/solid-create-dashboard-widget-mcp-handler.service.ts} +3 -3
  138. package/src/services/{mcp-tool-response-handlers/solid-create-model-with-fields-mcp-tool-response-handler.service.ts → genai/mcp-handlers/solid-create-model-with-fields-mcp-handler.service.ts} +8 -10
  139. package/src/services/{mcp-tool-response-handlers/solid-create-module-mcp-tool-response-handler.service.ts → genai/mcp-handlers/solid-create-module-mcp-handler.service.ts} +8 -5
  140. package/src/services/{mcp-tool-response-handlers/solid-save-model-layout-mcp-tool-response-handler.service.ts → genai/mcp-handlers/solid-update-layout-mcp-handler.service.ts} +11 -5
  141. package/src/services/import-transaction.service.ts +2 -2
  142. package/src/services/menu-item-metadata.service.ts +3 -7
  143. package/src/services/model-metadata.service.ts +0 -3
  144. package/src/services/module-metadata.service.ts +2 -3
  145. package/src/services/role-metadata.service.ts +22 -8
  146. package/src/services/solid-ts-morph.service.ts +263 -0
  147. package/src/solid-core.module.ts +29 -19
  148. package/dist/services/mcp-tool-response-handlers/mcp-tool-response-handler-factory.service.d.ts.map +0 -1
  149. package/dist/services/mcp-tool-response-handlers/mcp-tool-response-handler-factory.service.js.map +0 -1
  150. package/dist/services/mcp-tool-response-handlers/solid-add-field-mcp-tool-response-handler.service.d.ts +0 -16
  151. package/dist/services/mcp-tool-response-handlers/solid-add-field-mcp-tool-response-handler.service.d.ts.map +0 -1
  152. package/dist/services/mcp-tool-response-handlers/solid-add-field-mcp-tool-response-handler.service.js.map +0 -1
  153. package/dist/services/mcp-tool-response-handlers/solid-create-dashboard-mcp-tool-response-handler.service.d.ts.map +0 -1
  154. package/dist/services/mcp-tool-response-handlers/solid-create-dashboard-mcp-tool-response-handler.service.js.map +0 -1
  155. package/dist/services/mcp-tool-response-handlers/solid-create-dashboard-question-mcp-tool-response-handler.service.d.ts +0 -12
  156. package/dist/services/mcp-tool-response-handlers/solid-create-dashboard-question-mcp-tool-response-handler.service.d.ts.map +0 -1
  157. package/dist/services/mcp-tool-response-handlers/solid-create-dashboard-question-mcp-tool-response-handler.service.js.map +0 -1
  158. package/dist/services/mcp-tool-response-handlers/solid-create-dashboard-question-sql-dataset-config-mcp-tool-response-handler.service.d.ts.map +0 -1
  159. package/dist/services/mcp-tool-response-handlers/solid-create-dashboard-question-sql-dataset-config-mcp-tool-response-handler.service.js.map +0 -1
  160. package/dist/services/mcp-tool-response-handlers/solid-create-dashboard-widget-mcp-tool-response-handler.service.d.ts +0 -12
  161. package/dist/services/mcp-tool-response-handlers/solid-create-dashboard-widget-mcp-tool-response-handler.service.d.ts.map +0 -1
  162. package/dist/services/mcp-tool-response-handlers/solid-create-dashboard-widget-mcp-tool-response-handler.service.js.map +0 -1
  163. package/dist/services/mcp-tool-response-handlers/solid-create-model-with-fields-mcp-tool-response-handler.service.d.ts +0 -16
  164. package/dist/services/mcp-tool-response-handlers/solid-create-model-with-fields-mcp-tool-response-handler.service.d.ts.map +0 -1
  165. package/dist/services/mcp-tool-response-handlers/solid-create-model-with-fields-mcp-tool-response-handler.service.js.map +0 -1
  166. package/dist/services/mcp-tool-response-handlers/solid-create-module-mcp-tool-response-handler.service.d.ts.map +0 -1
  167. package/dist/services/mcp-tool-response-handlers/solid-create-module-mcp-tool-response-handler.service.js.map +0 -1
  168. package/dist/services/mcp-tool-response-handlers/solid-save-model-layout-mcp-tool-response-handler.service.d.ts.map +0 -1
  169. package/dist/services/mcp-tool-response-handlers/solid-save-model-layout-mcp-tool-response-handler.service.js.map +0 -1
  170. package/src/services/mcp-tool-response-handlers/solid-add-field-mcp-tool-response-handler.service.ts +0 -56
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-handler-factory.service.d.ts","sourceRoot":"","sources":["../../../../src/services/genai/mcp-handlers/mcp-handler-factory.service.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AACzD,OAAO,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AAGxE,qBACa,iBAAiB;IAItB,OAAO,CAAC,QAAQ,CAAC,yBAAyB;IAH9C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAsC;gBAGxC,yBAAyB,EAAE,sBAAsB;IAItE,WAAW,CAAC,WAAW,EAAE,MAAM,GAAG,uBAAuB;CAiB5D"}
@@ -8,20 +8,20 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
8
8
  var __metadata = (this && this.__metadata) || function (k, v) {
9
9
  if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
10
  };
11
- var McpToolResponseHandlerFactory_1;
11
+ var McpHandlerFactory_1;
12
12
  Object.defineProperty(exports, "__esModule", { value: true });
13
- exports.McpToolResponseHandlerFactory = void 0;
13
+ exports.McpHandlerFactory = void 0;
14
14
  const common_1 = require("@nestjs/common");
15
15
  const strings_1 = require("@angular-devkit/core/src/utils/strings");
16
- const solid_introspect_service_1 = require("../solid-introspect.service");
17
- let McpToolResponseHandlerFactory = McpToolResponseHandlerFactory_1 = class McpToolResponseHandlerFactory {
16
+ const solid_introspect_service_1 = require("../../solid-introspect.service");
17
+ let McpHandlerFactory = McpHandlerFactory_1 = class McpHandlerFactory {
18
18
  constructor(solidIntrospectionService) {
19
19
  this.solidIntrospectionService = solidIntrospectionService;
20
- this.logger = new common_1.Logger(McpToolResponseHandlerFactory_1.name);
20
+ this.logger = new common_1.Logger(McpHandlerFactory_1.name);
21
21
  }
22
22
  getInstance(toolInvoked) {
23
23
  toolInvoked = (0, strings_1.classify)(toolInvoked);
24
- let resolvedHandlerName = `${toolInvoked}McpToolResponseHandler`;
24
+ let resolvedHandlerName = `${toolInvoked}McpHandler`;
25
25
  let actualHandler = this.solidIntrospectionService.getProvider(resolvedHandlerName);
26
26
  if (!actualHandler) {
27
27
  throw new Error(`Unable to locate mcp tool handler with name ${resolvedHandlerName}`);
@@ -31,9 +31,9 @@ let McpToolResponseHandlerFactory = McpToolResponseHandlerFactory_1 = class McpT
31
31
  return actualHandlerInstance;
32
32
  }
33
33
  };
34
- exports.McpToolResponseHandlerFactory = McpToolResponseHandlerFactory;
35
- exports.McpToolResponseHandlerFactory = McpToolResponseHandlerFactory = McpToolResponseHandlerFactory_1 = __decorate([
34
+ exports.McpHandlerFactory = McpHandlerFactory;
35
+ exports.McpHandlerFactory = McpHandlerFactory = McpHandlerFactory_1 = __decorate([
36
36
  (0, common_1.Injectable)(),
37
37
  __metadata("design:paramtypes", [solid_introspect_service_1.SolidIntrospectService])
38
- ], McpToolResponseHandlerFactory);
39
- //# sourceMappingURL=mcp-tool-response-handler-factory.service.js.map
38
+ ], McpHandlerFactory);
39
+ //# sourceMappingURL=mcp-handler-factory.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-handler-factory.service.js","sourceRoot":"","sources":["../../../../src/services/genai/mcp-handlers/mcp-handler-factory.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,2CAAoD;AAEpD,oEAAkE;AAElE,6EAAwE;AAIjE,IAAM,iBAAiB,yBAAvB,MAAM,iBAAiB;IAG1B,YACqB,yBAAiD;QAAjD,8BAAyB,GAAzB,yBAAyB,CAAwB;QAHrD,WAAM,GAAG,IAAI,eAAM,CAAC,mBAAiB,CAAC,IAAI,CAAC,CAAC;IAK7D,CAAC;IAED,WAAW,CAAC,WAAmB;QAC3B,WAAW,GAAG,IAAA,kBAAQ,EAAC,WAAW,CAAC,CAAC;QAEpC,IAAI,mBAAmB,GAAG,GAAG,WAAW,YAAY,CAAC;QAGrD,IAAI,aAAa,GAAG,IAAI,CAAC,yBAAyB,CAAC,WAAW,CAAC,mBAAmB,CAAC,CAAC;QACpF,IAAI,CAAC,aAAa,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,+CAA+C,mBAAmB,EAAE,CAAC,CAAC;QAC1F,CAAC;QAGD,MAAM,qBAAqB,GAA4B,aAAa,CAAC,QAAQ,CAAC;QAC9E,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,gDAAgD,aAAa,CAAC,IAAI,EAAE,CAAC,CAAC;QAExF,OAAO,qBAAqB,CAAC;IACjC,CAAC;CACJ,CAAA;AAzBY,8CAAiB;4BAAjB,iBAAiB;IAD7B,IAAA,mBAAU,GAAE;qCAKuC,iDAAsB;GAJ7D,iBAAiB,CAyB7B","sourcesContent":["import { Injectable, Logger } from '@nestjs/common';\n\nimport { classify } from '@angular-devkit/core/src/utils/strings';\nimport { IMcpToolResponseHandler } from 'src/interfaces';\nimport { SolidIntrospectService } from '../../solid-introspect.service';\n\n\n@Injectable()\nexport class McpHandlerFactory {\n private readonly logger = new Logger(McpHandlerFactory.name);\n\n constructor(\n private readonly solidIntrospectionService: SolidIntrospectService\n ) {\n }\n\n getInstance(toolInvoked: string): IMcpToolResponseHandler {\n toolInvoked = classify(toolInvoked);\n\n let resolvedHandlerName = `${toolInvoked}McpHandler`;\n\n // Get hold of the tool response handler instance using the tool name used. \n let actualHandler = this.solidIntrospectionService.getProvider(resolvedHandlerName);\n if (!actualHandler) {\n throw new Error(`Unable to locate mcp tool handler with name ${resolvedHandlerName}`);\n }\n\n // type safe\n const actualHandlerInstance: IMcpToolResponseHandler = actualHandler.instance;\n this.logger.error(`Resolved mcp tool response handler with name ${actualHandler.name}`);\n\n return actualHandlerInstance;\n }\n}\n"]}
@@ -0,0 +1,12 @@
1
+ import { AiInteraction } from "src/entities/ai-interaction.entity";
2
+ import { IMcpToolResponseHandler } from "../../../interfaces";
3
+ import { ModelMetadataService } from "../../model-metadata.service";
4
+ export declare class SolidAddFieldsToModelMcpHandler implements IMcpToolResponseHandler {
5
+ private readonly modelMetadataService;
6
+ constructor(modelMetadataService: ModelMetadataService);
7
+ apply(aiInteraction: AiInteraction): Promise<{
8
+ seedingRequired: boolean;
9
+ serverRebooting: boolean;
10
+ }>;
11
+ }
12
+ //# sourceMappingURL=solid-add-fields-to-model-mcp-handler.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"solid-add-fields-to-model-mcp-handler.service.d.ts","sourceRoot":"","sources":["../../../../src/services/genai/mcp-handlers/solid-add-fields-to-model-mcp-handler.service.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,oCAAoC,CAAC;AAEnE,OAAO,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAC9D,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AAEpE,qBAEa,+BAAgC,YAAW,uBAAuB;IAGvE,OAAO,CAAC,QAAQ,CAAC,oBAAoB;gBAApB,oBAAoB,EAAE,oBAAoB;IAIzD,KAAK,CAAC,aAAa,EAAE,aAAa;;;;CAmD3C"}
@@ -9,28 +9,29 @@ var __metadata = (this && this.__metadata) || function (k, v) {
9
9
  if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
10
  };
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.SolidAddFieldMcpToolResponseHandler = void 0;
12
+ exports.SolidAddFieldsToModelMcpHandler = void 0;
13
13
  const common_1 = require("@nestjs/common");
14
- const solid_registry_1 = require("../../helpers/solid-registry");
15
- const field_metadata_service_1 = require("../field-metadata.service");
16
- const model_metadata_service_1 = require("../model-metadata.service");
17
- let SolidAddFieldMcpToolResponseHandler = class SolidAddFieldMcpToolResponseHandler {
18
- constructor(modelMetadataService, fieldMetadataService, solidRegistry) {
14
+ const model_metadata_service_1 = require("../../model-metadata.service");
15
+ let SolidAddFieldsToModelMcpHandler = class SolidAddFieldsToModelMcpHandler {
16
+ constructor(modelMetadataService) {
19
17
  this.modelMetadataService = modelMetadataService;
20
- this.fieldMetadataService = fieldMetadataService;
21
- this.solidRegistry = solidRegistry;
22
18
  }
23
19
  async apply(aiInteraction) {
24
20
  const escapedMessage = aiInteraction.message.replace(/\\'/g, "'");
25
- const aiResponse = JSON.parse(escapedMessage);
26
- const { modelUserKey, fieldSchema } = aiResponse;
21
+ const aiResponseMessage = JSON.parse(escapedMessage);
22
+ const { data } = aiResponseMessage;
23
+ const { modelUserKey, schemaPatch } = data;
24
+ const { fieldsToAdd } = schemaPatch;
27
25
  const modelMetadata = await this.modelMetadataService.findOneByUserKey(modelUserKey, ['fields']);
28
26
  if (!modelMetadata) {
29
27
  throw new Error(`Model with user key ${modelUserKey} not found.`);
30
28
  }
31
- fieldSchema['modelId'] = modelMetadata.id;
32
- modelMetadata.fields.push(fieldSchema);
33
- const modelObj = await this.modelMetadataService.update(modelMetadata.id, modelMetadata);
29
+ for (let i = 0; i < fieldsToAdd.length; i++) {
30
+ const fieldSchema = fieldsToAdd[i];
31
+ fieldSchema['modelId'] = modelMetadata.id;
32
+ modelMetadata.fields.push(fieldSchema);
33
+ }
34
+ await this.modelMetadataService.update(modelMetadata.id, modelMetadata);
34
35
  await this.modelMetadataService.handleGenerateCode({ modelId: modelMetadata.id });
35
36
  return {
36
37
  seedingRequired: true,
@@ -38,11 +39,9 @@ let SolidAddFieldMcpToolResponseHandler = class SolidAddFieldMcpToolResponseHand
38
39
  };
39
40
  }
40
41
  };
41
- exports.SolidAddFieldMcpToolResponseHandler = SolidAddFieldMcpToolResponseHandler;
42
- exports.SolidAddFieldMcpToolResponseHandler = SolidAddFieldMcpToolResponseHandler = __decorate([
42
+ exports.SolidAddFieldsToModelMcpHandler = SolidAddFieldsToModelMcpHandler;
43
+ exports.SolidAddFieldsToModelMcpHandler = SolidAddFieldsToModelMcpHandler = __decorate([
43
44
  (0, common_1.Injectable)(),
44
- __metadata("design:paramtypes", [model_metadata_service_1.ModelMetadataService,
45
- field_metadata_service_1.FieldMetadataService,
46
- solid_registry_1.SolidRegistry])
47
- ], SolidAddFieldMcpToolResponseHandler);
48
- //# sourceMappingURL=solid-add-field-mcp-tool-response-handler.service.js.map
45
+ __metadata("design:paramtypes", [model_metadata_service_1.ModelMetadataService])
46
+ ], SolidAddFieldsToModelMcpHandler);
47
+ //# sourceMappingURL=solid-add-fields-to-model-mcp-handler.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"solid-add-fields-to-model-mcp-handler.service.js","sourceRoot":"","sources":["../../../../src/services/genai/mcp-handlers/solid-add-fields-to-model-mcp-handler.service.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAA4C;AAK5C,yEAAoE;AAI7D,IAAM,+BAA+B,GAArC,MAAM,+BAA+B;IAExC,YACqB,oBAA0C;QAA1C,yBAAoB,GAApB,oBAAoB,CAAsB;IAE/D,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,aAA4B;QAEpC,MAAM,cAAc,GAAG,aAAa,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QAClE,MAAM,iBAAiB,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;QAerD,MAAM,EAAE,IAAI,EAAE,GAAG,iBAAiB,CAAC;QACnC,MAAM,EAAE,YAAY,EAAE,WAAW,EAAE,GAAG,IAAI,CAAC;QAC3C,MAAM,EAAE,WAAW,EAAE,GAAG,WAAW,CAAC;QAKpC,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,oBAAoB,CAAC,gBAAgB,CAAC,YAAY,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;QACjG,IAAI,CAAC,aAAa,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,uBAAuB,YAAY,aAAa,CAAC,CAAC;QACtE,CAAC;QAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAC1C,MAAM,WAAW,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;YAGnC,WAAW,CAAC,SAAS,CAAC,GAAG,aAAa,CAAC,EAAE,CAAC;YAC1C,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,WAA4B,CAAC,CAAC;QAC5D,CAAC;QAGD,MAAM,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,EAAE,aAAkD,CAAC,CAAC;QAG7G,MAAM,IAAI,CAAC,oBAAoB,CAAC,kBAAkB,CAAC,EAAE,OAAO,EAAE,aAAa,CAAC,EAAE,EAAE,CAAC,CAAC;QAGlF,OAAO;YACH,eAAe,EAAE,IAAI;YACrB,eAAe,EAAE,IAAI;SACxB,CAAA;IACL,CAAC;CAEJ,CAAA;AA1DY,0EAA+B;0CAA/B,+BAA+B;IAF3C,IAAA,mBAAU,GAAE;qCAKkC,6CAAoB;GAHtD,+BAA+B,CA0D3C","sourcesContent":["import { Injectable } from \"@nestjs/common\";\nimport { UpdateModelMetaDataDto } from \"src/dtos/update-model-metadata.dto\";\nimport { AiInteraction } from \"src/entities/ai-interaction.entity\";\nimport { FieldMetadata } from \"src/entities/field-metadata.entity\";\nimport { IMcpToolResponseHandler } from \"../../../interfaces\";\nimport { ModelMetadataService } from \"../../model-metadata.service\";\n\n@Injectable()\n// solid_add_field\nexport class SolidAddFieldsToModelMcpHandler implements IMcpToolResponseHandler {\n\n constructor(\n private readonly modelMetadataService: ModelMetadataService,\n ) {\n }\n\n async apply(aiInteraction: AiInteraction) {\n // const aiResponse = JSON.parse(aiInteraction.message);\n const escapedMessage = aiInteraction.message.replace(/\\\\'/g, \"'\");\n const aiResponseMessage = JSON.parse(escapedMessage);\n\n // {\n // \"generation_status\": \"success\",\n // \"instructions\": \"<optional string>\",\n // \"data\": {\n // \"modelUserKey\": \"<existing model name>\",\n // \"schemaPatch\": {\n // \"fieldsToAdd\": [\n // <json representing each of the fields to be added>\n // ]\n // }\n // }\n // } \n // const { modelUserKey, fieldSchema } = aiResponseMessage;\n const { data } = aiResponseMessage;\n const { modelUserKey, schemaPatch } = data;\n const { fieldsToAdd } = schemaPatch;\n\n // TODO: Validate if another field with same name exists, if it does then raise an error...\n\n // TODO: load the model with the fields.\n const modelMetadata = await this.modelMetadataService.findOneByUserKey(modelUserKey, ['fields']);\n if (!modelMetadata) {\n throw new Error(`Model with user key ${modelUserKey} not found.`);\n }\n\n for (let i = 0; i < fieldsToAdd.length; i++) {\n const fieldSchema = fieldsToAdd[i];\n\n // Add the fieldSchema to the model fields array\n fieldSchema['modelId'] = modelMetadata.id;\n modelMetadata.fields.push(fieldSchema as FieldMetadata);\n }\n\n // This adds the field to the respective model metadat...\n await this.modelMetadataService.update(modelMetadata.id, modelMetadata as unknown as UpdateModelMetaDataDto);\n\n // Now we need to run solid seed & then solid refresh-model --name <module-name>\n await this.modelMetadataService.handleGenerateCode({ modelId: modelMetadata.id });\n\n // TODO: decide on some shape to return hre...\n return {\n seedingRequired: true,\n serverRebooting: true,\n }\n }\n\n}"]}
@@ -0,0 +1,12 @@
1
+ import { AiInteraction } from "src/entities/ai-interaction.entity";
2
+ import { IMcpToolResponseHandler } from "../../../interfaces";
3
+ import { DashboardQuestionService } from "../../dashboard-question.service";
4
+ export declare class SolidAddQuestionToDashboardMcpHandler implements IMcpToolResponseHandler {
5
+ private readonly dashboardQuestionService;
6
+ constructor(dashboardQuestionService: DashboardQuestionService);
7
+ apply(aiInteraction: AiInteraction): Promise<{
8
+ seedingRequired: boolean;
9
+ serverRebooting: boolean;
10
+ }>;
11
+ }
12
+ //# sourceMappingURL=solid-add-question-to-dashboard-mcp-handler.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"solid-add-question-to-dashboard-mcp-handler.service.d.ts","sourceRoot":"","sources":["../../../../src/services/genai/mcp-handlers/solid-add-question-to-dashboard-mcp-handler.service.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,aAAa,EAAE,MAAM,oCAAoC,CAAC;AACnE,OAAO,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAC9D,OAAO,EAAE,wBAAwB,EAAE,MAAM,kCAAkC,CAAC;AAE5E,qBACa,qCAAsC,YAAW,uBAAuB;IAG7E,OAAO,CAAC,QAAQ,CAAC,wBAAwB;gBAAxB,wBAAwB,EAAE,wBAAwB;IAIjE,KAAK,CAAC,aAAa,EAAE,aAAa;;;;CA2B3C"}
@@ -0,0 +1,41 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ 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;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.SolidAddQuestionToDashboardMcpHandler = void 0;
13
+ const common_1 = require("@nestjs/common");
14
+ const class_transformer_1 = require("class-transformer");
15
+ const create_dashboard_question_dto_1 = require("../../../dtos/create-dashboard-question.dto");
16
+ const dashboard_question_service_1 = require("../../dashboard-question.service");
17
+ let SolidAddQuestionToDashboardMcpHandler = class SolidAddQuestionToDashboardMcpHandler {
18
+ constructor(dashboardQuestionService) {
19
+ this.dashboardQuestionService = dashboardQuestionService;
20
+ }
21
+ async apply(aiInteraction) {
22
+ const escapedMessage = aiInteraction.message.replace(/\\'/g, "'");
23
+ const aiResponseMessage = JSON.parse(escapedMessage);
24
+ const { data } = aiResponseMessage;
25
+ const { dashboardUserKey, schema } = data;
26
+ const dashboardQuestionDto = (0, class_transformer_1.plainToInstance)(create_dashboard_question_dto_1.CreateDashboardQuestionDto, schema);
27
+ dashboardQuestionDto['questionSqlDatasetConfigsCommand'] = "update";
28
+ dashboardQuestionDto['dashboardUserKey'] = dashboardUserKey;
29
+ const dashboardQuestion = await this.dashboardQuestionService.create(dashboardQuestionDto, []);
30
+ return {
31
+ seedingRequired: false,
32
+ serverRebooting: false,
33
+ };
34
+ }
35
+ };
36
+ exports.SolidAddQuestionToDashboardMcpHandler = SolidAddQuestionToDashboardMcpHandler;
37
+ exports.SolidAddQuestionToDashboardMcpHandler = SolidAddQuestionToDashboardMcpHandler = __decorate([
38
+ (0, common_1.Injectable)(),
39
+ __metadata("design:paramtypes", [dashboard_question_service_1.DashboardQuestionService])
40
+ ], SolidAddQuestionToDashboardMcpHandler);
41
+ //# sourceMappingURL=solid-add-question-to-dashboard-mcp-handler.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"solid-add-question-to-dashboard-mcp-handler.service.js","sourceRoot":"","sources":["../../../../src/services/genai/mcp-handlers/solid-add-question-to-dashboard-mcp-handler.service.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAA4C;AAC5C,yDAAoD;AACpD,+FAAoF;AAGpF,iFAA4E;AAGrE,IAAM,qCAAqC,GAA3C,MAAM,qCAAqC;IAE9C,YACqB,wBAAkD;QAAlD,6BAAwB,GAAxB,wBAAwB,CAA0B;IAEvE,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,aAA4B;QACpC,MAAM,cAAc,GAAG,aAAa,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QAClE,MAAM,iBAAiB,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;QAErD,MAAM,EAAC,IAAI,EAAC,GAAG,iBAAiB,CAAC;QACjC,MAAM,EAAE,gBAAgB,EAAE,MAAM,EAAC,GAAG,IAAI,CAAC;QASzC,MAAM,oBAAoB,GAAG,IAAA,mCAAe,EAAC,0DAA0B,EAAE,MAAM,CAAC,CAAC;QACjF,oBAAoB,CAAC,kCAAkC,CAAC,GAAG,QAAQ,CAAC;QACpE,oBAAoB,CAAC,kBAAkB,CAAC,GAAG,gBAAgB,CAAC;QAE5D,MAAM,iBAAiB,GAAG,MAAM,IAAI,CAAC,wBAAwB,CAAC,MAAM,CAAC,oBAAoB,EAAE,EAAE,CAAC,CAAC;QAG/F,OAAO;YACH,eAAe,EAAE,KAAK;YACtB,eAAe,EAAE,KAAK;SACzB,CAAA;IACL,CAAC;CAEJ,CAAA;AAlCY,sFAAqC;gDAArC,qCAAqC;IADjD,IAAA,mBAAU,GAAE;qCAIsC,qDAAwB;GAH9D,qCAAqC,CAkCjD","sourcesContent":["import { Injectable } from \"@nestjs/common\";\nimport { plainToInstance } from \"class-transformer\";\nimport { CreateDashboardQuestionDto } from \"src/dtos/create-dashboard-question.dto\";\nimport { AiInteraction } from \"src/entities/ai-interaction.entity\";\nimport { IMcpToolResponseHandler } from \"../../../interfaces\";\nimport { DashboardQuestionService } from \"../../dashboard-question.service\";\n\n@Injectable()\nexport class SolidAddQuestionToDashboardMcpHandler implements IMcpToolResponseHandler {\n\n constructor(\n private readonly dashboardQuestionService: DashboardQuestionService,\n ) {\n }\n\n async apply(aiInteraction: AiInteraction) {\n const escapedMessage = aiInteraction.message.replace(/\\\\'/g, \"'\");\n const aiResponseMessage = JSON.parse(escapedMessage);\n\n const {data} = aiResponseMessage;\n const { dashboardUserKey, schema} = data;\n\n //FIXME: Replace \\' with ' in the response, since the AI response seems to contain \\' which is invalid JSON.\n // This is a workaround for now, until we find a better solution.\n // const aiResponseMessageReplaced = aiResponseMessage['message'].replace(/\\\\'/g, \"'\");\n // const dashboardUserKey = aiResponseMessageReplaced['dashboardUserKey'];\n // if (!dashboardUserKey) {\n // throw new Error(\"Dashboard User Key is required to create a Dashboard Question.\");\n // }\n const dashboardQuestionDto = plainToInstance(CreateDashboardQuestionDto, schema);\n dashboardQuestionDto['questionSqlDatasetConfigsCommand'] = \"update\";\n dashboardQuestionDto['dashboardUserKey'] = dashboardUserKey;\n\n const dashboardQuestion = await this.dashboardQuestionService.create(dashboardQuestionDto, []);\n\n // TODO: decide on some shape to return hre...\n return {\n seedingRequired: false,\n serverRebooting: false,\n }\n }\n\n}"]}
@@ -0,0 +1,12 @@
1
+ import { AiInteraction } from "src/entities/ai-interaction.entity";
2
+ import { DashboardVariableService } from "src/services/dashboard-variable.service";
3
+ import { IMcpToolResponseHandler } from "../../../interfaces";
4
+ export declare class SolidAddVariableToDashboardMcpHandler implements IMcpToolResponseHandler {
5
+ private readonly dashboardVariableService;
6
+ constructor(dashboardVariableService: DashboardVariableService);
7
+ apply(aiInteraction: AiInteraction): Promise<{
8
+ seedingRequired: boolean;
9
+ serverRebooting: boolean;
10
+ }>;
11
+ }
12
+ //# sourceMappingURL=solid-add-variable-to-dashboard-mcp-handler.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"solid-add-variable-to-dashboard-mcp-handler.service.d.ts","sourceRoot":"","sources":["../../../../src/services/genai/mcp-handlers/solid-add-variable-to-dashboard-mcp-handler.service.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,aAAa,EAAE,MAAM,oCAAoC,CAAC;AACnE,OAAO,EAAE,wBAAwB,EAAE,MAAM,yCAAyC,CAAC;AACnF,OAAO,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAE9D,qBACa,qCAAsC,YAAW,uBAAuB;IAG7E,OAAO,CAAC,QAAQ,CAAC,wBAAwB;gBAAxB,wBAAwB,EAAE,wBAAwB;IAIjE,KAAK,CAAC,aAAa,EAAE,aAAa;;;;CA4B3C"}
@@ -0,0 +1,42 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ 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;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.SolidAddVariableToDashboardMcpHandler = void 0;
13
+ const common_1 = require("@nestjs/common");
14
+ const class_transformer_1 = require("class-transformer");
15
+ const create_dashboard_variable_dto_1 = require("../../../dtos/create-dashboard-variable.dto");
16
+ const dashboard_variable_service_1 = require("../../dashboard-variable.service");
17
+ let SolidAddVariableToDashboardMcpHandler = class SolidAddVariableToDashboardMcpHandler {
18
+ constructor(dashboardVariableService) {
19
+ this.dashboardVariableService = dashboardVariableService;
20
+ }
21
+ async apply(aiInteraction) {
22
+ const escapedMessage = aiInteraction.message.replace(/\\'/g, "'");
23
+ const aiResponseMessage = JSON.parse(escapedMessage);
24
+ const { data } = aiResponseMessage;
25
+ const { dashboardUserKey, schema } = data;
26
+ const dashboardVariableDto = (0, class_transformer_1.plainToInstance)(create_dashboard_variable_dto_1.CreateDashboardVariableDto, schema);
27
+ dashboardVariableDto['selectionStaticValues'] = JSON.stringify(dashboardVariableDto['selectionStaticValues'] || []);
28
+ dashboardVariableDto['defaultValue'] = JSON.stringify(dashboardVariableDto['defaultValue'] || []);
29
+ dashboardVariableDto['dashboardUserKey'] = dashboardUserKey;
30
+ const dashboardVariable = await this.dashboardVariableService.create(dashboardVariableDto, []);
31
+ return {
32
+ seedingRequired: false,
33
+ serverRebooting: false,
34
+ };
35
+ }
36
+ };
37
+ exports.SolidAddVariableToDashboardMcpHandler = SolidAddVariableToDashboardMcpHandler;
38
+ exports.SolidAddVariableToDashboardMcpHandler = SolidAddVariableToDashboardMcpHandler = __decorate([
39
+ (0, common_1.Injectable)(),
40
+ __metadata("design:paramtypes", [dashboard_variable_service_1.DashboardVariableService])
41
+ ], SolidAddVariableToDashboardMcpHandler);
42
+ //# sourceMappingURL=solid-add-variable-to-dashboard-mcp-handler.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"solid-add-variable-to-dashboard-mcp-handler.service.js","sourceRoot":"","sources":["../../../../src/services/genai/mcp-handlers/solid-add-variable-to-dashboard-mcp-handler.service.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAA4C;AAC5C,yDAAoD;AACpD,+FAAoF;AAEpF,iFAAmF;AAI5E,IAAM,qCAAqC,GAA3C,MAAM,qCAAqC;IAE9C,YACqB,wBAAkD;QAAlD,6BAAwB,GAAxB,wBAAwB,CAA0B;IAEvE,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,aAA4B;QACpC,MAAM,cAAc,GAAG,aAAa,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QAClE,MAAM,iBAAiB,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;QAErD,MAAM,EAAC,IAAI,EAAC,GAAG,iBAAiB,CAAC;QACjC,MAAM,EAAE,gBAAgB,EAAE,MAAM,EAAC,GAAG,IAAI,CAAC;QASzC,MAAM,oBAAoB,GAAG,IAAA,mCAAe,EAAC,0DAA0B,EAAE,MAAM,CAAC,CAAC;QACjF,oBAAoB,CAAC,uBAAuB,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,oBAAoB,CAAC,uBAAuB,CAAC,IAAI,EAAE,CAAC,CAAC;QACpH,oBAAoB,CAAC,cAAc,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,oBAAoB,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC,CAAC;QAClG,oBAAoB,CAAC,kBAAkB,CAAC,GAAG,gBAAgB,CAAC;QAE5D,MAAM,iBAAiB,GAAG,MAAM,IAAI,CAAC,wBAAwB,CAAC,MAAM,CAAC,oBAAoB,EAAE,EAAE,CAAC,CAAC;QAG/F,OAAO;YACH,eAAe,EAAE,KAAK;YACtB,eAAe,EAAE,KAAK;SACzB,CAAA;IACL,CAAC;CAEJ,CAAA;AAnCY,sFAAqC;gDAArC,qCAAqC;IADjD,IAAA,mBAAU,GAAE;qCAIsC,qDAAwB;GAH9D,qCAAqC,CAmCjD","sourcesContent":["import { Injectable } from \"@nestjs/common\";\nimport { plainToInstance } from \"class-transformer\";\nimport { CreateDashboardVariableDto } from \"src/dtos/create-dashboard-variable.dto\";\nimport { AiInteraction } from \"src/entities/ai-interaction.entity\";\nimport { DashboardVariableService } from \"src/services/dashboard-variable.service\";\nimport { IMcpToolResponseHandler } from \"../../../interfaces\";\n\n@Injectable()\nexport class SolidAddVariableToDashboardMcpHandler implements IMcpToolResponseHandler {\n\n constructor(\n private readonly dashboardVariableService: DashboardVariableService,\n ) {\n }\n\n async apply(aiInteraction: AiInteraction) {\n const escapedMessage = aiInteraction.message.replace(/\\\\'/g, \"'\");\n const aiResponseMessage = JSON.parse(escapedMessage);\n\n const {data} = aiResponseMessage;\n const { dashboardUserKey, schema} = data;\n\n //FIXME: Replace \\' with ' in the response, since the AI response seems to contain \\' which is invalid JSON.\n // This is a workaround for now, until we find a better solution.\n // const aiResponseMessageReplaced = aiResponseMessage['message'].replace(/\\\\'/g, \"'\");\n // const dashboardUserKey = aiResponseMessageReplaced['dashboardUserKey'];\n // if (!dashboardUserKey) {\n // throw new Error(\"Dashboard User Key is required to create a Dashboard Question.\");\n // }\n const dashboardVariableDto = plainToInstance(CreateDashboardVariableDto, schema);\n dashboardVariableDto['selectionStaticValues'] = JSON.stringify(dashboardVariableDto['selectionStaticValues'] || []);\n dashboardVariableDto['defaultValue'] = JSON.stringify(dashboardVariableDto['defaultValue'] || []);\n dashboardVariableDto['dashboardUserKey'] = dashboardUserKey;\n\n const dashboardVariable = await this.dashboardVariableService.create(dashboardVariableDto, []);\n\n // TODO: decide on some shape to return hre...\n return {\n seedingRequired: false,\n serverRebooting: false,\n }\n }\n\n}"]}
@@ -0,0 +1,16 @@
1
+ import { AiInteraction } from "src/entities/ai-interaction.entity";
2
+ import { IMcpToolResponseHandler } from "../../../interfaces";
3
+ import { SolidTsMorphService } from "src/services/solid-ts-morph.service";
4
+ export declare class SolidCreateComputedProviderMcpHandler implements IMcpToolResponseHandler {
5
+ private readonly tsMorph;
6
+ private readonly logger;
7
+ constructor(tsMorph: SolidTsMorphService);
8
+ apply(aiInteraction: AiInteraction): Promise<{
9
+ seedingRequired: boolean;
10
+ serverRebooting: boolean;
11
+ appliedSteps: number;
12
+ wroteFiles: number;
13
+ }>;
14
+ private safeParse;
15
+ }
16
+ //# sourceMappingURL=solid-create-computed-provider-mcp-handler.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"solid-create-computed-provider-mcp-handler.service.d.ts","sourceRoot":"","sources":["../../../../src/services/genai/mcp-handlers/solid-create-computed-provider-mcp-handler.service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,oCAAoC,CAAC;AACnE,OAAO,EAAE,uBAAuB,EAAyC,MAAM,qBAAqB,CAAC;AACrG,OAAO,EAAE,mBAAmB,EAAE,MAAM,qCAAqC,CAAC;AAI1E,qBACa,qCAAsC,YAAW,uBAAuB;IAGvE,OAAO,CAAC,QAAQ,CAAC,OAAO;IAFpC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA0D;gBAEpD,OAAO,EAAE,mBAAmB;IAEnD,KAAK,CAAC,aAAa,EAAE,aAAa;;;;;;IAiDxC,OAAO,CAAC,SAAS;CAQlB"}
@@ -0,0 +1,75 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ 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;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ var SolidCreateComputedProviderMcpHandler_1;
12
+ Object.defineProperty(exports, "__esModule", { value: true });
13
+ exports.SolidCreateComputedProviderMcpHandler = void 0;
14
+ const common_1 = require("@nestjs/common");
15
+ const solid_ts_morph_service_1 = require("../../solid-ts-morph.service");
16
+ const RESTART_TOUCH_FILE = process.env.MCP_RESTART_TOUCH_FILE || "tmp/restart.touch";
17
+ let SolidCreateComputedProviderMcpHandler = SolidCreateComputedProviderMcpHandler_1 = class SolidCreateComputedProviderMcpHandler {
18
+ constructor(tsMorph) {
19
+ this.tsMorph = tsMorph;
20
+ this.logger = new common_1.Logger(SolidCreateComputedProviderMcpHandler_1.name);
21
+ }
22
+ async apply(aiInteraction) {
23
+ const raw = this.safeParse(aiInteraction.message);
24
+ const payload = (raw?.data?.plan ? raw.data : raw);
25
+ if (!payload || !Array.isArray(payload.plan)) {
26
+ throw new Error("SolidCreateComputedProviderMcpHandler: invalid MCP response; missing plan[]");
27
+ }
28
+ this.tsMorph.begin();
29
+ try {
30
+ for (const step of payload.plan) {
31
+ switch (step.type) {
32
+ case "createNewFile": {
33
+ const overwrite = step.overwrite ?? false;
34
+ this.tsMorph.createNewFile(step.path, step.content, overwrite);
35
+ break;
36
+ }
37
+ case "registerNestProvider": {
38
+ const uniqueGuard = step.uniqueGuard ?? true;
39
+ this.tsMorph.registerNestProvider(step.modulePath, step.providerClassName, step.importFrom, step.registerIn, uniqueGuard);
40
+ break;
41
+ }
42
+ default:
43
+ throw new Error(`Unsupported plan step type: ${step.type}`);
44
+ }
45
+ }
46
+ const result = await this.tsMorph.commit();
47
+ return {
48
+ seedingRequired: false,
49
+ serverRebooting: false,
50
+ appliedSteps: payload.plan.length,
51
+ wroteFiles: result.wrote,
52
+ };
53
+ }
54
+ catch (err) {
55
+ this.logger.error(`Apply failed; rolling back. ${String(err)}`);
56
+ this.tsMorph.rollback();
57
+ throw err;
58
+ }
59
+ }
60
+ safeParse(str) {
61
+ try {
62
+ return JSON.parse(str);
63
+ }
64
+ catch {
65
+ const unescaped = str.replace(/\\'/g, "'");
66
+ return JSON.parse(unescaped);
67
+ }
68
+ }
69
+ };
70
+ exports.SolidCreateComputedProviderMcpHandler = SolidCreateComputedProviderMcpHandler;
71
+ exports.SolidCreateComputedProviderMcpHandler = SolidCreateComputedProviderMcpHandler = SolidCreateComputedProviderMcpHandler_1 = __decorate([
72
+ (0, common_1.Injectable)(),
73
+ __metadata("design:paramtypes", [solid_ts_morph_service_1.SolidTsMorphService])
74
+ ], SolidCreateComputedProviderMcpHandler);
75
+ //# sourceMappingURL=solid-create-computed-provider-mcp-handler.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"solid-create-computed-provider-mcp-handler.service.js","sourceRoot":"","sources":["../../../../src/services/genai/mcp-handlers/solid-create-computed-provider-mcp-handler.service.ts"],"names":[],"mappings":"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","sourcesContent":["import { Injectable, Logger } from \"@nestjs/common\";\nimport { AiInteraction } from \"src/entities/ai-interaction.entity\";\nimport { IMcpToolResponseHandler, McpComputedProviderResponse, PlanStep } from \"../../../interfaces\";\nimport { SolidTsMorphService } from \"src/services/solid-ts-morph.service\";\n\nconst RESTART_TOUCH_FILE = process.env.MCP_RESTART_TOUCH_FILE || \"tmp/restart.touch\";\n\n@Injectable()\nexport class SolidCreateComputedProviderMcpHandler implements IMcpToolResponseHandler {\n private readonly logger = new Logger(SolidCreateComputedProviderMcpHandler.name);\n\n constructor(private readonly tsMorph: SolidTsMorphService) { }\n\n async apply(aiInteraction: AiInteraction) {\n const raw = this.safeParse(aiInteraction.message);\n const payload: McpComputedProviderResponse | undefined = (raw?.data?.plan ? raw.data : raw) as McpComputedProviderResponse;\n\n if (!payload || !Array.isArray(payload.plan)) {\n throw new Error(\"SolidCreateComputedProviderMcpHandler: invalid MCP response; missing plan[]\");\n }\n\n // Batch all plan steps in a single txn so nodemon restarts only once.\n this.tsMorph.begin();\n try {\n for (const step of payload.plan as PlanStep[]) {\n switch (step.type) {\n case \"createNewFile\": {\n const overwrite = step.overwrite ?? false;\n this.tsMorph.createNewFile(step.path, step.content, overwrite);\n break;\n }\n case \"registerNestProvider\": {\n const uniqueGuard = step.uniqueGuard ?? true;\n this.tsMorph.registerNestProvider(\n step.modulePath,\n step.providerClassName,\n step.importFrom,\n step.registerIn,\n uniqueGuard,\n );\n break;\n }\n default:\n throw new Error(`Unsupported plan step type: ${(step as any).type}`);\n }\n }\n\n const result = await this.tsMorph.commit();\n\n return {\n seedingRequired: false,\n serverRebooting: false,\n appliedSteps: payload.plan.length,\n wroteFiles: result.wrote,\n };\n } catch (err) {\n this.logger.error(`Apply failed; rolling back. ${String(err)}`);\n this.tsMorph.rollback();\n throw err;\n }\n }\n\n private safeParse(str: string): any {\n try {\n return JSON.parse(str);\n } catch {\n const unescaped = str.replace(/\\\\'/g, \"'\");\n return JSON.parse(unescaped);\n }\n }\n}"]}
@@ -1,12 +1,12 @@
1
1
  import { AiInteraction } from "src/entities/ai-interaction.entity";
2
- import { IMcpToolResponseHandler } from "../../interfaces";
3
- import { ActionMetadataService } from "../action-metadata.service";
4
- import { DashboardService } from "../dashboard.service";
5
- import { MenuItemMetadataService } from "../menu-item-metadata.service";
6
- import { ModelMetadataService } from "../model-metadata.service";
7
- import { ModuleMetadataService } from "../module-metadata.service";
8
- import { RoleMetadataService } from "../role-metadata.service";
9
- export declare class SolidCreateDashboardMcpToolResponseHandler implements IMcpToolResponseHandler {
2
+ import { IMcpToolResponseHandler } from "../../../interfaces";
3
+ import { ActionMetadataService } from "../../action-metadata.service";
4
+ import { DashboardService } from "../../dashboard.service";
5
+ import { MenuItemMetadataService } from "../../menu-item-metadata.service";
6
+ import { ModelMetadataService } from "../../model-metadata.service";
7
+ import { ModuleMetadataService } from "../../module-metadata.service";
8
+ import { RoleMetadataService } from "../../role-metadata.service";
9
+ export declare class SolidCreateDashboardWithWidgetsMcpHandler implements IMcpToolResponseHandler {
10
10
  private readonly dashboardService;
11
11
  private readonly actionMetadataService;
12
12
  private readonly menuItemMetadataService;
@@ -22,4 +22,4 @@ export declare class SolidCreateDashboardMcpToolResponseHandler implements IMcpT
22
22
  private createActionMetadataEntry;
23
23
  private createDashboard;
24
24
  }
25
- //# sourceMappingURL=solid-create-dashboard-mcp-tool-response-handler.service.d.ts.map
25
+ //# sourceMappingURL=solid-create-dashboard-mcp-handler.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"solid-create-dashboard-mcp-handler.service.d.ts","sourceRoot":"","sources":["../../../../src/services/genai/mcp-handlers/solid-create-dashboard-mcp-handler.service.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,aAAa,EAAE,MAAM,oCAAoC,CAAC;AAEnE,OAAO,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAC9D,OAAO,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AACtE,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,uBAAuB,EAAE,MAAM,kCAAkC,CAAC;AAC3E,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AACpE,OAAO,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AACtE,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAElE,qBACa,yCAA0C,YAAW,uBAAuB;IAGjF,OAAO,CAAC,QAAQ,CAAC,gBAAgB;IACjC,OAAO,CAAC,QAAQ,CAAC,qBAAqB;IACtC,OAAO,CAAC,QAAQ,CAAC,uBAAuB;IACxC,OAAO,CAAC,QAAQ,CAAC,qBAAqB;IACtC,OAAO,CAAC,QAAQ,CAAC,oBAAoB;IACrC,OAAO,CAAC,QAAQ,CAAC,WAAW;gBALX,gBAAgB,EAAE,gBAAgB,EAClC,qBAAqB,EAAE,qBAAqB,EAC5C,uBAAuB,EAAE,uBAAuB,EAChD,qBAAqB,EAAE,qBAAqB,EAC5C,oBAAoB,EAAE,oBAAoB,EAC1C,WAAW,EAAE,mBAAmB;IAI/C,KAAK,CAAC,aAAa,EAAE,aAAa;;;;YAmB1B,mBAAmB;YAsCnB,yBAAyB;YAuBzB,eAAe;CAMhC"}
@@ -9,17 +9,17 @@ var __metadata = (this && this.__metadata) || function (k, v) {
9
9
  if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
10
  };
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.SolidCreateDashboardMcpToolResponseHandler = void 0;
12
+ exports.SolidCreateDashboardWithWidgetsMcpHandler = void 0;
13
13
  const common_1 = require("@nestjs/common");
14
14
  const class_transformer_1 = require("class-transformer");
15
- const create_dashboard_dto_1 = require("../../dtos/create-dashboard.dto");
16
- const action_metadata_service_1 = require("../action-metadata.service");
17
- const dashboard_service_1 = require("../dashboard.service");
18
- const menu_item_metadata_service_1 = require("../menu-item-metadata.service");
19
- const model_metadata_service_1 = require("../model-metadata.service");
20
- const module_metadata_service_1 = require("../module-metadata.service");
21
- const role_metadata_service_1 = require("../role-metadata.service");
22
- let SolidCreateDashboardMcpToolResponseHandler = class SolidCreateDashboardMcpToolResponseHandler {
15
+ const create_dashboard_dto_1 = require("../../../dtos/create-dashboard.dto");
16
+ const action_metadata_service_1 = require("../../action-metadata.service");
17
+ const dashboard_service_1 = require("../../dashboard.service");
18
+ const menu_item_metadata_service_1 = require("../../menu-item-metadata.service");
19
+ const model_metadata_service_1 = require("../../model-metadata.service");
20
+ const module_metadata_service_1 = require("../../module-metadata.service");
21
+ const role_metadata_service_1 = require("../../role-metadata.service");
22
+ let SolidCreateDashboardWithWidgetsMcpHandler = class SolidCreateDashboardWithWidgetsMcpHandler {
23
23
  constructor(dashboardService, actionMetadataService, menuItemMetadataService, moduleMetadataService, modelMetadataService, roleService) {
24
24
  this.dashboardService = dashboardService;
25
25
  this.actionMetadataService = actionMetadataService;
@@ -31,7 +31,9 @@ let SolidCreateDashboardMcpToolResponseHandler = class SolidCreateDashboardMcpTo
31
31
  async apply(aiInteraction) {
32
32
  const escapedMessage = aiInteraction.message.replace(/\\'/g, "'");
33
33
  const aiResponseMessage = JSON.parse(escapedMessage);
34
- const { dashboardDto, dashboard } = await this.createDashboard(aiResponseMessage);
34
+ const { data } = aiResponseMessage;
35
+ const { schema } = data;
36
+ const { dashboardDto, dashboard } = await this.createDashboard(schema);
35
37
  const { moduleUserKey, actionMetadataEntity } = await this.createActionMetadataEntry(dashboardDto, dashboard);
36
38
  await this.createMenuItemEntry(dashboard, moduleUserKey, actionMetadataEntity);
37
39
  return {
@@ -101,8 +103,8 @@ let SolidCreateDashboardMcpToolResponseHandler = class SolidCreateDashboardMcpTo
101
103
  return { dashboardDto, dashboard };
102
104
  }
103
105
  };
104
- exports.SolidCreateDashboardMcpToolResponseHandler = SolidCreateDashboardMcpToolResponseHandler;
105
- exports.SolidCreateDashboardMcpToolResponseHandler = SolidCreateDashboardMcpToolResponseHandler = __decorate([
106
+ exports.SolidCreateDashboardWithWidgetsMcpHandler = SolidCreateDashboardWithWidgetsMcpHandler;
107
+ exports.SolidCreateDashboardWithWidgetsMcpHandler = SolidCreateDashboardWithWidgetsMcpHandler = __decorate([
106
108
  (0, common_1.Injectable)(),
107
109
  __metadata("design:paramtypes", [dashboard_service_1.DashboardService,
108
110
  action_metadata_service_1.ActionMetadataService,
@@ -110,5 +112,5 @@ exports.SolidCreateDashboardMcpToolResponseHandler = SolidCreateDashboardMcpTool
110
112
  module_metadata_service_1.ModuleMetadataService,
111
113
  model_metadata_service_1.ModelMetadataService,
112
114
  role_metadata_service_1.RoleMetadataService])
113
- ], SolidCreateDashboardMcpToolResponseHandler);
114
- //# sourceMappingURL=solid-create-dashboard-mcp-tool-response-handler.service.js.map
115
+ ], SolidCreateDashboardWithWidgetsMcpHandler);
116
+ //# sourceMappingURL=solid-create-dashboard-mcp-handler.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"solid-create-dashboard-mcp-handler.service.js","sourceRoot":"","sources":["../../../../src/services/genai/mcp-handlers/solid-create-dashboard-mcp-handler.service.ts"],"names":[],"mappings":"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","sourcesContent":["import { Injectable } from \"@nestjs/common\";\nimport { plainToInstance } from \"class-transformer\";\nimport { CreateDashboardDto } from \"src/dtos/create-dashboard.dto\";\nimport { UpdateMenuItemMetadataDto } from \"src/dtos/update-menu-item-metadata.dto\";\nimport { AiInteraction } from \"src/entities/ai-interaction.entity\";\nimport { Dashboard } from \"src/entities/dashboard.entity\";\nimport { IMcpToolResponseHandler } from \"../../../interfaces\";\nimport { ActionMetadataService } from \"../../action-metadata.service\";\nimport { DashboardService } from \"../../dashboard.service\";\nimport { MenuItemMetadataService } from \"../../menu-item-metadata.service\";\nimport { ModelMetadataService } from \"../../model-metadata.service\";\nimport { ModuleMetadataService } from \"../../module-metadata.service\";\nimport { RoleMetadataService } from \"../../role-metadata.service\";\n\n@Injectable()\nexport class SolidCreateDashboardWithWidgetsMcpHandler implements IMcpToolResponseHandler {\n\n constructor(\n private readonly dashboardService: DashboardService,\n private readonly actionMetadataService: ActionMetadataService,\n private readonly menuItemMetadataService: MenuItemMetadataService,\n private readonly moduleMetadataService: ModuleMetadataService,\n private readonly modelMetadataService: ModelMetadataService,\n private readonly roleService: RoleMetadataService, // Assuming roleService is a Mongoose model, adjust as necessary\n ) {\n }\n\n async apply(aiInteraction: AiInteraction) {\n const escapedMessage = aiInteraction.message.replace(/\\\\'/g, \"'\");\n const aiResponseMessage = JSON.parse(escapedMessage);\n const { data } = aiResponseMessage;\n const { schema } = data;\n const { dashboardDto, dashboard } = await this.createDashboard(schema);\n\n const { moduleUserKey, actionMetadataEntity } = await this.createActionMetadataEntry(dashboardDto, dashboard);\n\n await this.createMenuItemEntry(dashboard, moduleUserKey, actionMetadataEntity);\n\n // TODO: decide on some shape to return hre...\n return {\n seedingRequired: false,\n serverRebooting: false,\n }\n }\n\n\n private async createMenuItemEntry(dashboard: Dashboard, moduleUserKey: string, actionMetadataEntity: any) {\n const menuData = {\n displayName: dashboard.displayName || dashboard.name,\n name: `${moduleUserKey}-${dashboard.name}-dashboard-menu-item`,\n sequenceNumber: 1,\n actionUserKey: actionMetadataEntity.name,\n moduleUserKey: moduleUserKey,\n parentMenuItemUserKey: '',\n };\n\n const adminRole = await this.roleService.findRoleByName('Admin');\n const specifiedRoles = menuData['roles'];\n\n // If the developer has specified roles, then resolve them, making sure that admin role is also given.\n const specifiedRoleObjects = [adminRole];\n if (specifiedRoles) {\n for (let i = 0; i < specifiedRoles.length; i++) {\n const specifiedRole = specifiedRoles[i];\n const specifiedRoleObject = await this.roleService.findRoleByName(specifiedRole);\n if (!specifiedRoleObject) {\n throw new Error(`Invalid role: (${specifiedRole}) specified against menu with display name ${menuData.displayName}.`);\n }\n specifiedRoleObjects.push(specifiedRoleObject);\n }\n }\n\n menuData['roles'] = specifiedRoleObjects;\n menuData['action'] = await this.actionMetadataService.findOneByUserKey(menuData.actionUserKey);\n menuData['module'] = await this.moduleMetadataService.findOneByUserKey(menuData.moduleUserKey);\n\n if (menuData.parentMenuItemUserKey) {\n menuData['parentMenuItem'] = await this.menuItemMetadataService.findOneByUserKey(menuData.parentMenuItemUserKey);\n } else {\n menuData['parentMenuItem'] = null;\n }\n await this.menuItemMetadataService.upsert(menuData as unknown as UpdateMenuItemMetadataDto);\n }\n\n private async createActionMetadataEntry(dashboardDto: CreateDashboardDto, dashboard: Dashboard) {\n const moduleUserKey = dashboardDto.moduleUserKey;\n const actionMetadata = {\n name: `${dashboard.name}-view`,\n displayName: dashboard.displayName || dashboard.name,\n type: 'custom',\n domain: \"{}\",\n context: \"{}\",\n customComponent: `/admin/core/${moduleUserKey}/dashboards?dashboardName=${dashboard.name}`,\n customIsModal: true,\n serverEndpoint: '',\n moduleUserKey: moduleUserKey,\n modelUserKey: '',\n viewUserKey: `${dashboard.name}-view`,\n };\n actionMetadata['module'] = await this.moduleMetadataService.findOneByUserKey(actionMetadata.moduleUserKey);\n if (actionMetadata.modelUserKey) {\n actionMetadata['model'] = await this.modelMetadataService.findOneByUserKey(actionMetadata.modelUserKey);\n }\n const actionMetadataEntity = await this.actionMetadataService.upsert(actionMetadata);\n return { moduleUserKey, actionMetadataEntity };\n }\n\n private async createDashboard(aiResponseMessage: any) {\n const dashboardDto = plainToInstance(CreateDashboardDto, aiResponseMessage);\n dashboardDto['layoutJson'] = JSON.stringify(dashboardDto['layoutJson']);\n const dashboard = await this.dashboardService.create(dashboardDto, []);\n return { dashboardDto, dashboard };\n }\n}"]}
@@ -0,0 +1,12 @@
1
+ import { AiInteraction } from "src/entities/ai-interaction.entity";
2
+ import { IMcpToolResponseHandler } from "../../../interfaces";
3
+ import { DashboardQuestionService } from "../../dashboard-question.service";
4
+ export declare class SolidCreateDashboardQuestionMcpHandler implements IMcpToolResponseHandler {
5
+ private readonly dashboardQuestionService;
6
+ constructor(dashboardQuestionService: DashboardQuestionService);
7
+ apply(aiInteraction: AiInteraction): Promise<{
8
+ seedingRequired: boolean;
9
+ serverRebooting: boolean;
10
+ }>;
11
+ }
12
+ //# sourceMappingURL=solid-create-dashboard-question-mcp-handler.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"solid-create-dashboard-question-mcp-handler.service.d.ts","sourceRoot":"","sources":["../../../../src/services/genai/mcp-handlers/solid-create-dashboard-question-mcp-handler.service.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,aAAa,EAAE,MAAM,oCAAoC,CAAC;AACnE,OAAO,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAC9D,OAAO,EAAE,wBAAwB,EAAE,MAAM,kCAAkC,CAAC;AAE5E,qBACa,sCAAuC,YAAW,uBAAuB;IAG9E,OAAO,CAAC,QAAQ,CAAC,wBAAwB;gBAAxB,wBAAwB,EAAE,wBAAwB;IAIjE,KAAK,CAAC,aAAa,EAAE,aAAa;;;;CAsB3C"}
@@ -9,12 +9,12 @@ var __metadata = (this && this.__metadata) || function (k, v) {
9
9
  if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
10
  };
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.SolidCreateDashboardQuestionMcpToolResponseHandler = void 0;
12
+ exports.SolidCreateDashboardQuestionMcpHandler = void 0;
13
13
  const common_1 = require("@nestjs/common");
14
14
  const class_transformer_1 = require("class-transformer");
15
- const create_dashboard_question_dto_1 = require("../../dtos/create-dashboard-question.dto");
16
- const dashboard_question_service_1 = require("../dashboard-question.service");
17
- let SolidCreateDashboardQuestionMcpToolResponseHandler = class SolidCreateDashboardQuestionMcpToolResponseHandler {
15
+ const create_dashboard_question_dto_1 = require("../../../dtos/create-dashboard-question.dto");
16
+ const dashboard_question_service_1 = require("../../dashboard-question.service");
17
+ let SolidCreateDashboardQuestionMcpHandler = class SolidCreateDashboardQuestionMcpHandler {
18
18
  constructor(dashboardQuestionService) {
19
19
  this.dashboardQuestionService = dashboardQuestionService;
20
20
  }
@@ -29,9 +29,9 @@ let SolidCreateDashboardQuestionMcpToolResponseHandler = class SolidCreateDashbo
29
29
  };
30
30
  }
31
31
  };
32
- exports.SolidCreateDashboardQuestionMcpToolResponseHandler = SolidCreateDashboardQuestionMcpToolResponseHandler;
33
- exports.SolidCreateDashboardQuestionMcpToolResponseHandler = SolidCreateDashboardQuestionMcpToolResponseHandler = __decorate([
32
+ exports.SolidCreateDashboardQuestionMcpHandler = SolidCreateDashboardQuestionMcpHandler;
33
+ exports.SolidCreateDashboardQuestionMcpHandler = SolidCreateDashboardQuestionMcpHandler = __decorate([
34
34
  (0, common_1.Injectable)(),
35
35
  __metadata("design:paramtypes", [dashboard_question_service_1.DashboardQuestionService])
36
- ], SolidCreateDashboardQuestionMcpToolResponseHandler);
37
- //# sourceMappingURL=solid-create-dashboard-question-mcp-tool-response-handler.service.js.map
36
+ ], SolidCreateDashboardQuestionMcpHandler);
37
+ //# sourceMappingURL=solid-create-dashboard-question-mcp-handler.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"solid-create-dashboard-question-mcp-handler.service.js","sourceRoot":"","sources":["../../../../src/services/genai/mcp-handlers/solid-create-dashboard-question-mcp-handler.service.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAA4C;AAC5C,yDAAoD;AACpD,+FAAoF;AAGpF,iFAA4E;AAGrE,IAAM,sCAAsC,GAA5C,MAAM,sCAAsC;IAE/C,YACqB,wBAAkD;QAAlD,6BAAwB,GAAxB,wBAAwB,CAA0B;IAEvE,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,aAA4B;QACpC,MAAM,cAAc,GAAG,aAAa,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QAClE,MAAM,iBAAiB,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;QASrD,MAAM,oBAAoB,GAAG,IAAA,mCAAe,EAAC,0DAA0B,EAAE,iBAAiB,CAAC,CAAC;QAE5F,MAAM,iBAAiB,GAAG,MAAM,IAAI,CAAC,wBAAwB,CAAC,MAAM,CAAC,oBAAoB,EAAE,EAAE,CAAC,CAAC;QAG/F,OAAO;YACH,eAAe,EAAE,KAAK;YACtB,eAAe,EAAE,KAAK;SACzB,CAAA;IACL,CAAC;CAEJ,CAAA;AA7BY,wFAAsC;iDAAtC,sCAAsC;IADlD,IAAA,mBAAU,GAAE;qCAIsC,qDAAwB;GAH9D,sCAAsC,CA6BlD","sourcesContent":["import { Injectable } from \"@nestjs/common\";\nimport { plainToInstance } from \"class-transformer\";\nimport { CreateDashboardQuestionDto } from \"src/dtos/create-dashboard-question.dto\";\nimport { AiInteraction } from \"src/entities/ai-interaction.entity\";\nimport { IMcpToolResponseHandler } from \"../../../interfaces\";\nimport { DashboardQuestionService } from \"../../dashboard-question.service\";\n\n@Injectable()\nexport class SolidCreateDashboardQuestionMcpHandler implements IMcpToolResponseHandler {\n\n constructor(\n private readonly dashboardQuestionService: DashboardQuestionService,\n ) {\n }\n\n async apply(aiInteraction: AiInteraction) {\n const escapedMessage = aiInteraction.message.replace(/\\\\'/g, \"'\");\n const aiResponseMessage = JSON.parse(escapedMessage);\n\n //FIXME: Replace \\' with ' in the response, since the AI response seems to contain \\' which is invalid JSON.\n // This is a workaround for now, until we find a better solution.\n // const aiResponseMessageReplaced = aiResponseMessage['message'].replace(/\\\\'/g, \"'\");\n // const dashboardUserKey = aiResponseMessageReplaced['dashboardUserKey'];\n // if (!dashboardUserKey) {\n // throw new Error(\"Dashboard User Key is required to create a Dashboard Question.\");\n // }\n const dashboardQuestionDto = plainToInstance(CreateDashboardQuestionDto, aiResponseMessage);\n\n const dashboardQuestion = await this.dashboardQuestionService.create(dashboardQuestionDto, []);\n\n // TODO: decide on some shape to return hre...\n return {\n seedingRequired: false,\n serverRebooting: false,\n }\n }\n\n}"]}
@@ -1,7 +1,7 @@
1
1
  import { AiInteraction } from "src/entities/ai-interaction.entity";
2
- import { IMcpToolResponseHandler } from "../../interfaces";
3
- import { DashboardQuestionSqlDatasetConfigService } from "../dashboard-question-sql-dataset-config.service";
4
- export declare class SolidCreateDashboardQuestionSqlDatasetConfigMcpToolResponseHandler implements IMcpToolResponseHandler {
2
+ import { IMcpToolResponseHandler } from "../../../interfaces";
3
+ import { DashboardQuestionSqlDatasetConfigService } from "../../dashboard-question-sql-dataset-config.service";
4
+ export declare class SolidCreateDashboardQuestionSqlDatasetConfigMcpHandler implements IMcpToolResponseHandler {
5
5
  private readonly dashboardQuestionSqlDatasetConfigService;
6
6
  constructor(dashboardQuestionSqlDatasetConfigService: DashboardQuestionSqlDatasetConfigService);
7
7
  apply(aiInteraction: AiInteraction): Promise<{
@@ -9,4 +9,4 @@ export declare class SolidCreateDashboardQuestionSqlDatasetConfigMcpToolResponse
9
9
  serverRebooting: boolean;
10
10
  }>;
11
11
  }
12
- //# sourceMappingURL=solid-create-dashboard-question-sql-dataset-config-mcp-tool-response-handler.service.d.ts.map
12
+ //# sourceMappingURL=solid-create-dashboard-question-sql-dataset-config-mcp-handler.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"solid-create-dashboard-question-sql-dataset-config-mcp-handler.service.d.ts","sourceRoot":"","sources":["../../../../src/services/genai/mcp-handlers/solid-create-dashboard-question-sql-dataset-config-mcp-handler.service.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,oCAAoC,CAAC;AACnE,OAAO,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAC9D,OAAO,EAAE,wCAAwC,EAAE,MAAM,qDAAqD,CAAC;AAG/G,qBACa,sDAAuD,YAAW,uBAAuB;IAG9F,OAAO,CAAC,QAAQ,CAAC,wCAAwC;gBAAxC,wCAAwC,EAAE,wCAAwC;IAIjG,KAAK,CAAC,aAAa,EAAE,aAAa;;;;CAwB3C"}