@structured-world/gitlab-mcp 6.62.1 → 7.0.1

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 (435) hide show
  1. package/README.md +22 -1
  2. package/README.md.in +21 -0
  3. package/dist/generated/prisma/client.js.map +1 -1
  4. package/dist/generated/prisma/internal/class.js +2 -2
  5. package/dist/generated/prisma/internal/class.js.map +1 -1
  6. package/dist/generated/prisma/internal/prismaNamespace.js +2 -2
  7. package/dist/generated/prisma/models/AuthCodeFlowState.d.ts +1 -2
  8. package/dist/generated/prisma/models/AuthorizationCode.d.ts +1 -2
  9. package/dist/generated/prisma/models/DeviceFlowState.d.ts +1 -2
  10. package/dist/generated/prisma/models/McpSessionMapping.d.ts +1 -2
  11. package/dist/generated/prisma/models/OAuthSession.d.ts +1 -2
  12. package/dist/src/cli/docker/container-runtime.d.ts +1 -1
  13. package/dist/src/cli/docker/container-runtime.js +14 -14
  14. package/dist/src/cli/docker/docker-command.d.ts +1 -1
  15. package/dist/src/cli/docker/docker-command.js +113 -113
  16. package/dist/src/cli/docker/docker-command.js.map +1 -1
  17. package/dist/src/cli/docker/docker-utils.d.ts +3 -3
  18. package/dist/src/cli/docker/docker-utils.js +74 -74
  19. package/dist/src/cli/docker/docker-utils.js.map +1 -1
  20. package/dist/src/cli/docker/index.d.ts +4 -4
  21. package/dist/src/cli/docker/types.d.ts +3 -3
  22. package/dist/src/cli/docker/types.js +5 -5
  23. package/dist/src/cli/init/browser.js +2 -2
  24. package/dist/src/cli/init/config-generator.d.ts +2 -2
  25. package/dist/src/cli/init/config-generator.js +22 -22
  26. package/dist/src/cli/init/connection.d.ts +1 -1
  27. package/dist/src/cli/init/connection.js +27 -27
  28. package/dist/src/cli/init/connection.js.map +1 -1
  29. package/dist/src/cli/init/index.d.ts +4 -4
  30. package/dist/src/cli/init/types.d.ts +3 -3
  31. package/dist/src/cli/init/types.js +36 -36
  32. package/dist/src/cli/init/wizard.js +80 -80
  33. package/dist/src/cli/init/wizard.js.map +1 -1
  34. package/dist/src/cli/inject-tool-refs.js +47 -47
  35. package/dist/src/cli/inject-tool-refs.js.map +1 -1
  36. package/dist/src/cli/install/backup.d.ts +1 -1
  37. package/dist/src/cli/install/backup.js +3 -3
  38. package/dist/src/cli/install/detector.d.ts +2 -2
  39. package/dist/src/cli/install/detector.js +18 -18
  40. package/dist/src/cli/install/detector.js.map +1 -1
  41. package/dist/src/cli/install/index.d.ts +5 -5
  42. package/dist/src/cli/install/install-command.d.ts +2 -2
  43. package/dist/src/cli/install/install-command.js +68 -68
  44. package/dist/src/cli/install/install-command.js.map +1 -1
  45. package/dist/src/cli/install/installers.d.ts +2 -2
  46. package/dist/src/cli/install/installers.js +55 -55
  47. package/dist/src/cli/install/installers.js.map +1 -1
  48. package/dist/src/cli/install/types.d.ts +4 -4
  49. package/dist/src/cli/install/types.js +48 -48
  50. package/dist/src/cli/instances/index.d.ts +2 -2
  51. package/dist/src/cli/instances/instances-command.d.ts +1 -1
  52. package/dist/src/cli/instances/instances-command.js +70 -66
  53. package/dist/src/cli/instances/instances-command.js.map +1 -1
  54. package/dist/src/cli/list-tools.js +396 -396
  55. package/dist/src/cli/list-tools.js.map +1 -1
  56. package/dist/src/cli/setup/discovery.d.ts +1 -1
  57. package/dist/src/cli/setup/discovery.js +10 -10
  58. package/dist/src/cli/setup/discovery.js.map +1 -1
  59. package/dist/src/cli/setup/flows/configure-existing.d.ts +1 -1
  60. package/dist/src/cli/setup/flows/configure-existing.js +57 -57
  61. package/dist/src/cli/setup/flows/configure-existing.js.map +1 -1
  62. package/dist/src/cli/setup/flows/local-setup.d.ts +1 -1
  63. package/dist/src/cli/setup/flows/local-setup.js +51 -51
  64. package/dist/src/cli/setup/flows/local-setup.js.map +1 -1
  65. package/dist/src/cli/setup/flows/server-setup.d.ts +1 -1
  66. package/dist/src/cli/setup/flows/server-setup.js +50 -50
  67. package/dist/src/cli/setup/flows/server-setup.js.map +1 -1
  68. package/dist/src/cli/setup/flows/tool-selection.d.ts +1 -1
  69. package/dist/src/cli/setup/flows/tool-selection.js +94 -94
  70. package/dist/src/cli/setup/flows/tool-selection.js.map +1 -1
  71. package/dist/src/cli/setup/index.d.ts +4 -4
  72. package/dist/src/cli/setup/presets.d.ts +1 -1
  73. package/dist/src/cli/setup/presets.js +157 -157
  74. package/dist/src/cli/setup/presets.js.map +1 -1
  75. package/dist/src/cli/setup/types.d.ts +7 -7
  76. package/dist/src/cli/setup/wizard.d.ts +1 -1
  77. package/dist/src/cli/setup/wizard.js +25 -25
  78. package/dist/src/cli/utils/index.d.ts +1 -1
  79. package/dist/src/cli/utils/path-utils.js +3 -3
  80. package/dist/src/cli-utils.d.ts +2 -2
  81. package/dist/src/cli-utils.js +46 -46
  82. package/dist/src/config/index.d.ts +4 -4
  83. package/dist/src/config/instances-loader.d.ts +3 -3
  84. package/dist/src/config/instances-loader.js +53 -53
  85. package/dist/src/config/instances-loader.js.map +1 -1
  86. package/dist/src/config/instances-schema.d.ts +1 -1
  87. package/dist/src/config/instances-schema.js +33 -33
  88. package/dist/src/config/instances-schema.js.map +1 -1
  89. package/dist/src/config.d.ts +11 -4
  90. package/dist/src/config.js +112 -111
  91. package/dist/src/config.js.map +1 -1
  92. package/dist/src/dashboard/handler.d.ts +2 -2
  93. package/dist/src/dashboard/handler.js +7 -7
  94. package/dist/src/dashboard/html-template.d.ts +1 -1
  95. package/dist/src/dashboard/html-template.js +44 -44
  96. package/dist/src/dashboard/html-template.js.map +1 -1
  97. package/dist/src/dashboard/index.d.ts +4 -4
  98. package/dist/src/dashboard/metrics.d.ts +3 -3
  99. package/dist/src/dashboard/metrics.js +42 -42
  100. package/dist/src/discovery/auto.d.ts +3 -3
  101. package/dist/src/discovery/auto.js +28 -28
  102. package/dist/src/discovery/git-remote.d.ts +2 -2
  103. package/dist/src/discovery/git-remote.js +18 -18
  104. package/dist/src/discovery/index.d.ts +3 -3
  105. package/dist/src/discovery/profile-matcher.d.ts +2 -2
  106. package/dist/src/discovery/profile-matcher.js +8 -8
  107. package/dist/src/discovery/profile-matcher.js.map +1 -1
  108. package/dist/src/entities/context/context-manager.d.ts +3 -3
  109. package/dist/src/entities/context/context-manager.js +34 -34
  110. package/dist/src/entities/context/context-manager.js.map +1 -1
  111. package/dist/src/entities/context/handlers.d.ts +2 -2
  112. package/dist/src/entities/context/handlers.js +8 -8
  113. package/dist/src/entities/context/index.d.ts +8 -8
  114. package/dist/src/entities/context/index.js +1 -1
  115. package/dist/src/entities/context/registry.d.ts +1 -1
  116. package/dist/src/entities/context/registry.js +4 -4
  117. package/dist/src/entities/context/schema.d.ts +1 -1
  118. package/dist/src/entities/context/schema.js +19 -19
  119. package/dist/src/entities/context/types.d.ts +9 -9
  120. package/dist/src/entities/context/whoami.d.ts +1 -1
  121. package/dist/src/entities/context/whoami.js +31 -31
  122. package/dist/src/entities/context/whoami.js.map +1 -1
  123. package/dist/src/entities/core/index.d.ts +5 -5
  124. package/dist/src/entities/core/index.js +1 -1
  125. package/dist/src/entities/core/registry.d.ts +1 -1
  126. package/dist/src/entities/core/registry.js +194 -194
  127. package/dist/src/entities/core/registry.js.map +1 -1
  128. package/dist/src/entities/core/schema-readonly.d.ts +1 -1
  129. package/dist/src/entities/core/schema-readonly.js +117 -117
  130. package/dist/src/entities/core/schema.d.ts +1 -1
  131. package/dist/src/entities/core/schema.js +67 -67
  132. package/dist/src/entities/files/index.d.ts +5 -5
  133. package/dist/src/entities/files/index.js +1 -1
  134. package/dist/src/entities/files/registry.d.ts +1 -1
  135. package/dist/src/entities/files/registry.js +45 -45
  136. package/dist/src/entities/files/registry.js.map +1 -1
  137. package/dist/src/entities/files/schema-readonly.d.ts +1 -1
  138. package/dist/src/entities/files/schema-readonly.js +13 -13
  139. package/dist/src/entities/files/schema.d.ts +1 -1
  140. package/dist/src/entities/files/schema.js +29 -29
  141. package/dist/src/entities/index.d.ts +17 -17
  142. package/dist/src/entities/integrations/index.d.ts +4 -4
  143. package/dist/src/entities/integrations/registry.d.ts +1 -1
  144. package/dist/src/entities/integrations/registry.js +17 -17
  145. package/dist/src/entities/integrations/registry.js.map +1 -1
  146. package/dist/src/entities/integrations/schema-readonly.d.ts +1 -1
  147. package/dist/src/entities/integrations/schema-readonly.js +5 -5
  148. package/dist/src/entities/integrations/schema.d.ts +1 -1
  149. package/dist/src/entities/integrations/schema.js +69 -69
  150. package/dist/src/entities/iterations/index.d.ts +2 -2
  151. package/dist/src/entities/iterations/registry.d.ts +1 -1
  152. package/dist/src/entities/iterations/registry.js +13 -13
  153. package/dist/src/entities/iterations/registry.js.map +1 -1
  154. package/dist/src/entities/iterations/schema-readonly.d.ts +1 -1
  155. package/dist/src/entities/iterations/schema-readonly.js +9 -9
  156. package/dist/src/entities/labels/index.d.ts +5 -5
  157. package/dist/src/entities/labels/index.js +1 -1
  158. package/dist/src/entities/labels/registry.d.ts +1 -1
  159. package/dist/src/entities/labels/registry.js +19 -19
  160. package/dist/src/entities/labels/registry.js.map +1 -1
  161. package/dist/src/entities/labels/schema-readonly.d.ts +1 -1
  162. package/dist/src/entities/labels/schema-readonly.js +8 -8
  163. package/dist/src/entities/labels/schema.d.ts +1 -1
  164. package/dist/src/entities/labels/schema.js +11 -11
  165. package/dist/src/entities/members/index.d.ts +3 -3
  166. package/dist/src/entities/members/registry.d.ts +1 -1
  167. package/dist/src/entities/members/registry.js +26 -26
  168. package/dist/src/entities/members/registry.js.map +1 -1
  169. package/dist/src/entities/members/schema-readonly.d.ts +1 -1
  170. package/dist/src/entities/members/schema-readonly.js +32 -32
  171. package/dist/src/entities/members/schema-readonly.js.map +1 -1
  172. package/dist/src/entities/members/schema.d.ts +1 -1
  173. package/dist/src/entities/members/schema.js +28 -28
  174. package/dist/src/entities/milestones/index.d.ts +5 -5
  175. package/dist/src/entities/milestones/index.js +1 -1
  176. package/dist/src/entities/milestones/registry.d.ts +1 -1
  177. package/dist/src/entities/milestones/registry.js +25 -25
  178. package/dist/src/entities/milestones/registry.js.map +1 -1
  179. package/dist/src/entities/milestones/schema-readonly.d.ts +2 -2
  180. package/dist/src/entities/milestones/schema-readonly.js +15 -15
  181. package/dist/src/entities/milestones/schema.d.ts +1 -1
  182. package/dist/src/entities/milestones/schema.js +16 -16
  183. package/dist/src/entities/milestones/schema.js.map +1 -1
  184. package/dist/src/entities/mrs/index.d.ts +5 -5
  185. package/dist/src/entities/mrs/index.js +1 -1
  186. package/dist/src/entities/mrs/registry.d.ts +1 -1
  187. package/dist/src/entities/mrs/registry.js +102 -102
  188. package/dist/src/entities/mrs/registry.js.map +1 -1
  189. package/dist/src/entities/mrs/schema-readonly.d.ts +1 -1
  190. package/dist/src/entities/mrs/schema-readonly.js +126 -126
  191. package/dist/src/entities/mrs/schema-readonly.js.map +1 -1
  192. package/dist/src/entities/mrs/schema.d.ts +1 -1
  193. package/dist/src/entities/mrs/schema.js +111 -111
  194. package/dist/src/entities/mrs/schema.js.map +1 -1
  195. package/dist/src/entities/pipelines/index.d.ts +5 -5
  196. package/dist/src/entities/pipelines/index.js +1 -1
  197. package/dist/src/entities/pipelines/registry.d.ts +1 -1
  198. package/dist/src/entities/pipelines/registry.js +45 -45
  199. package/dist/src/entities/pipelines/registry.js.map +1 -1
  200. package/dist/src/entities/pipelines/schema-readonly.d.ts +2 -2
  201. package/dist/src/entities/pipelines/schema-readonly.js +73 -73
  202. package/dist/src/entities/pipelines/schema.d.ts +1 -1
  203. package/dist/src/entities/pipelines/schema.js +21 -21
  204. package/dist/src/entities/refs/index.d.ts +3 -3
  205. package/dist/src/entities/refs/registry.d.ts +1 -1
  206. package/dist/src/entities/refs/registry.js +31 -31
  207. package/dist/src/entities/refs/registry.js.map +1 -1
  208. package/dist/src/entities/refs/schema-readonly.d.ts +1 -1
  209. package/dist/src/entities/refs/schema-readonly.js +21 -21
  210. package/dist/src/entities/refs/schema.d.ts +1 -1
  211. package/dist/src/entities/refs/schema.js +56 -56
  212. package/dist/src/entities/releases/index.d.ts +3 -3
  213. package/dist/src/entities/releases/registry.d.ts +1 -1
  214. package/dist/src/entities/releases/registry.js +21 -21
  215. package/dist/src/entities/releases/registry.js.map +1 -1
  216. package/dist/src/entities/releases/schema-readonly.d.ts +1 -1
  217. package/dist/src/entities/releases/schema-readonly.js +13 -13
  218. package/dist/src/entities/releases/schema.d.ts +1 -1
  219. package/dist/src/entities/releases/schema.js +21 -21
  220. package/dist/src/entities/search/index.d.ts +2 -2
  221. package/dist/src/entities/search/registry.d.ts +1 -1
  222. package/dist/src/entities/search/registry.js +13 -13
  223. package/dist/src/entities/search/schema-readonly.d.ts +1 -1
  224. package/dist/src/entities/search/schema-readonly.js +23 -23
  225. package/dist/src/entities/shared.d.ts +1 -1
  226. package/dist/src/entities/shared.js +5 -5
  227. package/dist/src/entities/snippets/index.d.ts +5 -5
  228. package/dist/src/entities/snippets/index.js +1 -1
  229. package/dist/src/entities/snippets/registry.d.ts +1 -1
  230. package/dist/src/entities/snippets/registry.js +24 -24
  231. package/dist/src/entities/snippets/registry.js.map +1 -1
  232. package/dist/src/entities/snippets/schema-readonly.d.ts +1 -1
  233. package/dist/src/entities/snippets/schema-readonly.js +11 -11
  234. package/dist/src/entities/snippets/schema.d.ts +1 -1
  235. package/dist/src/entities/snippets/schema.js +27 -27
  236. package/dist/src/entities/snippets/schema.js.map +1 -1
  237. package/dist/src/entities/utils.d.ts +2 -2
  238. package/dist/src/entities/utils.js +8 -8
  239. package/dist/src/entities/utils.js.map +1 -1
  240. package/dist/src/entities/variables/index.d.ts +5 -5
  241. package/dist/src/entities/variables/index.js +1 -1
  242. package/dist/src/entities/variables/registry.d.ts +1 -1
  243. package/dist/src/entities/variables/registry.js +22 -22
  244. package/dist/src/entities/variables/registry.js.map +1 -1
  245. package/dist/src/entities/variables/schema-readonly.d.ts +1 -1
  246. package/dist/src/entities/variables/schema-readonly.js +6 -6
  247. package/dist/src/entities/variables/schema.d.ts +1 -1
  248. package/dist/src/entities/variables/schema.js +21 -21
  249. package/dist/src/entities/variables/schema.js.map +1 -1
  250. package/dist/src/entities/webhooks/index.d.ts +4 -4
  251. package/dist/src/entities/webhooks/registry.d.ts +1 -1
  252. package/dist/src/entities/webhooks/registry.js +29 -29
  253. package/dist/src/entities/webhooks/registry.js.map +1 -1
  254. package/dist/src/entities/webhooks/schema-readonly.d.ts +1 -1
  255. package/dist/src/entities/webhooks/schema-readonly.js +9 -9
  256. package/dist/src/entities/webhooks/schema.d.ts +1 -1
  257. package/dist/src/entities/webhooks/schema.js +59 -59
  258. package/dist/src/entities/wiki/index.d.ts +5 -5
  259. package/dist/src/entities/wiki/index.js +1 -1
  260. package/dist/src/entities/wiki/registry.d.ts +1 -1
  261. package/dist/src/entities/wiki/registry.js +19 -19
  262. package/dist/src/entities/wiki/registry.js.map +1 -1
  263. package/dist/src/entities/wiki/schema-readonly.d.ts +1 -1
  264. package/dist/src/entities/wiki/schema-readonly.js +6 -6
  265. package/dist/src/entities/wiki/schema.d.ts +1 -1
  266. package/dist/src/entities/wiki/schema.js +12 -12
  267. package/dist/src/entities/workitems/index.d.ts +5 -5
  268. package/dist/src/entities/workitems/index.js +1 -1
  269. package/dist/src/entities/workitems/registry.d.ts +1 -1
  270. package/dist/src/entities/workitems/registry.js +101 -101
  271. package/dist/src/entities/workitems/registry.js.map +1 -1
  272. package/dist/src/entities/workitems/schema-readonly.d.ts +1 -1
  273. package/dist/src/entities/workitems/schema-readonly.js +27 -27
  274. package/dist/src/entities/workitems/schema-readonly.js.map +1 -1
  275. package/dist/src/entities/workitems/schema.d.ts +1 -1
  276. package/dist/src/entities/workitems/schema.js +58 -58
  277. package/dist/src/graphql/DynamicWorkItemsQuery.d.ts +2 -2
  278. package/dist/src/graphql/DynamicWorkItemsQuery.js +47 -47
  279. package/dist/src/graphql/DynamicWorkItemsQuery.js.map +1 -1
  280. package/dist/src/graphql/client.d.ts +1 -1
  281. package/dist/src/graphql/client.js +4 -4
  282. package/dist/src/graphql/client.js.map +1 -1
  283. package/dist/src/graphql/index.d.ts +2 -2
  284. package/dist/src/graphql/workItems.d.ts +38 -38
  285. package/dist/src/graphql/workItems.js +30 -30
  286. package/dist/src/handlers.d.ts +2 -1
  287. package/dist/src/handlers.js +258 -86
  288. package/dist/src/handlers.js.map +1 -1
  289. package/dist/src/http-client.js +3 -3
  290. package/dist/src/logger.js +25 -25
  291. package/dist/src/logging/access-log.d.ts +2 -2
  292. package/dist/src/logging/access-log.js +25 -25
  293. package/dist/src/logging/connection-tracker.d.ts +1 -1
  294. package/dist/src/logging/connection-tracker.js +3 -3
  295. package/dist/src/logging/index.d.ts +5 -5
  296. package/dist/src/logging/request-tracker.d.ts +3 -3
  297. package/dist/src/logging/request-tracker.js +4 -4
  298. package/dist/src/logging/types.d.ts +3 -3
  299. package/dist/src/logging/types.js +1 -1
  300. package/dist/src/logging/types.js.map +1 -1
  301. package/dist/src/main.js +28 -28
  302. package/dist/src/middleware/index.d.ts +3 -2
  303. package/dist/src/middleware/index.js +3 -1
  304. package/dist/src/middleware/index.js.map +1 -1
  305. package/dist/src/middleware/oauth-auth.d.ts +1 -1
  306. package/dist/src/middleware/oauth-auth.js +17 -17
  307. package/dist/src/middleware/rate-limiter.d.ts +1 -1
  308. package/dist/src/middleware/rate-limiter.js +32 -32
  309. package/dist/src/middleware/response-write-timeout.d.ts +2 -0
  310. package/dist/src/middleware/response-write-timeout.js +62 -0
  311. package/dist/src/middleware/response-write-timeout.js.map +1 -0
  312. package/dist/src/oauth/config.d.ts +1 -1
  313. package/dist/src/oauth/config.js +18 -18
  314. package/dist/src/oauth/config.js.map +1 -1
  315. package/dist/src/oauth/endpoints/authorize.d.ts +1 -1
  316. package/dist/src/oauth/endpoints/authorize.js +32 -32
  317. package/dist/src/oauth/endpoints/callback.d.ts +1 -1
  318. package/dist/src/oauth/endpoints/callback.js +26 -26
  319. package/dist/src/oauth/endpoints/index.d.ts +5 -5
  320. package/dist/src/oauth/endpoints/metadata.d.ts +1 -1
  321. package/dist/src/oauth/endpoints/metadata.js +12 -12
  322. package/dist/src/oauth/endpoints/register.d.ts +1 -1
  323. package/dist/src/oauth/endpoints/register.js +9 -9
  324. package/dist/src/oauth/endpoints/token.d.ts +1 -1
  325. package/dist/src/oauth/endpoints/token.js +28 -28
  326. package/dist/src/oauth/gitlab-device-flow.d.ts +2 -2
  327. package/dist/src/oauth/gitlab-device-flow.js +73 -68
  328. package/dist/src/oauth/gitlab-device-flow.js.map +1 -1
  329. package/dist/src/oauth/index.d.ts +10 -10
  330. package/dist/src/oauth/session-store.d.ts +2 -2
  331. package/dist/src/oauth/session-store.js +40 -40
  332. package/dist/src/oauth/session-store.js.map +1 -1
  333. package/dist/src/oauth/storage/factory.d.ts +2 -2
  334. package/dist/src/oauth/storage/factory.js +16 -16
  335. package/dist/src/oauth/storage/file.d.ts +2 -2
  336. package/dist/src/oauth/storage/file.js +22 -22
  337. package/dist/src/oauth/storage/file.js.map +1 -1
  338. package/dist/src/oauth/storage/index.d.ts +5 -5
  339. package/dist/src/oauth/storage/memory.d.ts +2 -2
  340. package/dist/src/oauth/storage/memory.js +18 -18
  341. package/dist/src/oauth/storage/memory.js.map +1 -1
  342. package/dist/src/oauth/storage/postgresql.d.ts +2 -2
  343. package/dist/src/oauth/storage/postgresql.js +11 -11
  344. package/dist/src/oauth/storage/postgresql.js.map +1 -1
  345. package/dist/src/oauth/storage/types.d.ts +3 -3
  346. package/dist/src/oauth/token-context.d.ts +1 -1
  347. package/dist/src/oauth/token-context.js +1 -1
  348. package/dist/src/oauth/token-utils.d.ts +1 -1
  349. package/dist/src/oauth/token-utils.js +20 -20
  350. package/dist/src/oauth/types.d.ts +3 -3
  351. package/dist/src/profiles/applicator.d.ts +1 -1
  352. package/dist/src/profiles/applicator.js +48 -48
  353. package/dist/src/profiles/index.d.ts +5 -5
  354. package/dist/src/profiles/loader.d.ts +3 -3
  355. package/dist/src/profiles/loader.js +25 -25
  356. package/dist/src/profiles/loader.js.map +1 -1
  357. package/dist/src/profiles/project-loader.d.ts +1 -1
  358. package/dist/src/profiles/project-loader.js +23 -23
  359. package/dist/src/profiles/project-loader.js.map +1 -1
  360. package/dist/src/profiles/scope-enforcer.d.ts +2 -2
  361. package/dist/src/profiles/scope-enforcer.js +25 -25
  362. package/dist/src/profiles/scope-enforcer.js.map +1 -1
  363. package/dist/src/profiles/types.d.ts +2 -2
  364. package/dist/src/profiles/types.js +50 -48
  365. package/dist/src/profiles/types.js.map +1 -1
  366. package/dist/src/registry-manager.d.ts +19 -11
  367. package/dist/src/registry-manager.js +257 -172
  368. package/dist/src/registry-manager.js.map +1 -1
  369. package/dist/src/server.js +165 -149
  370. package/dist/src/server.js.map +1 -1
  371. package/dist/src/services/ConnectionManager.d.ts +33 -24
  372. package/dist/src/services/ConnectionManager.js +304 -179
  373. package/dist/src/services/ConnectionManager.js.map +1 -1
  374. package/dist/src/services/GitLabVersionDetector.d.ts +2 -2
  375. package/dist/src/services/GitLabVersionDetector.js +45 -45
  376. package/dist/src/services/GitLabVersionDetector.js.map +1 -1
  377. package/dist/src/services/HealthMonitor.d.ts +42 -0
  378. package/dist/src/services/HealthMonitor.js +544 -0
  379. package/dist/src/services/HealthMonitor.js.map +1 -0
  380. package/dist/src/services/InstanceConnectionPool.d.ts +2 -2
  381. package/dist/src/services/InstanceConnectionPool.js +13 -13
  382. package/dist/src/services/InstanceConnectionPool.js.map +1 -1
  383. package/dist/src/services/InstanceRateLimiter.js +6 -6
  384. package/dist/src/services/InstanceRateLimiter.js.map +1 -1
  385. package/dist/src/services/InstanceRegistry.d.ts +4 -5
  386. package/dist/src/services/InstanceRegistry.js +29 -41
  387. package/dist/src/services/InstanceRegistry.js.map +1 -1
  388. package/dist/src/services/NamespaceTierDetector.d.ts +2 -2
  389. package/dist/src/services/NamespaceTierDetector.js +30 -30
  390. package/dist/src/services/NamespaceTierDetector.js.map +1 -1
  391. package/dist/src/services/SchemaIntrospector.d.ts +2 -1
  392. package/dist/src/services/SchemaIntrospector.js +45 -42
  393. package/dist/src/services/SchemaIntrospector.js.map +1 -1
  394. package/dist/src/services/TokenScopeDetector.d.ts +4 -4
  395. package/dist/src/services/TokenScopeDetector.js +133 -110
  396. package/dist/src/services/TokenScopeDetector.js.map +1 -1
  397. package/dist/src/services/ToolAvailability.d.ts +15 -11
  398. package/dist/src/services/ToolAvailability.js +150 -130
  399. package/dist/src/services/ToolAvailability.js.map +1 -1
  400. package/dist/src/services/WidgetAvailability.d.ts +5 -5
  401. package/dist/src/services/WidgetAvailability.js +40 -39
  402. package/dist/src/services/WidgetAvailability.js.map +1 -1
  403. package/dist/src/session-manager.d.ts +3 -2
  404. package/dist/src/session-manager.js +17 -14
  405. package/dist/src/session-manager.js.map +1 -1
  406. package/dist/src/types.js +4 -4
  407. package/dist/src/utils/description-utils.js +4 -4
  408. package/dist/src/utils/description-utils.js.map +1 -1
  409. package/dist/src/utils/error-handler.d.ts +19 -10
  410. package/dist/src/utils/error-handler.js +272 -187
  411. package/dist/src/utils/error-handler.js.map +1 -1
  412. package/dist/src/utils/fetch.d.ts +7 -0
  413. package/dist/src/utils/fetch.js +136 -122
  414. package/dist/src/utils/fetch.js.map +1 -1
  415. package/dist/src/utils/gitlab-api.d.ts +1 -1
  416. package/dist/src/utils/gitlab-api.js +29 -26
  417. package/dist/src/utils/gitlab-api.js.map +1 -1
  418. package/dist/src/utils/idConversion.js +47 -47
  419. package/dist/src/utils/idConversion.js.map +1 -1
  420. package/dist/src/utils/namespace.d.ts +2 -2
  421. package/dist/src/utils/namespace.js +15 -15
  422. package/dist/src/utils/projectIdentifier.js +4 -4
  423. package/dist/src/utils/request-logger.d.ts +4 -4
  424. package/dist/src/utils/request-logger.js +5 -5
  425. package/dist/src/utils/schema-utils.js +24 -24
  426. package/dist/src/utils/schema-utils.js.map +1 -1
  427. package/dist/src/utils/smart-user-search.d.ts +1 -1
  428. package/dist/src/utils/smart-user-search.js +10 -10
  429. package/dist/src/utils/url.d.ts +1 -0
  430. package/dist/src/utils/url.js +38 -0
  431. package/dist/src/utils/url.js.map +1 -0
  432. package/dist/src/utils/version.js +1 -1
  433. package/dist/tsconfig.build.tsbuildinfo +1 -1
  434. package/package.json +22 -31
  435. package/dist/structured-world-gitlab-mcp-6.62.1.tgz +0 -0
@@ -11,25 +11,25 @@ async function callbackHandler(req, res) {
11
11
  const config = (0, config_1.loadOAuthConfig)();
12
12
  if (!config) {
13
13
  res.status(500).json({
14
- error: "server_error",
15
- error_description: "OAuth not configured",
14
+ error: 'server_error',
15
+ error_description: 'OAuth not configured',
16
16
  });
17
17
  return;
18
18
  }
19
19
  const { code, state, error, error_description } = req.query;
20
20
  if (error) {
21
- (0, logger_1.logWarn)("GitLab authorization error", { error, error_description });
21
+ (0, logger_1.logWarn)('GitLab authorization error', { error, error_description });
22
22
  if (state) {
23
23
  const flow = session_store_1.sessionStore.getAuthCodeFlow(state);
24
24
  if (flow) {
25
25
  session_store_1.sessionStore.deleteAuthCodeFlow(state);
26
26
  const redirectUrl = new URL(flow.clientRedirectUri);
27
- redirectUrl.searchParams.set("error", error);
27
+ redirectUrl.searchParams.set('error', error);
28
28
  if (error_description) {
29
- redirectUrl.searchParams.set("error_description", error_description);
29
+ redirectUrl.searchParams.set('error_description', error_description);
30
30
  }
31
31
  if (flow.clientState) {
32
- redirectUrl.searchParams.set("state", flow.clientState);
32
+ redirectUrl.searchParams.set('state', flow.clientState);
33
33
  }
34
34
  res.redirect(redirectUrl.toString());
35
35
  return;
@@ -37,37 +37,37 @@ async function callbackHandler(req, res) {
37
37
  }
38
38
  res.status(400).json({
39
39
  error: error,
40
- error_description: error_description ?? "GitLab authorization failed",
40
+ error_description: error_description ?? 'GitLab authorization failed',
41
41
  });
42
42
  return;
43
43
  }
44
44
  if (!code) {
45
45
  res.status(400).json({
46
- error: "invalid_request",
47
- error_description: "Missing authorization code from GitLab",
46
+ error: 'invalid_request',
47
+ error_description: 'Missing authorization code from GitLab',
48
48
  });
49
49
  return;
50
50
  }
51
51
  if (!state) {
52
52
  res.status(400).json({
53
- error: "invalid_request",
54
- error_description: "Missing state parameter",
53
+ error: 'invalid_request',
54
+ error_description: 'Missing state parameter',
55
55
  });
56
56
  return;
57
57
  }
58
58
  const flow = session_store_1.sessionStore.getAuthCodeFlow(state);
59
59
  if (!flow) {
60
60
  res.status(400).json({
61
- error: "invalid_request",
62
- error_description: "Invalid or expired state. Please start authorization again.",
61
+ error: 'invalid_request',
62
+ error_description: 'Invalid or expired state. Please start authorization again.',
63
63
  });
64
64
  return;
65
65
  }
66
66
  if (Date.now() > flow.expiresAt) {
67
67
  session_store_1.sessionStore.deleteAuthCodeFlow(state);
68
68
  res.status(400).json({
69
- error: "invalid_request",
70
- error_description: "Authorization flow expired. Please start again.",
69
+ error: 'invalid_request',
70
+ error_description: 'Authorization flow expired. Please start again.',
71
71
  });
72
72
  return;
73
73
  }
@@ -88,8 +88,8 @@ async function callbackHandler(req, res) {
88
88
  });
89
89
  session_store_1.sessionStore.createSession({
90
90
  id: sessionId,
91
- mcpAccessToken: "",
92
- mcpRefreshToken: "",
91
+ mcpAccessToken: '',
92
+ mcpRefreshToken: '',
93
93
  mcpTokenExpiry: 0,
94
94
  gitlabAccessToken: gitlabTokens.access_token,
95
95
  gitlabRefreshToken: gitlabTokens.refresh_token,
@@ -99,34 +99,34 @@ async function callbackHandler(req, res) {
99
99
  gitlabApiUrl: flow.selectedInstance ?? config_2.GITLAB_BASE_URL,
100
100
  instanceLabel: flow.selectedInstanceLabel,
101
101
  clientId: flow.clientId,
102
- scopes: ["mcp:tools", "mcp:resources"],
102
+ scopes: ['mcp:tools', 'mcp:resources'],
103
103
  createdAt: now,
104
104
  updatedAt: now,
105
105
  });
106
106
  session_store_1.sessionStore.deleteAuthCodeFlow(state);
107
- (0, logger_1.logInfo)("Authorization Code Flow completed successfully", {
107
+ (0, logger_1.logInfo)('Authorization Code Flow completed successfully', {
108
108
  sessionId: (0, logger_1.truncateId)(sessionId),
109
109
  userId: userInfo.id,
110
110
  username: userInfo.username,
111
111
  });
112
112
  const redirectUrl = new URL(flow.clientRedirectUri);
113
- redirectUrl.searchParams.set("code", mcpAuthCode);
113
+ redirectUrl.searchParams.set('code', mcpAuthCode);
114
114
  if (flow.clientState) {
115
- redirectUrl.searchParams.set("state", flow.clientState);
115
+ redirectUrl.searchParams.set('state', flow.clientState);
116
116
  }
117
- (0, logger_1.logDebug)("Redirecting to client with authorization code", {
117
+ (0, logger_1.logDebug)('Redirecting to client with authorization code', {
118
118
  redirectUri: flow.clientRedirectUri,
119
119
  });
120
120
  res.redirect(redirectUrl.toString());
121
121
  }
122
122
  catch (error) {
123
- (0, logger_1.logError)("Failed to complete authorization code flow", { err: error });
123
+ (0, logger_1.logError)('Failed to complete authorization code flow', { err: error });
124
124
  session_store_1.sessionStore.deleteAuthCodeFlow(state);
125
125
  const redirectUrl = new URL(flow.clientRedirectUri);
126
- redirectUrl.searchParams.set("error", "server_error");
127
- redirectUrl.searchParams.set("error_description", error instanceof Error ? error.message : "Failed to complete authorization");
126
+ redirectUrl.searchParams.set('error', 'server_error');
127
+ redirectUrl.searchParams.set('error_description', error instanceof Error ? error.message : 'Failed to complete authorization');
128
128
  if (flow.clientState) {
129
- redirectUrl.searchParams.set("state", flow.clientState);
129
+ redirectUrl.searchParams.set('state', flow.clientState);
130
130
  }
131
131
  res.redirect(redirectUrl.toString());
132
132
  }
@@ -1,5 +1,5 @@
1
- export { metadataHandler, protectedResourceHandler, getBaseUrl } from "./metadata";
2
- export { authorizeHandler, pollHandler } from "./authorize";
3
- export { callbackHandler } from "./callback";
4
- export { tokenHandler } from "./token";
5
- export { registerHandler, getRegisteredClient, isValidRedirectUri } from "./register";
1
+ export { metadataHandler, protectedResourceHandler, getBaseUrl } from './metadata';
2
+ export { authorizeHandler, pollHandler } from './authorize';
3
+ export { callbackHandler } from './callback';
4
+ export { tokenHandler } from './token';
5
+ export { registerHandler, getRegisteredClient, isValidRedirectUri } from './register';
@@ -1,4 +1,4 @@
1
- import { Request, Response } from "express";
1
+ import { Request, Response } from 'express';
2
2
  export declare const MCP_PROTOCOL_VERSION = "2025-03-26";
3
3
  export declare function getBaseUrl(req: Request): string;
4
4
  export declare function metadataHandler(req: Request, res: Response): void;
@@ -5,12 +5,12 @@ exports.getBaseUrl = getBaseUrl;
5
5
  exports.metadataHandler = metadataHandler;
6
6
  exports.protectedResourceHandler = protectedResourceHandler;
7
7
  const config_1 = require("../../config");
8
- exports.MCP_PROTOCOL_VERSION = "2025-03-26";
8
+ exports.MCP_PROTOCOL_VERSION = '2025-03-26';
9
9
  function getBaseUrl(req) {
10
- const forwardedProto = req.get("x-forwarded-proto");
11
- const protocol = forwardedProto ?? req.protocol ?? "http";
12
- const forwardedHost = req.get("x-forwarded-host");
13
- const host = forwardedHost ?? req.get("host") ?? `${config_1.HOST}:${config_1.PORT}`;
10
+ const forwardedProto = req.get('x-forwarded-proto');
11
+ const protocol = forwardedProto ?? req.protocol ?? 'http';
12
+ const forwardedHost = req.get('x-forwarded-host');
13
+ const host = forwardedHost ?? req.get('host') ?? `${config_1.HOST}:${config_1.PORT}`;
14
14
  return `${protocol}://${host}`;
15
15
  }
16
16
  function metadataHandler(req, res) {
@@ -19,11 +19,11 @@ function metadataHandler(req, res) {
19
19
  issuer: baseUrl,
20
20
  authorization_endpoint: `${baseUrl}/authorize`,
21
21
  token_endpoint: `${baseUrl}/token`,
22
- response_types_supported: ["code"],
23
- grant_types_supported: ["authorization_code", "refresh_token"],
24
- code_challenge_methods_supported: ["S256"],
25
- token_endpoint_auth_methods_supported: ["none"],
26
- scopes_supported: ["mcp:tools", "mcp:resources"],
22
+ response_types_supported: ['code'],
23
+ grant_types_supported: ['authorization_code', 'refresh_token'],
24
+ code_challenge_methods_supported: ['S256'],
25
+ token_endpoint_auth_methods_supported: ['none'],
26
+ scopes_supported: ['mcp:tools', 'mcp:resources'],
27
27
  registration_endpoint: `${baseUrl}/register`,
28
28
  mcp_version: exports.MCP_PROTOCOL_VERSION,
29
29
  };
@@ -34,8 +34,8 @@ function protectedResourceHandler(req, res) {
34
34
  const metadata = {
35
35
  resource: baseUrl,
36
36
  authorization_servers: [baseUrl],
37
- scopes_supported: ["mcp:tools", "mcp:resources"],
38
- bearer_methods_supported: ["header"],
37
+ scopes_supported: ['mcp:tools', 'mcp:resources'],
38
+ bearer_methods_supported: ['header'],
39
39
  };
40
40
  res.json(metadata);
41
41
  }
@@ -1,4 +1,4 @@
1
- import { Request, Response } from "express";
1
+ import { Request, Response } from 'express';
2
2
  interface RegisteredClient {
3
3
  client_id: string;
4
4
  client_secret?: string;
@@ -9,11 +9,11 @@ const registeredClients = new Map();
9
9
  async function registerHandler(req, res) {
10
10
  try {
11
11
  const body = req.body;
12
- const { redirect_uris, client_name, token_endpoint_auth_method = "none", grant_types = ["authorization_code", "refresh_token"], response_types = ["code"], } = body;
12
+ const { redirect_uris, client_name, token_endpoint_auth_method = 'none', grant_types = ['authorization_code', 'refresh_token'], response_types = ['code'], } = body;
13
13
  if (!redirect_uris || !Array.isArray(redirect_uris) || redirect_uris.length === 0) {
14
14
  res.status(400).json({
15
- error: "invalid_client_metadata",
16
- error_description: "redirect_uris is required and must be a non-empty array",
15
+ error: 'invalid_client_metadata',
16
+ error_description: 'redirect_uris is required and must be a non-empty array',
17
17
  });
18
18
  return;
19
19
  }
@@ -23,7 +23,7 @@ async function registerHandler(req, res) {
23
23
  }
24
24
  catch {
25
25
  res.status(400).json({
26
- error: "invalid_redirect_uri",
26
+ error: 'invalid_redirect_uri',
27
27
  error_description: `Invalid redirect URI: ${uri}`,
28
28
  });
29
29
  return;
@@ -31,7 +31,7 @@ async function registerHandler(req, res) {
31
31
  }
32
32
  const client_id = (0, crypto_1.randomUUID)();
33
33
  let client_secret;
34
- if (token_endpoint_auth_method !== "none") {
34
+ if (token_endpoint_auth_method !== 'none') {
35
35
  client_secret = (0, crypto_1.randomUUID)() + (0, crypto_1.randomUUID)();
36
36
  }
37
37
  const clientData = {
@@ -45,7 +45,7 @@ async function registerHandler(req, res) {
45
45
  created_at: Date.now(),
46
46
  };
47
47
  registeredClients.set(client_id, clientData);
48
- (0, logger_1.logInfo)("New OAuth client registered via DCR", {
48
+ (0, logger_1.logInfo)('New OAuth client registered via DCR', {
49
49
  client_id,
50
50
  client_name,
51
51
  redirect_uris,
@@ -65,10 +65,10 @@ async function registerHandler(req, res) {
65
65
  res.status(201).json(response);
66
66
  }
67
67
  catch (error) {
68
- (0, logger_1.logError)("Error in dynamic client registration", { err: error });
68
+ (0, logger_1.logError)('Error in dynamic client registration', { err: error });
69
69
  res.status(500).json({
70
- error: "server_error",
71
- error_description: "Failed to register client",
70
+ error: 'server_error',
71
+ error_description: 'Failed to register client',
72
72
  });
73
73
  }
74
74
  }
@@ -1,2 +1,2 @@
1
- import { Request, Response } from "express";
1
+ import { Request, Response } from 'express';
2
2
  export declare function tokenHandler(req: Request, res: Response): Promise<void>;
@@ -11,52 +11,52 @@ const request_logger_1 = require("../../utils/request-logger");
11
11
  async function tokenHandler(req, res) {
12
12
  const config = (0, config_1.loadOAuthConfig)();
13
13
  if (!config) {
14
- sendError(req, res, 500, "server_error", "OAuth not configured");
14
+ sendError(req, res, 500, 'server_error', 'OAuth not configured');
15
15
  return;
16
16
  }
17
17
  const { grant_type } = req.body;
18
18
  switch (grant_type) {
19
- case "authorization_code":
19
+ case 'authorization_code':
20
20
  await handleAuthorizationCode(req, res, config);
21
21
  break;
22
- case "refresh_token":
22
+ case 'refresh_token':
23
23
  await handleRefreshToken(req, res, config);
24
24
  break;
25
25
  default:
26
- sendError(req, res, 400, "unsupported_grant_type", `Grant type "${grant_type}" is not supported`);
26
+ sendError(req, res, 400, 'unsupported_grant_type', `Grant type "${grant_type}" is not supported`);
27
27
  }
28
28
  }
29
29
  async function handleAuthorizationCode(req, res, config) {
30
30
  const { code, code_verifier, redirect_uri } = req.body;
31
31
  if (!code) {
32
- sendError(req, res, 400, "invalid_request", "Missing authorization code");
32
+ sendError(req, res, 400, 'invalid_request', 'Missing authorization code');
33
33
  return;
34
34
  }
35
35
  if (!code_verifier) {
36
- sendError(req, res, 400, "invalid_request", "Missing code_verifier (PKCE required)");
36
+ sendError(req, res, 400, 'invalid_request', 'Missing code_verifier (PKCE required)');
37
37
  return;
38
38
  }
39
39
  const authCode = session_store_1.sessionStore.getAuthCode(code);
40
40
  if (!authCode) {
41
- sendError(req, res, 400, "invalid_grant", "Invalid or expired authorization code");
41
+ sendError(req, res, 400, 'invalid_grant', 'Invalid or expired authorization code');
42
42
  return;
43
43
  }
44
44
  if (Date.now() > authCode.expiresAt) {
45
45
  session_store_1.sessionStore.deleteAuthCode(code);
46
- sendError(req, res, 400, "invalid_grant", "Authorization code has expired");
46
+ sendError(req, res, 400, 'invalid_grant', 'Authorization code has expired');
47
47
  return;
48
48
  }
49
49
  if (!(0, token_utils_1.verifyCodeChallenge)(code_verifier, authCode.codeChallenge, authCode.codeChallengeMethod)) {
50
- sendError(req, res, 400, "invalid_grant", "Invalid code_verifier");
50
+ sendError(req, res, 400, 'invalid_grant', 'Invalid code_verifier');
51
51
  return;
52
52
  }
53
53
  if (authCode.redirectUri && redirect_uri !== authCode.redirectUri) {
54
- sendError(req, res, 400, "invalid_grant", "redirect_uri does not match");
54
+ sendError(req, res, 400, 'invalid_grant', 'redirect_uri does not match');
55
55
  return;
56
56
  }
57
57
  const session = session_store_1.sessionStore.getSession(authCode.sessionId);
58
58
  if (!session) {
59
- sendError(req, res, 400, "invalid_grant", "Session not found");
59
+ sendError(req, res, 400, 'invalid_grant', 'Session not found');
60
60
  return;
61
61
  }
62
62
  const baseUrl = (0, metadata_1.getBaseUrl)(req);
@@ -65,7 +65,7 @@ async function handleAuthorizationCode(req, res, config) {
65
65
  sub: session.gitlabUserId.toString(),
66
66
  aud: authCode.clientId,
67
67
  sid: session.id,
68
- scope: session.scopes.join(" "),
68
+ scope: session.scopes.join(' '),
69
69
  gitlab_user: session.gitlabUsername,
70
70
  }, config.sessionSecret, config.tokenTtl);
71
71
  const refreshToken = (0, token_utils_1.generateRefreshToken)();
@@ -75,28 +75,28 @@ async function handleAuthorizationCode(req, res, config) {
75
75
  mcpTokenExpiry: (0, token_utils_1.calculateTokenExpiry)(config.tokenTtl),
76
76
  });
77
77
  session_store_1.sessionStore.deleteAuthCode(code);
78
- (0, logger_1.logInfo)("MCP tokens issued via authorization_code grant", {
78
+ (0, logger_1.logInfo)('MCP tokens issued via authorization_code grant', {
79
79
  sessionId: (0, logger_1.truncateId)(session.id),
80
80
  userId: session.gitlabUserId,
81
81
  });
82
82
  const response = {
83
83
  access_token: accessToken,
84
- token_type: "Bearer",
84
+ token_type: 'Bearer',
85
85
  expires_in: config.tokenTtl,
86
86
  refresh_token: refreshToken,
87
- scope: session.scopes.join(" "),
87
+ scope: session.scopes.join(' '),
88
88
  };
89
89
  res.json(response);
90
90
  }
91
91
  async function handleRefreshToken(req, res, config) {
92
92
  const { refresh_token } = req.body;
93
93
  if (!refresh_token) {
94
- sendError(req, res, 400, "invalid_request", "Missing refresh_token");
94
+ sendError(req, res, 400, 'invalid_request', 'Missing refresh_token');
95
95
  return;
96
96
  }
97
97
  const session = session_store_1.sessionStore.getSessionByRefreshToken(refresh_token);
98
98
  if (!session) {
99
- sendError(req, res, 400, "invalid_grant", "Invalid refresh token");
99
+ sendError(req, res, 400, 'invalid_grant', 'Invalid refresh token');
100
100
  return;
101
101
  }
102
102
  let updatedSession = session;
@@ -110,15 +110,15 @@ async function handleRefreshToken(req, res, config) {
110
110
  });
111
111
  const refreshedSession = session_store_1.sessionStore.getSession(session.id);
112
112
  if (!refreshedSession) {
113
- sendError(req, res, 400, "invalid_grant", "Session lost during refresh");
113
+ sendError(req, res, 400, 'invalid_grant', 'Session lost during refresh');
114
114
  return;
115
115
  }
116
116
  updatedSession = refreshedSession;
117
- (0, logger_1.logDebug)("GitLab token refreshed", { sessionId: (0, logger_1.truncateId)(session.id) });
117
+ (0, logger_1.logDebug)('GitLab token refreshed', { sessionId: (0, logger_1.truncateId)(session.id) });
118
118
  }
119
119
  catch (error) {
120
- (0, logger_1.logError)("Failed to refresh GitLab token", { err: error });
121
- sendError(req, res, 400, "invalid_grant", "Failed to refresh underlying GitLab token");
120
+ (0, logger_1.logError)('Failed to refresh GitLab token', { err: error });
121
+ sendError(req, res, 400, 'invalid_grant', 'Failed to refresh underlying GitLab token');
122
122
  return;
123
123
  }
124
124
  }
@@ -128,7 +128,7 @@ async function handleRefreshToken(req, res, config) {
128
128
  sub: updatedSession.gitlabUserId.toString(),
129
129
  aud: updatedSession.clientId,
130
130
  sid: updatedSession.id,
131
- scope: updatedSession.scopes.join(" "),
131
+ scope: updatedSession.scopes.join(' '),
132
132
  gitlab_user: updatedSession.gitlabUsername,
133
133
  }, config.sessionSecret, config.tokenTtl);
134
134
  const newRefreshToken = (0, token_utils_1.generateRefreshToken)();
@@ -137,23 +137,23 @@ async function handleRefreshToken(req, res, config) {
137
137
  mcpRefreshToken: newRefreshToken,
138
138
  mcpTokenExpiry: (0, token_utils_1.calculateTokenExpiry)(config.tokenTtl),
139
139
  });
140
- (0, logger_1.logInfo)("MCP tokens refreshed via refresh_token grant", {
140
+ (0, logger_1.logInfo)('MCP tokens refreshed via refresh_token grant', {
141
141
  sessionId: (0, logger_1.truncateId)(updatedSession.id),
142
142
  userId: updatedSession.gitlabUserId,
143
143
  });
144
144
  const response = {
145
145
  access_token: accessToken,
146
- token_type: "Bearer",
146
+ token_type: 'Bearer',
147
147
  expires_in: config.tokenTtl,
148
148
  refresh_token: newRefreshToken,
149
- scope: updatedSession.scopes.join(" "),
149
+ scope: updatedSession.scopes.join(' '),
150
150
  };
151
151
  res.json(response);
152
152
  }
153
153
  function sendError(req, res, status, error, description) {
154
- (0, logger_1.logWarn)("OAuth token request failed", {
155
- event: "oauth_error",
156
- endpoint: "/token",
154
+ (0, logger_1.logWarn)('OAuth token request failed', {
155
+ event: 'oauth_error',
156
+ endpoint: '/token',
157
157
  ip: (0, request_logger_1.getIpAddress)(req),
158
158
  error,
159
159
  description,
@@ -1,5 +1,5 @@
1
- import { OAuthConfig } from "./config";
2
- import { GitLabDeviceResponse, GitLabTokenResponse, GitLabUserInfo } from "./types";
1
+ import { OAuthConfig } from './config';
2
+ import { GitLabDeviceResponse, GitLabTokenResponse, GitLabUserInfo } from './types';
3
3
  export declare function initiateDeviceFlow(config: OAuthConfig): Promise<GitLabDeviceResponse>;
4
4
  export declare function pollDeviceFlowOnce(deviceCode: string, config: OAuthConfig): Promise<GitLabTokenResponse | null>;
5
5
  export declare function pollForToken(deviceCode: string, config: OAuthConfig, onPending?: () => void): Promise<GitLabTokenResponse>;