@hed-hog/core 0.0.349 → 0.0.351

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 (350) hide show
  1. package/dist/access-log/access-log.controller.d.ts +16 -0
  2. package/dist/access-log/access-log.controller.d.ts.map +1 -0
  3. package/dist/access-log/access-log.controller.js +44 -0
  4. package/dist/access-log/access-log.controller.js.map +1 -0
  5. package/dist/access-log/access-log.interceptor.d.ts +9 -0
  6. package/dist/access-log/access-log.interceptor.d.ts.map +1 -0
  7. package/dist/access-log/access-log.interceptor.js +46 -0
  8. package/dist/access-log/access-log.interceptor.js.map +1 -0
  9. package/dist/access-log/access-log.module.d.ts +3 -0
  10. package/dist/access-log/access-log.module.d.ts.map +1 -0
  11. package/dist/access-log/access-log.module.js +29 -0
  12. package/dist/access-log/access-log.module.js.map +1 -0
  13. package/dist/access-log/access-log.service.d.ts +47 -0
  14. package/dist/access-log/access-log.service.d.ts.map +1 -0
  15. package/dist/access-log/access-log.service.js +113 -0
  16. package/dist/access-log/access-log.service.js.map +1 -0
  17. package/dist/access-log/dto/query-access-log.dto.d.ts +8 -0
  18. package/dist/access-log/dto/query-access-log.dto.d.ts.map +1 -0
  19. package/dist/access-log/dto/query-access-log.dto.js +42 -0
  20. package/dist/access-log/dto/query-access-log.dto.js.map +1 -0
  21. package/dist/auth/auth.controller.d.ts +12 -12
  22. package/dist/auth/auth.service.d.ts +27 -27
  23. package/dist/auth/auth.service.d.ts.map +1 -1
  24. package/dist/auth/auth.service.js +0 -4
  25. package/dist/auth/auth.service.js.map +1 -1
  26. package/dist/challenge/challenge.service.d.ts +2 -2
  27. package/dist/challenge/challenge.service.d.ts.map +1 -1
  28. package/dist/challenge/challenge.service.js +0 -1
  29. package/dist/challenge/challenge.service.js.map +1 -1
  30. package/dist/core/system.module.d.ts.map +1 -1
  31. package/dist/core/system.module.js +1 -0
  32. package/dist/core/system.module.js.map +1 -1
  33. package/dist/core.module.d.ts.map +1 -1
  34. package/dist/core.module.js +15 -0
  35. package/dist/core.module.js.map +1 -1
  36. package/dist/dashboard/dashboard-user/dashboard-user.controller.d.ts +3 -3
  37. package/dist/dashboard/dashboard-user/dashboard-user.service.d.ts +3 -3
  38. package/dist/dashboard/dashboard.module.d.ts.map +1 -1
  39. package/dist/dashboard/dashboard.module.js +4 -1
  40. package/dist/dashboard/dashboard.module.js.map +1 -1
  41. package/dist/file/file.controller.js +0 -1
  42. package/dist/file/file.controller.js.map +1 -1
  43. package/dist/file/file.service.d.ts +65 -0
  44. package/dist/file/file.service.d.ts.map +1 -1
  45. package/dist/file/file.service.js +151 -3
  46. package/dist/file/file.service.js.map +1 -1
  47. package/dist/file/provider/abstract.provider.d.ts +8 -0
  48. package/dist/file/provider/abstract.provider.d.ts.map +1 -1
  49. package/dist/file/provider/abstract.provider.js.map +1 -1
  50. package/dist/file/provider/azure.provider.d.ts +4 -0
  51. package/dist/file/provider/azure.provider.d.ts.map +1 -1
  52. package/dist/file/provider/azure.provider.js +14 -0
  53. package/dist/file/provider/azure.provider.js.map +1 -1
  54. package/dist/file/provider/gcs.provider.d.ts +4 -0
  55. package/dist/file/provider/gcs.provider.d.ts.map +1 -1
  56. package/dist/file/provider/gcs.provider.js +14 -0
  57. package/dist/file/provider/gcs.provider.js.map +1 -1
  58. package/dist/file/provider/local.provider.d.ts +4 -0
  59. package/dist/file/provider/local.provider.d.ts.map +1 -1
  60. package/dist/file/provider/local.provider.js +19 -0
  61. package/dist/file/provider/local.provider.js.map +1 -1
  62. package/dist/file/provider/provider.factory.d.ts.map +1 -1
  63. package/dist/file/provider/provider.factory.js +3 -0
  64. package/dist/file/provider/provider.factory.js.map +1 -1
  65. package/dist/file/provider/s3.provider.d.ts +4 -0
  66. package/dist/file/provider/s3.provider.d.ts.map +1 -1
  67. package/dist/file/provider/s3.provider.js +17 -0
  68. package/dist/file/provider/s3.provider.js.map +1 -1
  69. package/dist/index.d.ts +3 -0
  70. package/dist/index.d.ts.map +1 -1
  71. package/dist/index.js +4 -0
  72. package/dist/index.js.map +1 -1
  73. package/dist/mcp/guards/mcp-auth.guard.d.ts +6 -1
  74. package/dist/mcp/guards/mcp-auth.guard.d.ts.map +1 -1
  75. package/dist/mcp/guards/mcp-auth.guard.js +29 -2
  76. package/dist/mcp/guards/mcp-auth.guard.js.map +1 -1
  77. package/dist/mcp/mcp-api-key.controller.d.ts +32 -0
  78. package/dist/mcp/mcp-api-key.controller.d.ts.map +1 -0
  79. package/dist/mcp/mcp-api-key.controller.js +64 -0
  80. package/dist/mcp/mcp-api-key.controller.js.map +1 -0
  81. package/dist/mcp/mcp-api-key.service.d.ts +27 -0
  82. package/dist/mcp/mcp-api-key.service.d.ts.map +1 -0
  83. package/dist/mcp/mcp-api-key.service.js +74 -0
  84. package/dist/mcp/mcp-api-key.service.js.map +1 -0
  85. package/dist/mcp/mcp-audit.service.d.ts +3 -1
  86. package/dist/mcp/mcp-audit.service.d.ts.map +1 -1
  87. package/dist/mcp/mcp-audit.service.js +14 -2
  88. package/dist/mcp/mcp-audit.service.js.map +1 -1
  89. package/dist/mcp/mcp-registry.service.d.ts +1 -2
  90. package/dist/mcp/mcp-registry.service.d.ts.map +1 -1
  91. package/dist/mcp/mcp-registry.service.js +6 -2
  92. package/dist/mcp/mcp-registry.service.js.map +1 -1
  93. package/dist/mcp/mcp.controller.d.ts +3 -1
  94. package/dist/mcp/mcp.controller.d.ts.map +1 -1
  95. package/dist/mcp/mcp.controller.js +10 -2
  96. package/dist/mcp/mcp.controller.js.map +1 -1
  97. package/dist/mcp/mcp.module.d.ts.map +1 -1
  98. package/dist/mcp/mcp.module.js +80 -1
  99. package/dist/mcp/mcp.module.js.map +1 -1
  100. package/dist/mcp/tools/core-ai.mcp-tools.d.ts +45 -0
  101. package/dist/mcp/tools/core-ai.mcp-tools.d.ts.map +1 -0
  102. package/dist/mcp/tools/core-ai.mcp-tools.js +214 -0
  103. package/dist/mcp/tools/core-ai.mcp-tools.js.map +1 -0
  104. package/dist/mcp/tools/core-dashboard-items.mcp-tools.d.ts +21 -0
  105. package/dist/mcp/tools/core-dashboard-items.mcp-tools.d.ts.map +1 -0
  106. package/dist/mcp/tools/core-dashboard-items.mcp-tools.js +89 -0
  107. package/dist/mcp/tools/core-dashboard-items.mcp-tools.js.map +1 -0
  108. package/dist/mcp/tools/core-dashboard.mcp-tools.d.ts +29 -0
  109. package/dist/mcp/tools/core-dashboard.mcp-tools.d.ts.map +1 -0
  110. package/dist/mcp/tools/core-dashboard.mcp-tools.js +149 -0
  111. package/dist/mcp/tools/core-dashboard.mcp-tools.js.map +1 -0
  112. package/dist/mcp/tools/core-event-webhooks.mcp-tools.d.ts +30 -0
  113. package/dist/mcp/tools/core-event-webhooks.mcp-tools.d.ts.map +1 -0
  114. package/dist/mcp/tools/core-event-webhooks.mcp-tools.js +185 -0
  115. package/dist/mcp/tools/core-event-webhooks.mcp-tools.js.map +1 -0
  116. package/dist/mcp/tools/core-files.mcp-tools.d.ts +26 -0
  117. package/dist/mcp/tools/core-files.mcp-tools.d.ts.map +1 -0
  118. package/dist/mcp/tools/core-files.mcp-tools.js +140 -0
  119. package/dist/mcp/tools/core-files.mcp-tools.js.map +1 -0
  120. package/dist/mcp/tools/core-integration-events.mcp-tools.d.ts +26 -0
  121. package/dist/mcp/tools/core-integration-events.mcp-tools.d.ts.map +1 -0
  122. package/dist/mcp/tools/core-integration-events.mcp-tools.js +168 -0
  123. package/dist/mcp/tools/core-integration-events.mcp-tools.js.map +1 -0
  124. package/dist/mcp/tools/core-mail-profile.mcp-tools.d.ts +32 -0
  125. package/dist/mcp/tools/core-mail-profile.mcp-tools.d.ts.map +1 -0
  126. package/dist/mcp/tools/core-mail-profile.mcp-tools.js +178 -0
  127. package/dist/mcp/tools/core-mail-profile.mcp-tools.js.map +1 -0
  128. package/dist/mcp/tools/core-mail-sent.mcp-tools.d.ts +14 -0
  129. package/dist/mcp/tools/core-mail-sent.mcp-tools.d.ts.map +1 -0
  130. package/dist/mcp/tools/core-mail-sent.mcp-tools.js +106 -0
  131. package/dist/mcp/tools/core-mail-sent.mcp-tools.js.map +1 -0
  132. package/dist/mcp/tools/core-mail.mcp-tools.d.ts +36 -0
  133. package/dist/mcp/tools/core-mail.mcp-tools.d.ts.map +1 -0
  134. package/dist/mcp/tools/core-mail.mcp-tools.js +184 -0
  135. package/dist/mcp/tools/core-mail.mcp-tools.js.map +1 -0
  136. package/dist/mcp/tools/core-mcp-chat.mcp-tools.d.ts +21 -0
  137. package/dist/mcp/tools/core-mcp-chat.mcp-tools.d.ts.map +1 -0
  138. package/dist/mcp/tools/core-mcp-chat.mcp-tools.js +118 -0
  139. package/dist/mcp/tools/core-mcp-chat.mcp-tools.js.map +1 -0
  140. package/dist/mcp/tools/core-menus.mcp-tools.d.ts +40 -0
  141. package/dist/mcp/tools/core-menus.mcp-tools.d.ts.map +1 -0
  142. package/dist/mcp/tools/core-menus.mcp-tools.js +268 -0
  143. package/dist/mcp/tools/core-menus.mcp-tools.js.map +1 -0
  144. package/dist/mcp/tools/core-notifications.mcp-tools.d.ts +31 -0
  145. package/dist/mcp/tools/core-notifications.mcp-tools.d.ts.map +1 -0
  146. package/dist/mcp/tools/core-notifications.mcp-tools.js +178 -0
  147. package/dist/mcp/tools/core-notifications.mcp-tools.js.map +1 -0
  148. package/dist/mcp/tools/core-profile.mcp-tools.d.ts +20 -0
  149. package/dist/mcp/tools/core-profile.mcp-tools.d.ts.map +1 -0
  150. package/dist/mcp/tools/core-profile.mcp-tools.js +111 -0
  151. package/dist/mcp/tools/core-profile.mcp-tools.js.map +1 -0
  152. package/dist/mcp/tools/core-roles.mcp-tools.d.ts +70 -0
  153. package/dist/mcp/tools/core-roles.mcp-tools.d.ts.map +1 -0
  154. package/dist/mcp/tools/core-roles.mcp-tools.js +355 -0
  155. package/dist/mcp/tools/core-roles.mcp-tools.js.map +1 -0
  156. package/dist/mcp/tools/core-routes.mcp-tools.d.ts +52 -0
  157. package/dist/mcp/tools/core-routes.mcp-tools.d.ts.map +1 -0
  158. package/dist/mcp/tools/core-routes.mcp-tools.js +254 -0
  159. package/dist/mcp/tools/core-routes.mcp-tools.js.map +1 -0
  160. package/dist/mcp/tools/core-screens.mcp-tools.d.ts +47 -0
  161. package/dist/mcp/tools/core-screens.mcp-tools.d.ts.map +1 -0
  162. package/dist/mcp/tools/core-screens.mcp-tools.js +250 -0
  163. package/dist/mcp/tools/core-screens.mcp-tools.js.map +1 -0
  164. package/dist/mcp/tools/core-sessions.mcp-tools.d.ts +20 -0
  165. package/dist/mcp/tools/core-sessions.mcp-tools.d.ts.map +1 -0
  166. package/dist/mcp/tools/core-sessions.mcp-tools.js +128 -0
  167. package/dist/mcp/tools/core-sessions.mcp-tools.js.map +1 -0
  168. package/dist/mcp/tools/core-settings.mcp-tools.d.ts +25 -0
  169. package/dist/mcp/tools/core-settings.mcp-tools.d.ts.map +1 -1
  170. package/dist/mcp/tools/core-settings.mcp-tools.js +138 -0
  171. package/dist/mcp/tools/core-settings.mcp-tools.js.map +1 -1
  172. package/dist/mcp/tools/core-system.mcp-tools.d.ts +8 -0
  173. package/dist/mcp/tools/core-system.mcp-tools.d.ts.map +1 -0
  174. package/dist/mcp/tools/core-system.mcp-tools.js +40 -0
  175. package/dist/mcp/tools/core-system.mcp-tools.js.map +1 -0
  176. package/dist/mcp/tools/core-webhooks.mcp-tools.d.ts +46 -0
  177. package/dist/mcp/tools/core-webhooks.mcp-tools.d.ts.map +1 -0
  178. package/dist/mcp/tools/core-webhooks.mcp-tools.js +266 -0
  179. package/dist/mcp/tools/core-webhooks.mcp-tools.js.map +1 -0
  180. package/dist/mcp-chat/mcp-chat.controller.d.ts +5 -1
  181. package/dist/mcp-chat/mcp-chat.controller.d.ts.map +1 -1
  182. package/dist/mcp-chat/mcp-chat.controller.js +46 -0
  183. package/dist/mcp-chat/mcp-chat.controller.js.map +1 -1
  184. package/dist/mcp-chat/mcp-chat.service.d.ts +31 -3
  185. package/dist/mcp-chat/mcp-chat.service.d.ts.map +1 -1
  186. package/dist/mcp-chat/mcp-chat.service.js +776 -38
  187. package/dist/mcp-chat/mcp-chat.service.js.map +1 -1
  188. package/dist/notification/dto/create-notification.dto.d.ts +26 -0
  189. package/dist/notification/dto/create-notification.dto.d.ts.map +1 -0
  190. package/dist/notification/dto/create-notification.dto.js +86 -0
  191. package/dist/notification/dto/create-notification.dto.js.map +1 -0
  192. package/dist/notification/dto/update-progress.dto.d.ts +6 -0
  193. package/dist/notification/dto/update-progress.dto.d.ts.map +1 -0
  194. package/dist/notification/dto/update-progress.dto.js +33 -0
  195. package/dist/notification/dto/update-progress.dto.js.map +1 -0
  196. package/dist/notification/notification.controller.d.ts +112 -0
  197. package/dist/notification/notification.controller.d.ts.map +1 -0
  198. package/dist/notification/notification.controller.js +130 -0
  199. package/dist/notification/notification.controller.js.map +1 -0
  200. package/dist/notification/notification.module.d.ts +3 -0
  201. package/dist/notification/notification.module.d.ts.map +1 -0
  202. package/dist/notification/notification.module.js +29 -0
  203. package/dist/notification/notification.module.js.map +1 -0
  204. package/dist/notification/notification.service.d.ts +112 -0
  205. package/dist/notification/notification.service.d.ts.map +1 -0
  206. package/dist/notification/notification.service.js +269 -0
  207. package/dist/notification/notification.service.js.map +1 -0
  208. package/dist/pdf/pdf.service.js +1 -1
  209. package/dist/pdf/pdf.service.js.map +1 -1
  210. package/dist/profile/profile.controller.d.ts +4 -4
  211. package/dist/profile/profile.controller.js +0 -1
  212. package/dist/profile/profile.controller.js.map +1 -1
  213. package/dist/profile/profile.module.d.ts.map +1 -1
  214. package/dist/profile/profile.module.js +1 -0
  215. package/dist/profile/profile.module.js.map +1 -1
  216. package/dist/profile/profile.service.d.ts +4 -4
  217. package/dist/session/session.controller.d.ts +3 -3
  218. package/dist/session/session.service.d.ts +9 -9
  219. package/dist/setting/dto/update-setting-list.dto.d.ts +9 -0
  220. package/dist/setting/dto/update-setting-list.dto.d.ts.map +1 -0
  221. package/dist/setting/dto/update-setting-list.dto.js +44 -0
  222. package/dist/setting/dto/update-setting-list.dto.js.map +1 -0
  223. package/dist/setting/setting.controller.d.ts +20 -1
  224. package/dist/setting/setting.controller.d.ts.map +1 -1
  225. package/dist/setting/setting.controller.js +12 -0
  226. package/dist/setting/setting.controller.js.map +1 -1
  227. package/dist/setting/setting.service.d.ts +20 -1
  228. package/dist/setting/setting.service.d.ts.map +1 -1
  229. package/dist/setting/setting.service.js +80 -4
  230. package/dist/setting/setting.service.js.map +1 -1
  231. package/dist/task/task.service.d.ts +13 -0
  232. package/dist/task/task.service.d.ts.map +1 -1
  233. package/dist/task/task.service.js +85 -0
  234. package/dist/task/task.service.js.map +1 -1
  235. package/dist/token/token.service.d.ts.map +1 -1
  236. package/dist/token/token.service.js +0 -1
  237. package/dist/token/token.service.js.map +1 -1
  238. package/dist/user/user.controller.d.ts +11 -11
  239. package/dist/user/user.service.d.ts +27 -27
  240. package/dist/webhook-integration/dto/webhook-action.dto.d.ts +22 -0
  241. package/dist/webhook-integration/dto/webhook-action.dto.d.ts.map +1 -0
  242. package/dist/webhook-integration/dto/webhook-action.dto.js +120 -0
  243. package/dist/webhook-integration/dto/webhook-action.dto.js.map +1 -0
  244. package/dist/webhook-integration/webhook-integration.controller.d.ts +7 -5
  245. package/dist/webhook-integration/webhook-integration.controller.d.ts.map +1 -1
  246. package/dist/webhook-integration/webhook-integration.controller.js +18 -5
  247. package/dist/webhook-integration/webhook-integration.controller.js.map +1 -1
  248. package/dist/webhook-integration/webhook-integration.service.d.ts +18 -5
  249. package/dist/webhook-integration/webhook-integration.service.d.ts.map +1 -1
  250. package/dist/webhook-integration/webhook-integration.service.js +342 -59
  251. package/dist/webhook-integration/webhook-integration.service.js.map +1 -1
  252. package/dist/webhook-integration/webhook-utils.d.ts +1 -0
  253. package/dist/webhook-integration/webhook-utils.d.ts.map +1 -1
  254. package/dist/webhook-integration/webhook-utils.js +38 -0
  255. package/dist/webhook-integration/webhook-utils.js.map +1 -1
  256. package/hedhog/data/menu.yaml +63 -4
  257. package/hedhog/data/route.yaml +1437 -0
  258. package/hedhog/data/setting_group.yaml +112 -0
  259. package/hedhog/data/setting_subgroup.yaml +32 -0
  260. package/hedhog/frontend/app/access-log/page.tsx.ejs +772 -0
  261. package/hedhog/frontend/app/account/components/mcp-tokens.tsx.ejs +285 -0
  262. package/hedhog/frontend/app/account/layout.tsx.ejs +32 -55
  263. package/hedhog/frontend/app/account/mcp-tokens/page.tsx.ejs +5 -0
  264. package/hedhog/frontend/app/ai_agent/page.tsx.ejs +10 -3
  265. package/hedhog/frontend/app/dashboard/dashboard-home-tabs.tsx.ejs +33 -13
  266. package/hedhog/frontend/app/dashboard/management/tabs/components-tab.tsx.ejs +12 -5
  267. package/hedhog/frontend/app/dashboard/management/tabs/dashboards-tab.tsx.ejs +12 -5
  268. package/hedhog/frontend/app/integrations-webhooks/page.tsx.ejs +3559 -1835
  269. package/hedhog/frontend/app/mcp_chat/chat-components.tsx.ejs +633 -0
  270. package/hedhog/frontend/app/mcp_chat/chat-types.ts.ejs +16 -0
  271. package/hedhog/frontend/app/mcp_chat/page.tsx.ejs +583 -384
  272. package/hedhog/frontend/app/menu/page.tsx.ejs +9 -3
  273. package/hedhog/frontend/app/roles/page.tsx.ejs +18 -6
  274. package/hedhog/frontend/app/routes/page.tsx.ejs +9 -3
  275. package/hedhog/frontend/app/setting-list/page.tsx.ejs +822 -0
  276. package/hedhog/frontend/app/users/page.tsx.ejs +445 -203
  277. package/hedhog/frontend/app/users/user-access-sheet.tsx.ejs +310 -304
  278. package/hedhog/frontend/app/users/user-sheet.tsx.ejs +41 -44
  279. package/hedhog/frontend/messages/en.json +343 -3
  280. package/hedhog/frontend/messages/pt.json +343 -3
  281. package/hedhog/table/access_log.yaml +31 -0
  282. package/hedhog/table/mcp_api_key.yaml +30 -0
  283. package/hedhog/table/notification.yaml +72 -0
  284. package/hedhog/table/webhook_action_log.yaml +49 -0
  285. package/package.json +5 -4
  286. package/src/access-log/access-log.controller.ts +29 -0
  287. package/src/access-log/access-log.interceptor.ts +38 -0
  288. package/src/access-log/access-log.module.ts +16 -0
  289. package/src/access-log/access-log.service.ts +129 -0
  290. package/src/access-log/dto/query-access-log.dto.ts +23 -0
  291. package/src/auth/auth.service.ts +0 -7
  292. package/src/challenge/challenge.service.ts +0 -2
  293. package/src/core/system.module.ts +1 -0
  294. package/src/core.module.ts +15 -0
  295. package/src/dashboard/dashboard.module.ts +4 -1
  296. package/src/file/file.controller.ts +14 -14
  297. package/src/file/file.service.ts +198 -4
  298. package/src/file/provider/abstract.provider.ts +10 -0
  299. package/src/file/provider/azure.provider.ts +24 -0
  300. package/src/file/provider/gcs.provider.ts +20 -0
  301. package/src/file/provider/local.provider.ts +30 -2
  302. package/src/file/provider/provider.factory.ts +3 -0
  303. package/src/file/provider/s3.provider.ts +22 -0
  304. package/src/index.ts +5 -0
  305. package/src/mcp/guards/mcp-auth.guard.ts +64 -32
  306. package/src/mcp/mcp-api-key.controller.ts +42 -0
  307. package/src/mcp/mcp-api-key.service.ts +66 -0
  308. package/src/mcp/mcp-audit.service.ts +47 -36
  309. package/src/mcp/mcp-registry.service.ts +75 -69
  310. package/src/mcp/mcp.controller.ts +40 -30
  311. package/src/mcp/mcp.module.ts +115 -36
  312. package/src/mcp/tools/core-ai.mcp-tools.ts +156 -0
  313. package/src/mcp/tools/core-dashboard-items.mcp-tools.ts +63 -0
  314. package/src/mcp/tools/core-dashboard.mcp-tools.ts +103 -0
  315. package/src/mcp/tools/core-event-webhooks.mcp-tools.ts +134 -0
  316. package/src/mcp/tools/core-files.mcp-tools.ts +105 -0
  317. package/src/mcp/tools/core-integration-events.mcp-tools.ts +118 -0
  318. package/src/mcp/tools/core-mail-profile.mcp-tools.ts +128 -0
  319. package/src/mcp/tools/core-mail-sent.mcp-tools.ts +76 -0
  320. package/src/mcp/tools/core-mail.mcp-tools.ts +130 -0
  321. package/src/mcp/tools/core-mcp-chat.mcp-tools.ts +81 -0
  322. package/src/mcp/tools/core-menus.mcp-tools.ts +197 -0
  323. package/src/mcp/tools/core-notifications.mcp-tools.ts +128 -0
  324. package/src/mcp/tools/core-profile.mcp-tools.ts +74 -0
  325. package/src/mcp/tools/core-roles.mcp-tools.ts +288 -0
  326. package/src/mcp/tools/core-routes.mcp-tools.ts +196 -0
  327. package/src/mcp/tools/core-screens.mcp-tools.ts +186 -0
  328. package/src/mcp/tools/core-sessions.mcp-tools.ts +97 -0
  329. package/src/mcp/tools/core-settings.mcp-tools.ts +171 -53
  330. package/src/mcp/tools/core-system.mcp-tools.ts +19 -0
  331. package/src/mcp/tools/core-webhooks.mcp-tools.ts +199 -0
  332. package/src/mcp-chat/mcp-chat.controller.ts +113 -60
  333. package/src/mcp-chat/mcp-chat.service.ts +1343 -332
  334. package/src/notification/dto/create-notification.dto.ts +71 -0
  335. package/src/notification/dto/update-progress.dto.ts +16 -0
  336. package/src/notification/notification.controller.ts +83 -0
  337. package/src/notification/notification.module.ts +16 -0
  338. package/src/notification/notification.service.ts +324 -0
  339. package/src/pdf/pdf.service.ts +1 -1
  340. package/src/profile/profile.controller.ts +1 -1
  341. package/src/profile/profile.module.ts +1 -0
  342. package/src/setting/dto/update-setting-list.dto.ts +32 -0
  343. package/src/setting/setting.controller.ts +9 -0
  344. package/src/setting/setting.service.ts +99 -11
  345. package/src/task/task.service.ts +103 -0
  346. package/src/token/token.service.ts +0 -2
  347. package/src/webhook-integration/dto/webhook-action.dto.ts +96 -0
  348. package/src/webhook-integration/webhook-integration.controller.ts +124 -103
  349. package/src/webhook-integration/webhook-integration.service.ts +1137 -735
  350. package/src/webhook-integration/webhook-utils.ts +136 -79
@@ -3,18 +3,19 @@ import { getLocaleText, LocaleService } from '@hed-hog/api-locale';
3
3
  import { PaginationDTO, PaginationService } from '@hed-hog/api-pagination';
4
4
  import { PrismaService, setting_type_0f055cd5ea_enum } from '@hed-hog/api-prisma';
5
5
  import {
6
- BadRequestException,
7
- forwardRef,
8
- Inject,
9
- Injectable,
10
- Logger,
11
- NotFoundException
6
+ BadRequestException,
7
+ forwardRef,
8
+ Inject,
9
+ Injectable,
10
+ Logger,
11
+ NotFoundException
12
12
  } from '@nestjs/common';
13
13
  import * as pako from 'pako';
14
14
  import { IntegrationDeveloperApiService } from '../integration/services/integration-developer-api.service';
15
15
  import { CreateDTO } from './dto/create.dto';
16
16
  import { DeleteDTO } from './dto/delete.dto';
17
17
  import { SettingDTO } from './dto/setting.dto';
18
+ import { UpdateSettingListDTO } from './dto/update-setting-list.dto';
18
19
  import { UpdateDTO } from './dto/update.dto';
19
20
 
20
21
  type SettingChangeEventInput = {
@@ -207,6 +208,7 @@ export class SettingService {
207
208
  'mfa-email-code-length',
208
209
  'ai-openai-api-key-enabled',
209
210
  'ai-gemini-api-key-enabled',
211
+ 'mcp-enabled',
210
212
  'date-format',
211
213
  'time-format',
212
214
  'timezone',
@@ -497,6 +499,21 @@ export class SettingService {
497
499
  },
498
500
  },
499
501
  },
502
+ setting_subgroup: {
503
+ include: {
504
+ setting_subgroup_locale: {
505
+ where: {
506
+ locale: {
507
+ code: locale,
508
+ },
509
+ },
510
+ select: {
511
+ name: true,
512
+ description: true,
513
+ },
514
+ },
515
+ },
516
+ },
500
517
  setting_locale: {
501
518
  where: {
502
519
  locale: {
@@ -508,6 +525,16 @@ export class SettingService {
508
525
  description: true,
509
526
  },
510
527
  },
528
+ setting_list: {
529
+ select: {
530
+ id: true,
531
+ order: true,
532
+ value: true,
533
+ },
534
+ orderBy: {
535
+ order: 'asc',
536
+ },
537
+ },
511
538
  },
512
539
  },
513
540
  'setting_locale',
@@ -518,12 +545,77 @@ export class SettingService {
518
545
  'setting_group_locale',
519
546
  setting.setting_group,
520
547
  );
548
+
549
+ if (setting.setting_subgroup) {
550
+ setting.setting_subgroup = itemTranslations(
551
+ 'setting_subgroup_locale',
552
+ setting.setting_subgroup,
553
+ );
554
+ }
555
+
556
+ setting.subgroupId ??=
557
+ setting.subgroup_id ?? setting.setting_subgroup?.id ?? null;
558
+
521
559
  return setting;
522
560
  });
523
561
 
524
562
  return result;
525
563
  }
526
564
 
565
+ async updateSettingListOptions(settingId: number, data: UpdateSettingListDTO) {
566
+ this.clearCache();
567
+
568
+ const setting = await this.prismaService.setting.findUnique({
569
+ where: { id: settingId },
570
+ select: {
571
+ id: true,
572
+ component: true,
573
+ },
574
+ });
575
+
576
+ if (!setting) {
577
+ throw new NotFoundException(`Setting with ID ${settingId} not found.`);
578
+ }
579
+
580
+ const component = String(setting.component ?? '').toLowerCase();
581
+ if (component !== 'combobox' && component !== 'checkbox') {
582
+ throw new BadRequestException(
583
+ 'Only combobox and checkbox settings support list options.',
584
+ );
585
+ }
586
+
587
+ const options = (data.options ?? [])
588
+ .map((option, index) => ({
589
+ value: option.value?.trim() ?? '',
590
+ order: option.order ?? index + 1,
591
+ }))
592
+ .filter((option) => option.value.length > 0);
593
+
594
+ const updatedSetting = await this.prismaService.setting.update({
595
+ where: { id: settingId },
596
+ data: {
597
+ setting_list: {
598
+ deleteMany: {},
599
+ create: options,
600
+ },
601
+ },
602
+ include: {
603
+ setting_list: {
604
+ select: {
605
+ id: true,
606
+ order: true,
607
+ value: true,
608
+ },
609
+ orderBy: {
610
+ order: 'asc',
611
+ },
612
+ },
613
+ },
614
+ });
615
+
616
+ return updatedSetting;
617
+ }
618
+
527
619
  async get(settingId: number) {
528
620
  const setting = await this.prismaService.setting.findUnique({
529
621
  where: { id: settingId },
@@ -883,8 +975,6 @@ export class SettingService {
883
975
  this.cachedSettings &&
884
976
  slugs.every(s => Object.prototype.hasOwnProperty.call(this.cachedSettings, s))
885
977
  ) {
886
- this.logger.debug('Returning settings from cache');
887
-
888
978
  // Retorna apenas os slugs requisitados do cache
889
979
  const cached: Record<string, any> = {};
890
980
  slugs.forEach(s => {
@@ -893,7 +983,7 @@ export class SettingService {
893
983
  return cached;
894
984
  }
895
985
 
896
- this.logger.debug('Fetching settings from database');
986
+
897
987
 
898
988
  slug = Array.isArray(slug) ? slug : [slug];
899
989
 
@@ -973,7 +1063,6 @@ export class SettingService {
973
1063
  }
974
1064
 
975
1065
  setCache(value: Record<string, any>) {
976
- this.logger.debug(`Setting settings cache with ${Object.keys(value).length} items`);
977
1066
  Object.keys(value).forEach(key => {
978
1067
  this.cachedSettings[key] = value[key];
979
1068
  });
@@ -981,7 +1070,6 @@ export class SettingService {
981
1070
  }
982
1071
 
983
1072
  clearCache() {
984
- this.logger.debug('Clearing settings cache');
985
1073
  this.cachedSettings = {};
986
1074
  }
987
1075
 
@@ -36,6 +36,15 @@ export class TasksService {
36
36
  await this.clearUnverifiedMfaWithExpiredChallenges();
37
37
  this.logger.verbose('++++++++++++++++++++++++++++++++++');
38
38
 
39
+ await this.clearExpiredWebhookLogs();
40
+ this.logger.verbose('++++++++++++++++++++++++++++++++++');
41
+
42
+ await this.clearOldNotifications();
43
+ this.logger.verbose('++++++++++++++++++++++++++++++++++');
44
+
45
+ await this.clearOldAccessLogs();
46
+ this.logger.verbose('++++++++++++++++++++++++++++++++++');
47
+
39
48
  this.logger.verbose('Finished scheduled cleanup tasks');
40
49
  this.logger.verbose('++++++++++++++++++++++++++++++++++');
41
50
  }
@@ -225,4 +234,98 @@ export class TasksService {
225
234
  `Unverified MFA with expired challenges cleaned up in ${Date.now() - startAt}ms`,
226
235
  );
227
236
  }
237
+
238
+ /**
239
+ * Limpa logs antigos de execução de webhooks de entrada com base na política
240
+ * de retenção configurada em settings.
241
+ *
242
+ * Remove registros da tabela webhook_call_log que:
243
+ * - Foram criados há mais dias do que o valor de webhook-log-retention-days
244
+ *
245
+ * Os registros relacionados em webhook_action_log são removidos em cascata
246
+ * pelo relacionamento FK com onDelete CASCADE.
247
+ */
248
+ private async clearExpiredWebhookLogs(): Promise<void> {
249
+ const settings = await this.settingService.getSettingValues([
250
+ 'cleanup-batch-limit',
251
+ 'webhook-log-retention-days',
252
+ ]);
253
+ const batchLimit = Number(settings['cleanup-batch-limit']) || 20000;
254
+ const retentionDays = Number(settings['webhook-log-retention-days']) || 30;
255
+ this.logger.verbose('Starting cleanup of expired webhook call logs');
256
+ const startAt = Date.now();
257
+
258
+ await this.prismaService.$executeRaw`
259
+ WITH del AS (
260
+ SELECT id
261
+ FROM webhook_call_log
262
+ WHERE created_at < (now() - ${Prisma.sql`INTERVAL '${Prisma.raw(String(retentionDays))} days'`})
263
+ ORDER BY id
264
+ LIMIT ${batchLimit}
265
+ )
266
+ DELETE FROM webhook_call_log wcl
267
+ USING del
268
+ WHERE wcl.id = del.id
269
+ `;
270
+
271
+ this.logger.verbose(
272
+ `Expired webhook call logs cleaned up in ${Date.now() - startAt}ms`,
273
+ );
274
+ }
275
+
276
+ private async clearOldAccessLogs(): Promise<void> {
277
+ const settings = await this.settingService.getSettingValues([
278
+ 'cleanup-batch-limit',
279
+ 'access-log-retention-days',
280
+ ]);
281
+ const batchLimit = Number(settings['cleanup-batch-limit']) || 20000;
282
+ const retentionDays = Number(settings['access-log-retention-days']) || 30;
283
+ this.logger.verbose('Starting cleanup of old access logs');
284
+ const startAt = Date.now();
285
+
286
+ await this.prismaService.$executeRaw`
287
+ WITH del AS (
288
+ SELECT id
289
+ FROM access_log
290
+ WHERE created_at < (now() - ${Prisma.sql`INTERVAL '${Prisma.raw(String(retentionDays))} days'`})
291
+ ORDER BY id
292
+ LIMIT ${batchLimit}
293
+ )
294
+ DELETE FROM access_log al
295
+ USING del
296
+ WHERE al.id = del.id
297
+ `;
298
+
299
+ this.logger.verbose(
300
+ `Old access logs cleaned up in ${Date.now() - startAt}ms`,
301
+ );
302
+ }
303
+
304
+ private async clearOldNotifications(): Promise<void> {
305
+ const settings = await this.settingService.getSettingValues([
306
+ 'cleanup-batch-limit',
307
+ 'notification-retention-days',
308
+ ]);
309
+ const batchLimit = Number(settings['cleanup-batch-limit']) || 20000;
310
+ const retentionDays = Number(settings['notification-retention-days']) || 30;
311
+ this.logger.verbose('Starting cleanup of old notifications');
312
+ const startAt = Date.now();
313
+
314
+ await this.prismaService.$executeRaw`
315
+ WITH del AS (
316
+ SELECT id
317
+ FROM notification
318
+ WHERE created_at < (now() - ${Prisma.sql`INTERVAL '${Prisma.raw(String(retentionDays))} days'`})
319
+ ORDER BY id
320
+ LIMIT ${batchLimit}
321
+ )
322
+ DELETE FROM notification n
323
+ USING del
324
+ WHERE n.id = del.id
325
+ `;
326
+
327
+ this.logger.verbose(
328
+ `Old notifications cleaned up in ${Date.now() - startAt}ms`,
329
+ );
330
+ }
228
331
  }
@@ -51,8 +51,6 @@ export class TokenService {
51
51
  return payload;
52
52
  } catch (error) {
53
53
 
54
- console.log('JWT ERROR', error);
55
-
56
54
  // Return 401 for JWT errors (expired, invalid, etc.)
57
55
  throw new UnauthorizedException(
58
56
  (error as any).message || getLocaleText('accessDenied', locale, 'Access denied.')
@@ -0,0 +1,96 @@
1
+ import { Transform } from 'class-transformer';
2
+ import { PartialType } from '@nestjs/mapped-types';
3
+ import { IsIn, IsInt, IsOptional, IsString } from 'class-validator';
4
+
5
+ const toNullableInteger = ({ value }: { value: unknown }) => {
6
+ if (value === undefined || value === null || value === '') {
7
+ return undefined;
8
+ }
9
+
10
+ return Number(value);
11
+ };
12
+
13
+ const toOptionalTrimmedString = ({ value }: { value: unknown }) => {
14
+ if (value === undefined || value === null) {
15
+ return undefined;
16
+ }
17
+
18
+ return String(value).trim();
19
+ };
20
+
21
+ export class CreateWebhookActionDTO {
22
+ @IsIn(['email', 'whatsapp_evolution'])
23
+ type: 'email' | 'whatsapp_evolution';
24
+
25
+ @IsOptional()
26
+ @Transform(toOptionalTrimmedString)
27
+ @IsString()
28
+ name?: string;
29
+
30
+ @IsOptional()
31
+ @Transform(toNullableInteger)
32
+ @IsInt()
33
+ order?: number;
34
+
35
+ @IsOptional()
36
+ @IsIn(['active', 'inactive'])
37
+ status?: 'active' | 'inactive';
38
+
39
+ @IsOptional()
40
+ @Transform(toNullableInteger)
41
+ @IsInt()
42
+ mail_profile_id?: number;
43
+
44
+ @IsOptional()
45
+ @Transform(toNullableInteger)
46
+ @IsInt()
47
+ mail_id?: number;
48
+
49
+ @IsOptional()
50
+ @Transform(toOptionalTrimmedString)
51
+ @IsString()
52
+ email_to?: string;
53
+
54
+ @IsOptional()
55
+ @Transform(toOptionalTrimmedString)
56
+ @IsString()
57
+ email_cc?: string;
58
+
59
+ @IsOptional()
60
+ @Transform(toOptionalTrimmedString)
61
+ @IsString()
62
+ email_bcc?: string;
63
+
64
+ @IsOptional()
65
+ @IsIn(['phone', 'group'])
66
+ whatsapp_target_type?: 'phone' | 'group';
67
+
68
+ @IsOptional()
69
+ @Transform(toOptionalTrimmedString)
70
+ @IsString()
71
+ whatsapp_target?: string;
72
+
73
+ @IsOptional()
74
+ @Transform(toOptionalTrimmedString)
75
+ @IsString()
76
+ whatsapp_template?: string;
77
+
78
+ @IsOptional()
79
+ @Transform(toOptionalTrimmedString)
80
+ @IsString()
81
+ whatsapp_instance?: string;
82
+
83
+ @IsOptional()
84
+ @Transform(toOptionalTrimmedString)
85
+ @IsString()
86
+ whatsapp_base_url?: string;
87
+
88
+ @IsOptional()
89
+ @Transform(toOptionalTrimmedString)
90
+ @IsString()
91
+ whatsapp_token?: string;
92
+ }
93
+
94
+ export class UpdateWebhookActionDTO extends PartialType(
95
+ CreateWebhookActionDTO,
96
+ ) {}
@@ -1,103 +1,124 @@
1
- import { DeleteDTO, Public, Role } from '@hed-hog/api';
2
- import { Pagination } from '@hed-hog/api-pagination';
3
- import {
4
- Body,
5
- Controller,
6
- Delete,
7
- Get,
8
- Headers,
9
- Param,
10
- ParseIntPipe,
11
- Patch,
12
- Post,
13
- Req,
14
- } from '@nestjs/common';
15
- import { Request } from 'express';
16
- import { WebhookIntegrationService } from './webhook-integration.service';
17
-
18
- @Role()
19
- @Controller('webhook-integration')
20
- export class WebhookIntegrationController {
21
- constructor(private readonly service: WebhookIntegrationService) {}
22
-
23
- @Get()
24
- list(@Pagination() paginationParams) {
25
- return this.service.list(paginationParams);
26
- }
27
-
28
- @Get(':id')
29
- get(@Param('id', ParseIntPipe) id: number) {
30
- return this.service.get(id);
31
- }
32
-
33
- @Post()
34
- create(@Body() data: any) {
35
- return this.service.create(data);
36
- }
37
-
38
- @Patch(':id')
39
- update(@Param('id', ParseIntPipe) id: number, @Body() data: any) {
40
- return this.service.update(id, data);
41
- }
42
-
43
- @Delete()
44
- delete(@Body() data: DeleteDTO) {
45
- return this.service.delete(data);
46
- }
47
-
48
- @Post(':id/regenerate-uuid')
49
- regenerateUuid(@Param('id', ParseIntPipe) id: number) {
50
- return this.service.regenerateUuid(id);
51
- }
52
-
53
- @Post(':id/regenerate-token')
54
- regenerateToken(@Param('id', ParseIntPipe) id: number) {
55
- return this.service.regenerateToken(id);
56
- }
57
-
58
- @Get(':id/action')
59
- listActions(@Param('id', ParseIntPipe) id: number) {
60
- return this.service.listActions(id);
61
- }
62
-
63
- @Post(':id/action')
64
- createAction(@Param('id', ParseIntPipe) id: number, @Body() data: any) {
65
- return this.service.createAction(id, data);
66
- }
67
-
68
- @Patch(':id/action/:actionId')
69
- updateAction(
70
- @Param('id', ParseIntPipe) id: number,
71
- @Param('actionId', ParseIntPipe) actionId: number,
72
- @Body() data: any,
73
- ) {
74
- return this.service.updateAction(id, actionId, data);
75
- }
76
-
77
- @Delete(':id/action')
78
- deleteActions(@Param('id', ParseIntPipe) id: number, @Body() data: DeleteDTO) {
79
- return this.service.deleteActions(id, data);
80
- }
81
-
82
- @Get(':id/log')
83
- listLogs(@Param('id', ParseIntPipe) id: number, @Pagination() paginationParams) {
84
- return this.service.listLogs(id, paginationParams);
85
- }
86
- }
87
-
88
- @Public()
89
- @Controller('webhook')
90
- export class PublicWebhookController {
91
- constructor(private readonly service: WebhookIntegrationService) {}
92
-
93
- @Post(':uuid')
94
- execute(
95
- @Param('uuid') uuid: string,
96
- @Body() body: any,
97
- @Headers() headers: any,
98
- @Req() req: Request,
99
- ) {
100
- return this.service.executePublic(uuid, body, headers, req);
101
- }
102
- }
103
-
1
+ import { DeleteDTO, Public, Role } from '@hed-hog/api';
2
+ import { Pagination } from '@hed-hog/api-pagination';
3
+ import {
4
+ Body,
5
+ Controller,
6
+ Delete,
7
+ Get,
8
+ Headers,
9
+ Param,
10
+ ParseIntPipe,
11
+ Patch,
12
+ Post,
13
+ Query,
14
+ Req,
15
+ Res,
16
+ } from '@nestjs/common';
17
+ import { Request, Response } from 'express';
18
+ import { WebhookIntegrationService } from './webhook-integration.service';
19
+ import {
20
+ CreateWebhookActionDTO,
21
+ UpdateWebhookActionDTO,
22
+ } from './dto/webhook-action.dto';
23
+
24
+ @Role()
25
+ @Controller('webhook-integration')
26
+ export class WebhookIntegrationController {
27
+ constructor(private readonly service: WebhookIntegrationService) {}
28
+
29
+ @Get()
30
+ list(@Pagination() paginationParams) {
31
+ return this.service.list(paginationParams);
32
+ }
33
+
34
+ @Get(':id')
35
+ get(@Param('id', ParseIntPipe) id: number) {
36
+ return this.service.get(id);
37
+ }
38
+
39
+ @Post()
40
+ create(@Body() data: any) {
41
+ return this.service.create(data);
42
+ }
43
+
44
+ @Patch(':id')
45
+ update(@Param('id', ParseIntPipe) id: number, @Body() data: any) {
46
+ return this.service.update(id, data);
47
+ }
48
+
49
+ @Delete()
50
+ delete(@Body() data: DeleteDTO) {
51
+ return this.service.delete(data);
52
+ }
53
+
54
+ @Post(':id/regenerate-uuid')
55
+ regenerateUuid(@Param('id', ParseIntPipe) id: number) {
56
+ return this.service.regenerateUuid(id);
57
+ }
58
+
59
+ @Post(':id/regenerate-token')
60
+ regenerateToken(@Param('id', ParseIntPipe) id: number) {
61
+ return this.service.regenerateToken(id);
62
+ }
63
+
64
+ @Get(':id/action')
65
+ listActions(@Param('id', ParseIntPipe) id: number) {
66
+ return this.service.listActions(id);
67
+ }
68
+
69
+ @Post(':id/action')
70
+ createAction(
71
+ @Param('id', ParseIntPipe) id: number,
72
+ @Body() data: CreateWebhookActionDTO,
73
+ ) {
74
+ return this.service.createAction(id, data);
75
+ }
76
+
77
+ @Patch(':id/action/:actionId')
78
+ updateAction(
79
+ @Param('id', ParseIntPipe) id: number,
80
+ @Param('actionId', ParseIntPipe) actionId: number,
81
+ @Body() data: UpdateWebhookActionDTO,
82
+ ) {
83
+ return this.service.updateAction(id, actionId, data);
84
+ }
85
+
86
+ @Delete(':id/action')
87
+ deleteActions(@Param('id', ParseIntPipe) id: number, @Body() data: DeleteDTO) {
88
+ return this.service.deleteActions(id, data);
89
+ }
90
+
91
+ @Get(':id/log')
92
+ listLogs(
93
+ @Param('id', ParseIntPipe) id: number,
94
+ @Pagination() paginationParams,
95
+ @Query('sort') sort?: 'asc' | 'desc',
96
+ ) {
97
+ return this.service.listLogs(id, paginationParams, sort);
98
+ }
99
+
100
+ @Get(':id/log/stream')
101
+ streamLogs(
102
+ @Param('id', ParseIntPipe) id: number,
103
+ @Res() res: Response,
104
+ ) {
105
+ return this.service.streamLogs(id, res);
106
+ }
107
+ }
108
+
109
+ @Public()
110
+ @Controller('webhook')
111
+ export class PublicWebhookController {
112
+ constructor(private readonly service: WebhookIntegrationService) {}
113
+
114
+ @Post(':uuid')
115
+ execute(
116
+ @Param('uuid') uuid: string,
117
+ @Body() body: any,
118
+ @Headers() headers: any,
119
+ @Req() req: Request,
120
+ ) {
121
+ return this.service.executePublic(uuid, body, headers, req);
122
+ }
123
+ }
124
+