@hed-hog/core 0.0.347 → 0.0.350

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 (126) hide show
  1. package/dist/auth/auth.controller.d.ts +1 -1
  2. package/dist/auth/auth.service.d.ts +1 -1
  3. package/dist/core.module.d.ts.map +1 -1
  4. package/dist/core.module.js +3 -0
  5. package/dist/core.module.js.map +1 -1
  6. package/dist/dashboard/dashboard-user/dashboard-user.controller.d.ts +3 -3
  7. package/dist/dashboard/dashboard-user/dashboard-user.service.d.ts +3 -3
  8. package/dist/index.d.ts +3 -0
  9. package/dist/index.d.ts.map +1 -1
  10. package/dist/index.js +4 -0
  11. package/dist/index.js.map +1 -1
  12. package/dist/mcp/guards/mcp-auth.guard.d.ts +6 -1
  13. package/dist/mcp/guards/mcp-auth.guard.d.ts.map +1 -1
  14. package/dist/mcp/guards/mcp-auth.guard.js +29 -2
  15. package/dist/mcp/guards/mcp-auth.guard.js.map +1 -1
  16. package/dist/mcp/mcp-api-key.controller.d.ts +32 -0
  17. package/dist/mcp/mcp-api-key.controller.d.ts.map +1 -0
  18. package/dist/mcp/mcp-api-key.controller.js +64 -0
  19. package/dist/mcp/mcp-api-key.controller.js.map +1 -0
  20. package/dist/mcp/mcp-api-key.service.d.ts +27 -0
  21. package/dist/mcp/mcp-api-key.service.d.ts.map +1 -0
  22. package/dist/mcp/mcp-api-key.service.js +74 -0
  23. package/dist/mcp/mcp-api-key.service.js.map +1 -0
  24. package/dist/mcp/mcp-registry.service.d.ts +1 -2
  25. package/dist/mcp/mcp-registry.service.d.ts.map +1 -1
  26. package/dist/mcp/mcp-registry.service.js +6 -2
  27. package/dist/mcp/mcp-registry.service.js.map +1 -1
  28. package/dist/mcp/mcp.module.d.ts.map +1 -1
  29. package/dist/mcp/mcp.module.js +8 -1
  30. package/dist/mcp/mcp.module.js.map +1 -1
  31. package/dist/mcp-chat/mcp-chat.controller.d.ts +4 -0
  32. package/dist/mcp-chat/mcp-chat.controller.d.ts.map +1 -1
  33. package/dist/mcp-chat/mcp-chat.controller.js +46 -0
  34. package/dist/mcp-chat/mcp-chat.controller.js.map +1 -1
  35. package/dist/mcp-chat/mcp-chat.service.d.ts +6 -1
  36. package/dist/mcp-chat/mcp-chat.service.d.ts.map +1 -1
  37. package/dist/mcp-chat/mcp-chat.service.js +125 -17
  38. package/dist/mcp-chat/mcp-chat.service.js.map +1 -1
  39. package/dist/notification/dto/create-notification.dto.d.ts +26 -0
  40. package/dist/notification/dto/create-notification.dto.d.ts.map +1 -0
  41. package/dist/notification/dto/create-notification.dto.js +86 -0
  42. package/dist/notification/dto/create-notification.dto.js.map +1 -0
  43. package/dist/notification/dto/update-progress.dto.d.ts +6 -0
  44. package/dist/notification/dto/update-progress.dto.d.ts.map +1 -0
  45. package/dist/notification/dto/update-progress.dto.js +33 -0
  46. package/dist/notification/dto/update-progress.dto.js.map +1 -0
  47. package/dist/notification/notification.controller.d.ts +108 -0
  48. package/dist/notification/notification.controller.d.ts.map +1 -0
  49. package/dist/notification/notification.controller.js +118 -0
  50. package/dist/notification/notification.controller.js.map +1 -0
  51. package/dist/notification/notification.module.d.ts +3 -0
  52. package/dist/notification/notification.module.d.ts.map +1 -0
  53. package/dist/notification/notification.module.js +29 -0
  54. package/dist/notification/notification.module.js.map +1 -0
  55. package/dist/notification/notification.service.d.ts +98 -0
  56. package/dist/notification/notification.service.d.ts.map +1 -0
  57. package/dist/notification/notification.service.js +123 -0
  58. package/dist/notification/notification.service.js.map +1 -0
  59. package/dist/profile/profile.controller.d.ts +1 -1
  60. package/dist/profile/profile.service.d.ts +1 -1
  61. package/dist/setting/dto/update-setting-list.dto.d.ts +9 -0
  62. package/dist/setting/dto/update-setting-list.dto.d.ts.map +1 -0
  63. package/dist/setting/dto/update-setting-list.dto.js +44 -0
  64. package/dist/setting/dto/update-setting-list.dto.js.map +1 -0
  65. package/dist/setting/setting.controller.d.ts +19 -0
  66. package/dist/setting/setting.controller.d.ts.map +1 -1
  67. package/dist/setting/setting.controller.js +12 -0
  68. package/dist/setting/setting.controller.js.map +1 -1
  69. package/dist/setting/setting.service.d.ts +19 -0
  70. package/dist/setting/setting.service.d.ts.map +1 -1
  71. package/dist/setting/setting.service.js +79 -0
  72. package/dist/setting/setting.service.js.map +1 -1
  73. package/dist/task/task.service.d.ts +12 -0
  74. package/dist/task/task.service.d.ts.map +1 -1
  75. package/dist/task/task.service.js +60 -0
  76. package/dist/task/task.service.js.map +1 -1
  77. package/dist/user/user.controller.d.ts +2 -2
  78. package/dist/user/user.service.d.ts +3 -3
  79. package/dist/webhook-integration/webhook-integration.service.d.ts +4 -0
  80. package/dist/webhook-integration/webhook-integration.service.d.ts.map +1 -1
  81. package/dist/webhook-integration/webhook-integration.service.js +184 -34
  82. package/dist/webhook-integration/webhook-integration.service.js.map +1 -1
  83. package/dist/webhook-integration/webhook-utils.d.ts +1 -0
  84. package/dist/webhook-integration/webhook-utils.d.ts.map +1 -1
  85. package/dist/webhook-integration/webhook-utils.js +38 -0
  86. package/dist/webhook-integration/webhook-utils.js.map +1 -1
  87. package/hedhog/data/menu.yaml +48 -4
  88. package/hedhog/data/route.yaml +133 -0
  89. package/hedhog/data/setting_group.yaml +45 -0
  90. package/hedhog/data/setting_subgroup.yaml +16 -0
  91. package/hedhog/frontend/app/account/components/mcp-tokens.tsx.ejs +285 -0
  92. package/hedhog/frontend/app/account/layout.tsx.ejs +32 -55
  93. package/hedhog/frontend/app/account/mcp-tokens/page.tsx.ejs +5 -0
  94. package/hedhog/frontend/app/integrations-webhooks/page.tsx.ejs +2098 -1835
  95. package/hedhog/frontend/app/mcp_chat/chat-components.tsx.ejs +595 -0
  96. package/hedhog/frontend/app/mcp_chat/chat-types.ts.ejs +16 -0
  97. package/hedhog/frontend/app/mcp_chat/page.tsx.ejs +554 -383
  98. package/hedhog/frontend/app/setting-list/page.tsx.ejs +649 -0
  99. package/hedhog/frontend/app/users/page.tsx.ejs +445 -203
  100. package/hedhog/frontend/app/users/user-sheet.tsx.ejs +16 -37
  101. package/hedhog/frontend/messages/en.json +241 -2
  102. package/hedhog/frontend/messages/pt.json +241 -2
  103. package/hedhog/table/mcp_api_key.yaml +30 -0
  104. package/hedhog/table/notification.yaml +72 -0
  105. package/hedhog/table/webhook_action_log.yaml +49 -0
  106. package/package.json +2 -2
  107. package/src/core.module.ts +3 -0
  108. package/src/index.ts +5 -0
  109. package/src/mcp/guards/mcp-auth.guard.ts +64 -32
  110. package/src/mcp/mcp-api-key.controller.ts +42 -0
  111. package/src/mcp/mcp-api-key.service.ts +66 -0
  112. package/src/mcp/mcp-registry.service.ts +75 -69
  113. package/src/mcp/mcp.module.ts +43 -36
  114. package/src/mcp-chat/mcp-chat.controller.ts +113 -60
  115. package/src/mcp-chat/mcp-chat.service.ts +494 -332
  116. package/src/notification/dto/create-notification.dto.ts +71 -0
  117. package/src/notification/dto/update-progress.dto.ts +16 -0
  118. package/src/notification/notification.controller.ts +71 -0
  119. package/src/notification/notification.module.ts +16 -0
  120. package/src/notification/notification.service.ts +124 -0
  121. package/src/setting/dto/update-setting-list.dto.ts +32 -0
  122. package/src/setting/setting.controller.ts +9 -0
  123. package/src/setting/setting.service.ts +91 -0
  124. package/src/task/task.service.ts +72 -0
  125. package/src/webhook-integration/webhook-integration.service.ts +934 -735
  126. package/src/webhook-integration/webhook-utils.ts +136 -79
@@ -40,8 +40,8 @@ export declare class AuthController {
40
40
  id: number;
41
41
  created_at: Date;
42
42
  updated_at: Date;
43
- user_id: number;
44
43
  role_id: number;
44
+ user_id: number;
45
45
  })[];
46
46
  user_account: {
47
47
  id: number;
@@ -102,8 +102,8 @@ export declare class AuthService {
102
102
  id: number;
103
103
  created_at: Date;
104
104
  updated_at: Date;
105
- user_id: number;
106
105
  role_id: number;
106
+ user_id: number;
107
107
  })[];
108
108
  user_account: {
109
109
  id: number;
@@ -1 +1 @@
1
- {"version":3,"file":"core.module.d.ts","sourceRoot":"","sources":["../src/core.module.ts"],"names":[],"mappings":"AAMA,OAAO,EAA8B,kBAAkB,EAAU,UAAU,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AA0BlH,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAS3D,qBAsEa,UAAW,YAAW,UAAU,EAAE,YAAY;IAGvD,OAAO,CAAC,QAAQ,CAAC,cAAc;gBAAd,cAAc,EAAE,cAAc;IAGjD,YAAY;IAKZ,SAAS,CAAC,QAAQ,EAAE,kBAAkB;CAKvC"}
1
+ {"version":3,"file":"core.module.d.ts","sourceRoot":"","sources":["../src/core.module.ts"],"names":[],"mappings":"AAMA,OAAO,EAA8B,kBAAkB,EAAU,UAAU,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AA0BlH,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAU3D,qBAwEa,UAAW,YAAW,UAAU,EAAE,YAAY;IAGvD,OAAO,CAAC,QAAQ,CAAC,cAAc;gBAAd,cAAc,EAAE,cAAc;IAGjD,YAAY;IAKZ,SAAS,CAAC,QAAQ,EAAE,kBAAkB;CAKvC"}
@@ -52,6 +52,7 @@ const is_email_with_settings_validator_1 = require("./validators/is-email-with-s
52
52
  const is_pin_code_with_setting_validator_1 = require("./validators/is-pin-code-with-setting.validator");
53
53
  const is_strong_password_with_settings_validator_1 = require("./validators/is-strong-password-with-settings.validator");
54
54
  const service_locator_1 = require("./validators/service-locator");
55
+ const notification_module_1 = require("./notification/notification.module");
55
56
  const webhook_integration_module_1 = require("./webhook-integration/webhook-integration.module");
56
57
  let CoreModule = class CoreModule {
57
58
  constructor(settingService) {
@@ -103,6 +104,7 @@ exports.CoreModule = CoreModule = __decorate([
103
104
  (0, common_1.forwardRef)(() => mcp_module_1.McpModule),
104
105
  (0, common_1.forwardRef)(() => mcp_chat_module_1.McpChatModule),
105
106
  (0, common_1.forwardRef)(() => pdf_module_1.PdfModule),
107
+ (0, common_1.forwardRef)(() => notification_module_1.NotificationModule),
106
108
  ],
107
109
  exports: [
108
110
  user_module_1.UserModule,
@@ -124,6 +126,7 @@ exports.CoreModule = CoreModule = __decorate([
124
126
  is_email_with_settings_validator_1.IsEmailWithSettingsConstraint,
125
127
  is_pin_code_with_setting_validator_1.IsPinCodeWithSettingConstraint,
126
128
  pdf_module_1.PdfModule,
129
+ notification_module_1.NotificationModule,
127
130
  ],
128
131
  providers: [
129
132
  core_1.Reflector,
@@ -1 +1 @@
1
- {"version":3,"file":"core.module.js","sourceRoot":"","sources":["../src/core.module.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"core.module.js","sourceRoot":"","sources":["../src/core.module.ts"],"names":[],"mappings":"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"}
@@ -18,24 +18,24 @@ export declare class DashboardUserController {
18
18
  id: number;
19
19
  created_at: Date;
20
20
  updated_at: Date;
21
- user_id: number;
22
21
  dashboard_id: number;
22
+ user_id: number;
23
23
  is_home: boolean;
24
24
  }>;
25
25
  create(data: CreateDTO): Promise<{
26
26
  id: number;
27
27
  created_at: Date;
28
28
  updated_at: Date;
29
- user_id: number;
30
29
  dashboard_id: number;
30
+ user_id: number;
31
31
  is_home: boolean;
32
32
  }>;
33
33
  update(id: number, data: UpdateDTO): Promise<{
34
34
  id: number;
35
35
  created_at: Date;
36
36
  updated_at: Date;
37
- user_id: number;
38
37
  dashboard_id: number;
38
+ user_id: number;
39
39
  is_home: boolean;
40
40
  }>;
41
41
  delete(data: DeleteDTO): Promise<{
@@ -20,16 +20,16 @@ export declare class DashboardUserService {
20
20
  id: number;
21
21
  created_at: Date;
22
22
  updated_at: Date;
23
- user_id: number;
24
23
  dashboard_id: number;
24
+ user_id: number;
25
25
  is_home: boolean;
26
26
  }>;
27
27
  create(data: CreateDTO): Promise<{
28
28
  id: number;
29
29
  created_at: Date;
30
30
  updated_at: Date;
31
- user_id: number;
32
31
  dashboard_id: number;
32
+ user_id: number;
33
33
  is_home: boolean;
34
34
  }>;
35
35
  update({ id, data }: {
@@ -39,8 +39,8 @@ export declare class DashboardUserService {
39
39
  id: number;
40
40
  created_at: Date;
41
41
  updated_at: Date;
42
- user_id: number;
43
42
  dashboard_id: number;
43
+ user_id: number;
44
44
  is_home: boolean;
45
45
  }>;
46
46
  delete({ ids }: DeleteDTO): Promise<{
package/dist/index.d.ts CHANGED
@@ -45,4 +45,7 @@ export * from './mcp/mcp-registry.service';
45
45
  export * from './mcp/mcp.module';
46
46
  export * from './mcp/types/mcp-context.type';
47
47
  export * from './utils/locale-context';
48
+ export * from './notification/notification.module';
49
+ export * from './notification/notification.service';
50
+ export * from './notification/dto/create-notification.dto';
48
51
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,cAAc,eAAe,CAAC;AAG9B,cAAc,qBAAqB,CAAC;AACpC,cAAc,0BAA0B,CAAC;AAGzC,cAAc,qBAAqB,CAAC;AAGpC,cAAc,0BAA0B,CAAC;AACzC,cAAc,qBAAqB,CAAC;AAGpC,cAAc,yBAAyB,CAAC;AAGxC,cAAc,iCAAiC,CAAC;AAChD,cAAc,qBAAqB,CAAC;AAEpC,cAAc,oCAAoC,CAAC;AACnD,cAAc,qCAAqC,CAAC;AACpD,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AAEpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AAEpC,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,0BAA0B,CAAC;AACzC,cAAc,2BAA2B,CAAC;AAE1C,cAAc,gBAAgB,CAAC;AAC/B,cAAc,iBAAiB,CAAC;AAEhC,cAAc,6CAA6C,CAAC;AAC5D,cAAc,yDAAyD,CAAC;AACxE,cAAc,kDAAkD,CAAC;AACjE,cAAc,mDAAmD,CAAC;AAGlE,cAAc,kCAAkC,CAAC;AACjD,cAAc,+CAA+C,CAAC;AAC9D,cAAc,kDAAkD,CAAC;AACjE,cAAc,sCAAsC,CAAC;AACrD,cAAc,0DAA0D,CAAC;AACzE,cAAc,iDAAiD,CAAC;AAChE,cAAc,qDAAqD,CAAC;AACpE,cAAc,mDAAmD,CAAC;AAClE,cAAc,wCAAwC,CAAC;AACvD,cAAc,yCAAyC,CAAC;AACxD,cAAc,6CAA6C,CAAC;AAC5D,cAAc,uCAAuC,CAAC;AACtD,cAAc,qBAAqB,CAAC;AAGpC,cAAc,+CAA+C,CAAC;AAC9D,cAAc,iDAAiD,CAAC;AAChE,cAAc,yDAAyD,CAAC;AAGxE,cAAc,qCAAqC,CAAC;AACpD,cAAc,gDAAgD,CAAC;AAC/D,cAAc,4BAA4B,CAAC;AAC3C,cAAc,kBAAkB,CAAC;AACjC,cAAc,8BAA8B,CAAC;AAG7C,cAAc,wBAAwB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,cAAc,eAAe,CAAC;AAG9B,cAAc,qBAAqB,CAAC;AACpC,cAAc,0BAA0B,CAAC;AAGzC,cAAc,qBAAqB,CAAC;AAGpC,cAAc,0BAA0B,CAAC;AACzC,cAAc,qBAAqB,CAAC;AAGpC,cAAc,yBAAyB,CAAC;AAGxC,cAAc,iCAAiC,CAAC;AAChD,cAAc,qBAAqB,CAAC;AAEpC,cAAc,oCAAoC,CAAC;AACnD,cAAc,qCAAqC,CAAC;AACpD,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AAEpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AAEpC,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,0BAA0B,CAAC;AACzC,cAAc,2BAA2B,CAAC;AAE1C,cAAc,gBAAgB,CAAC;AAC/B,cAAc,iBAAiB,CAAC;AAEhC,cAAc,6CAA6C,CAAC;AAC5D,cAAc,yDAAyD,CAAC;AACxE,cAAc,kDAAkD,CAAC;AACjE,cAAc,mDAAmD,CAAC;AAGlE,cAAc,kCAAkC,CAAC;AACjD,cAAc,+CAA+C,CAAC;AAC9D,cAAc,kDAAkD,CAAC;AACjE,cAAc,sCAAsC,CAAC;AACrD,cAAc,0DAA0D,CAAC;AACzE,cAAc,iDAAiD,CAAC;AAChE,cAAc,qDAAqD,CAAC;AACpE,cAAc,mDAAmD,CAAC;AAClE,cAAc,wCAAwC,CAAC;AACvD,cAAc,yCAAyC,CAAC;AACxD,cAAc,6CAA6C,CAAC;AAC5D,cAAc,uCAAuC,CAAC;AACtD,cAAc,qBAAqB,CAAC;AAGpC,cAAc,+CAA+C,CAAC;AAC9D,cAAc,iDAAiD,CAAC;AAChE,cAAc,yDAAyD,CAAC;AAGxE,cAAc,qCAAqC,CAAC;AACpD,cAAc,gDAAgD,CAAC;AAC/D,cAAc,4BAA4B,CAAC;AAC3C,cAAc,kBAAkB,CAAC;AACjC,cAAc,8BAA8B,CAAC;AAG7C,cAAc,wBAAwB,CAAC;AAIvC,cAAc,oCAAoC,CAAC;AACnD,cAAc,qCAAqC,CAAC;AACpD,cAAc,4CAA4C,CAAC"}
package/dist/index.js CHANGED
@@ -71,4 +71,8 @@ __exportStar(require("./mcp/mcp.module"), exports);
71
71
  __exportStar(require("./mcp/types/mcp-context.type"), exports);
72
72
  // Utilities
73
73
  __exportStar(require("./utils/locale-context"), exports);
74
+ // Notification Module
75
+ __exportStar(require("./notification/notification.module"), exports);
76
+ __exportStar(require("./notification/notification.service"), exports);
77
+ __exportStar(require("./notification/dto/create-notification.dto"), exports);
74
78
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,cAAc;AACd,gDAA8B;AAE9B,cAAc;AACd,sDAAoC;AACpC,2DAAyC;AAEzC,cAAc;AACd,sDAAoC;AAEpC,oBAAoB;AACpB,2DAAyC;AACzC,sDAAoC;AAEpC,gBAAgB;AAChB,0DAAwC;AAExC,cAAc;AACd,kEAAgD;AAChD,sDAAoC;AAEpC,qEAAmD;AACnD,sEAAoD;AACpD,qDAAmC;AACnC,sDAAoC;AAEpC,qDAAmC;AACnC,sDAAoC;AAEpC,mDAAiC;AACjC,oDAAkC;AAClC,2DAAyC;AACzC,4DAA0C;AAE1C,iDAA+B;AAC/B,kDAAgC;AAEhC,8EAA4D;AAC5D,0FAAwE;AACxE,mFAAiE;AACjE,oFAAkE;AAElE,qBAAqB;AACrB,mEAAiD;AACjD,gFAA8D;AAC9D,mFAAiE;AACjE,uEAAqD;AACrD,2FAAyE;AACzE,kFAAgE;AAChE,sFAAoE;AACpE,oFAAkE;AAClE,yEAAuD;AACvD,0EAAwD;AACxD,8EAA4D;AAC5D,wEAAsD;AACtD,sDAAoC;AAEpC,aAAa;AACb,gFAA8D;AAC9D,kFAAgE;AAChE,0FAAwE;AAExE,aAAa;AACb,sEAAoD;AACpD,iFAA+D;AAC/D,6DAA2C;AAC3C,mDAAiC;AACjC,+DAA6C;AAE7C,YAAY;AACZ,yDAAuC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,cAAc;AACd,gDAA8B;AAE9B,cAAc;AACd,sDAAoC;AACpC,2DAAyC;AAEzC,cAAc;AACd,sDAAoC;AAEpC,oBAAoB;AACpB,2DAAyC;AACzC,sDAAoC;AAEpC,gBAAgB;AAChB,0DAAwC;AAExC,cAAc;AACd,kEAAgD;AAChD,sDAAoC;AAEpC,qEAAmD;AACnD,sEAAoD;AACpD,qDAAmC;AACnC,sDAAoC;AAEpC,qDAAmC;AACnC,sDAAoC;AAEpC,mDAAiC;AACjC,oDAAkC;AAClC,2DAAyC;AACzC,4DAA0C;AAE1C,iDAA+B;AAC/B,kDAAgC;AAEhC,8EAA4D;AAC5D,0FAAwE;AACxE,mFAAiE;AACjE,oFAAkE;AAElE,qBAAqB;AACrB,mEAAiD;AACjD,gFAA8D;AAC9D,mFAAiE;AACjE,uEAAqD;AACrD,2FAAyE;AACzE,kFAAgE;AAChE,sFAAoE;AACpE,oFAAkE;AAClE,yEAAuD;AACvD,0EAAwD;AACxD,8EAA4D;AAC5D,wEAAsD;AACtD,sDAAoC;AAEpC,aAAa;AACb,gFAA8D;AAC9D,kFAAgE;AAChE,0FAAwE;AAExE,aAAa;AACb,sEAAoD;AACpD,iFAA+D;AAC/D,6DAA2C;AAC3C,mDAAiC;AACjC,+DAA6C;AAE7C,YAAY;AACZ,yDAAuC;AAGvC,sBAAsB;AACtB,qEAAmD;AACnD,sEAAoD;AACpD,6EAA2D"}
@@ -1,9 +1,14 @@
1
+ import { PrismaService } from '@hed-hog/api-prisma';
1
2
  import { CanActivate, ExecutionContext } from '@nestjs/common';
3
+ import { SecurityService } from '../../security/security.service';
2
4
  import { TokenService } from '../../token/token.service';
3
5
  export declare class McpAuthGuard implements CanActivate {
4
6
  private readonly tokenService;
5
- constructor(tokenService: TokenService);
7
+ private readonly prisma;
8
+ private readonly security;
9
+ constructor(tokenService: TokenService, prisma: PrismaService, security: SecurityService);
6
10
  canActivate(context: ExecutionContext): Promise<boolean>;
11
+ private verifyApiKey;
7
12
  private extractToken;
8
13
  }
9
14
  //# sourceMappingURL=mcp-auth.guard.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"mcp-auth.guard.d.ts","sourceRoot":"","sources":["../../../src/mcp/guards/mcp-auth.guard.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,EACX,gBAAgB,EAGjB,MAAM,gBAAgB,CAAC;AAExB,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAEzD,qBACa,YAAa,YAAW,WAAW;IAClC,OAAO,CAAC,QAAQ,CAAC,YAAY;gBAAZ,YAAY,EAAE,YAAY;IAEjD,WAAW,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,OAAO,CAAC;IAc9D,OAAO,CAAC,YAAY;CAIrB"}
1
+ {"version":3,"file":"mcp-auth.guard.d.ts","sourceRoot":"","sources":["../../../src/mcp/guards/mcp-auth.guard.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EACL,WAAW,EACX,gBAAgB,EAGjB,MAAM,gBAAgB,CAAC;AAExB,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAClE,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAEzD,qBACa,YAAa,YAAW,WAAW;IAE5C,OAAO,CAAC,QAAQ,CAAC,YAAY;IAC7B,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,QAAQ;gBAFR,YAAY,EAAE,YAAY,EAC1B,MAAM,EAAE,aAAa,EACrB,QAAQ,EAAE,eAAe;IAGtC,WAAW,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,OAAO,CAAC;YAkBhD,YAAY;IAsB1B,OAAO,CAAC,YAAY;CAIrB"}
@@ -10,11 +10,15 @@ var __metadata = (this && this.__metadata) || function (k, v) {
10
10
  };
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
12
  exports.McpAuthGuard = void 0;
13
+ const api_prisma_1 = require("@hed-hog/api-prisma");
13
14
  const common_1 = require("@nestjs/common");
15
+ const security_service_1 = require("../../security/security.service");
14
16
  const token_service_1 = require("../../token/token.service");
15
17
  let McpAuthGuard = class McpAuthGuard {
16
- constructor(tokenService) {
18
+ constructor(tokenService, prisma, security) {
17
19
  this.tokenService = tokenService;
20
+ this.prisma = prisma;
21
+ this.security = security;
18
22
  }
19
23
  async canActivate(context) {
20
24
  var _a, _b, _c;
@@ -24,9 +28,30 @@ let McpAuthGuard = class McpAuthGuard {
24
28
  if (!token) {
25
29
  throw new common_1.UnauthorizedException('MCP: Bearer token required');
26
30
  }
31
+ if (token.startsWith('hedhog_mcp_')) {
32
+ return this.verifyApiKey(request, token);
33
+ }
27
34
  request['auth'] = await this.tokenService.verify(locale, token);
28
35
  return true;
29
36
  }
37
+ async verifyApiKey(request, token) {
38
+ const hash = this.security.hashWithPepper(token);
39
+ const apiKey = await this.prisma.mcp_api_key.findFirst({
40
+ where: { token_hash: hash, revoked_at: null },
41
+ });
42
+ if (!apiKey) {
43
+ throw new common_1.UnauthorizedException('MCP: Invalid API key');
44
+ }
45
+ if (apiKey.expires_at && apiKey.expires_at <= new Date()) {
46
+ throw new common_1.UnauthorizedException('MCP: API key expired');
47
+ }
48
+ this.prisma.mcp_api_key.update({
49
+ where: { id: apiKey.id },
50
+ data: { last_used_at: new Date() },
51
+ }).catch(() => { });
52
+ request['auth'] = { sub: apiKey.user_id, sessionId: null };
53
+ return true;
54
+ }
30
55
  extractToken(request) {
31
56
  var _a, _b;
32
57
  const [type, token] = (_b = (_a = request.headers.authorization) === null || _a === void 0 ? void 0 : _a.split(' ')) !== null && _b !== void 0 ? _b : [];
@@ -36,6 +61,8 @@ let McpAuthGuard = class McpAuthGuard {
36
61
  exports.McpAuthGuard = McpAuthGuard;
37
62
  exports.McpAuthGuard = McpAuthGuard = __decorate([
38
63
  (0, common_1.Injectable)(),
39
- __metadata("design:paramtypes", [token_service_1.TokenService])
64
+ __metadata("design:paramtypes", [token_service_1.TokenService,
65
+ api_prisma_1.PrismaService,
66
+ security_service_1.SecurityService])
40
67
  ], McpAuthGuard);
41
68
  //# sourceMappingURL=mcp-auth.guard.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"mcp-auth.guard.js","sourceRoot":"","sources":["../../../src/mcp/guards/mcp-auth.guard.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAKwB;AAExB,6DAAyD;AAGlD,IAAM,YAAY,GAAlB,MAAM,YAAY;IACvB,YAA6B,YAA0B;QAA1B,iBAAY,GAAZ,YAAY,CAAc;IAAG,CAAC;IAE3D,KAAK,CAAC,WAAW,CAAC,OAAyB;;QACzC,MAAM,OAAO,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,UAAU,EAAW,CAAC;QAC7D,MAAM,MAAM,GACV,MAAA,MAAA,MAAA,OAAO,CAAC,OAAO,CAAC,iBAAiB,CAAC,0CAAE,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,0CAAE,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,mCAAI,IAAI,CAAC;QAE3E,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;QACzC,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,IAAI,8BAAqB,CAAC,4BAA4B,CAAC,CAAC;QAChE,CAAC;QAED,OAAO,CAAC,MAAM,CAAC,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QAChE,OAAO,IAAI,CAAC;IACd,CAAC;IAEO,YAAY,CAAC,OAAgB;;QACnC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,MAAA,MAAA,OAAO,CAAC,OAAO,CAAC,aAAa,0CAAE,KAAK,CAAC,GAAG,CAAC,mCAAI,EAAE,CAAC;QACtE,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;IAC/C,CAAC;CACF,CAAA;AArBY,oCAAY;uBAAZ,YAAY;IADxB,IAAA,mBAAU,GAAE;qCAEgC,4BAAY;GAD5C,YAAY,CAqBxB"}
1
+ {"version":3,"file":"mcp-auth.guard.js","sourceRoot":"","sources":["../../../src/mcp/guards/mcp-auth.guard.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,oDAAoD;AACpD,2CAKwB;AAExB,sEAAkE;AAClE,6DAAyD;AAGlD,IAAM,YAAY,GAAlB,MAAM,YAAY;IACvB,YACmB,YAA0B,EAC1B,MAAqB,EACrB,QAAyB;QAFzB,iBAAY,GAAZ,YAAY,CAAc;QAC1B,WAAM,GAAN,MAAM,CAAe;QACrB,aAAQ,GAAR,QAAQ,CAAiB;IACzC,CAAC;IAEJ,KAAK,CAAC,WAAW,CAAC,OAAyB;;QACzC,MAAM,OAAO,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,UAAU,EAAW,CAAC;QAC7D,MAAM,MAAM,GACV,MAAA,MAAA,MAAA,OAAO,CAAC,OAAO,CAAC,iBAAiB,CAAC,0CAAE,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,0CAAE,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,mCAAI,IAAI,CAAC;QAE3E,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;QACzC,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,IAAI,8BAAqB,CAAC,4BAA4B,CAAC,CAAC;QAChE,CAAC;QAED,IAAI,KAAK,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;YACpC,OAAO,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QAC3C,CAAC;QAED,OAAO,CAAC,MAAM,CAAC,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QAChE,OAAO,IAAI,CAAC;IACd,CAAC;IAEO,KAAK,CAAC,YAAY,CAAC,OAAgB,EAAE,KAAa;QACxD,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;QACjD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,SAAS,CAAC;YACrD,KAAK,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE;SAC9C,CAAC,CAAC;QAEH,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,IAAI,8BAAqB,CAAC,sBAAsB,CAAC,CAAC;QAC1D,CAAC;QACD,IAAI,MAAM,CAAC,UAAU,IAAI,MAAM,CAAC,UAAU,IAAI,IAAI,IAAI,EAAE,EAAE,CAAC;YACzD,MAAM,IAAI,8BAAqB,CAAC,sBAAsB,CAAC,CAAC;QAC1D,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC;YAC7B,KAAK,EAAE,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE;YACxB,IAAI,EAAE,EAAE,YAAY,EAAE,IAAI,IAAI,EAAE,EAAE;SACnC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QAEnB,OAAO,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,CAAC,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;QAC3D,OAAO,IAAI,CAAC;IACd,CAAC;IAEO,YAAY,CAAC,OAAgB;;QACnC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,MAAA,MAAA,OAAO,CAAC,OAAO,CAAC,aAAa,0CAAE,KAAK,CAAC,GAAG,CAAC,mCAAI,EAAE,CAAC;QACtE,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;IAC/C,CAAC;CACF,CAAA;AAnDY,oCAAY;uBAAZ,YAAY;IADxB,IAAA,mBAAU,GAAE;qCAGsB,4BAAY;QAClB,0BAAa;QACX,kCAAe;GAJjC,YAAY,CAmDxB"}
@@ -0,0 +1,32 @@
1
+ import { PaginationDTO } from '@hed-hog/api-pagination';
2
+ import { McpApiKeyService } from './mcp-api-key.service';
3
+ export declare class McpApiKeyController {
4
+ private readonly mcpApiKeyService;
5
+ constructor(mcpApiKeyService: McpApiKeyService);
6
+ list(paginationParams: PaginationDTO, { id }: {
7
+ id: number;
8
+ }): Promise<{
9
+ total: any;
10
+ lastPage: number;
11
+ page: number;
12
+ pageSize: number;
13
+ data: any;
14
+ }>;
15
+ create({ id }: {
16
+ id: number;
17
+ }, body: {
18
+ name: string;
19
+ }): Promise<{
20
+ rawToken: string;
21
+ name: string;
22
+ id: number;
23
+ created_at: Date;
24
+ token_prefix: string;
25
+ }>;
26
+ revoke({ id: userId }: {
27
+ id: number;
28
+ }, id: number): Promise<{
29
+ success: boolean;
30
+ }>;
31
+ }
32
+ //# sourceMappingURL=mcp-api-key.controller.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-api-key.controller.d.ts","sourceRoot":"","sources":["../../src/mcp/mcp-api-key.controller.ts"],"names":[],"mappings":"AACA,OAAO,EAAc,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAUpE,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAEzD,qBAEa,mBAAmB;IAClB,OAAO,CAAC,QAAQ,CAAC,gBAAgB;gBAAhB,gBAAgB,EAAE,gBAAgB;IAG/D,IAAI,CACY,gBAAgB,EAAE,aAAa,EACrC,EAAE,EAAE,EAAE,EAAE;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE;;;;;;;IAMhC,MAAM,CACI,EAAE,EAAE,EAAE,EAAE;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE,EACtB,IAAI,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE;;;;;;;IAMhC,MAAM,CACI,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE,EACX,EAAE,EAAE,MAAM;;;CAIxC"}
@@ -0,0 +1,64 @@
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 __param = (this && this.__param) || function (paramIndex, decorator) {
12
+ return function (target, key) { decorator(target, key, paramIndex); }
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.McpApiKeyController = void 0;
16
+ const api_1 = require("@hed-hog/api");
17
+ const api_pagination_1 = require("@hed-hog/api-pagination");
18
+ const common_1 = require("@nestjs/common");
19
+ const mcp_api_key_service_1 = require("./mcp-api-key.service");
20
+ let McpApiKeyController = class McpApiKeyController {
21
+ constructor(mcpApiKeyService) {
22
+ this.mcpApiKeyService = mcpApiKeyService;
23
+ }
24
+ list(paginationParams, { id }) {
25
+ return this.mcpApiKeyService.list(id, paginationParams);
26
+ }
27
+ create({ id }, body) {
28
+ return this.mcpApiKeyService.create(id, body.name);
29
+ }
30
+ revoke({ id: userId }, id) {
31
+ return this.mcpApiKeyService.revoke(userId, id);
32
+ }
33
+ };
34
+ exports.McpApiKeyController = McpApiKeyController;
35
+ __decorate([
36
+ (0, common_1.Get)(),
37
+ __param(0, (0, api_pagination_1.Pagination)()),
38
+ __param(1, (0, api_1.User)()),
39
+ __metadata("design:type", Function),
40
+ __metadata("design:paramtypes", [api_pagination_1.PaginationDTO, Object]),
41
+ __metadata("design:returntype", void 0)
42
+ ], McpApiKeyController.prototype, "list", null);
43
+ __decorate([
44
+ (0, common_1.Post)(),
45
+ __param(0, (0, api_1.User)()),
46
+ __param(1, (0, common_1.Body)()),
47
+ __metadata("design:type", Function),
48
+ __metadata("design:paramtypes", [Object, Object]),
49
+ __metadata("design:returntype", void 0)
50
+ ], McpApiKeyController.prototype, "create", null);
51
+ __decorate([
52
+ (0, common_1.Delete)(':id'),
53
+ __param(0, (0, api_1.User)()),
54
+ __param(1, (0, common_1.Param)('id', common_1.ParseIntPipe)),
55
+ __metadata("design:type", Function),
56
+ __metadata("design:paramtypes", [Object, Number]),
57
+ __metadata("design:returntype", void 0)
58
+ ], McpApiKeyController.prototype, "revoke", null);
59
+ exports.McpApiKeyController = McpApiKeyController = __decorate([
60
+ (0, api_1.Role)(),
61
+ (0, common_1.Controller)('mcp/api-keys'),
62
+ __metadata("design:paramtypes", [mcp_api_key_service_1.McpApiKeyService])
63
+ ], McpApiKeyController);
64
+ //# sourceMappingURL=mcp-api-key.controller.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-api-key.controller.js","sourceRoot":"","sources":["../../src/mcp/mcp-api-key.controller.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,sCAA0C;AAC1C,4DAAoE;AACpE,2CAQwB;AACxB,+DAAyD;AAIlD,IAAM,mBAAmB,GAAzB,MAAM,mBAAmB;IAC9B,YAA6B,gBAAkC;QAAlC,qBAAgB,GAAhB,gBAAgB,CAAkB;IAAG,CAAC;IAGnE,IAAI,CACY,gBAA+B,EACrC,EAAE,EAAE,EAAkB;QAE9B,OAAO,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,EAAE,gBAAgB,CAAC,CAAC;IAC1D,CAAC;IAGD,MAAM,CACI,EAAE,EAAE,EAAkB,EACtB,IAAsB;QAE9B,OAAO,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IACrD,CAAC;IAGD,MAAM,CACI,EAAE,EAAE,EAAE,MAAM,EAAkB,EACX,EAAU;QAErC,OAAO,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IAClD,CAAC;CACF,CAAA;AA1BY,kDAAmB;AAI9B;IADC,IAAA,YAAG,GAAE;IAEH,WAAA,IAAA,2BAAU,GAAE,CAAA;IACZ,WAAA,IAAA,UAAI,GAAE,CAAA;;qCADyB,8BAAa;;+CAI9C;AAGD;IADC,IAAA,aAAI,GAAE;IAEJ,WAAA,IAAA,UAAI,GAAE,CAAA;IACN,WAAA,IAAA,aAAI,GAAE,CAAA;;;;iDAGR;AAGD;IADC,IAAA,eAAM,EAAC,KAAK,CAAC;IAEX,WAAA,IAAA,UAAI,GAAE,CAAA;IACN,WAAA,IAAA,cAAK,EAAC,IAAI,EAAE,qBAAY,CAAC,CAAA;;;;iDAG3B;8BAzBU,mBAAmB;IAF/B,IAAA,UAAI,GAAE;IACN,IAAA,mBAAU,EAAC,cAAc,CAAC;qCAEsB,sCAAgB;GADpD,mBAAmB,CA0B/B"}
@@ -0,0 +1,27 @@
1
+ import { PaginationDTO, PaginationService } from '@hed-hog/api-pagination';
2
+ import { PrismaService } from '@hed-hog/api-prisma';
3
+ import { SecurityService } from '../security/security.service';
4
+ export declare class McpApiKeyService {
5
+ private readonly prisma;
6
+ private readonly security;
7
+ private readonly pagination;
8
+ constructor(prisma: PrismaService, security: SecurityService, pagination: PaginationService);
9
+ list(userId: number, paginationParams: PaginationDTO): Promise<{
10
+ total: any;
11
+ lastPage: number;
12
+ page: number;
13
+ pageSize: number;
14
+ data: any;
15
+ }>;
16
+ create(userId: number, name: string): Promise<{
17
+ rawToken: string;
18
+ name: string;
19
+ id: number;
20
+ created_at: Date;
21
+ token_prefix: string;
22
+ }>;
23
+ revoke(userId: number, id: number): Promise<{
24
+ success: boolean;
25
+ }>;
26
+ }
27
+ //# sourceMappingURL=mcp-api-key.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-api-key.service.d.ts","sourceRoot":"","sources":["../../src/mcp/mcp-api-key.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC3E,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEpD,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAE/D,qBACa,gBAAgB;IAEzB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,UAAU;gBAFV,MAAM,EAAE,aAAa,EACrB,QAAQ,EAAE,eAAe,EACzB,UAAU,EAAE,iBAAiB;IAG1C,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,gBAAgB,EAAE,aAAa;;;;;;;IAgBpD,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM;;;;;;;IAuBnC,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM;;;CAaxC"}
@@ -0,0 +1,74 @@
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.McpApiKeyService = void 0;
13
+ const api_pagination_1 = require("@hed-hog/api-pagination");
14
+ const api_prisma_1 = require("@hed-hog/api-prisma");
15
+ const common_1 = require("@nestjs/common");
16
+ const security_service_1 = require("../security/security.service");
17
+ let McpApiKeyService = class McpApiKeyService {
18
+ constructor(prisma, security, pagination) {
19
+ this.prisma = prisma;
20
+ this.security = security;
21
+ this.pagination = pagination;
22
+ }
23
+ async list(userId, paginationParams) {
24
+ return this.pagination.paginatePrismaModel(this.prisma.mcp_api_key, Object.assign(Object.assign({}, paginationParams), { where: { user_id: userId, revoked_at: null }, select: {
25
+ id: true,
26
+ name: true,
27
+ token_prefix: true,
28
+ last_used_at: true,
29
+ expires_at: true,
30
+ created_at: true,
31
+ }, orderBy: { created_at: 'desc' } }));
32
+ }
33
+ async create(userId, name) {
34
+ const rawToken = 'hedhog_mcp_' + this.security.randomOpaque(36);
35
+ const tokenHash = this.security.hashWithPepper(rawToken);
36
+ const tokenPrefix = rawToken.substring(0, 16);
37
+ const record = await this.prisma.mcp_api_key.create({
38
+ data: {
39
+ user_id: userId,
40
+ name,
41
+ token_hash: tokenHash,
42
+ token_prefix: tokenPrefix,
43
+ },
44
+ select: {
45
+ id: true,
46
+ name: true,
47
+ token_prefix: true,
48
+ created_at: true,
49
+ },
50
+ });
51
+ return Object.assign(Object.assign({}, record), { rawToken });
52
+ }
53
+ async revoke(userId, id) {
54
+ const key = await this.prisma.mcp_api_key.findFirst({
55
+ where: { id, user_id: userId },
56
+ });
57
+ if (!key) {
58
+ throw new common_1.NotFoundException(`MCP API key ${id} not found`);
59
+ }
60
+ await this.prisma.mcp_api_key.update({
61
+ where: { id },
62
+ data: { revoked_at: new Date() },
63
+ });
64
+ return { success: true };
65
+ }
66
+ };
67
+ exports.McpApiKeyService = McpApiKeyService;
68
+ exports.McpApiKeyService = McpApiKeyService = __decorate([
69
+ (0, common_1.Injectable)(),
70
+ __metadata("design:paramtypes", [api_prisma_1.PrismaService,
71
+ security_service_1.SecurityService,
72
+ api_pagination_1.PaginationService])
73
+ ], McpApiKeyService);
74
+ //# sourceMappingURL=mcp-api-key.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-api-key.service.js","sourceRoot":"","sources":["../../src/mcp/mcp-api-key.service.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,4DAA2E;AAC3E,oDAAoD;AACpD,2CAA+D;AAC/D,mEAA+D;AAGxD,IAAM,gBAAgB,GAAtB,MAAM,gBAAgB;IAC3B,YACmB,MAAqB,EACrB,QAAyB,EACzB,UAA6B;QAF7B,WAAM,GAAN,MAAM,CAAe;QACrB,aAAQ,GAAR,QAAQ,CAAiB;QACzB,eAAU,GAAV,UAAU,CAAmB;IAC7C,CAAC;IAEJ,KAAK,CAAC,IAAI,CAAC,MAAc,EAAE,gBAA+B;QACxD,OAAO,IAAI,CAAC,UAAU,CAAC,mBAAmB,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,kCAC7D,gBAAgB,KACnB,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,EAC5C,MAAM,EAAE;gBACN,EAAE,EAAE,IAAI;gBACR,IAAI,EAAE,IAAI;gBACV,YAAY,EAAE,IAAI;gBAClB,YAAY,EAAE,IAAI;gBAClB,UAAU,EAAE,IAAI;gBAChB,UAAU,EAAE,IAAI;aACjB,EACD,OAAO,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE,IAC/B,CAAC;IACL,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,MAAc,EAAE,IAAY;QACvC,MAAM,QAAQ,GAAG,aAAa,GAAG,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;QAChE,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;QACzD,MAAM,WAAW,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAE9C,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC;YAClD,IAAI,EAAE;gBACJ,OAAO,EAAE,MAAM;gBACf,IAAI;gBACJ,UAAU,EAAE,SAAS;gBACrB,YAAY,EAAE,WAAW;aAC1B;YACD,MAAM,EAAE;gBACN,EAAE,EAAE,IAAI;gBACR,IAAI,EAAE,IAAI;gBACV,YAAY,EAAE,IAAI;gBAClB,UAAU,EAAE,IAAI;aACjB;SACF,CAAC,CAAC;QAEH,uCAAY,MAAM,KAAE,QAAQ,IAAG;IACjC,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,MAAc,EAAE,EAAU;QACrC,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,SAAS,CAAC;YAClD,KAAK,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE;SAC/B,CAAC,CAAC;QACH,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,MAAM,IAAI,0BAAiB,CAAC,eAAe,EAAE,YAAY,CAAC,CAAC;QAC7D,CAAC;QACD,MAAM,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC;YACnC,KAAK,EAAE,EAAE,EAAE,EAAE;YACb,IAAI,EAAE,EAAE,UAAU,EAAE,IAAI,IAAI,EAAE,EAAE;SACjC,CAAC,CAAC;QACH,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IAC3B,CAAC;CACF,CAAA;AA3DY,4CAAgB;2BAAhB,gBAAgB;IAD5B,IAAA,mBAAU,GAAE;qCAGgB,0BAAa;QACX,kCAAe;QACb,kCAAiB;GAJrC,gBAAgB,CA2D5B"}
@@ -1,6 +1,5 @@
1
1
  import { OnModuleInit } from '@nestjs/common';
2
- import { DiscoveryService } from '@nestjs/core';
3
- import { Reflector } from '@nestjs/core';
2
+ import { DiscoveryService, Reflector } from '@nestjs/core';
4
3
  import { McpToolDefinition } from './interfaces/mcp-tool-definition.interface';
5
4
  import { McpContext } from './types/mcp-context.type';
6
5
  export interface McpToolEntry {
@@ -1 +1 @@
1
- {"version":3,"file":"mcp-registry.service.d.ts","sourceRoot":"","sources":["../../src/mcp/mcp-registry.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAsB,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAClE,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzC,OAAO,EAAE,iBAAiB,EAAE,MAAM,4CAA4C,CAAC;AAC/E,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAEtD,MAAM,WAAW,YAAY;IAC3B,UAAU,EAAE,iBAAiB,CAAC;IAC9B,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,OAAO,EAAE,UAAU,KAAK,OAAO,CAAC,GAAG,CAAC,CAAC;CAC3E;AAED,qBACa,kBAAmB,YAAW,YAAY;IAKnD,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,SAAS;IAL5B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAuC;IAC9D,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAmC;gBAGtC,SAAS,EAAE,gBAAgB,EAC3B,SAAS,EAAE,SAAS;IAGvC,YAAY,IAAI,IAAI;IAmCpB,MAAM,IAAI,YAAY,EAAE;IAIxB,GAAG,CAAC,QAAQ,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS;IAI/C,GAAG,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;CAG/B"}
1
+ {"version":3,"file":"mcp-registry.service.d.ts","sourceRoot":"","sources":["../../src/mcp/mcp-registry.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAsB,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAClE,OAAO,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAE3D,OAAO,EAAE,iBAAiB,EAAE,MAAM,4CAA4C,CAAC;AAC/E,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAEtD,MAAM,WAAW,YAAY;IAC3B,UAAU,EAAE,iBAAiB,CAAC;IAC9B,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,OAAO,EAAE,UAAU,KAAK,OAAO,CAAC,GAAG,CAAC,CAAC;CAC3E;AAED,qBACa,kBAAmB,YAAW,YAAY;IAKnD,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,SAAS;IAL5B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAuC;IAC9D,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAmC;gBAGtC,SAAS,EAAE,gBAAgB,EAC3B,SAAS,EAAE,SAAS;IAGvC,YAAY,IAAI,IAAI;IA0CpB,MAAM,IAAI,YAAY,EAAE;IAIxB,GAAG,CAAC,QAAQ,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS;IAI/C,GAAG,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;CAG/B"}
@@ -13,7 +13,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
13
13
  exports.McpRegistryService = void 0;
14
14
  const common_1 = require("@nestjs/common");
15
15
  const core_1 = require("@nestjs/core");
16
- const core_2 = require("@nestjs/core");
17
16
  const mcp_tool_decorator_1 = require("./decorators/mcp-tool.decorator");
18
17
  let McpRegistryService = McpRegistryService_1 = class McpRegistryService {
19
18
  constructor(discovery, reflector) {
@@ -23,6 +22,7 @@ let McpRegistryService = McpRegistryService_1 = class McpRegistryService {
23
22
  this.tools = new Map();
24
23
  }
25
24
  onModuleInit() {
25
+ var _a;
26
26
  const providers = this.discovery.getProviders();
27
27
  for (const wrapper of providers) {
28
28
  const { instance } = wrapper;
@@ -41,6 +41,10 @@ let McpRegistryService = McpRegistryService_1 = class McpRegistryService {
41
41
  const definition = this.reflector.get(mcp_tool_decorator_1.MCP_TOOL_METADATA, prototype[methodName]);
42
42
  if (!definition)
43
43
  continue;
44
+ if (this.tools.has(definition.name)) {
45
+ this.logger.warn(`Duplicate MCP tool ignored: ${definition.name} from ${(_a = prototype.constructor) === null || _a === void 0 ? void 0 : _a.name}.${methodName}`);
46
+ continue;
47
+ }
44
48
  this.logger.log(`Registered MCP tool: ${definition.name}`);
45
49
  this.tools.set(definition.name, {
46
50
  definition,
@@ -64,6 +68,6 @@ exports.McpRegistryService = McpRegistryService;
64
68
  exports.McpRegistryService = McpRegistryService = McpRegistryService_1 = __decorate([
65
69
  (0, common_1.Injectable)(),
66
70
  __metadata("design:paramtypes", [core_1.DiscoveryService,
67
- core_2.Reflector])
71
+ core_1.Reflector])
68
72
  ], McpRegistryService);
69
73
  //# sourceMappingURL=mcp-registry.service.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"mcp-registry.service.js","sourceRoot":"","sources":["../../src/mcp/mcp-registry.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,2CAAkE;AAClE,uCAAgD;AAChD,uCAAyC;AACzC,wEAAoE;AAU7D,IAAM,kBAAkB,0BAAxB,MAAM,kBAAkB;IAI7B,YACmB,SAA2B,EAC3B,SAAoB;QADpB,cAAS,GAAT,SAAS,CAAkB;QAC3B,cAAS,GAAT,SAAS,CAAW;QALtB,WAAM,GAAG,IAAI,eAAM,CAAC,oBAAkB,CAAC,IAAI,CAAC,CAAC;QAC7C,UAAK,GAAG,IAAI,GAAG,EAAwB,CAAC;IAKtD,CAAC;IAEJ,YAAY;QACV,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,CAAC;QAEhD,KAAK,MAAM,OAAO,IAAI,SAAS,EAAE,CAAC;YAChC,MAAM,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC;YAC7B,IAAI,CAAC,QAAQ,IAAI,OAAO,QAAQ,KAAK,QAAQ;gBAAE,SAAS;YAExD,MAAM,SAAS,GAAG,MAAM,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;YAClD,IAAI,CAAC,SAAS;gBAAE,SAAS;YAEzB,MAAM,WAAW,GAAG,MAAM,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE;gBACvE,IAAI,GAAG,KAAK,aAAa;oBAAE,OAAO,KAAK,CAAC;gBACxC,MAAM,UAAU,GAAG,MAAM,CAAC,wBAAwB,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;gBACnE,OAAO,UAAU,KAAK,SAAS,IAAI,OAAO,UAAU,CAAC,KAAK,KAAK,UAAU,CAAC;YAC5E,CAAC,CAAC,CAAC;YAEH,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE,CAAC;gBACrC,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CACnC,sCAAiB,EACjB,SAAS,CAAC,UAAU,CAAC,CACtB,CAAC;gBAEF,IAAI,CAAC,UAAU;oBAAE,SAAS;gBAE1B,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,wBAAwB,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC;gBAC3D,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,EAAE;oBAC9B,UAAU;oBACV,OAAO,EAAG,QAAgB,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC;iBACtD,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,uBAAuB,IAAI,CAAC,KAAK,CAAC,IAAI,mBAAmB,CAAC,CAAC;IAC7E,CAAC;IAED,MAAM;QACJ,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;IACzC,CAAC;IAED,GAAG,CAAC,QAAgB;QAClB,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAClC,CAAC;IAED,GAAG,CAAC,QAAgB;QAClB,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAClC,CAAC;CACF,CAAA;AAvDY,gDAAkB;6BAAlB,kBAAkB;IAD9B,IAAA,mBAAU,GAAE;qCAMmB,uBAAgB;QAChB,gBAAS;GAN5B,kBAAkB,CAuD9B"}
1
+ {"version":3,"file":"mcp-registry.service.js","sourceRoot":"","sources":["../../src/mcp/mcp-registry.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,2CAAkE;AAClE,uCAA2D;AAC3D,wEAAoE;AAU7D,IAAM,kBAAkB,0BAAxB,MAAM,kBAAkB;IAI7B,YACmB,SAA2B,EAC3B,SAAoB;QADpB,cAAS,GAAT,SAAS,CAAkB;QAC3B,cAAS,GAAT,SAAS,CAAW;QALtB,WAAM,GAAG,IAAI,eAAM,CAAC,oBAAkB,CAAC,IAAI,CAAC,CAAC;QAC7C,UAAK,GAAG,IAAI,GAAG,EAAwB,CAAC;IAKtD,CAAC;IAEJ,YAAY;;QACV,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,CAAC;QAEhD,KAAK,MAAM,OAAO,IAAI,SAAS,EAAE,CAAC;YAChC,MAAM,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC;YAC7B,IAAI,CAAC,QAAQ,IAAI,OAAO,QAAQ,KAAK,QAAQ;gBAAE,SAAS;YAExD,MAAM,SAAS,GAAG,MAAM,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;YAClD,IAAI,CAAC,SAAS;gBAAE,SAAS;YAEzB,MAAM,WAAW,GAAG,MAAM,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE;gBACvE,IAAI,GAAG,KAAK,aAAa;oBAAE,OAAO,KAAK,CAAC;gBACxC,MAAM,UAAU,GAAG,MAAM,CAAC,wBAAwB,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;gBACnE,OAAO,UAAU,KAAK,SAAS,IAAI,OAAO,UAAU,CAAC,KAAK,KAAK,UAAU,CAAC;YAC5E,CAAC,CAAC,CAAC;YAEH,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE,CAAC;gBACrC,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CACnC,sCAAiB,EACjB,SAAS,CAAC,UAAU,CAAC,CACtB,CAAC;gBAEF,IAAI,CAAC,UAAU;oBAAE,SAAS;gBAE1B,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;oBACpC,IAAI,CAAC,MAAM,CAAC,IAAI,CACd,+BAA+B,UAAU,CAAC,IAAI,SAAS,MAAA,SAAS,CAAC,WAAW,0CAAE,IAAI,IAAI,UAAU,EAAE,CACnG,CAAC;oBACF,SAAS;gBACX,CAAC;gBAED,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,wBAAwB,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC;gBAC3D,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,EAAE;oBAC9B,UAAU;oBACV,OAAO,EAAG,QAAgB,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC;iBACtD,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,uBAAuB,IAAI,CAAC,KAAK,CAAC,IAAI,mBAAmB,CAAC,CAAC;IAC7E,CAAC;IAED,MAAM;QACJ,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;IACzC,CAAC;IAED,GAAG,CAAC,QAAgB;QAClB,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAClC,CAAC;IAED,GAAG,CAAC,QAAgB;QAClB,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAClC,CAAC;CACF,CAAA;AA9DY,gDAAkB;6BAAlB,kBAAkB;IAD9B,IAAA,mBAAU,GAAE;qCAMmB,uBAAgB;QAChB,gBAAS;GAN5B,kBAAkB,CA8D9B"}
@@ -1 +1 @@
1
- {"version":3,"file":"mcp.module.d.ts","sourceRoot":"","sources":["../../src/mcp/mcp.module.ts"],"names":[],"mappings":"AAeA,qBAoBa,SAAS;CAAG"}
1
+ {"version":3,"file":"mcp.module.d.ts","sourceRoot":"","sources":["../../src/mcp/mcp.module.ts"],"names":[],"mappings":"AAmBA,qBAuBa,SAAS;CAAG"}
@@ -7,14 +7,18 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
7
7
  };
8
8
  Object.defineProperty(exports, "__esModule", { value: true });
9
9
  exports.McpModule = void 0;
10
+ const api_pagination_1 = require("@hed-hog/api-pagination");
10
11
  const api_prisma_1 = require("@hed-hog/api-prisma");
11
12
  const common_1 = require("@nestjs/common");
12
13
  const core_1 = require("@nestjs/core");
14
+ const security_module_1 = require("../security/security.module");
13
15
  const setting_module_1 = require("../setting/setting.module");
14
16
  const token_module_1 = require("../token/token.module");
15
17
  const user_module_1 = require("../user/user.module");
16
18
  const mcp_auth_guard_1 = require("./guards/mcp-auth.guard");
17
19
  const mcp_permission_guard_1 = require("./guards/mcp-permission.guard");
20
+ const mcp_api_key_controller_1 = require("./mcp-api-key.controller");
21
+ const mcp_api_key_service_1 = require("./mcp-api-key.service");
18
22
  const mcp_audit_service_1 = require("./mcp-audit.service");
19
23
  const mcp_registry_service_1 = require("./mcp-registry.service");
20
24
  const mcp_server_service_1 = require("./mcp-server.service");
@@ -29,17 +33,20 @@ exports.McpModule = McpModule = __decorate([
29
33
  imports: [
30
34
  core_1.DiscoveryModule,
31
35
  (0, common_1.forwardRef)(() => api_prisma_1.PrismaModule),
36
+ (0, common_1.forwardRef)(() => api_pagination_1.PaginationModule),
32
37
  (0, common_1.forwardRef)(() => token_module_1.TokenModule),
33
38
  (0, common_1.forwardRef)(() => setting_module_1.SettingModule),
34
39
  (0, common_1.forwardRef)(() => user_module_1.UserModule),
40
+ (0, common_1.forwardRef)(() => security_module_1.SecurityModule),
35
41
  ],
36
- controllers: [mcp_controller_1.McpController],
42
+ controllers: [mcp_controller_1.McpController, mcp_api_key_controller_1.McpApiKeyController],
37
43
  providers: [
38
44
  mcp_registry_service_1.McpRegistryService,
39
45
  mcp_server_service_1.McpServerService,
40
46
  mcp_audit_service_1.McpAuditService,
41
47
  mcp_auth_guard_1.McpAuthGuard,
42
48
  mcp_permission_guard_1.McpPermissionGuard,
49
+ mcp_api_key_service_1.McpApiKeyService,
43
50
  core_settings_mcp_tools_1.CoreSettingsMcpTools,
44
51
  core_users_mcp_tools_1.CoreUsersMcpTools,
45
52
  ],
@@ -1 +1 @@
1
- {"version":3,"file":"mcp.module.js","sourceRoot":"","sources":["../../src/mcp/mcp.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,oDAAmD;AACnD,2CAAoD;AACpD,uCAA+C;AAC/C,8DAA0D;AAC1D,wDAAoD;AACpD,qDAAiD;AACjD,4DAAuD;AACvD,wEAAmE;AACnE,2DAAsD;AACtD,iEAA4D;AAC5D,6DAAwD;AACxD,qDAAiD;AACjD,6EAAuE;AACvE,uEAAiE;AAsB1D,IAAM,SAAS,GAAf,MAAM,SAAS;CAAG,CAAA;AAAZ,8BAAS;oBAAT,SAAS;IApBrB,IAAA,eAAM,EAAC;QACN,OAAO,EAAE;YACP,sBAAe;YACf,IAAA,mBAAU,EAAC,GAAG,EAAE,CAAC,yBAAY,CAAC;YAC9B,IAAA,mBAAU,EAAC,GAAG,EAAE,CAAC,0BAAW,CAAC;YAC7B,IAAA,mBAAU,EAAC,GAAG,EAAE,CAAC,8BAAa,CAAC;YAC/B,IAAA,mBAAU,EAAC,GAAG,EAAE,CAAC,wBAAU,CAAC;SAC7B;QACD,WAAW,EAAE,CAAC,8BAAa,CAAC;QAC5B,SAAS,EAAE;YACT,yCAAkB;YAClB,qCAAgB;YAChB,mCAAe;YACf,6BAAY;YACZ,yCAAkB;YAClB,8CAAoB;YACpB,wCAAiB;SAClB;QACD,OAAO,EAAE,CAAC,yCAAkB,EAAE,qCAAgB,CAAC;KAChD,CAAC;GACW,SAAS,CAAG"}
1
+ {"version":3,"file":"mcp.module.js","sourceRoot":"","sources":["../../src/mcp/mcp.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,4DAA2D;AAC3D,oDAAmD;AACnD,2CAAoD;AACpD,uCAA+C;AAC/C,iEAA6D;AAC7D,8DAA0D;AAC1D,wDAAoD;AACpD,qDAAiD;AACjD,4DAAuD;AACvD,wEAAmE;AACnE,qEAA+D;AAC/D,+DAAyD;AACzD,2DAAsD;AACtD,iEAA4D;AAC5D,6DAAwD;AACxD,qDAAiD;AACjD,6EAAuE;AACvE,uEAAiE;AAyB1D,IAAM,SAAS,GAAf,MAAM,SAAS;CAAG,CAAA;AAAZ,8BAAS;oBAAT,SAAS;IAvBrB,IAAA,eAAM,EAAC;QACN,OAAO,EAAE;YACP,sBAAe;YACf,IAAA,mBAAU,EAAC,GAAG,EAAE,CAAC,yBAAY,CAAC;YAC9B,IAAA,mBAAU,EAAC,GAAG,EAAE,CAAC,iCAAgB,CAAC;YAClC,IAAA,mBAAU,EAAC,GAAG,EAAE,CAAC,0BAAW,CAAC;YAC7B,IAAA,mBAAU,EAAC,GAAG,EAAE,CAAC,8BAAa,CAAC;YAC/B,IAAA,mBAAU,EAAC,GAAG,EAAE,CAAC,wBAAU,CAAC;YAC5B,IAAA,mBAAU,EAAC,GAAG,EAAE,CAAC,gCAAc,CAAC;SACjC;QACD,WAAW,EAAE,CAAC,8BAAa,EAAE,4CAAmB,CAAC;QACjD,SAAS,EAAE;YACT,yCAAkB;YAClB,qCAAgB;YAChB,mCAAe;YACf,6BAAY;YACZ,yCAAkB;YAClB,sCAAgB;YAChB,8CAAoB;YACpB,wCAAiB;SAClB;QACD,OAAO,EAAE,CAAC,yCAAkB,EAAE,qCAAgB,CAAC;KAChD,CAAC;GACW,SAAS,CAAG"}
@@ -1,3 +1,4 @@
1
+ import { Response } from 'express';
1
2
  import { DeleteDTO } from '../dto/delete.dto';
2
3
  import { CreateConversationDTO } from './dto/create-conversation.dto';
3
4
  import { SendMessageDTO } from './dto/send-message.dto';
@@ -51,5 +52,8 @@ export declare class McpChatController {
51
52
  tool_name: string | null;
52
53
  tool_call_id: string | null;
53
54
  }[]>;
55
+ sendMessageStream({ id }: {
56
+ id: number;
57
+ }, conversationId: number, dto: SendMessageDTO, locale: string, res: Response): Promise<void>;
54
58
  }
55
59
  //# sourceMappingURL=mcp-chat.controller.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"mcp-chat.controller.d.ts","sourceRoot":"","sources":["../../src/mcp-chat/mcp-chat.controller.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AACtE,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEpD,qBAEa,iBAAiB;IAChB,OAAO,CAAC,QAAQ,CAAC,OAAO;gBAAP,OAAO,EAAE,cAAc;IAGpD,iBAAiB,CAAS,EAAE,EAAE,EAAE,EAAE;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE;;;;;;IAKhD,kBAAkB,CACR,EAAE,EAAE,EAAE,EAAE;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE,EACtB,GAAG,EAAE,qBAAqB;;;;;;;IAMpC,mBAAmB,CACT,EAAE,EAAE,EAAE,EAAE;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE,EACtB,GAAG,EAAE,SAAS;;;IAMxB,WAAW,CACD,EAAE,EAAE,EAAE,EAAE;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE,EACH,cAAc,EAAE,MAAM;;;;;;;;;;IAMnD,WAAW,CACD,EAAE,EAAE,EAAE,EAAE;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE,EACH,cAAc,EAAE,MAAM,EACzC,GAAG,EAAE,cAAc,EACjB,MAAM,EAAE,MAAM;;;;;;;;;;CAI3B"}
1
+ {"version":3,"file":"mcp-chat.controller.d.ts","sourceRoot":"","sources":["../../src/mcp-chat/mcp-chat.controller.ts"],"names":[],"mappings":"AAYA,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACnC,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AACtE,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEpD,qBAEa,iBAAiB;IAChB,OAAO,CAAC,QAAQ,CAAC,OAAO;gBAAP,OAAO,EAAE,cAAc;IAGpD,iBAAiB,CAAS,EAAE,EAAE,EAAE,EAAE;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE;;;;;;IAKhD,kBAAkB,CACR,EAAE,EAAE,EAAE,EAAE;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE,EACtB,GAAG,EAAE,qBAAqB;;;;;;;IAMpC,mBAAmB,CACT,EAAE,EAAE,EAAE,EAAE;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE,EACtB,GAAG,EAAE,SAAS;;;IAMxB,WAAW,CACD,EAAE,EAAE,EAAE,EAAE;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE,EACH,cAAc,EAAE,MAAM;;;;;;;;;;IAMnD,WAAW,CACD,EAAE,EAAE,EAAE,EAAE;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE,EACH,cAAc,EAAE,MAAM,EACzC,GAAG,EAAE,cAAc,EACjB,MAAM,EAAE,MAAM;;;;;;;;;;IAMpB,iBAAiB,CACb,EAAE,EAAE,EAAE,EAAE;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE,EACH,cAAc,EAAE,MAAM,EACzC,GAAG,EAAE,cAAc,EACjB,MAAM,EAAE,MAAM,EACjB,GAAG,EAAE,QAAQ;CA4CvB"}