@structured-world/gitlab-mcp 5.7.0 → 6.0.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 (385) hide show
  1. package/README.md +251 -1
  2. package/dist/generated/prisma/client.d.ts +13 -0
  3. package/dist/generated/prisma/client.js +46 -0
  4. package/dist/generated/prisma/client.js.map +1 -0
  5. package/dist/generated/prisma/commonInputTypes.d.ts +245 -0
  6. package/dist/generated/prisma/commonInputTypes.js +3 -0
  7. package/dist/generated/prisma/commonInputTypes.js.map +1 -0
  8. package/dist/generated/prisma/enums.d.ts +1 -0
  9. package/dist/generated/prisma/enums.js +3 -0
  10. package/dist/generated/prisma/enums.js.map +1 -0
  11. package/dist/generated/prisma/internal/class.d.ts +47 -0
  12. package/dist/generated/prisma/internal/class.js +66 -0
  13. package/dist/generated/prisma/internal/class.js.map +1 -0
  14. package/dist/generated/prisma/internal/prismaNamespace.d.ts +712 -0
  15. package/dist/generated/prisma/internal/prismaNamespace.js +139 -0
  16. package/dist/generated/prisma/internal/prismaNamespace.js.map +1 -0
  17. package/dist/generated/prisma/models/AuthCodeFlowState.d.ts +513 -0
  18. package/dist/generated/prisma/models/AuthCodeFlowState.js +3 -0
  19. package/dist/generated/prisma/models/AuthCodeFlowState.js.map +1 -0
  20. package/dist/generated/prisma/models/AuthorizationCode.d.ts +641 -0
  21. package/dist/generated/prisma/models/AuthorizationCode.js +3 -0
  22. package/dist/generated/prisma/models/AuthorizationCode.js.map +1 -0
  23. package/dist/generated/prisma/models/DeviceFlowState.d.ts +606 -0
  24. package/dist/generated/prisma/models/DeviceFlowState.js +3 -0
  25. package/dist/generated/prisma/models/DeviceFlowState.js.map +1 -0
  26. package/dist/generated/prisma/models/McpSessionMapping.d.ts +438 -0
  27. package/dist/generated/prisma/models/McpSessionMapping.js +3 -0
  28. package/dist/generated/prisma/models/McpSessionMapping.js.map +1 -0
  29. package/dist/generated/prisma/models/OAuthSession.d.ts +962 -0
  30. package/dist/generated/prisma/models/OAuthSession.js +3 -0
  31. package/dist/generated/prisma/models/OAuthSession.js.map +1 -0
  32. package/dist/generated/prisma/models.d.ts +6 -0
  33. package/dist/generated/prisma/models.js +3 -0
  34. package/dist/generated/prisma/models.js.map +1 -0
  35. package/dist/{config.d.ts → src/config.d.ts} +11 -0
  36. package/dist/{config.js → src/config.js} +12 -1
  37. package/dist/src/config.js.map +1 -0
  38. package/dist/src/entities/core/index.js.map +1 -0
  39. package/dist/src/entities/core/registry.js +745 -0
  40. package/dist/src/entities/core/registry.js.map +1 -0
  41. package/dist/src/entities/core/schema-readonly.d.ts +290 -0
  42. package/dist/src/entities/core/schema-readonly.js +296 -0
  43. package/dist/src/entities/core/schema-readonly.js.map +1 -0
  44. package/dist/src/entities/core/schema.d.ts +71 -0
  45. package/dist/src/entities/core/schema.js +93 -0
  46. package/dist/src/entities/core/schema.js.map +1 -0
  47. package/dist/src/entities/files/index.js.map +1 -0
  48. package/dist/src/entities/files/registry.js +165 -0
  49. package/dist/src/entities/files/registry.js.map +1 -0
  50. package/dist/src/entities/files/schema-readonly.d.ts +93 -0
  51. package/dist/{entities → src/entities}/files/schema-readonly.js +20 -1
  52. package/dist/src/entities/files/schema-readonly.js.map +1 -0
  53. package/dist/src/entities/files/schema.d.ts +82 -0
  54. package/dist/src/entities/files/schema.js +79 -0
  55. package/dist/src/entities/files/schema.js.map +1 -0
  56. package/dist/src/entities/index.js.map +1 -0
  57. package/dist/src/entities/labels/index.js.map +1 -0
  58. package/dist/src/entities/labels/registry.js +139 -0
  59. package/dist/src/entities/labels/registry.js.map +1 -0
  60. package/dist/src/entities/labels/schema-readonly.d.ts +14 -0
  61. package/dist/src/entities/labels/schema-readonly.js.map +1 -0
  62. package/dist/src/entities/labels/schema.d.ts +23 -0
  63. package/dist/src/entities/labels/schema.js.map +1 -0
  64. package/dist/src/entities/milestones/index.js.map +1 -0
  65. package/dist/src/entities/milestones/registry.js +197 -0
  66. package/dist/src/entities/milestones/registry.js.map +1 -0
  67. package/dist/src/entities/milestones/schema-readonly.d.ts +58 -0
  68. package/dist/src/entities/milestones/schema-readonly.js.map +1 -0
  69. package/dist/src/entities/milestones/schema.d.ts +32 -0
  70. package/dist/src/entities/milestones/schema.js.map +1 -0
  71. package/dist/src/entities/mrs/index.js.map +1 -0
  72. package/dist/{entities → src/entities}/mrs/registry.js +64 -81
  73. package/dist/src/entities/mrs/registry.js.map +1 -0
  74. package/dist/src/entities/mrs/schema-readonly.d.ts +127 -0
  75. package/dist/src/entities/mrs/schema-readonly.js.map +1 -0
  76. package/dist/src/entities/mrs/schema.d.ts +285 -0
  77. package/dist/src/entities/mrs/schema.js.map +1 -0
  78. package/dist/src/entities/pipelines/index.js.map +1 -0
  79. package/dist/{entities → src/entities}/pipelines/registry.js +72 -200
  80. package/dist/src/entities/pipelines/registry.js.map +1 -0
  81. package/dist/src/entities/pipelines/schema-readonly.d.ts +238 -0
  82. package/dist/src/entities/pipelines/schema-readonly.js.map +1 -0
  83. package/dist/src/entities/pipelines/schema.d.ts +49 -0
  84. package/dist/src/entities/pipelines/schema.js.map +1 -0
  85. package/dist/src/entities/shared.d.ts +291 -0
  86. package/dist/src/entities/shared.js.map +1 -0
  87. package/dist/src/entities/utils.d.ts +3 -0
  88. package/dist/src/entities/utils.js.map +1 -0
  89. package/dist/src/entities/variables/index.js.map +1 -0
  90. package/dist/src/entities/variables/registry.js +153 -0
  91. package/dist/src/entities/variables/registry.js.map +1 -0
  92. package/dist/src/entities/variables/schema-readonly.d.ts +15 -0
  93. package/dist/src/entities/variables/schema-readonly.js.map +1 -0
  94. package/dist/src/entities/variables/schema.d.ts +42 -0
  95. package/dist/src/entities/variables/schema.js.map +1 -0
  96. package/dist/src/entities/wiki/index.js.map +1 -0
  97. package/dist/src/entities/wiki/registry.js +136 -0
  98. package/dist/src/entities/wiki/registry.js.map +1 -0
  99. package/dist/src/entities/wiki/schema-readonly.d.ts +22 -0
  100. package/dist/src/entities/wiki/schema-readonly.js.map +1 -0
  101. package/dist/{entities → src/entities}/wiki/schema.d.ts +3 -31
  102. package/dist/src/entities/wiki/schema.js.map +1 -0
  103. package/dist/src/entities/workitems/index.js.map +1 -0
  104. package/dist/{entities → src/entities}/workitems/registry.js +40 -7
  105. package/dist/src/entities/workitems/registry.js.map +1 -0
  106. package/dist/src/entities/workitems/schema-readonly.d.ts +52 -0
  107. package/dist/{entities → src/entities}/workitems/schema-readonly.js +1 -1
  108. package/dist/src/entities/workitems/schema-readonly.js.map +1 -0
  109. package/dist/src/entities/workitems/schema.d.ts +37 -0
  110. package/dist/src/entities/workitems/schema.js.map +1 -0
  111. package/dist/src/graphql/DynamicWorkItemsQuery.js.map +1 -0
  112. package/dist/src/graphql/client.js.map +1 -0
  113. package/dist/src/graphql/index.js.map +1 -0
  114. package/dist/src/graphql/workItems.js.map +1 -0
  115. package/dist/{handlers.js → src/handlers.js} +15 -0
  116. package/dist/src/handlers.js.map +1 -0
  117. package/dist/{http-client.js → src/http-client.js} +0 -4
  118. package/dist/src/http-client.js.map +1 -0
  119. package/dist/src/logger.js.map +1 -0
  120. package/dist/src/main.js.map +1 -0
  121. package/dist/src/middleware/index.d.ts +2 -0
  122. package/dist/src/middleware/index.js +12 -0
  123. package/dist/src/middleware/index.js.map +1 -0
  124. package/dist/src/middleware/oauth-auth.d.ts +4 -0
  125. package/dist/src/middleware/oauth-auth.js +119 -0
  126. package/dist/src/middleware/oauth-auth.js.map +1 -0
  127. package/dist/src/middleware/rate-limiter.d.ts +11 -0
  128. package/dist/src/middleware/rate-limiter.js +145 -0
  129. package/dist/src/middleware/rate-limiter.js.map +1 -0
  130. package/dist/src/oauth/config.d.ts +19 -0
  131. package/dist/src/oauth/config.js +70 -0
  132. package/dist/src/oauth/config.js.map +1 -0
  133. package/dist/src/oauth/endpoints/authorize.d.ts +3 -0
  134. package/dist/src/oauth/endpoints/authorize.js +454 -0
  135. package/dist/src/oauth/endpoints/authorize.js.map +1 -0
  136. package/dist/src/oauth/endpoints/callback.d.ts +2 -0
  137. package/dist/src/oauth/endpoints/callback.js +129 -0
  138. package/dist/src/oauth/endpoints/callback.js.map +1 -0
  139. package/dist/src/oauth/endpoints/index.d.ts +5 -0
  140. package/dist/src/oauth/endpoints/index.js +20 -0
  141. package/dist/src/oauth/endpoints/index.js.map +1 -0
  142. package/dist/src/oauth/endpoints/metadata.d.ts +5 -0
  143. package/dist/src/oauth/endpoints/metadata.js +48 -0
  144. package/dist/src/oauth/endpoints/metadata.js.map +1 -0
  145. package/dist/src/oauth/endpoints/register.d.ts +15 -0
  146. package/dist/src/oauth/endpoints/register.js +85 -0
  147. package/dist/src/oauth/endpoints/register.js.map +1 -0
  148. package/dist/src/oauth/endpoints/token.d.ts +2 -0
  149. package/dist/src/oauth/endpoints/token.js +159 -0
  150. package/dist/src/oauth/endpoints/token.js.map +1 -0
  151. package/dist/src/oauth/gitlab-device-flow.d.ts +10 -0
  152. package/dist/src/oauth/gitlab-device-flow.js +215 -0
  153. package/dist/src/oauth/gitlab-device-flow.js.map +1 -0
  154. package/dist/src/oauth/index.d.ts +10 -0
  155. package/dist/src/oauth/index.js +65 -0
  156. package/dist/src/oauth/index.js.map +1 -0
  157. package/dist/src/oauth/session-store.d.ts +54 -0
  158. package/dist/src/oauth/session-store.js +302 -0
  159. package/dist/src/oauth/session-store.js.map +1 -0
  160. package/dist/src/oauth/storage/factory.d.ts +4 -0
  161. package/dist/src/oauth/storage/factory.js +75 -0
  162. package/dist/src/oauth/storage/factory.js.map +1 -0
  163. package/dist/src/oauth/storage/file.d.ts +50 -0
  164. package/dist/src/oauth/storage/file.js +287 -0
  165. package/dist/src/oauth/storage/file.js.map +1 -0
  166. package/dist/src/oauth/storage/index.d.ts +5 -0
  167. package/dist/src/oauth/storage/index.js +22 -0
  168. package/dist/src/oauth/storage/index.js.map +1 -0
  169. package/dist/src/oauth/storage/memory.d.ts +76 -0
  170. package/dist/src/oauth/storage/memory.js +277 -0
  171. package/dist/src/oauth/storage/memory.js.map +1 -0
  172. package/dist/src/oauth/storage/postgresql.d.ts +41 -0
  173. package/dist/src/oauth/storage/postgresql.js +435 -0
  174. package/dist/src/oauth/storage/postgresql.js.map +1 -0
  175. package/dist/src/oauth/storage/types.d.ts +67 -0
  176. package/dist/src/oauth/storage/types.js +5 -0
  177. package/dist/src/oauth/storage/types.js.map +1 -0
  178. package/dist/src/oauth/token-context.d.ts +8 -0
  179. package/dist/src/oauth/token-context.js +40 -0
  180. package/dist/src/oauth/token-context.js.map +1 -0
  181. package/dist/src/oauth/token-utils.d.ts +14 -0
  182. package/dist/src/oauth/token-utils.js +148 -0
  183. package/dist/src/oauth/token-utils.js.map +1 -0
  184. package/dist/src/oauth/types.d.ts +104 -0
  185. package/dist/src/oauth/types.js +3 -0
  186. package/dist/src/oauth/types.js.map +1 -0
  187. package/dist/src/registry-manager.js.map +1 -0
  188. package/dist/{server.d.ts → src/server.d.ts} +11 -0
  189. package/dist/src/server.js +444 -0
  190. package/dist/src/server.js.map +1 -0
  191. package/dist/{services → src/services}/ConnectionManager.d.ts +2 -0
  192. package/dist/{services → src/services}/ConnectionManager.js +99 -7
  193. package/dist/src/services/ConnectionManager.js.map +1 -0
  194. package/dist/src/services/GitLabVersionDetector.js.map +1 -0
  195. package/dist/src/services/SchemaIntrospector.js.map +1 -0
  196. package/dist/{services → src/services}/ToolAvailability.js +3 -4
  197. package/dist/src/services/ToolAvailability.js.map +1 -0
  198. package/dist/src/services/WidgetAvailability.js.map +1 -0
  199. package/dist/src/types.js.map +1 -0
  200. package/dist/src/utils/fetch.d.ts +5 -0
  201. package/dist/{utils → src/utils}/fetch.js +89 -52
  202. package/dist/src/utils/fetch.js.map +1 -0
  203. package/dist/src/utils/gitlab-api.d.ts +21 -0
  204. package/dist/src/utils/gitlab-api.js +132 -0
  205. package/dist/src/utils/gitlab-api.js.map +1 -0
  206. package/dist/src/utils/idConversion.js.map +1 -0
  207. package/dist/{utils → src/utils}/namespace.js +1 -5
  208. package/dist/src/utils/namespace.js.map +1 -0
  209. package/dist/src/utils/projectIdentifier.js.map +1 -0
  210. package/dist/{utils → src/utils}/smart-user-search.js +1 -5
  211. package/dist/src/utils/smart-user-search.js.map +1 -0
  212. package/dist/src/utils/workItemTypes.js.map +1 -0
  213. package/dist/structured-world-gitlab-mcp-6.0.0.tgz +0 -0
  214. package/dist/tsconfig.build.tsbuildinfo +1 -1
  215. package/package.json +34 -31
  216. package/dist/config.js.map +0 -1
  217. package/dist/entities/core/index.js.map +0 -1
  218. package/dist/entities/core/registry.js +0 -778
  219. package/dist/entities/core/registry.js.map +0 -1
  220. package/dist/entities/core/schema-readonly.d.ts +0 -547
  221. package/dist/entities/core/schema-readonly.js +0 -471
  222. package/dist/entities/core/schema-readonly.js.map +0 -1
  223. package/dist/entities/core/schema.d.ts +0 -210
  224. package/dist/entities/core/schema.js +0 -230
  225. package/dist/entities/core/schema.js.map +0 -1
  226. package/dist/entities/files/index.js.map +0 -1
  227. package/dist/entities/files/registry.js +0 -207
  228. package/dist/entities/files/registry.js.map +0 -1
  229. package/dist/entities/files/schema-readonly.d.ts +0 -178
  230. package/dist/entities/files/schema-readonly.js.map +0 -1
  231. package/dist/entities/files/schema.d.ts +0 -107
  232. package/dist/entities/files/schema.js +0 -38
  233. package/dist/entities/files/schema.js.map +0 -1
  234. package/dist/entities/index.js.map +0 -1
  235. package/dist/entities/labels/index.js.map +0 -1
  236. package/dist/entities/labels/registry.js +0 -176
  237. package/dist/entities/labels/registry.js.map +0 -1
  238. package/dist/entities/labels/schema-readonly.d.ts +0 -32
  239. package/dist/entities/labels/schema-readonly.js.map +0 -1
  240. package/dist/entities/labels/schema.d.ts +0 -55
  241. package/dist/entities/labels/schema.js.map +0 -1
  242. package/dist/entities/milestones/index.js.map +0 -1
  243. package/dist/entities/milestones/registry.js +0 -300
  244. package/dist/entities/milestones/registry.js.map +0 -1
  245. package/dist/entities/milestones/schema-readonly.d.ts +0 -138
  246. package/dist/entities/milestones/schema-readonly.js.map +0 -1
  247. package/dist/entities/milestones/schema.d.ts +0 -69
  248. package/dist/entities/milestones/schema.js.map +0 -1
  249. package/dist/entities/mrs/index.js.map +0 -1
  250. package/dist/entities/mrs/registry.js.map +0 -1
  251. package/dist/entities/mrs/schema-readonly.d.ts +0 -302
  252. package/dist/entities/mrs/schema-readonly.js.map +0 -1
  253. package/dist/entities/mrs/schema.d.ts +0 -1028
  254. package/dist/entities/mrs/schema.js.map +0 -1
  255. package/dist/entities/pipelines/index.js.map +0 -1
  256. package/dist/entities/pipelines/registry.js.map +0 -1
  257. package/dist/entities/pipelines/schema-readonly.d.ts +0 -648
  258. package/dist/entities/pipelines/schema-readonly.js.map +0 -1
  259. package/dist/entities/pipelines/schema.d.ts +0 -123
  260. package/dist/entities/pipelines/schema.js.map +0 -1
  261. package/dist/entities/shared.d.ts +0 -968
  262. package/dist/entities/shared.js.map +0 -1
  263. package/dist/entities/utils.d.ts +0 -3
  264. package/dist/entities/utils.js.map +0 -1
  265. package/dist/entities/variables/index.js.map +0 -1
  266. package/dist/entities/variables/registry.js +0 -308
  267. package/dist/entities/variables/registry.js.map +0 -1
  268. package/dist/entities/variables/schema-readonly.d.ts +0 -40
  269. package/dist/entities/variables/schema-readonly.js.map +0 -1
  270. package/dist/entities/variables/schema.d.ts +0 -102
  271. package/dist/entities/variables/schema.js.map +0 -1
  272. package/dist/entities/wiki/index.js.map +0 -1
  273. package/dist/entities/wiki/registry.js +0 -173
  274. package/dist/entities/wiki/registry.js.map +0 -1
  275. package/dist/entities/wiki/schema-readonly.d.ts +0 -53
  276. package/dist/entities/wiki/schema-readonly.js.map +0 -1
  277. package/dist/entities/wiki/schema.js.map +0 -1
  278. package/dist/entities/workitems/index.js.map +0 -1
  279. package/dist/entities/workitems/registry.js.map +0 -1
  280. package/dist/entities/workitems/schema-readonly.d.ts +0 -49
  281. package/dist/entities/workitems/schema-readonly.js.map +0 -1
  282. package/dist/entities/workitems/schema.d.ts +0 -61
  283. package/dist/entities/workitems/schema.js.map +0 -1
  284. package/dist/graphql/DynamicWorkItemsQuery.js.map +0 -1
  285. package/dist/graphql/client.js.map +0 -1
  286. package/dist/graphql/index.js.map +0 -1
  287. package/dist/graphql/workItems.js.map +0 -1
  288. package/dist/handlers.js.map +0 -1
  289. package/dist/http-client.js.map +0 -1
  290. package/dist/logger.js.map +0 -1
  291. package/dist/main.js.map +0 -1
  292. package/dist/registry-manager.js.map +0 -1
  293. package/dist/server.js +0 -202
  294. package/dist/server.js.map +0 -1
  295. package/dist/services/ConnectionManager.js.map +0 -1
  296. package/dist/services/GitLabVersionDetector.js.map +0 -1
  297. package/dist/services/SchemaIntrospector.js.map +0 -1
  298. package/dist/services/ToolAvailability.js.map +0 -1
  299. package/dist/services/WidgetAvailability.js.map +0 -1
  300. package/dist/structured-world-gitlab-mcp-5.7.0.tgz +0 -0
  301. package/dist/types.js.map +0 -1
  302. package/dist/utils/fetch.d.ts +0 -9
  303. package/dist/utils/fetch.js.map +0 -1
  304. package/dist/utils/idConversion.js.map +0 -1
  305. package/dist/utils/namespace.js.map +0 -1
  306. package/dist/utils/projectIdentifier.js.map +0 -1
  307. package/dist/utils/smart-user-search.js.map +0 -1
  308. package/dist/utils/workItemTypes.js.map +0 -1
  309. /package/dist/{entities → src/entities}/core/index.d.ts +0 -0
  310. /package/dist/{entities → src/entities}/core/index.js +0 -0
  311. /package/dist/{entities → src/entities}/core/registry.d.ts +0 -0
  312. /package/dist/{entities → src/entities}/files/index.d.ts +0 -0
  313. /package/dist/{entities → src/entities}/files/index.js +0 -0
  314. /package/dist/{entities → src/entities}/files/registry.d.ts +0 -0
  315. /package/dist/{entities → src/entities}/index.d.ts +0 -0
  316. /package/dist/{entities → src/entities}/index.js +0 -0
  317. /package/dist/{entities → src/entities}/labels/index.d.ts +0 -0
  318. /package/dist/{entities → src/entities}/labels/index.js +0 -0
  319. /package/dist/{entities → src/entities}/labels/registry.d.ts +0 -0
  320. /package/dist/{entities → src/entities}/labels/schema-readonly.js +0 -0
  321. /package/dist/{entities → src/entities}/labels/schema.js +0 -0
  322. /package/dist/{entities → src/entities}/milestones/index.d.ts +0 -0
  323. /package/dist/{entities → src/entities}/milestones/index.js +0 -0
  324. /package/dist/{entities → src/entities}/milestones/registry.d.ts +0 -0
  325. /package/dist/{entities → src/entities}/milestones/schema-readonly.js +0 -0
  326. /package/dist/{entities → src/entities}/milestones/schema.js +0 -0
  327. /package/dist/{entities → src/entities}/mrs/index.d.ts +0 -0
  328. /package/dist/{entities → src/entities}/mrs/index.js +0 -0
  329. /package/dist/{entities → src/entities}/mrs/registry.d.ts +0 -0
  330. /package/dist/{entities → src/entities}/mrs/schema-readonly.js +0 -0
  331. /package/dist/{entities → src/entities}/mrs/schema.js +0 -0
  332. /package/dist/{entities → src/entities}/pipelines/index.d.ts +0 -0
  333. /package/dist/{entities → src/entities}/pipelines/index.js +0 -0
  334. /package/dist/{entities → src/entities}/pipelines/registry.d.ts +0 -0
  335. /package/dist/{entities → src/entities}/pipelines/schema-readonly.js +0 -0
  336. /package/dist/{entities → src/entities}/pipelines/schema.js +0 -0
  337. /package/dist/{entities → src/entities}/shared.js +0 -0
  338. /package/dist/{entities → src/entities}/utils.js +0 -0
  339. /package/dist/{entities → src/entities}/variables/index.d.ts +0 -0
  340. /package/dist/{entities → src/entities}/variables/index.js +0 -0
  341. /package/dist/{entities → src/entities}/variables/registry.d.ts +0 -0
  342. /package/dist/{entities → src/entities}/variables/schema-readonly.js +0 -0
  343. /package/dist/{entities → src/entities}/variables/schema.js +0 -0
  344. /package/dist/{entities → src/entities}/wiki/index.d.ts +0 -0
  345. /package/dist/{entities → src/entities}/wiki/index.js +0 -0
  346. /package/dist/{entities → src/entities}/wiki/registry.d.ts +0 -0
  347. /package/dist/{entities → src/entities}/wiki/schema-readonly.js +0 -0
  348. /package/dist/{entities → src/entities}/wiki/schema.js +0 -0
  349. /package/dist/{entities → src/entities}/workitems/index.d.ts +0 -0
  350. /package/dist/{entities → src/entities}/workitems/index.js +0 -0
  351. /package/dist/{entities → src/entities}/workitems/registry.d.ts +0 -0
  352. /package/dist/{entities → src/entities}/workitems/schema.js +0 -0
  353. /package/dist/{graphql → src/graphql}/DynamicWorkItemsQuery.d.ts +0 -0
  354. /package/dist/{graphql → src/graphql}/DynamicWorkItemsQuery.js +0 -0
  355. /package/dist/{graphql → src/graphql}/client.d.ts +0 -0
  356. /package/dist/{graphql → src/graphql}/client.js +0 -0
  357. /package/dist/{graphql → src/graphql}/index.d.ts +0 -0
  358. /package/dist/{graphql → src/graphql}/index.js +0 -0
  359. /package/dist/{graphql → src/graphql}/workItems.d.ts +0 -0
  360. /package/dist/{graphql → src/graphql}/workItems.js +0 -0
  361. /package/dist/{handlers.d.ts → src/handlers.d.ts} +0 -0
  362. /package/dist/{http-client.d.ts → src/http-client.d.ts} +0 -0
  363. /package/dist/{logger.d.ts → src/logger.d.ts} +0 -0
  364. /package/dist/{logger.js → src/logger.js} +0 -0
  365. /package/dist/{main.d.ts → src/main.d.ts} +0 -0
  366. /package/dist/{main.js → src/main.js} +0 -0
  367. /package/dist/{registry-manager.d.ts → src/registry-manager.d.ts} +0 -0
  368. /package/dist/{registry-manager.js → src/registry-manager.js} +0 -0
  369. /package/dist/{services → src/services}/GitLabVersionDetector.d.ts +0 -0
  370. /package/dist/{services → src/services}/GitLabVersionDetector.js +0 -0
  371. /package/dist/{services → src/services}/SchemaIntrospector.d.ts +0 -0
  372. /package/dist/{services → src/services}/SchemaIntrospector.js +0 -0
  373. /package/dist/{services → src/services}/ToolAvailability.d.ts +0 -0
  374. /package/dist/{services → src/services}/WidgetAvailability.d.ts +0 -0
  375. /package/dist/{services → src/services}/WidgetAvailability.js +0 -0
  376. /package/dist/{types.d.ts → src/types.d.ts} +0 -0
  377. /package/dist/{types.js → src/types.js} +0 -0
  378. /package/dist/{utils → src/utils}/idConversion.d.ts +0 -0
  379. /package/dist/{utils → src/utils}/idConversion.js +0 -0
  380. /package/dist/{utils → src/utils}/namespace.d.ts +0 -0
  381. /package/dist/{utils → src/utils}/projectIdentifier.d.ts +0 -0
  382. /package/dist/{utils → src/utils}/projectIdentifier.js +0 -0
  383. /package/dist/{utils → src/utils}/smart-user-search.d.ts +0 -0
  384. /package/dist/{utils → src/utils}/workItemTypes.d.ts +0 -0
  385. /package/dist/{utils → src/utils}/workItemTypes.js +0 -0
@@ -0,0 +1,52 @@
1
+ import { z } from "zod";
2
+ export declare const WorkItemIdSchema: z.ZodString;
3
+ export declare const WorkItemTypeEnumSchema: z.ZodPipe<z.ZodPipe<z.ZodString, z.ZodTransform<string, string>>, z.ZodEnum<{
4
+ OBJECTIVE: "OBJECTIVE";
5
+ KEY_RESULT: "KEY_RESULT";
6
+ REQUIREMENT: "REQUIREMENT";
7
+ ISSUE: "ISSUE";
8
+ INCIDENT: "INCIDENT";
9
+ TEST_CASE: "TEST_CASE";
10
+ TASK: "TASK";
11
+ EPIC: "EPIC";
12
+ }>>;
13
+ export declare const WorkItemStateSchema: z.ZodPipe<z.ZodPipe<z.ZodString, z.ZodTransform<string, string>>, z.ZodEnum<{
14
+ OPEN: "OPEN";
15
+ CLOSED: "CLOSED";
16
+ }>>;
17
+ export declare const WorkItemStateEventSchema: z.ZodPipe<z.ZodPipe<z.ZodString, z.ZodTransform<string, string>>, z.ZodEnum<{
18
+ CLOSE: "CLOSE";
19
+ REOPEN: "REOPEN";
20
+ }>>;
21
+ export declare const ListWorkItemsSchema: z.ZodObject<{
22
+ namespace: z.ZodString;
23
+ types: z.ZodOptional<z.ZodArray<z.ZodPipe<z.ZodPipe<z.ZodString, z.ZodTransform<string, string>>, z.ZodEnum<{
24
+ OBJECTIVE: "OBJECTIVE";
25
+ KEY_RESULT: "KEY_RESULT";
26
+ REQUIREMENT: "REQUIREMENT";
27
+ ISSUE: "ISSUE";
28
+ INCIDENT: "INCIDENT";
29
+ TEST_CASE: "TEST_CASE";
30
+ TASK: "TASK";
31
+ EPIC: "EPIC";
32
+ }>>>>;
33
+ state: z.ZodDefault<z.ZodOptional<z.ZodArray<z.ZodPipe<z.ZodPipe<z.ZodString, z.ZodTransform<string, string>>, z.ZodEnum<{
34
+ OPEN: "OPEN";
35
+ CLOSED: "CLOSED";
36
+ }>>>>>;
37
+ first: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
38
+ after: z.ZodOptional<z.ZodString>;
39
+ simple: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
40
+ active: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
41
+ }, z.core.$strip>;
42
+ export declare const GetWorkItemSchema: z.ZodObject<{
43
+ id: z.ZodString;
44
+ }, z.core.$strip>;
45
+ export declare const GetWorkItemTypesSchema: z.ZodObject<{
46
+ namespace: z.ZodString;
47
+ }, z.core.$strip>;
48
+ export type ListWorkItemsOptions = z.infer<typeof ListWorkItemsSchema>;
49
+ export type GetWorkItemOptions = z.infer<typeof GetWorkItemSchema>;
50
+ export type GetWorkItemTypesOptions = z.infer<typeof GetWorkItemTypesSchema>;
51
+ export type WorkItemTypeEnum = z.infer<typeof WorkItemTypeEnumSchema>;
52
+ export type WorkItemState = z.infer<typeof WorkItemStateSchema>;
@@ -46,7 +46,7 @@ exports.ListWorkItemsSchema = zod_1.z.object({
46
46
  .boolean()
47
47
  .optional()
48
48
  .default(true)
49
- .describe("Return simplified structure with essential fields only (id, title, state, type, assignees, labels). Set false for full details."),
49
+ .describe("Return simplified structure with essential fields only (id, title, state, type, assignees, labels). RECOMMENDED: Use default true for most cases. Only set false when full widget details are specifically needed."),
50
50
  active: zod_1.z
51
51
  .boolean()
52
52
  .optional()
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema-readonly.js","sourceRoot":"","sources":["../../../../src/entities/workitems/schema-readonly.ts"],"names":[],"mappings":";;;AAAA,6BAAwB;AAGX,QAAA,gBAAgB,GAAG,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;AAE9D,QAAA,sBAAsB,GAAG,OAAC;KACpC,MAAM,EAAE;KACR,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;KACxD,IAAI,CACH,OAAC,CAAC,IAAI,CAAC;IACL,MAAM;IACN,OAAO;IACP,MAAM;IACN,UAAU;IACV,WAAW;IACX,aAAa;IACb,WAAW;IACX,YAAY;CACb,CAAC,CACH;KACA,QAAQ,CAAC,mBAAmB,CAAC,CAAC;AAEpB,QAAA,mBAAmB,GAAG,OAAC;KACjC,MAAM,EAAE;KACR,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC;KACnC,IAAI,CAAC,OAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC;KAChC,QAAQ,CAAC,oBAAoB,CAAC,CAAC;AAErB,QAAA,wBAAwB,GAAG,OAAC;KACtC,MAAM,EAAE;KACR,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC;KACnC,IAAI,CAAC,OAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC;KACjC,QAAQ,CAAC,oCAAoC,CAAC,CAAC;AAGrC,QAAA,mBAAmB,GAAG,OAAC,CAAC,MAAM,CAAC;IAC1C,SAAS,EAAE,OAAC;SACT,MAAM,EAAE;SACR,QAAQ,CACP,iHAAiH,CAClH;IACH,KAAK,EAAE,OAAC,CAAC,KAAK,CAAC,8BAAsB,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,2BAA2B,CAAC;IACvF,KAAK,EAAE,OAAC;SACL,KAAK,CAAC,2BAAmB,CAAC;SAC1B,QAAQ,EAAE;SACV,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC;SACjB,QAAQ,CACP,+FAA+F,CAChG;IACH,KAAK,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,2BAA2B,CAAC;IAC9E,KAAK,EAAE,OAAC;SACL,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,8DAA8D,CAAC;IAC3E,MAAM,EAAE,OAAC;SACN,OAAO,EAAE;SACT,QAAQ,EAAE;SACV,OAAO,CAAC,IAAI,CAAC;SACb,QAAQ,CACP,oNAAoN,CACrN;IACH,MAAM,EAAE,OAAC;SACN,OAAO,EAAE;SACT,QAAQ,EAAE;SACV,OAAO,CAAC,IAAI,CAAC;SACb,QAAQ,CACP,4HAA4H,CAC7H;CACJ,CAAC,CAAC;AAEU,QAAA,iBAAiB,GAAG,OAAC,CAAC,MAAM,CAAC;IACxC,EAAE,EAAE,wBAAgB;CACrB,CAAC,CAAC;AAEU,QAAA,sBAAsB,GAAG,OAAC,CAAC,MAAM,CAAC;IAC7C,SAAS,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,8DAA8D,CAAC;CAC/F,CAAC,CAAC"}
@@ -0,0 +1,37 @@
1
+ import { z } from "zod";
2
+ export declare const CreateWorkItemSchema: z.ZodObject<{
3
+ namespace: z.ZodString;
4
+ title: z.ZodString;
5
+ workItemType: z.ZodPipe<z.ZodPipe<z.ZodString, z.ZodTransform<string, string>>, z.ZodEnum<{
6
+ OBJECTIVE: "OBJECTIVE";
7
+ KEY_RESULT: "KEY_RESULT";
8
+ REQUIREMENT: "REQUIREMENT";
9
+ ISSUE: "ISSUE";
10
+ INCIDENT: "INCIDENT";
11
+ TEST_CASE: "TEST_CASE";
12
+ TASK: "TASK";
13
+ EPIC: "EPIC";
14
+ }>>;
15
+ description: z.ZodOptional<z.ZodString>;
16
+ assigneeIds: z.ZodOptional<z.ZodArray<z.ZodString>>;
17
+ labelIds: z.ZodOptional<z.ZodArray<z.ZodString>>;
18
+ milestoneId: z.ZodOptional<z.ZodString>;
19
+ }, z.core.$strip>;
20
+ export declare const UpdateWorkItemSchema: z.ZodObject<{
21
+ id: z.ZodString;
22
+ title: z.ZodOptional<z.ZodString>;
23
+ description: z.ZodOptional<z.ZodString>;
24
+ state: z.ZodOptional<z.ZodPipe<z.ZodPipe<z.ZodString, z.ZodTransform<string, string>>, z.ZodEnum<{
25
+ CLOSE: "CLOSE";
26
+ REOPEN: "REOPEN";
27
+ }>>>;
28
+ assigneeIds: z.ZodOptional<z.ZodArray<z.ZodString>>;
29
+ labelIds: z.ZodOptional<z.ZodArray<z.ZodString>>;
30
+ milestoneId: z.ZodOptional<z.ZodString>;
31
+ }, z.core.$strip>;
32
+ export declare const DeleteWorkItemSchema: z.ZodObject<{
33
+ id: z.ZodString;
34
+ }, z.core.$strip>;
35
+ export type CreateWorkItemOptions = z.infer<typeof CreateWorkItemSchema>;
36
+ export type UpdateWorkItemOptions = z.infer<typeof UpdateWorkItemSchema>;
37
+ export type DeleteWorkItemOptions = z.infer<typeof DeleteWorkItemSchema>;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../../../src/entities/workitems/schema.ts"],"names":[],"mappings":";;;AAAA,6BAAwB;AACxB,uDAI2B;AA4Bd,QAAA,oBAAoB,GAAG,OAAC,CAAC,MAAM,CAAC;IAC3C,SAAS,EAAE,OAAC;SACT,MAAM,EAAE;SACR,QAAQ,CACP,mMAAmM,CACpM;IACH,KAAK,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,wBAAwB,CAAC;IACpD,YAAY,EAAE,wCAAsB;IACpC,WAAW,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,8BAA8B,CAAC;IAC3E,WAAW,EAAE,OAAC,CAAC,KAAK,CAAC,OAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,4BAA4B,CAAC;IAClF,QAAQ,EAAE,OAAC,CAAC,KAAK,CAAC,OAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,oBAAoB,CAAC;IACvE,WAAW,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,cAAc,CAAC;CAC5D,CAAC,CAAC;AAEU,QAAA,oBAAoB,GAAG,OAAC,CAAC,MAAM,CAAC;IAC3C,EAAE,EAAE,kCAAgB;IACpB,KAAK,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,6BAA6B,CAAC;IACpE,WAAW,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,mCAAmC,CAAC;IAChF,KAAK,EAAE,0CAAwB,CAAC,QAAQ,EAAE,CAAC,QAAQ,CACjD,+CAA+C,CAChD;IACD,WAAW,EAAE,OAAC,CAAC,KAAK,CAAC,OAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,4BAA4B,CAAC;IAClF,QAAQ,EAAE,OAAC,CAAC,KAAK,CAAC,OAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,oBAAoB,CAAC;IACvE,WAAW,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,cAAc,CAAC;CAC5D,CAAC,CAAC;AAEU,QAAA,oBAAoB,GAAG,OAAC,CAAC,MAAM,CAAC;IAC3C,EAAE,EAAE,kCAAgB;CACrB,CAAC,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DynamicWorkItemsQuery.js","sourceRoot":"","sources":["../../../src/graphql/DynamicWorkItemsQuery.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../../src/graphql/client.ts"],"names":[],"mappings":";;;AAAA,qCAAiD;AAEjD,gDAAiD;AACjD,0CAA+C;AAO/C,MAAa,aAAa;IACR,QAAQ,CAAS;IACzB,cAAc,CAAyB;IAE/C,YAAY,QAAgB,EAAE,OAA8C;QAC1E,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,cAAc,GAAG,OAAO,EAAE,OAAO,IAAI,EAAE,CAAC;IAC/C,CAAC;IAED,KAAK,CAAC,OAAO,CACX,QAAgD,EAChD,SAAsB,EACtB,cAAuC;QAEvC,MAAM,KAAK,GAAG,IAAA,eAAK,EAAC,QAAQ,CAAC,CAAC;QAG9B,MAAM,OAAO,GAA2B;YACtC,cAAc,EAAE,kBAAkB;YAClC,GAAG,6BAAe;YAClB,GAAG,IAAI,CAAC,cAAc;YACtB,GAAG,cAAc;SAClB,CAAC;QAEF,MAAM,QAAQ,GAAG,MAAM,IAAA,qBAAa,EAAC,IAAI,CAAC,QAAQ,EAAE;YAClD,MAAM,EAAE,MAAM;YACd,OAAO;YACP,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;gBACnB,KAAK;gBACL,SAAS,EAAE,SAAS,IAAI,EAAE;aAC3B,CAAC;SACH,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,2BAA2B,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC;QACvF,CAAC;QAED,MAAM,MAAM,GAA6B,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAA6B,CAAC;QAE7F,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;YAClB,MAAM,IAAI,KAAK,CAAC,mBAAmB,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACrF,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;QACtD,CAAC;QAED,OAAO,MAAM,CAAC,IAAI,CAAC;IACrB,CAAC;IAED,UAAU,CAAC,OAA+B;QACxC,IAAI,CAAC,cAAc,GAAG,EAAE,GAAG,IAAI,CAAC,cAAc,EAAE,GAAG,OAAO,EAAE,CAAC;IAC/D,CAAC;IAED,YAAY,CAAC,KAAa;QACxB,IAAI,CAAC,UAAU,CAAC,EAAE,aAAa,EAAE,UAAU,KAAK,EAAE,EAAE,CAAC,CAAC;IACxD,CAAC;CACF;AAzDD,sCAyDC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/graphql/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,mCAAyC;AAAhC,uGAAA,aAAa,OAAA;AACtB,8CAA4B"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workItems.js","sourceRoot":"","sources":["../../../src/graphql/workItems.ts"],"names":[],"mappings":"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"}
@@ -47,9 +47,11 @@ async function setupHandlers(server) {
47
47
  logger_1.logger.warn(`Initial connection failed during setup, will retry on first tool call: ${error instanceof Error ? error.message : String(error)}`);
48
48
  }
49
49
  server.setRequestHandler(types_js_1.ListToolsRequestSchema, async () => {
50
+ logger_1.logger.info("ListToolsRequest received");
50
51
  const { RegistryManager } = await Promise.resolve().then(() => __importStar(require("./registry-manager")));
51
52
  const registryManager = RegistryManager.getInstance();
52
53
  const tools = registryManager.getAllToolDefinitions();
54
+ logger_1.logger.info({ toolCount: tools.length }, "Returning tools list");
53
55
  function resolveRefs(schema, rootSchema) {
54
56
  if (!schema || typeof schema !== "object")
55
57
  return schema;
@@ -117,8 +119,13 @@ async function setupHandlers(server) {
117
119
  }
118
120
  logger_1.logger.info(`Tool called: ${request.params.name}`);
119
121
  const connectionManager = ConnectionManager_1.ConnectionManager.getInstance();
122
+ const { isOAuthEnabled } = await Promise.resolve().then(() => __importStar(require("./oauth/index")));
123
+ const oauthMode = isOAuthEnabled();
120
124
  try {
121
125
  connectionManager.getClient();
126
+ if (oauthMode) {
127
+ await connectionManager.ensureIntrospected();
128
+ }
122
129
  const instanceInfo = connectionManager.getInstanceInfo();
123
130
  logger_1.logger.info(`Connection verified: ${instanceInfo.version} ${instanceInfo.tier}`);
124
131
  }
@@ -127,6 +134,9 @@ async function setupHandlers(server) {
127
134
  try {
128
135
  await connectionManager.initialize();
129
136
  connectionManager.getClient();
137
+ if (oauthMode) {
138
+ await connectionManager.ensureIntrospected();
139
+ }
130
140
  const instanceInfo = connectionManager.getInstanceInfo();
131
141
  logger_1.logger.info(`Connection initialized: ${instanceInfo.version} ${instanceInfo.tier}`);
132
142
  }
@@ -143,6 +153,11 @@ async function setupHandlers(server) {
143
153
  throw new Error(`Tool '${toolName}' is not available or has been filtered out`);
144
154
  }
145
155
  logger_1.logger.info(`Executing tool: ${toolName}`);
156
+ const { isOAuthEnabled, getTokenContext } = await Promise.resolve().then(() => __importStar(require("./oauth/index")));
157
+ if (isOAuthEnabled()) {
158
+ const context = getTokenContext();
159
+ logger_1.logger.debug({ hasContext: !!context, hasToken: !!context?.gitlabToken, tool: toolName }, "OAuth context check before tool execution");
160
+ }
146
161
  const result = await registryManager.executeTool(toolName, request.params.arguments);
147
162
  return {
148
163
  content: [
@@ -0,0 +1 @@
1
+ {"version":3,"file":"handlers.js","sourceRoot":"","sources":["../../src/handlers.ts"],"names":[],"mappings":"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"}
@@ -1,13 +1,9 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.DEFAULT_HEADERS = void 0;
4
- const config_1 = require("./config");
5
4
  exports.DEFAULT_HEADERS = {
6
5
  "User-Agent": "GitLab MCP Server",
7
6
  "Content-Type": "application/json",
8
7
  Accept: "application/json",
9
8
  };
10
- if (config_1.GITLAB_TOKEN) {
11
- exports.DEFAULT_HEADERS.Authorization = `Bearer ${config_1.GITLAB_TOKEN}`;
12
- }
13
9
  //# sourceMappingURL=http-client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"http-client.js","sourceRoot":"","sources":["../../src/http-client.ts"],"names":[],"mappings":";;;AAGa,QAAA,eAAe,GAA2B;IACrD,YAAY,EAAE,mBAAmB;IACjC,cAAc,EAAE,kBAAkB;IAClC,MAAM,EAAE,kBAAkB;CAC3B,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/logger.ts"],"names":[],"mappings":";;;AAAA,+BAA4B;AAErB,MAAM,YAAY,GAAG,CAAC,IAAa,EAAE,EAAE;IAC5C,OAAO,IAAA,WAAI,EAAC;QACV,IAAI;QACJ,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC,SAAS,IAAI,MAAM;QACtC,SAAS,EAAE;YACT,MAAM,EAAE,aAAa;YACrB,OAAO,EAAE;gBACP,QAAQ,EAAE,IAAI;gBACd,aAAa,EAAE,IAAI;gBACnB,MAAM,EAAE,cAAc;aACvB;SACF;KACF,CAAC,CAAC;AACL,CAAC,CAAC;AAbW,QAAA,YAAY,gBAavB;AAEW,QAAA,MAAM,GAAG,IAAA,oBAAY,EAAC,YAAY,CAAC,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"main.js","sourceRoot":"","sources":["../../src/main.ts"],"names":[],"mappings":";;;AAEA,qCAAuC;AACvC,qCAAkC;AAGlC,IAAA,oBAAW,GAAE,CAAC,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE;IACrC,eAAM,CAAC,KAAK,CAAC,sCAAsC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IACpE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { oauthAuthMiddleware, createOAuthMiddleware, optionalOAuthMiddleware } from "./oauth-auth";
2
+ export { rateLimiterMiddleware, stopCleanup as stopRateLimitCleanup, getRateLimitStats, } from "./rate-limiter";
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getRateLimitStats = exports.stopRateLimitCleanup = exports.rateLimiterMiddleware = exports.optionalOAuthMiddleware = exports.createOAuthMiddleware = exports.oauthAuthMiddleware = void 0;
4
+ var oauth_auth_1 = require("./oauth-auth");
5
+ Object.defineProperty(exports, "oauthAuthMiddleware", { enumerable: true, get: function () { return oauth_auth_1.oauthAuthMiddleware; } });
6
+ Object.defineProperty(exports, "createOAuthMiddleware", { enumerable: true, get: function () { return oauth_auth_1.createOAuthMiddleware; } });
7
+ Object.defineProperty(exports, "optionalOAuthMiddleware", { enumerable: true, get: function () { return oauth_auth_1.optionalOAuthMiddleware; } });
8
+ var rate_limiter_1 = require("./rate-limiter");
9
+ Object.defineProperty(exports, "rateLimiterMiddleware", { enumerable: true, get: function () { return rate_limiter_1.rateLimiterMiddleware; } });
10
+ Object.defineProperty(exports, "stopRateLimitCleanup", { enumerable: true, get: function () { return rate_limiter_1.stopCleanup; } });
11
+ Object.defineProperty(exports, "getRateLimitStats", { enumerable: true, get: function () { return rate_limiter_1.getRateLimitStats; } });
12
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/middleware/index.ts"],"names":[],"mappings":";;;AAMA,2CAAmG;AAA1F,iHAAA,mBAAmB,OAAA;AAAE,mHAAA,qBAAqB,OAAA;AAAE,qHAAA,uBAAuB,OAAA;AAC5E,+CAIwB;AAHtB,qHAAA,qBAAqB,OAAA;AACrB,oHAAA,WAAW,OAAwB;AACnC,iHAAA,iBAAiB,OAAA"}
@@ -0,0 +1,4 @@
1
+ import { Request, Response, NextFunction } from "express";
2
+ export declare function oauthAuthMiddleware(req: Request, res: Response, next: NextFunction): Promise<void>;
3
+ export declare function createOAuthMiddleware(): typeof oauthAuthMiddleware;
4
+ export declare function optionalOAuthMiddleware(req: Request, res: Response, next: NextFunction): Promise<void>;
@@ -0,0 +1,119 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.oauthAuthMiddleware = oauthAuthMiddleware;
4
+ exports.createOAuthMiddleware = createOAuthMiddleware;
5
+ exports.optionalOAuthMiddleware = optionalOAuthMiddleware;
6
+ const config_1 = require("../oauth/config");
7
+ const session_store_1 = require("../oauth/session-store");
8
+ const token_utils_1 = require("../oauth/token-utils");
9
+ const gitlab_device_flow_1 = require("../oauth/gitlab-device-flow");
10
+ const metadata_1 = require("../oauth/endpoints/metadata");
11
+ const logger_1 = require("../logger");
12
+ async function oauthAuthMiddleware(req, res, next) {
13
+ const config = (0, config_1.loadOAuthConfig)();
14
+ if (!config) {
15
+ sendUnauthorized(req, res, "server_error", "OAuth not configured");
16
+ return;
17
+ }
18
+ const authHeader = req.headers.authorization;
19
+ if (!authHeader) {
20
+ sendUnauthorized(req, res, "unauthorized", "Missing Authorization header");
21
+ return;
22
+ }
23
+ if (!authHeader.startsWith("Bearer ")) {
24
+ sendUnauthorized(req, res, "unauthorized", "Invalid Authorization header format. Expected: Bearer <token>");
25
+ return;
26
+ }
27
+ const token = authHeader.slice(7);
28
+ if (!token) {
29
+ sendUnauthorized(req, res, "unauthorized", "Empty Bearer token");
30
+ return;
31
+ }
32
+ const payload = (0, token_utils_1.verifyMCPToken)(token, config.sessionSecret);
33
+ if (!payload) {
34
+ sendUnauthorized(req, res, "invalid_token", "Token is invalid or expired");
35
+ return;
36
+ }
37
+ const sessionId = payload.sid;
38
+ const session = session_store_1.sessionStore.getSession(sessionId);
39
+ if (!session) {
40
+ sendUnauthorized(req, res, "invalid_token", "Session not found or expired");
41
+ return;
42
+ }
43
+ if (session.mcpAccessToken !== token) {
44
+ sendUnauthorized(req, res, "invalid_token", "Token has been superseded");
45
+ return;
46
+ }
47
+ if ((0, token_utils_1.isTokenExpiringSoon)(session.gitlabTokenExpiry)) {
48
+ try {
49
+ const newTokens = await (0, gitlab_device_flow_1.refreshGitLabToken)(session.gitlabRefreshToken, config);
50
+ session_store_1.sessionStore.updateSession(sessionId, {
51
+ gitlabAccessToken: newTokens.access_token,
52
+ gitlabRefreshToken: newTokens.refresh_token,
53
+ gitlabTokenExpiry: (0, token_utils_1.calculateTokenExpiry)(newTokens.expires_in),
54
+ });
55
+ logger_1.logger.debug({ sessionId: sessionId.substring(0, 8) + "..." }, "GitLab token refreshed during request");
56
+ }
57
+ catch (error) {
58
+ logger_1.logger.error({ err: error }, "Failed to refresh GitLab token during request");
59
+ sendUnauthorized(req, res, "invalid_token", "GitLab token refresh failed. Please re-authenticate.");
60
+ return;
61
+ }
62
+ }
63
+ const updatedSession = session_store_1.sessionStore.getSession(sessionId);
64
+ if (!updatedSession) {
65
+ sendUnauthorized(req, res, "invalid_token", "Session lost during token refresh");
66
+ return;
67
+ }
68
+ res.locals.oauthSessionId = updatedSession.id;
69
+ res.locals.gitlabToken = updatedSession.gitlabAccessToken;
70
+ res.locals.gitlabUserId = updatedSession.gitlabUserId;
71
+ res.locals.gitlabUsername = updatedSession.gitlabUsername;
72
+ logger_1.logger.debug({ sessionId: updatedSession.id.substring(0, 8) + "...", method: req.method, path: req.path }, "OAuth session validated, passing to route handler");
73
+ next();
74
+ }
75
+ function createOAuthMiddleware() {
76
+ return oauthAuthMiddleware;
77
+ }
78
+ async function optionalOAuthMiddleware(req, res, next) {
79
+ const config = (0, config_1.loadOAuthConfig)();
80
+ if (!config) {
81
+ next();
82
+ return;
83
+ }
84
+ const authHeader = req.headers.authorization;
85
+ if (!authHeader?.startsWith("Bearer ")) {
86
+ next();
87
+ return;
88
+ }
89
+ const token = authHeader.slice(7);
90
+ if (!token) {
91
+ next();
92
+ return;
93
+ }
94
+ const payload = (0, token_utils_1.verifyMCPToken)(token, config.sessionSecret);
95
+ if (!payload) {
96
+ next();
97
+ return;
98
+ }
99
+ const session = session_store_1.sessionStore.getSession(payload.sid);
100
+ if (session?.mcpAccessToken !== token) {
101
+ next();
102
+ return;
103
+ }
104
+ res.locals.oauthSessionId = session.id;
105
+ res.locals.gitlabToken = session.gitlabAccessToken;
106
+ res.locals.gitlabUserId = session.gitlabUserId;
107
+ res.locals.gitlabUsername = session.gitlabUsername;
108
+ next();
109
+ }
110
+ function sendUnauthorized(req, res, error, description) {
111
+ const response = {
112
+ error,
113
+ error_description: description,
114
+ };
115
+ const baseUrl = (0, metadata_1.getBaseUrl)(req);
116
+ res.setHeader("WWW-Authenticate", `Bearer realm="gitlab-mcp", resource_metadata="${baseUrl}/.well-known/oauth-protected-resource"`);
117
+ res.status(401).json(response);
118
+ }
119
+ //# sourceMappingURL=oauth-auth.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"oauth-auth.js","sourceRoot":"","sources":["../../../src/middleware/oauth-auth.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import { RequestHandler } from "express";
2
+ export declare function stopCleanup(): void;
3
+ export declare function rateLimiterMiddleware(): RequestHandler;
4
+ export declare function getRateLimitStats(): {
5
+ totalEntries: number;
6
+ entries: Array<{
7
+ key: string;
8
+ count: number;
9
+ resetAt: Date;
10
+ }>;
11
+ };
@@ -0,0 +1,145 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.stopCleanup = stopCleanup;
4
+ exports.rateLimiterMiddleware = rateLimiterMiddleware;
5
+ exports.getRateLimitStats = getRateLimitStats;
6
+ const config_1 = require("../config");
7
+ const logger_1 = require("../logger");
8
+ const rateLimitStore = new Map();
9
+ const CLEANUP_INTERVAL_MS = 60000;
10
+ let cleanupInterval = null;
11
+ function startCleanup() {
12
+ if (cleanupInterval)
13
+ return;
14
+ cleanupInterval = setInterval(() => {
15
+ const now = Date.now();
16
+ let cleaned = 0;
17
+ for (const [key, entry] of rateLimitStore.entries()) {
18
+ if (entry.resetAt <= now) {
19
+ rateLimitStore.delete(key);
20
+ cleaned++;
21
+ }
22
+ }
23
+ if (cleaned > 0) {
24
+ logger_1.logger.debug(`Rate limiter cleanup: removed ${cleaned} expired entries`);
25
+ }
26
+ }, CLEANUP_INTERVAL_MS);
27
+ cleanupInterval.unref();
28
+ }
29
+ function stopCleanup() {
30
+ if (cleanupInterval) {
31
+ clearInterval(cleanupInterval);
32
+ cleanupInterval = null;
33
+ }
34
+ }
35
+ function getIpAddress(req) {
36
+ return req.ip ?? req.socket.remoteAddress ?? "unknown";
37
+ }
38
+ function isAuthenticated(req, res) {
39
+ const oauthSessionId = res.locals.oauthSessionId;
40
+ if (oauthSessionId) {
41
+ return true;
42
+ }
43
+ const mcpSessionId = req.headers["mcp-session-id"];
44
+ if (mcpSessionId) {
45
+ return true;
46
+ }
47
+ return false;
48
+ }
49
+ function checkRateLimit(key, windowMs, maxRequests) {
50
+ const now = Date.now();
51
+ let entry = rateLimitStore.get(key);
52
+ if (!entry || entry.resetAt <= now) {
53
+ entry = {
54
+ count: 0,
55
+ resetAt: now + windowMs,
56
+ };
57
+ rateLimitStore.set(key, entry);
58
+ }
59
+ const allowed = entry.count < maxRequests;
60
+ if (allowed) {
61
+ entry.count++;
62
+ }
63
+ return {
64
+ allowed,
65
+ remaining: Math.max(0, maxRequests - entry.count),
66
+ resetAt: entry.resetAt,
67
+ total: maxRequests,
68
+ };
69
+ }
70
+ function setRateLimitHeaders(res, info) {
71
+ res.set("X-RateLimit-Limit", info.total.toString());
72
+ res.set("X-RateLimit-Remaining", info.remaining.toString());
73
+ res.set("X-RateLimit-Reset", Math.ceil(info.resetAt / 1000).toString());
74
+ }
75
+ function rateLimiterMiddleware() {
76
+ startCleanup();
77
+ return (req, res, next) => {
78
+ if (req.path === "/health") {
79
+ next();
80
+ return;
81
+ }
82
+ const authenticated = isAuthenticated(req, res);
83
+ if (authenticated) {
84
+ if (!config_1.RATE_LIMIT_SESSION_ENABLED) {
85
+ next();
86
+ return;
87
+ }
88
+ const sessionId = res.locals.oauthSessionId || req.headers["mcp-session-id"];
89
+ const key = `session:${sessionId}`;
90
+ const info = checkRateLimit(key, config_1.RATE_LIMIT_SESSION_WINDOW_MS, config_1.RATE_LIMIT_SESSION_MAX_REQUESTS);
91
+ setRateLimitHeaders(res, info);
92
+ if (!info.allowed) {
93
+ const retryAfter = Math.ceil((info.resetAt - Date.now()) / 1000);
94
+ logger_1.logger.warn(`Session rate limit exceeded for ${sessionId}`);
95
+ res.set("Retry-After", retryAfter.toString());
96
+ res.status(429).json({
97
+ error: "Too Many Requests",
98
+ message: "Session rate limit exceeded. Please slow down your requests.",
99
+ retryAfter,
100
+ limit: info.total,
101
+ remaining: info.remaining,
102
+ resetAt: new Date(info.resetAt).toISOString(),
103
+ });
104
+ return;
105
+ }
106
+ next();
107
+ return;
108
+ }
109
+ if (!config_1.RATE_LIMIT_IP_ENABLED) {
110
+ next();
111
+ return;
112
+ }
113
+ const ip = getIpAddress(req);
114
+ const key = `ip:${ip}`;
115
+ const info = checkRateLimit(key, config_1.RATE_LIMIT_IP_WINDOW_MS, config_1.RATE_LIMIT_IP_MAX_REQUESTS);
116
+ setRateLimitHeaders(res, info);
117
+ if (!info.allowed) {
118
+ const retryAfter = Math.ceil((info.resetAt - Date.now()) / 1000);
119
+ logger_1.logger.warn(`IP rate limit exceeded for ${ip}`);
120
+ res.set("Retry-After", retryAfter.toString());
121
+ res.status(429).json({
122
+ error: "Too Many Requests",
123
+ message: "Rate limit exceeded. Please authenticate or slow down your requests.",
124
+ retryAfter,
125
+ limit: info.total,
126
+ remaining: info.remaining,
127
+ resetAt: new Date(info.resetAt).toISOString(),
128
+ });
129
+ return;
130
+ }
131
+ next();
132
+ };
133
+ }
134
+ function getRateLimitStats() {
135
+ const entries = Array.from(rateLimitStore.entries()).map(([key, entry]) => ({
136
+ key,
137
+ count: entry.count,
138
+ resetAt: new Date(entry.resetAt),
139
+ }));
140
+ return {
141
+ totalEntries: rateLimitStore.size,
142
+ entries,
143
+ };
144
+ }
145
+ //# sourceMappingURL=rate-limiter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rate-limiter.js","sourceRoot":"","sources":["../../../src/middleware/rate-limiter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ import { z } from "zod";
2
+ declare const OAuthConfigSchema: z.ZodObject<{
3
+ enabled: z.ZodLiteral<true>;
4
+ sessionSecret: z.ZodString;
5
+ gitlabClientId: z.ZodString;
6
+ gitlabClientSecret: z.ZodOptional<z.ZodString>;
7
+ gitlabScopes: z.ZodDefault<z.ZodString>;
8
+ tokenTtl: z.ZodDefault<z.ZodNumber>;
9
+ refreshTokenTtl: z.ZodDefault<z.ZodNumber>;
10
+ devicePollInterval: z.ZodDefault<z.ZodNumber>;
11
+ deviceTimeout: z.ZodDefault<z.ZodNumber>;
12
+ }, z.core.$strip>;
13
+ export type OAuthConfig = z.infer<typeof OAuthConfigSchema>;
14
+ export declare function loadOAuthConfig(): OAuthConfig | null;
15
+ export declare function validateStaticConfig(): void;
16
+ export declare function isOAuthEnabled(): boolean;
17
+ export declare function resetOAuthConfigCache(): void;
18
+ export declare function getAuthModeDescription(): string;
19
+ export {};