@lenne.tech/nest-server 11.25.6 → 11.26.0

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 (335) hide show
  1. package/.claude/rules/configurable-features.md +2 -0
  2. package/CLAUDE.md +18 -0
  3. package/FRAMEWORK-API.md +48 -1
  4. package/dist/config.env.js +35 -1
  5. package/dist/config.env.js.map +1 -1
  6. package/dist/core/common/helpers/config.helper.js +2 -2
  7. package/dist/core/common/helpers/config.helper.js.map +1 -1
  8. package/dist/core/common/interceptors/check-security.interceptor.js +9 -2
  9. package/dist/core/common/interceptors/check-security.interceptor.js.map +1 -1
  10. package/dist/core/common/interfaces/server-options.interface.d.ts +89 -0
  11. package/dist/core/modules/ai/core-ai-mcp.controller.d.ts +21 -0
  12. package/dist/core/modules/ai/core-ai-mcp.controller.js +191 -0
  13. package/dist/core/modules/ai/core-ai-mcp.controller.js.map +1 -0
  14. package/dist/core/modules/ai/core-ai.controller.d.ts +90 -0
  15. package/dist/core/modules/ai/core-ai.controller.js +576 -0
  16. package/dist/core/modules/ai/core-ai.controller.js.map +1 -0
  17. package/dist/core/modules/ai/core-ai.module.d.ts +43 -0
  18. package/dist/core/modules/ai/core-ai.module.js +164 -0
  19. package/dist/core/modules/ai/core-ai.module.js.map +1 -0
  20. package/dist/core/modules/ai/core-ai.resolver.d.ts +84 -0
  21. package/dist/core/modules/ai/core-ai.resolver.js +530 -0
  22. package/dist/core/modules/ai/core-ai.resolver.js.map +1 -0
  23. package/dist/core/modules/ai/helpers/ai-mcp-oauth.helper.d.ts +7 -0
  24. package/dist/core/modules/ai/helpers/ai-mcp-oauth.helper.js +16 -0
  25. package/dist/core/modules/ai/helpers/ai-mcp-oauth.helper.js.map +1 -0
  26. package/dist/core/modules/ai/hooks/ai-hook.base.d.ts +10 -0
  27. package/dist/core/modules/ai/hooks/ai-hook.base.js +30 -0
  28. package/dist/core/modules/ai/hooks/ai-hook.base.js.map +1 -0
  29. package/dist/core/modules/ai/hooks/ai-hook.registry.d.ts +22 -0
  30. package/dist/core/modules/ai/hooks/ai-hook.registry.js +98 -0
  31. package/dist/core/modules/ai/hooks/ai-hook.registry.js.map +1 -0
  32. package/dist/core/modules/ai/index.d.ts +69 -0
  33. package/dist/core/modules/ai/index.js +86 -0
  34. package/dist/core/modules/ai/index.js.map +1 -0
  35. package/dist/core/modules/ai/inputs/core-ai-budget-limit-create.input.d.ts +5 -0
  36. package/dist/core/modules/ai/inputs/core-ai-budget-limit-create.input.js +43 -0
  37. package/dist/core/modules/ai/inputs/core-ai-budget-limit-create.input.js.map +1 -0
  38. package/dist/core/modules/ai/inputs/core-ai-budget-limit.input.d.ts +7 -0
  39. package/dist/core/modules/ai/inputs/core-ai-budget-limit.input.js +74 -0
  40. package/dist/core/modules/ai/inputs/core-ai-budget-limit.input.js.map +1 -0
  41. package/dist/core/modules/ai/inputs/core-ai-connection-create.input.d.ts +6 -0
  42. package/dist/core/modules/ai/inputs/core-ai-connection-create.input.js +49 -0
  43. package/dist/core/modules/ai/inputs/core-ai-connection-create.input.js.map +1 -0
  44. package/dist/core/modules/ai/inputs/core-ai-connection-preference.input.d.ts +6 -0
  45. package/dist/core/modules/ai/inputs/core-ai-connection-preference.input.js +60 -0
  46. package/dist/core/modules/ai/inputs/core-ai-connection-preference.input.js.map +1 -0
  47. package/dist/core/modules/ai/inputs/core-ai-connection.input.d.ts +23 -0
  48. package/dist/core/modules/ai/inputs/core-ai-connection.input.js +229 -0
  49. package/dist/core/modules/ai/inputs/core-ai-connection.input.js.map +1 -0
  50. package/dist/core/modules/ai/inputs/core-ai-conversation-create.input.d.ts +3 -0
  51. package/dist/core/modules/ai/inputs/core-ai-conversation-create.input.js +21 -0
  52. package/dist/core/modules/ai/inputs/core-ai-conversation-create.input.js.map +1 -0
  53. package/dist/core/modules/ai/inputs/core-ai-conversation.input.d.ts +4 -0
  54. package/dist/core/modules/ai/inputs/core-ai-conversation.input.js +42 -0
  55. package/dist/core/modules/ai/inputs/core-ai-conversation.input.js.map +1 -0
  56. package/dist/core/modules/ai/inputs/core-ai-prompt-create.input.d.ts +10 -0
  57. package/dist/core/modules/ai/inputs/core-ai-prompt-create.input.js +74 -0
  58. package/dist/core/modules/ai/inputs/core-ai-prompt-create.input.js.map +1 -0
  59. package/dist/core/modules/ai/inputs/core-ai-prompt-hint-create.input.d.ts +5 -0
  60. package/dist/core/modules/ai/inputs/core-ai-prompt-hint-create.input.js +41 -0
  61. package/dist/core/modules/ai/inputs/core-ai-prompt-hint-create.input.js.map +1 -0
  62. package/dist/core/modules/ai/inputs/core-ai-prompt-hint.input.d.ts +6 -0
  63. package/dist/core/modules/ai/inputs/core-ai-prompt-hint.input.js +63 -0
  64. package/dist/core/modules/ai/inputs/core-ai-prompt-hint.input.js.map +1 -0
  65. package/dist/core/modules/ai/inputs/core-ai-prompt-update.input.d.ts +10 -0
  66. package/dist/core/modules/ai/inputs/core-ai-prompt-update.input.js +70 -0
  67. package/dist/core/modules/ai/inputs/core-ai-prompt-update.input.js.map +1 -0
  68. package/dist/core/modules/ai/inputs/core-ai-prompt.input.d.ts +18 -0
  69. package/dist/core/modules/ai/inputs/core-ai-prompt.input.js +131 -0
  70. package/dist/core/modules/ai/inputs/core-ai-prompt.input.js.map +1 -0
  71. package/dist/core/modules/ai/inputs/core-ai-slot-create.input.d.ts +5 -0
  72. package/dist/core/modules/ai/inputs/core-ai-slot-create.input.js +41 -0
  73. package/dist/core/modules/ai/inputs/core-ai-slot-create.input.js.map +1 -0
  74. package/dist/core/modules/ai/inputs/core-ai-slot-update.input.d.ts +9 -0
  75. package/dist/core/modules/ai/inputs/core-ai-slot-update.input.js +91 -0
  76. package/dist/core/modules/ai/inputs/core-ai-slot-update.input.js.map +1 -0
  77. package/dist/core/modules/ai/interfaces/ai-hook.interface.d.ts +28 -0
  78. package/dist/core/modules/ai/interfaces/ai-hook.interface.js +3 -0
  79. package/dist/core/modules/ai/interfaces/ai-hook.interface.js.map +1 -0
  80. package/dist/core/modules/ai/interfaces/ai-placeholder.interface.d.ts +21 -0
  81. package/dist/core/modules/ai/interfaces/ai-placeholder.interface.js +3 -0
  82. package/dist/core/modules/ai/interfaces/ai-placeholder.interface.js.map +1 -0
  83. package/dist/core/modules/ai/interfaces/ai-tool.interface.d.ts +30 -0
  84. package/dist/core/modules/ai/interfaces/ai-tool.interface.js +3 -0
  85. package/dist/core/modules/ai/interfaces/ai-tool.interface.js.map +1 -0
  86. package/dist/core/modules/ai/interfaces/llm-provider.interface.d.ts +55 -0
  87. package/dist/core/modules/ai/interfaces/llm-provider.interface.js +3 -0
  88. package/dist/core/modules/ai/interfaces/llm-provider.interface.js.map +1 -0
  89. package/dist/core/modules/ai/interfaces/resolved-ai-connection.interface.d.ts +16 -0
  90. package/dist/core/modules/ai/interfaces/resolved-ai-connection.interface.js +3 -0
  91. package/dist/core/modules/ai/interfaces/resolved-ai-connection.interface.js.map +1 -0
  92. package/dist/core/modules/ai/models/core-ai-action.model.d.ts +6 -0
  93. package/dist/core/modules/ai/models/core-ai-action.model.js +44 -0
  94. package/dist/core/modules/ai/models/core-ai-action.model.js.map +1 -0
  95. package/dist/core/modules/ai/models/core-ai-available-connection.model.d.ts +8 -0
  96. package/dist/core/modules/ai/models/core-ai-available-connection.model.js +53 -0
  97. package/dist/core/modules/ai/models/core-ai-available-connection.model.js.map +1 -0
  98. package/dist/core/modules/ai/models/core-ai-budget-limit.model.d.ts +97 -0
  99. package/dist/core/modules/ai/models/core-ai-budget-limit.model.js +79 -0
  100. package/dist/core/modules/ai/models/core-ai-budget-limit.model.js.map +1 -0
  101. package/dist/core/modules/ai/models/core-ai-connection-preference.model.d.ts +91 -0
  102. package/dist/core/modules/ai/models/core-ai-connection-preference.model.js +67 -0
  103. package/dist/core/modules/ai/models/core-ai-connection-preference.model.js.map +1 -0
  104. package/dist/core/modules/ai/models/core-ai-connection.model.d.ts +200 -0
  105. package/dist/core/modules/ai/models/core-ai-connection.model.js +263 -0
  106. package/dist/core/modules/ai/models/core-ai-connection.model.js.map +1 -0
  107. package/dist/core/modules/ai/models/core-ai-conversation.model.d.ts +93 -0
  108. package/dist/core/modules/ai/models/core-ai-conversation.model.js +82 -0
  109. package/dist/core/modules/ai/models/core-ai-conversation.model.js.map +1 -0
  110. package/dist/core/modules/ai/models/core-ai-interaction.model.d.ts +133 -0
  111. package/dist/core/modules/ai/models/core-ai-interaction.model.js +137 -0
  112. package/dist/core/modules/ai/models/core-ai-interaction.model.js.map +1 -0
  113. package/dist/core/modules/ai/models/core-ai-message.model.d.ts +5 -0
  114. package/dist/core/modules/ai/models/core-ai-message.model.js +38 -0
  115. package/dist/core/modules/ai/models/core-ai-message.model.js.map +1 -0
  116. package/dist/core/modules/ai/models/core-ai-mode.model.d.ts +109 -0
  117. package/dist/core/modules/ai/models/core-ai-mode.model.js +100 -0
  118. package/dist/core/modules/ai/models/core-ai-mode.model.js.map +1 -0
  119. package/dist/core/modules/ai/models/core-ai-prompt-hint.model.d.ts +103 -0
  120. package/dist/core/modules/ai/models/core-ai-prompt-hint.model.js +89 -0
  121. package/dist/core/modules/ai/models/core-ai-prompt-hint.model.js.map +1 -0
  122. package/dist/core/modules/ai/models/core-ai-prompt.model.d.ts +122 -0
  123. package/dist/core/modules/ai/models/core-ai-prompt.model.js +117 -0
  124. package/dist/core/modules/ai/models/core-ai-prompt.model.js.map +1 -0
  125. package/dist/core/modules/ai/models/core-ai-response.model.d.ts +29 -0
  126. package/dist/core/modules/ai/models/core-ai-response.model.js +105 -0
  127. package/dist/core/modules/ai/models/core-ai-response.model.js.map +1 -0
  128. package/dist/core/modules/ai/models/core-ai-slot.model.d.ts +121 -0
  129. package/dist/core/modules/ai/models/core-ai-slot.model.js +119 -0
  130. package/dist/core/modules/ai/models/core-ai-slot.model.js.map +1 -0
  131. package/dist/core/modules/ai/models/core-ai-tool-grant.model.d.ts +103 -0
  132. package/dist/core/modules/ai/models/core-ai-tool-grant.model.js +88 -0
  133. package/dist/core/modules/ai/models/core-ai-tool-grant.model.js.map +1 -0
  134. package/dist/core/modules/ai/models/core-ai-tool-policy.model.d.ts +122 -0
  135. package/dist/core/modules/ai/models/core-ai-tool-policy.model.js +121 -0
  136. package/dist/core/modules/ai/models/core-ai-tool-policy.model.js.map +1 -0
  137. package/dist/core/modules/ai/models/core-ai-usage-info.model.d.ts +24 -0
  138. package/dist/core/modules/ai/models/core-ai-usage-info.model.js +127 -0
  139. package/dist/core/modules/ai/models/core-ai-usage-info.model.js.map +1 -0
  140. package/dist/core/modules/ai/models/core-ai-usage.model.d.ts +5 -0
  141. package/dist/core/modules/ai/models/core-ai-usage.model.js +38 -0
  142. package/dist/core/modules/ai/models/core-ai-usage.model.js.map +1 -0
  143. package/dist/core/modules/ai/providers/claude-cli.provider.d.ts +16 -0
  144. package/dist/core/modules/ai/providers/claude-cli.provider.js +151 -0
  145. package/dist/core/modules/ai/providers/claude-cli.provider.js.map +1 -0
  146. package/dist/core/modules/ai/providers/llm-provider.factory.d.ts +10 -0
  147. package/dist/core/modules/ai/providers/llm-provider.factory.js +45 -0
  148. package/dist/core/modules/ai/providers/llm-provider.factory.js.map +1 -0
  149. package/dist/core/modules/ai/providers/openai-compatible.provider.d.ts +32 -0
  150. package/dist/core/modules/ai/providers/openai-compatible.provider.js +236 -0
  151. package/dist/core/modules/ai/providers/openai-compatible.provider.js.map +1 -0
  152. package/dist/core/modules/ai/services/ai-crypto.service.d.ts +11 -0
  153. package/dist/core/modules/ai/services/ai-crypto.service.js +84 -0
  154. package/dist/core/modules/ai/services/ai-crypto.service.js.map +1 -0
  155. package/dist/core/modules/ai/services/core-ai-budget.service.d.ts +42 -0
  156. package/dist/core/modules/ai/services/core-ai-budget.service.js +211 -0
  157. package/dist/core/modules/ai/services/core-ai-budget.service.js.map +1 -0
  158. package/dist/core/modules/ai/services/core-ai-connection-preference.service.d.ts +18 -0
  159. package/dist/core/modules/ai/services/core-ai-connection-preference.service.js +53 -0
  160. package/dist/core/modules/ai/services/core-ai-connection-preference.service.js.map +1 -0
  161. package/dist/core/modules/ai/services/core-ai-connection-resolver.service.d.ts +55 -0
  162. package/dist/core/modules/ai/services/core-ai-connection-resolver.service.js +177 -0
  163. package/dist/core/modules/ai/services/core-ai-connection-resolver.service.js.map +1 -0
  164. package/dist/core/modules/ai/services/core-ai-connection.service.d.ts +43 -0
  165. package/dist/core/modules/ai/services/core-ai-connection.service.js +272 -0
  166. package/dist/core/modules/ai/services/core-ai-connection.service.js.map +1 -0
  167. package/dist/core/modules/ai/services/core-ai-conversation.service.d.ts +26 -0
  168. package/dist/core/modules/ai/services/core-ai-conversation.service.js +72 -0
  169. package/dist/core/modules/ai/services/core-ai-conversation.service.js.map +1 -0
  170. package/dist/core/modules/ai/services/core-ai-interaction.service.d.ts +13 -0
  171. package/dist/core/modules/ai/services/core-ai-interaction.service.js +52 -0
  172. package/dist/core/modules/ai/services/core-ai-interaction.service.js.map +1 -0
  173. package/dist/core/modules/ai/services/core-ai-mcp-client.service.d.ts +51 -0
  174. package/dist/core/modules/ai/services/core-ai-mcp-client.service.js +123 -0
  175. package/dist/core/modules/ai/services/core-ai-mcp-client.service.js.map +1 -0
  176. package/dist/core/modules/ai/services/core-ai-mcp-oauth.service.d.ts +68 -0
  177. package/dist/core/modules/ai/services/core-ai-mcp-oauth.service.js +279 -0
  178. package/dist/core/modules/ai/services/core-ai-mcp-oauth.service.js.map +1 -0
  179. package/dist/core/modules/ai/services/core-ai-mcp.service.d.ts +22 -0
  180. package/dist/core/modules/ai/services/core-ai-mcp.service.js +59 -0
  181. package/dist/core/modules/ai/services/core-ai-mcp.service.js.map +1 -0
  182. package/dist/core/modules/ai/services/core-ai-mode.service.d.ts +14 -0
  183. package/dist/core/modules/ai/services/core-ai-mode.service.js +56 -0
  184. package/dist/core/modules/ai/services/core-ai-mode.service.js.map +1 -0
  185. package/dist/core/modules/ai/services/core-ai-placeholder.registry.d.ts +15 -0
  186. package/dist/core/modules/ai/services/core-ai-placeholder.registry.js +102 -0
  187. package/dist/core/modules/ai/services/core-ai-placeholder.registry.js.map +1 -0
  188. package/dist/core/modules/ai/services/core-ai-prompt-builder.service.d.ts +42 -0
  189. package/dist/core/modules/ai/services/core-ai-prompt-builder.service.js +136 -0
  190. package/dist/core/modules/ai/services/core-ai-prompt-builder.service.js.map +1 -0
  191. package/dist/core/modules/ai/services/core-ai-prompt-hint.service.d.ts +29 -0
  192. package/dist/core/modules/ai/services/core-ai-prompt-hint.service.js +98 -0
  193. package/dist/core/modules/ai/services/core-ai-prompt-hint.service.js.map +1 -0
  194. package/dist/core/modules/ai/services/core-ai-prompt.service.d.ts +21 -0
  195. package/dist/core/modules/ai/services/core-ai-prompt.service.js +143 -0
  196. package/dist/core/modules/ai/services/core-ai-prompt.service.js.map +1 -0
  197. package/dist/core/modules/ai/services/core-ai-slot.service.d.ts +51 -0
  198. package/dist/core/modules/ai/services/core-ai-slot.service.js +372 -0
  199. package/dist/core/modules/ai/services/core-ai-slot.service.js.map +1 -0
  200. package/dist/core/modules/ai/services/core-ai-tool-grant.service.d.ts +22 -0
  201. package/dist/core/modules/ai/services/core-ai-tool-grant.service.js +97 -0
  202. package/dist/core/modules/ai/services/core-ai-tool-grant.service.js.map +1 -0
  203. package/dist/core/modules/ai/services/core-ai-tool-policy.service.d.ts +23 -0
  204. package/dist/core/modules/ai/services/core-ai-tool-policy.service.js +102 -0
  205. package/dist/core/modules/ai/services/core-ai-tool-policy.service.js.map +1 -0
  206. package/dist/core/modules/ai/services/core-ai.service.d.ts +144 -0
  207. package/dist/core/modules/ai/services/core-ai.service.js +991 -0
  208. package/dist/core/modules/ai/services/core-ai.service.js.map +1 -0
  209. package/dist/core/modules/ai/tools/ai-tool.base.d.ts +15 -0
  210. package/dist/core/modules/ai/tools/ai-tool.base.js +30 -0
  211. package/dist/core/modules/ai/tools/ai-tool.base.js.map +1 -0
  212. package/dist/core/modules/ai/tools/ai-tool.registry.d.ts +19 -0
  213. package/dist/core/modules/ai/tools/ai-tool.registry.js +71 -0
  214. package/dist/core/modules/ai/tools/ai-tool.registry.js.map +1 -0
  215. package/dist/core/modules/ai/tools/ask-user-question.tool.d.ts +38 -0
  216. package/dist/core/modules/ai/tools/ask-user-question.tool.js +65 -0
  217. package/dist/core/modules/ai/tools/ask-user-question.tool.js.map +1 -0
  218. package/dist/core/modules/ai/tools/search-tools.tool.d.ts +24 -0
  219. package/dist/core/modules/ai/tools/search-tools.tool.js +68 -0
  220. package/dist/core/modules/ai/tools/search-tools.tool.js.map +1 -0
  221. package/dist/core/modules/error-code/error-codes.d.ts +81 -0
  222. package/dist/core/modules/error-code/error-codes.js +72 -0
  223. package/dist/core/modules/error-code/error-codes.js.map +1 -1
  224. package/dist/core.module.js +8 -0
  225. package/dist/core.module.js.map +1 -1
  226. package/dist/index.d.ts +1 -0
  227. package/dist/index.js +1 -0
  228. package/dist/index.js.map +1 -1
  229. package/dist/server/modules/ai/ai-tools.module.d.ts +5 -0
  230. package/dist/server/modules/ai/ai-tools.module.js +36 -0
  231. package/dist/server/modules/ai/ai-tools.module.js.map +1 -0
  232. package/dist/server/modules/ai/tools/delete-user.tool.d.ts +30 -0
  233. package/dist/server/modules/ai/tools/delete-user.tool.js +49 -0
  234. package/dist/server/modules/ai/tools/delete-user.tool.js.map +1 -0
  235. package/dist/server/modules/ai/tools/find-users.tool.d.ts +30 -0
  236. package/dist/server/modules/ai/tools/find-users.tool.js +52 -0
  237. package/dist/server/modules/ai/tools/find-users.tool.js.map +1 -0
  238. package/dist/server/modules/ai/tools/get-user.tool.d.ts +26 -0
  239. package/dist/server/modules/ai/tools/get-user.tool.js +48 -0
  240. package/dist/server/modules/ai/tools/get-user.tool.js.map +1 -0
  241. package/dist/server/modules/ai/tools/update-user-job-title.tool.d.ts +32 -0
  242. package/dist/server/modules/ai/tools/update-user-job-title.tool.js +54 -0
  243. package/dist/server/modules/ai/tools/update-user-job-title.tool.js.map +1 -0
  244. package/dist/server/modules/error-code/error-codes.d.ts +9 -0
  245. package/dist/server/server.module.js +2 -0
  246. package/dist/server/server.module.js.map +1 -1
  247. package/dist/tsconfig.build.tsbuildinfo +1 -1
  248. package/docs/REQUEST-LIFECYCLE.md +10 -0
  249. package/migration-guides/11.25.x-to-11.26.0.md +278 -0
  250. package/package.json +2 -1
  251. package/src/config.env.ts +48 -1
  252. package/src/core/common/helpers/config.helper.ts +5 -2
  253. package/src/core/common/interceptors/check-security.interceptor.ts +13 -3
  254. package/src/core/common/interfaces/server-options.interface.ts +312 -0
  255. package/src/core/modules/ai/INTEGRATION-CHECKLIST.md +220 -0
  256. package/src/core/modules/ai/README.md +526 -0
  257. package/src/core/modules/ai/core-ai-mcp.controller.ts +223 -0
  258. package/src/core/modules/ai/core-ai.controller.ts +547 -0
  259. package/src/core/modules/ai/core-ai.module.ts +269 -0
  260. package/src/core/modules/ai/core-ai.resolver.ts +526 -0
  261. package/src/core/modules/ai/helpers/ai-mcp-oauth.helper.ts +35 -0
  262. package/src/core/modules/ai/hooks/ai-hook.base.ts +23 -0
  263. package/src/core/modules/ai/hooks/ai-hook.registry.ts +119 -0
  264. package/src/core/modules/ai/index.ts +70 -0
  265. package/src/core/modules/ai/inputs/core-ai-budget-limit-create.input.ts +27 -0
  266. package/src/core/modules/ai/inputs/core-ai-budget-limit.input.ts +52 -0
  267. package/src/core/modules/ai/inputs/core-ai-connection-create.input.ts +32 -0
  268. package/src/core/modules/ai/inputs/core-ai-connection-preference.input.ts +42 -0
  269. package/src/core/modules/ai/inputs/core-ai-connection.input.ts +235 -0
  270. package/src/core/modules/ai/inputs/core-ai-conversation-create.input.ts +13 -0
  271. package/src/core/modules/ai/inputs/core-ai-conversation.input.ts +33 -0
  272. package/src/core/modules/ai/inputs/core-ai-prompt-create.input.ts +50 -0
  273. package/src/core/modules/ai/inputs/core-ai-prompt-hint-create.input.ts +26 -0
  274. package/src/core/modules/ai/inputs/core-ai-prompt-hint.input.ts +43 -0
  275. package/src/core/modules/ai/inputs/core-ai-prompt-update.input.ts +42 -0
  276. package/src/core/modules/ai/inputs/core-ai-prompt.input.ts +144 -0
  277. package/src/core/modules/ai/inputs/core-ai-slot-create.input.ts +26 -0
  278. package/src/core/modules/ai/inputs/core-ai-slot-update.input.ts +65 -0
  279. package/src/core/modules/ai/interfaces/ai-hook.interface.ts +74 -0
  280. package/src/core/modules/ai/interfaces/ai-placeholder.interface.ts +49 -0
  281. package/src/core/modules/ai/interfaces/ai-tool.interface.ts +112 -0
  282. package/src/core/modules/ai/interfaces/llm-provider.interface.ts +187 -0
  283. package/src/core/modules/ai/interfaces/resolved-ai-connection.interface.ts +55 -0
  284. package/src/core/modules/ai/models/core-ai-action.model.ts +37 -0
  285. package/src/core/modules/ai/models/core-ai-available-connection.model.ts +42 -0
  286. package/src/core/modules/ai/models/core-ai-budget-limit.model.ts +82 -0
  287. package/src/core/modules/ai/models/core-ai-connection-preference.model.ts +72 -0
  288. package/src/core/modules/ai/models/core-ai-connection.model.ts +330 -0
  289. package/src/core/modules/ai/models/core-ai-conversation.model.ts +87 -0
  290. package/src/core/modules/ai/models/core-ai-interaction.model.ts +145 -0
  291. package/src/core/modules/ai/models/core-ai-message.model.ts +29 -0
  292. package/src/core/modules/ai/models/core-ai-mode.model.ts +93 -0
  293. package/src/core/modules/ai/models/core-ai-prompt-hint.model.ts +98 -0
  294. package/src/core/modules/ai/models/core-ai-prompt.model.ts +120 -0
  295. package/src/core/modules/ai/models/core-ai-response.model.ts +119 -0
  296. package/src/core/modules/ai/models/core-ai-slot.model.ts +146 -0
  297. package/src/core/modules/ai/models/core-ai-tool-grant.model.ts +87 -0
  298. package/src/core/modules/ai/models/core-ai-tool-policy.model.ts +115 -0
  299. package/src/core/modules/ai/models/core-ai-usage-info.model.ts +107 -0
  300. package/src/core/modules/ai/models/core-ai-usage.model.ts +29 -0
  301. package/src/core/modules/ai/providers/claude-cli.provider.ts +240 -0
  302. package/src/core/modules/ai/providers/llm-provider.factory.ts +63 -0
  303. package/src/core/modules/ai/providers/openai-compatible.provider.ts +329 -0
  304. package/src/core/modules/ai/services/ai-crypto.service.ts +120 -0
  305. package/src/core/modules/ai/services/core-ai-budget.service.ts +297 -0
  306. package/src/core/modules/ai/services/core-ai-connection-preference.service.ts +74 -0
  307. package/src/core/modules/ai/services/core-ai-connection-resolver.service.ts +308 -0
  308. package/src/core/modules/ai/services/core-ai-connection.service.ts +387 -0
  309. package/src/core/modules/ai/services/core-ai-conversation.service.ts +105 -0
  310. package/src/core/modules/ai/services/core-ai-interaction.service.ts +56 -0
  311. package/src/core/modules/ai/services/core-ai-mcp-client.service.ts +169 -0
  312. package/src/core/modules/ai/services/core-ai-mcp-oauth.service.ts +445 -0
  313. package/src/core/modules/ai/services/core-ai-mcp.service.ts +94 -0
  314. package/src/core/modules/ai/services/core-ai-mode.service.ts +43 -0
  315. package/src/core/modules/ai/services/core-ai-placeholder.registry.ts +123 -0
  316. package/src/core/modules/ai/services/core-ai-prompt-builder.service.ts +228 -0
  317. package/src/core/modules/ai/services/core-ai-prompt-hint.service.ts +133 -0
  318. package/src/core/modules/ai/services/core-ai-prompt.service.ts +164 -0
  319. package/src/core/modules/ai/services/core-ai-slot.service.ts +526 -0
  320. package/src/core/modules/ai/services/core-ai-tool-grant.service.ts +107 -0
  321. package/src/core/modules/ai/services/core-ai-tool-policy.service.ts +124 -0
  322. package/src/core/modules/ai/services/core-ai.service.ts +1396 -0
  323. package/src/core/modules/ai/tools/ai-tool.base.ts +46 -0
  324. package/src/core/modules/ai/tools/ai-tool.registry.ts +124 -0
  325. package/src/core/modules/ai/tools/ask-user-question.tool.ts +76 -0
  326. package/src/core/modules/ai/tools/search-tools.tool.ts +70 -0
  327. package/src/core/modules/error-code/error-codes.ts +86 -0
  328. package/src/core.module.ts +12 -0
  329. package/src/index.ts +6 -0
  330. package/src/server/modules/ai/ai-tools.module.ts +33 -0
  331. package/src/server/modules/ai/tools/delete-user.tool.ts +44 -0
  332. package/src/server/modules/ai/tools/find-users.tool.ts +49 -0
  333. package/src/server/modules/ai/tools/get-user.tool.ts +43 -0
  334. package/src/server/modules/ai/tools/update-user-job-title.tool.ts +62 -0
  335. package/src/server/server.module.ts +5 -0
@@ -0,0 +1,269 @@
1
+ import { DynamicModule, Global, Module, Type } from '@nestjs/common';
2
+ import { MongooseModule } from '@nestjs/mongoose';
3
+
4
+ import { CoreAiMcpController } from './core-ai-mcp.controller';
5
+ import { CoreAiController } from './core-ai.controller';
6
+ import { CoreAiResolver } from './core-ai.resolver';
7
+ import { CoreAiMcpOAuthService } from './services/core-ai-mcp-oauth.service';
8
+ import { CoreAiMcpService } from './services/core-ai-mcp.service';
9
+ import { AiBudgetLimitSchema, CoreAiBudgetLimit } from './models/core-ai-budget-limit.model';
10
+ import { AiConnectionPreferenceSchema, CoreAiConnectionPreference } from './models/core-ai-connection-preference.model';
11
+ import { AiConnectionSchema, CoreAiConnection } from './models/core-ai-connection.model';
12
+ import { AiConversationSchema, CoreAiConversation } from './models/core-ai-conversation.model';
13
+ import { AiInteractionSchema, CoreAiInteraction } from './models/core-ai-interaction.model';
14
+ import { AiPromptHintSchema, CoreAiPromptHint } from './models/core-ai-prompt-hint.model';
15
+ import { AiPromptSchema, CoreAiPrompt } from './models/core-ai-prompt.model';
16
+ import { AiSlotSchema, CoreAiSlot } from './models/core-ai-slot.model';
17
+ import { AiModeSchema, CoreAiMode } from './models/core-ai-mode.model';
18
+ import { AiToolGrantSchema, CoreAiToolGrant } from './models/core-ai-tool-grant.model';
19
+ import { AiToolPolicySchema, CoreAiToolPolicy } from './models/core-ai-tool-policy.model';
20
+ import { LlmProviderFactory } from './providers/llm-provider.factory';
21
+ import { AiCryptoService } from './services/ai-crypto.service';
22
+ import { AI_BUDGET_LIMIT_CLASS, AI_BUDGET_LIMIT_MODEL, CoreAiBudgetService } from './services/core-ai-budget.service';
23
+ import {
24
+ AI_CONNECTION_PREFERENCE_CLASS,
25
+ AI_CONNECTION_PREFERENCE_MODEL,
26
+ CoreAiConnectionPreferenceService,
27
+ } from './services/core-ai-connection-preference.service';
28
+ import { CoreAiConnectionResolverService } from './services/core-ai-connection-resolver.service';
29
+ import {
30
+ AI_CONNECTION_CLASS,
31
+ AI_CONNECTION_MODEL,
32
+ CoreAiConnectionService,
33
+ } from './services/core-ai-connection.service';
34
+ import {
35
+ AI_CONVERSATION_CLASS,
36
+ AI_CONVERSATION_MODEL,
37
+ CoreAiConversationService,
38
+ } from './services/core-ai-conversation.service';
39
+ import {
40
+ AI_INTERACTION_CLASS,
41
+ AI_INTERACTION_MODEL,
42
+ CoreAiInteractionService,
43
+ } from './services/core-ai-interaction.service';
44
+ import { CoreAiPlaceholderRegistry } from './services/core-ai-placeholder.registry';
45
+ import { CoreAiPromptBuilderService } from './services/core-ai-prompt-builder.service';
46
+ import {
47
+ AI_PROMPT_HINT_CLASS,
48
+ AI_PROMPT_HINT_MODEL,
49
+ CoreAiPromptHintService,
50
+ } from './services/core-ai-prompt-hint.service';
51
+ import { AI_PROMPT_CLASS, AI_PROMPT_MODEL, CoreAiPromptService } from './services/core-ai-prompt.service';
52
+ import { AI_SLOT_CLASS, AI_SLOT_MODEL, CoreAiSlotService } from './services/core-ai-slot.service';
53
+ import {
54
+ AI_TOOL_GRANT_CLASS,
55
+ AI_TOOL_GRANT_MODEL,
56
+ CoreAiToolGrantService,
57
+ } from './services/core-ai-tool-grant.service';
58
+ import {
59
+ AI_TOOL_POLICY_CLASS,
60
+ AI_TOOL_POLICY_MODEL,
61
+ CoreAiToolPolicyService,
62
+ } from './services/core-ai-tool-policy.service';
63
+ import { AI_MODE_CLASS, AI_MODE_MODEL, CoreAiModeService } from './services/core-ai-mode.service';
64
+ import { CoreAiMcpClientService } from './services/core-ai-mcp-client.service';
65
+ import { CoreAiService } from './services/core-ai.service';
66
+ import { AiHookRegistry } from './hooks/ai-hook.registry';
67
+ import { AskUserQuestionAiTool } from './tools/ask-user-question.tool';
68
+ import { SearchToolsAiTool } from './tools/search-tools.tool';
69
+ import { AiToolRegistry } from './tools/ai-tool.registry';
70
+
71
+ /**
72
+ * Options for {@link CoreAiModule.forRoot}. Every collaborator can be replaced
73
+ * with a project-specific subclass for full customization (Module Inheritance
74
+ * Pattern). Pass these via `CoreModule.forRoot(envConfig, { ai: { ... } })`.
75
+ */
76
+ export interface CoreAiModuleOptions {
77
+ /** Custom connection-resolution service (extends CoreAiConnectionResolverService). */
78
+ connectionResolver?: Type<CoreAiConnectionResolverService>;
79
+
80
+ /** Custom CRUD service for AI connections (extends CoreAiConnectionService). */
81
+ connectionService?: Type<CoreAiConnectionService>;
82
+
83
+ /** Custom REST controller (extends CoreAiController). */
84
+ controller?: Type<CoreAiController>;
85
+
86
+ /** Custom budget service (extends CoreAiBudgetService). */
87
+ budgetService?: Type<CoreAiBudgetService>;
88
+
89
+ /** Custom conversation service (extends CoreAiConversationService). */
90
+ conversationService?: Type<CoreAiConversationService>;
91
+
92
+ /** Custom audit/interaction service (extends CoreAiInteractionService). */
93
+ interactionService?: Type<CoreAiInteractionService>;
94
+
95
+ /** Whether to register the MCP server controller at /ai/mcp. */
96
+ mcpEnabled?: boolean;
97
+
98
+ /** Custom connection-preference service (extends CoreAiConnectionPreferenceService). */
99
+ preferenceService?: Type<CoreAiConnectionPreferenceService>;
100
+
101
+ /** Custom placeholder registry (extends CoreAiPlaceholderRegistry). */
102
+ placeholderRegistry?: Type<CoreAiPlaceholderRegistry>;
103
+
104
+ /** Custom prompt builder (extends CoreAiPromptBuilderService). */
105
+ promptBuilder?: Type<CoreAiPromptBuilderService>;
106
+
107
+ /** Custom learned-hint service / learning loop (extends CoreAiPromptHintService). */
108
+ promptHintService?: Type<CoreAiPromptHintService>;
109
+
110
+ /** Custom user-facing user prompt store (extends CoreAiPromptService). */
111
+ promptService?: Type<CoreAiPromptService>;
112
+
113
+ /** Custom slot store (extends CoreAiSlotService). */
114
+ slotService?: Type<CoreAiSlotService>;
115
+
116
+ /** Custom GraphQL resolver (extends CoreAiResolver). */
117
+ resolver?: Type<CoreAiResolver>;
118
+
119
+ /** Custom orchestrator service (extends CoreAiService). */
120
+ service?: Type<CoreAiService>;
121
+
122
+ /** Custom tool-grant ("remember my decision") store (extends CoreAiToolGrantService). */
123
+ toolGrantService?: Type<CoreAiToolGrantService>;
124
+
125
+ /** Custom scoped tool-policy store (extends CoreAiToolPolicyService). */
126
+ toolPolicyService?: Type<CoreAiToolPolicyService>;
127
+
128
+ /** Custom named-mode store (extends CoreAiModeService). */
129
+ modeService?: Type<CoreAiModeService>;
130
+
131
+ /** Custom MCP-client wiring (extends CoreAiMcpClientService). */
132
+ mcpClientService?: Type<CoreAiMcpClientService>;
133
+ }
134
+
135
+ /**
136
+ * Core AI module: database-backed LLM connections, a provider abstraction, a
137
+ * global tool registry and the prompt orchestrator.
138
+ *
139
+ * `@Global()` so the {@link AiToolRegistry} (and the other services) can be
140
+ * injected from any module — projects register tools by declaring providers that
141
+ * call `registry.register(...)` (typically via the {@link AiTool} base class).
142
+ *
143
+ * Auto-registered by `CoreModule.forRoot()` when an `ai` config block is present
144
+ * (presence implies enabled). Disable with `ai: { enabled: false }`.
145
+ *
146
+ * @example
147
+ * ```typescript
148
+ * // Zero-config (uses defaults + config.env.ts `ai` block)
149
+ * CoreModule.forRoot(envConfig)
150
+ *
151
+ * // With a custom orchestrator and resolver
152
+ * CoreModule.forRoot(envConfig, { ai: { service: MyAiService, resolver: MyAiResolver } })
153
+ * ```
154
+ */
155
+ @Global()
156
+ @Module({})
157
+ export class CoreAiModule {
158
+ static forRoot(options: CoreAiModuleOptions = {}): DynamicModule {
159
+ const BudgetServiceClass = options.budgetService || CoreAiBudgetService;
160
+ const ConnectionResolverClass = options.connectionResolver || CoreAiConnectionResolverService;
161
+ const ConnectionServiceClass = options.connectionService || CoreAiConnectionService;
162
+ const ControllerClass = options.controller || CoreAiController;
163
+ const ConversationServiceClass = options.conversationService || CoreAiConversationService;
164
+ const InteractionServiceClass = options.interactionService || CoreAiInteractionService;
165
+ const PreferenceServiceClass = options.preferenceService || CoreAiConnectionPreferenceService;
166
+ const PlaceholderRegistryClass = options.placeholderRegistry || CoreAiPlaceholderRegistry;
167
+ const PromptBuilderClass = options.promptBuilder || CoreAiPromptBuilderService;
168
+ const PromptHintServiceClass = options.promptHintService || CoreAiPromptHintService;
169
+ const PromptServiceClass = options.promptService || CoreAiPromptService;
170
+ const SlotServiceClass = options.slotService || CoreAiSlotService;
171
+ const ResolverClass = options.resolver || CoreAiResolver;
172
+ const ServiceClass = options.service || CoreAiService;
173
+ const ToolGrantServiceClass = options.toolGrantService || CoreAiToolGrantService;
174
+ const ToolPolicyServiceClass = options.toolPolicyService || CoreAiToolPolicyService;
175
+ const ModeServiceClass = options.modeService || CoreAiModeService;
176
+ const McpClientServiceClass = options.mcpClientService || CoreAiMcpClientService;
177
+
178
+ // Register the MCP controller only when enabled (it lazy-loads the MCP SDK).
179
+ const controllers: Type<any>[] = [ControllerClass];
180
+ if (options.mcpEnabled) {
181
+ controllers.push(CoreAiMcpController);
182
+ }
183
+
184
+ return {
185
+ controllers,
186
+ exports: [
187
+ AiCryptoService,
188
+ AiHookRegistry,
189
+ AiToolRegistry,
190
+ CoreAiBudgetService,
191
+ CoreAiConnectionPreferenceService,
192
+ CoreAiConnectionResolverService,
193
+ CoreAiConnectionService,
194
+ CoreAiConversationService,
195
+ CoreAiInteractionService,
196
+ CoreAiMcpOAuthService,
197
+ CoreAiMcpService,
198
+ CoreAiPlaceholderRegistry,
199
+ CoreAiPromptBuilderService,
200
+ CoreAiPromptHintService,
201
+ CoreAiPromptService,
202
+ CoreAiSlotService,
203
+ CoreAiService,
204
+ CoreAiToolGrantService,
205
+ CoreAiToolPolicyService,
206
+ CoreAiModeService,
207
+ CoreAiMcpClientService,
208
+ LlmProviderFactory,
209
+ MongooseModule,
210
+ ],
211
+ imports: [
212
+ MongooseModule.forFeature([
213
+ { name: AI_BUDGET_LIMIT_MODEL, schema: AiBudgetLimitSchema },
214
+ { name: AI_CONNECTION_MODEL, schema: AiConnectionSchema },
215
+ { name: AI_CONNECTION_PREFERENCE_MODEL, schema: AiConnectionPreferenceSchema },
216
+ { name: AI_CONVERSATION_MODEL, schema: AiConversationSchema },
217
+ { name: AI_INTERACTION_MODEL, schema: AiInteractionSchema },
218
+ { name: AI_PROMPT_HINT_MODEL, schema: AiPromptHintSchema },
219
+ { name: AI_PROMPT_MODEL, schema: AiPromptSchema },
220
+ { name: AI_SLOT_MODEL, schema: AiSlotSchema },
221
+ { name: AI_TOOL_GRANT_MODEL, schema: AiToolGrantSchema },
222
+ { name: AI_TOOL_POLICY_MODEL, schema: AiToolPolicySchema },
223
+ { name: AI_MODE_MODEL, schema: AiModeSchema },
224
+ ]),
225
+ ],
226
+ module: CoreAiModule,
227
+ providers: [
228
+ AiCryptoService,
229
+ AiHookRegistry,
230
+ AiToolRegistry,
231
+ AskUserQuestionAiTool,
232
+ SearchToolsAiTool,
233
+ LlmProviderFactory,
234
+ { provide: AI_BUDGET_LIMIT_CLASS, useValue: CoreAiBudgetLimit },
235
+ { provide: AI_CONNECTION_CLASS, useValue: CoreAiConnection },
236
+ { provide: AI_CONNECTION_PREFERENCE_CLASS, useValue: CoreAiConnectionPreference },
237
+ { provide: AI_CONVERSATION_CLASS, useValue: CoreAiConversation },
238
+ { provide: AI_INTERACTION_CLASS, useValue: CoreAiInteraction },
239
+ { provide: AI_PROMPT_HINT_CLASS, useValue: CoreAiPromptHint },
240
+ { provide: AI_PROMPT_CLASS, useValue: CoreAiPrompt },
241
+ { provide: AI_SLOT_CLASS, useValue: CoreAiSlot },
242
+ { provide: AI_TOOL_GRANT_CLASS, useValue: CoreAiToolGrant },
243
+ { provide: AI_TOOL_POLICY_CLASS, useValue: CoreAiToolPolicy },
244
+ { provide: AI_MODE_CLASS, useValue: CoreAiMode },
245
+ { provide: CoreAiBudgetService, useClass: BudgetServiceClass },
246
+ { provide: CoreAiConversationService, useClass: ConversationServiceClass },
247
+ { provide: CoreAiInteractionService, useClass: InteractionServiceClass },
248
+ CoreAiMcpService,
249
+ CoreAiMcpOAuthService,
250
+ // Bind base-class tokens to the (possibly overridden) implementations so
251
+ // injections by base type resolve to the project's subclass.
252
+ { provide: CoreAiConnectionPreferenceService, useClass: PreferenceServiceClass },
253
+ { provide: CoreAiConnectionResolverService, useClass: ConnectionResolverClass },
254
+ { provide: CoreAiConnectionService, useClass: ConnectionServiceClass },
255
+ { provide: CoreAiPlaceholderRegistry, useClass: PlaceholderRegistryClass },
256
+ { provide: CoreAiPromptBuilderService, useClass: PromptBuilderClass },
257
+ { provide: CoreAiPromptHintService, useClass: PromptHintServiceClass },
258
+ { provide: CoreAiPromptService, useClass: PromptServiceClass },
259
+ { provide: CoreAiSlotService, useClass: SlotServiceClass },
260
+ { provide: CoreAiService, useClass: ServiceClass },
261
+ { provide: CoreAiToolGrantService, useClass: ToolGrantServiceClass },
262
+ { provide: CoreAiToolPolicyService, useClass: ToolPolicyServiceClass },
263
+ { provide: CoreAiModeService, useClass: ModeServiceClass },
264
+ { provide: CoreAiMcpClientService, useClass: McpClientServiceClass },
265
+ ResolverClass,
266
+ ],
267
+ };
268
+ }
269
+ }