@structured-world/gitlab-mcp 6.62.1 → 6.62.2

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 (414) hide show
  1. package/README.md +1 -1
  2. package/dist/generated/prisma/client.js.map +1 -1
  3. package/dist/generated/prisma/internal/class.js +2 -2
  4. package/dist/generated/prisma/internal/class.js.map +1 -1
  5. package/dist/generated/prisma/internal/prismaNamespace.js +2 -2
  6. package/dist/src/cli/docker/container-runtime.d.ts +1 -1
  7. package/dist/src/cli/docker/container-runtime.js +14 -14
  8. package/dist/src/cli/docker/docker-command.d.ts +1 -1
  9. package/dist/src/cli/docker/docker-command.js +113 -113
  10. package/dist/src/cli/docker/docker-command.js.map +1 -1
  11. package/dist/src/cli/docker/docker-utils.d.ts +3 -3
  12. package/dist/src/cli/docker/docker-utils.js +74 -74
  13. package/dist/src/cli/docker/docker-utils.js.map +1 -1
  14. package/dist/src/cli/docker/index.d.ts +4 -4
  15. package/dist/src/cli/docker/types.d.ts +3 -3
  16. package/dist/src/cli/docker/types.js +5 -5
  17. package/dist/src/cli/init/browser.js +2 -2
  18. package/dist/src/cli/init/config-generator.d.ts +2 -2
  19. package/dist/src/cli/init/config-generator.js +22 -22
  20. package/dist/src/cli/init/connection.d.ts +1 -1
  21. package/dist/src/cli/init/connection.js +17 -17
  22. package/dist/src/cli/init/index.d.ts +4 -4
  23. package/dist/src/cli/init/types.d.ts +3 -3
  24. package/dist/src/cli/init/types.js +36 -36
  25. package/dist/src/cli/init/wizard.js +80 -80
  26. package/dist/src/cli/init/wizard.js.map +1 -1
  27. package/dist/src/cli/inject-tool-refs.js +47 -47
  28. package/dist/src/cli/inject-tool-refs.js.map +1 -1
  29. package/dist/src/cli/install/backup.d.ts +1 -1
  30. package/dist/src/cli/install/backup.js +3 -3
  31. package/dist/src/cli/install/detector.d.ts +2 -2
  32. package/dist/src/cli/install/detector.js +18 -18
  33. package/dist/src/cli/install/detector.js.map +1 -1
  34. package/dist/src/cli/install/index.d.ts +5 -5
  35. package/dist/src/cli/install/install-command.d.ts +2 -2
  36. package/dist/src/cli/install/install-command.js +68 -68
  37. package/dist/src/cli/install/install-command.js.map +1 -1
  38. package/dist/src/cli/install/installers.d.ts +2 -2
  39. package/dist/src/cli/install/installers.js +55 -55
  40. package/dist/src/cli/install/installers.js.map +1 -1
  41. package/dist/src/cli/install/types.d.ts +4 -4
  42. package/dist/src/cli/install/types.js +48 -48
  43. package/dist/src/cli/instances/index.d.ts +2 -2
  44. package/dist/src/cli/instances/instances-command.d.ts +1 -1
  45. package/dist/src/cli/instances/instances-command.js +65 -65
  46. package/dist/src/cli/instances/instances-command.js.map +1 -1
  47. package/dist/src/cli/list-tools.js +396 -396
  48. package/dist/src/cli/list-tools.js.map +1 -1
  49. package/dist/src/cli/setup/discovery.d.ts +1 -1
  50. package/dist/src/cli/setup/discovery.js +10 -10
  51. package/dist/src/cli/setup/discovery.js.map +1 -1
  52. package/dist/src/cli/setup/flows/configure-existing.d.ts +1 -1
  53. package/dist/src/cli/setup/flows/configure-existing.js +57 -57
  54. package/dist/src/cli/setup/flows/configure-existing.js.map +1 -1
  55. package/dist/src/cli/setup/flows/local-setup.d.ts +1 -1
  56. package/dist/src/cli/setup/flows/local-setup.js +51 -51
  57. package/dist/src/cli/setup/flows/local-setup.js.map +1 -1
  58. package/dist/src/cli/setup/flows/server-setup.d.ts +1 -1
  59. package/dist/src/cli/setup/flows/server-setup.js +50 -50
  60. package/dist/src/cli/setup/flows/server-setup.js.map +1 -1
  61. package/dist/src/cli/setup/flows/tool-selection.d.ts +1 -1
  62. package/dist/src/cli/setup/flows/tool-selection.js +94 -94
  63. package/dist/src/cli/setup/flows/tool-selection.js.map +1 -1
  64. package/dist/src/cli/setup/index.d.ts +4 -4
  65. package/dist/src/cli/setup/presets.d.ts +1 -1
  66. package/dist/src/cli/setup/presets.js +157 -157
  67. package/dist/src/cli/setup/presets.js.map +1 -1
  68. package/dist/src/cli/setup/types.d.ts +7 -7
  69. package/dist/src/cli/setup/wizard.d.ts +1 -1
  70. package/dist/src/cli/setup/wizard.js +25 -25
  71. package/dist/src/cli/utils/index.d.ts +1 -1
  72. package/dist/src/cli/utils/path-utils.js +3 -3
  73. package/dist/src/cli-utils.d.ts +2 -2
  74. package/dist/src/cli-utils.js +46 -46
  75. package/dist/src/config/index.d.ts +4 -4
  76. package/dist/src/config/instances-loader.d.ts +3 -3
  77. package/dist/src/config/instances-loader.js +53 -53
  78. package/dist/src/config/instances-loader.js.map +1 -1
  79. package/dist/src/config/instances-schema.d.ts +1 -1
  80. package/dist/src/config/instances-schema.js +33 -33
  81. package/dist/src/config/instances-schema.js.map +1 -1
  82. package/dist/src/config.d.ts +4 -4
  83. package/dist/src/config.js +89 -89
  84. package/dist/src/config.js.map +1 -1
  85. package/dist/src/dashboard/handler.d.ts +2 -2
  86. package/dist/src/dashboard/handler.js +7 -7
  87. package/dist/src/dashboard/html-template.d.ts +1 -1
  88. package/dist/src/dashboard/html-template.js +44 -44
  89. package/dist/src/dashboard/html-template.js.map +1 -1
  90. package/dist/src/dashboard/index.d.ts +4 -4
  91. package/dist/src/dashboard/metrics.d.ts +3 -3
  92. package/dist/src/dashboard/metrics.js +42 -42
  93. package/dist/src/discovery/auto.d.ts +3 -3
  94. package/dist/src/discovery/auto.js +28 -28
  95. package/dist/src/discovery/git-remote.d.ts +2 -2
  96. package/dist/src/discovery/git-remote.js +18 -18
  97. package/dist/src/discovery/index.d.ts +3 -3
  98. package/dist/src/discovery/profile-matcher.d.ts +2 -2
  99. package/dist/src/discovery/profile-matcher.js +8 -8
  100. package/dist/src/discovery/profile-matcher.js.map +1 -1
  101. package/dist/src/entities/context/context-manager.d.ts +3 -3
  102. package/dist/src/entities/context/context-manager.js +34 -34
  103. package/dist/src/entities/context/context-manager.js.map +1 -1
  104. package/dist/src/entities/context/handlers.d.ts +2 -2
  105. package/dist/src/entities/context/handlers.js +8 -8
  106. package/dist/src/entities/context/index.d.ts +8 -8
  107. package/dist/src/entities/context/index.js +1 -1
  108. package/dist/src/entities/context/registry.d.ts +1 -1
  109. package/dist/src/entities/context/registry.js +4 -4
  110. package/dist/src/entities/context/schema.d.ts +1 -1
  111. package/dist/src/entities/context/schema.js +19 -19
  112. package/dist/src/entities/context/types.d.ts +9 -9
  113. package/dist/src/entities/context/whoami.d.ts +1 -1
  114. package/dist/src/entities/context/whoami.js +31 -31
  115. package/dist/src/entities/context/whoami.js.map +1 -1
  116. package/dist/src/entities/core/index.d.ts +5 -5
  117. package/dist/src/entities/core/index.js +1 -1
  118. package/dist/src/entities/core/registry.d.ts +1 -1
  119. package/dist/src/entities/core/registry.js +194 -194
  120. package/dist/src/entities/core/registry.js.map +1 -1
  121. package/dist/src/entities/core/schema-readonly.d.ts +1 -1
  122. package/dist/src/entities/core/schema-readonly.js +117 -117
  123. package/dist/src/entities/core/schema.d.ts +1 -1
  124. package/dist/src/entities/core/schema.js +67 -67
  125. package/dist/src/entities/files/index.d.ts +5 -5
  126. package/dist/src/entities/files/index.js +1 -1
  127. package/dist/src/entities/files/registry.d.ts +1 -1
  128. package/dist/src/entities/files/registry.js +45 -45
  129. package/dist/src/entities/files/registry.js.map +1 -1
  130. package/dist/src/entities/files/schema-readonly.d.ts +1 -1
  131. package/dist/src/entities/files/schema-readonly.js +13 -13
  132. package/dist/src/entities/files/schema.d.ts +1 -1
  133. package/dist/src/entities/files/schema.js +29 -29
  134. package/dist/src/entities/index.d.ts +17 -17
  135. package/dist/src/entities/integrations/index.d.ts +4 -4
  136. package/dist/src/entities/integrations/registry.d.ts +1 -1
  137. package/dist/src/entities/integrations/registry.js +17 -17
  138. package/dist/src/entities/integrations/registry.js.map +1 -1
  139. package/dist/src/entities/integrations/schema-readonly.d.ts +1 -1
  140. package/dist/src/entities/integrations/schema-readonly.js +5 -5
  141. package/dist/src/entities/integrations/schema.d.ts +1 -1
  142. package/dist/src/entities/integrations/schema.js +69 -69
  143. package/dist/src/entities/iterations/index.d.ts +2 -2
  144. package/dist/src/entities/iterations/registry.d.ts +1 -1
  145. package/dist/src/entities/iterations/registry.js +13 -13
  146. package/dist/src/entities/iterations/registry.js.map +1 -1
  147. package/dist/src/entities/iterations/schema-readonly.d.ts +1 -1
  148. package/dist/src/entities/iterations/schema-readonly.js +9 -9
  149. package/dist/src/entities/labels/index.d.ts +5 -5
  150. package/dist/src/entities/labels/index.js +1 -1
  151. package/dist/src/entities/labels/registry.d.ts +1 -1
  152. package/dist/src/entities/labels/registry.js +19 -19
  153. package/dist/src/entities/labels/registry.js.map +1 -1
  154. package/dist/src/entities/labels/schema-readonly.d.ts +1 -1
  155. package/dist/src/entities/labels/schema-readonly.js +8 -8
  156. package/dist/src/entities/labels/schema.d.ts +1 -1
  157. package/dist/src/entities/labels/schema.js +11 -11
  158. package/dist/src/entities/members/index.d.ts +3 -3
  159. package/dist/src/entities/members/registry.d.ts +1 -1
  160. package/dist/src/entities/members/registry.js +26 -26
  161. package/dist/src/entities/members/registry.js.map +1 -1
  162. package/dist/src/entities/members/schema-readonly.d.ts +1 -1
  163. package/dist/src/entities/members/schema-readonly.js +32 -32
  164. package/dist/src/entities/members/schema-readonly.js.map +1 -1
  165. package/dist/src/entities/members/schema.d.ts +1 -1
  166. package/dist/src/entities/members/schema.js +28 -28
  167. package/dist/src/entities/milestones/index.d.ts +5 -5
  168. package/dist/src/entities/milestones/index.js +1 -1
  169. package/dist/src/entities/milestones/registry.d.ts +1 -1
  170. package/dist/src/entities/milestones/registry.js +25 -25
  171. package/dist/src/entities/milestones/registry.js.map +1 -1
  172. package/dist/src/entities/milestones/schema-readonly.d.ts +2 -2
  173. package/dist/src/entities/milestones/schema-readonly.js +15 -15
  174. package/dist/src/entities/milestones/schema.d.ts +1 -1
  175. package/dist/src/entities/milestones/schema.js +16 -16
  176. package/dist/src/entities/milestones/schema.js.map +1 -1
  177. package/dist/src/entities/mrs/index.d.ts +5 -5
  178. package/dist/src/entities/mrs/index.js +1 -1
  179. package/dist/src/entities/mrs/registry.d.ts +1 -1
  180. package/dist/src/entities/mrs/registry.js +102 -102
  181. package/dist/src/entities/mrs/registry.js.map +1 -1
  182. package/dist/src/entities/mrs/schema-readonly.d.ts +1 -1
  183. package/dist/src/entities/mrs/schema-readonly.js +126 -126
  184. package/dist/src/entities/mrs/schema-readonly.js.map +1 -1
  185. package/dist/src/entities/mrs/schema.d.ts +1 -1
  186. package/dist/src/entities/mrs/schema.js +111 -111
  187. package/dist/src/entities/mrs/schema.js.map +1 -1
  188. package/dist/src/entities/pipelines/index.d.ts +5 -5
  189. package/dist/src/entities/pipelines/index.js +1 -1
  190. package/dist/src/entities/pipelines/registry.d.ts +1 -1
  191. package/dist/src/entities/pipelines/registry.js +45 -45
  192. package/dist/src/entities/pipelines/registry.js.map +1 -1
  193. package/dist/src/entities/pipelines/schema-readonly.d.ts +1 -1
  194. package/dist/src/entities/pipelines/schema-readonly.js +73 -73
  195. package/dist/src/entities/pipelines/schema.d.ts +1 -1
  196. package/dist/src/entities/pipelines/schema.js +21 -21
  197. package/dist/src/entities/refs/index.d.ts +3 -3
  198. package/dist/src/entities/refs/registry.d.ts +1 -1
  199. package/dist/src/entities/refs/registry.js +31 -31
  200. package/dist/src/entities/refs/registry.js.map +1 -1
  201. package/dist/src/entities/refs/schema-readonly.d.ts +1 -1
  202. package/dist/src/entities/refs/schema-readonly.js +21 -21
  203. package/dist/src/entities/refs/schema.d.ts +1 -1
  204. package/dist/src/entities/refs/schema.js +56 -56
  205. package/dist/src/entities/releases/index.d.ts +3 -3
  206. package/dist/src/entities/releases/registry.d.ts +1 -1
  207. package/dist/src/entities/releases/registry.js +21 -21
  208. package/dist/src/entities/releases/registry.js.map +1 -1
  209. package/dist/src/entities/releases/schema-readonly.d.ts +1 -1
  210. package/dist/src/entities/releases/schema-readonly.js +13 -13
  211. package/dist/src/entities/releases/schema.d.ts +1 -1
  212. package/dist/src/entities/releases/schema.js +21 -21
  213. package/dist/src/entities/search/index.d.ts +2 -2
  214. package/dist/src/entities/search/registry.d.ts +1 -1
  215. package/dist/src/entities/search/registry.js +13 -13
  216. package/dist/src/entities/search/schema-readonly.d.ts +1 -1
  217. package/dist/src/entities/search/schema-readonly.js +23 -23
  218. package/dist/src/entities/shared.d.ts +1 -1
  219. package/dist/src/entities/shared.js +5 -5
  220. package/dist/src/entities/snippets/index.d.ts +5 -5
  221. package/dist/src/entities/snippets/index.js +1 -1
  222. package/dist/src/entities/snippets/registry.d.ts +1 -1
  223. package/dist/src/entities/snippets/registry.js +24 -24
  224. package/dist/src/entities/snippets/registry.js.map +1 -1
  225. package/dist/src/entities/snippets/schema-readonly.d.ts +1 -1
  226. package/dist/src/entities/snippets/schema-readonly.js +11 -11
  227. package/dist/src/entities/snippets/schema.d.ts +1 -1
  228. package/dist/src/entities/snippets/schema.js +27 -27
  229. package/dist/src/entities/snippets/schema.js.map +1 -1
  230. package/dist/src/entities/utils.d.ts +2 -2
  231. package/dist/src/entities/utils.js +8 -8
  232. package/dist/src/entities/utils.js.map +1 -1
  233. package/dist/src/entities/variables/index.d.ts +5 -5
  234. package/dist/src/entities/variables/index.js +1 -1
  235. package/dist/src/entities/variables/registry.d.ts +1 -1
  236. package/dist/src/entities/variables/registry.js +22 -22
  237. package/dist/src/entities/variables/registry.js.map +1 -1
  238. package/dist/src/entities/variables/schema-readonly.d.ts +1 -1
  239. package/dist/src/entities/variables/schema-readonly.js +6 -6
  240. package/dist/src/entities/variables/schema.d.ts +1 -1
  241. package/dist/src/entities/variables/schema.js +21 -21
  242. package/dist/src/entities/variables/schema.js.map +1 -1
  243. package/dist/src/entities/webhooks/index.d.ts +4 -4
  244. package/dist/src/entities/webhooks/registry.d.ts +1 -1
  245. package/dist/src/entities/webhooks/registry.js +29 -29
  246. package/dist/src/entities/webhooks/registry.js.map +1 -1
  247. package/dist/src/entities/webhooks/schema-readonly.d.ts +1 -1
  248. package/dist/src/entities/webhooks/schema-readonly.js +9 -9
  249. package/dist/src/entities/webhooks/schema.d.ts +1 -1
  250. package/dist/src/entities/webhooks/schema.js +59 -59
  251. package/dist/src/entities/wiki/index.d.ts +5 -5
  252. package/dist/src/entities/wiki/index.js +1 -1
  253. package/dist/src/entities/wiki/registry.d.ts +1 -1
  254. package/dist/src/entities/wiki/registry.js +19 -19
  255. package/dist/src/entities/wiki/registry.js.map +1 -1
  256. package/dist/src/entities/wiki/schema-readonly.d.ts +1 -1
  257. package/dist/src/entities/wiki/schema-readonly.js +6 -6
  258. package/dist/src/entities/wiki/schema.d.ts +1 -1
  259. package/dist/src/entities/wiki/schema.js +12 -12
  260. package/dist/src/entities/workitems/index.d.ts +5 -5
  261. package/dist/src/entities/workitems/index.js +1 -1
  262. package/dist/src/entities/workitems/registry.d.ts +1 -1
  263. package/dist/src/entities/workitems/registry.js +101 -101
  264. package/dist/src/entities/workitems/registry.js.map +1 -1
  265. package/dist/src/entities/workitems/schema-readonly.d.ts +1 -1
  266. package/dist/src/entities/workitems/schema-readonly.js +27 -27
  267. package/dist/src/entities/workitems/schema-readonly.js.map +1 -1
  268. package/dist/src/entities/workitems/schema.d.ts +1 -1
  269. package/dist/src/entities/workitems/schema.js +58 -58
  270. package/dist/src/graphql/DynamicWorkItemsQuery.d.ts +2 -2
  271. package/dist/src/graphql/DynamicWorkItemsQuery.js +47 -47
  272. package/dist/src/graphql/DynamicWorkItemsQuery.js.map +1 -1
  273. package/dist/src/graphql/client.d.ts +1 -1
  274. package/dist/src/graphql/client.js +4 -4
  275. package/dist/src/graphql/client.js.map +1 -1
  276. package/dist/src/graphql/index.d.ts +2 -2
  277. package/dist/src/graphql/workItems.d.ts +38 -38
  278. package/dist/src/graphql/workItems.js +30 -30
  279. package/dist/src/handlers.d.ts +1 -1
  280. package/dist/src/handlers.js +55 -55
  281. package/dist/src/handlers.js.map +1 -1
  282. package/dist/src/http-client.js +3 -3
  283. package/dist/src/logger.js +25 -25
  284. package/dist/src/logging/access-log.d.ts +2 -2
  285. package/dist/src/logging/access-log.js +25 -25
  286. package/dist/src/logging/connection-tracker.d.ts +1 -1
  287. package/dist/src/logging/connection-tracker.js +3 -3
  288. package/dist/src/logging/index.d.ts +5 -5
  289. package/dist/src/logging/request-tracker.d.ts +3 -3
  290. package/dist/src/logging/request-tracker.js +4 -4
  291. package/dist/src/logging/types.d.ts +3 -3
  292. package/dist/src/logging/types.js +1 -1
  293. package/dist/src/main.js +28 -28
  294. package/dist/src/middleware/index.d.ts +2 -2
  295. package/dist/src/middleware/oauth-auth.d.ts +1 -1
  296. package/dist/src/middleware/oauth-auth.js +17 -17
  297. package/dist/src/middleware/rate-limiter.d.ts +1 -1
  298. package/dist/src/middleware/rate-limiter.js +32 -32
  299. package/dist/src/oauth/config.d.ts +1 -1
  300. package/dist/src/oauth/config.js +18 -18
  301. package/dist/src/oauth/config.js.map +1 -1
  302. package/dist/src/oauth/endpoints/authorize.d.ts +1 -1
  303. package/dist/src/oauth/endpoints/authorize.js +32 -32
  304. package/dist/src/oauth/endpoints/callback.d.ts +1 -1
  305. package/dist/src/oauth/endpoints/callback.js +26 -26
  306. package/dist/src/oauth/endpoints/index.d.ts +5 -5
  307. package/dist/src/oauth/endpoints/metadata.d.ts +1 -1
  308. package/dist/src/oauth/endpoints/metadata.js +12 -12
  309. package/dist/src/oauth/endpoints/register.d.ts +1 -1
  310. package/dist/src/oauth/endpoints/register.js +9 -9
  311. package/dist/src/oauth/endpoints/token.d.ts +1 -1
  312. package/dist/src/oauth/endpoints/token.js +28 -28
  313. package/dist/src/oauth/gitlab-device-flow.d.ts +2 -2
  314. package/dist/src/oauth/gitlab-device-flow.js +46 -46
  315. package/dist/src/oauth/gitlab-device-flow.js.map +1 -1
  316. package/dist/src/oauth/index.d.ts +10 -10
  317. package/dist/src/oauth/session-store.d.ts +2 -2
  318. package/dist/src/oauth/session-store.js +40 -40
  319. package/dist/src/oauth/session-store.js.map +1 -1
  320. package/dist/src/oauth/storage/factory.d.ts +2 -2
  321. package/dist/src/oauth/storage/factory.js +16 -16
  322. package/dist/src/oauth/storage/file.d.ts +2 -2
  323. package/dist/src/oauth/storage/file.js +22 -22
  324. package/dist/src/oauth/storage/file.js.map +1 -1
  325. package/dist/src/oauth/storage/index.d.ts +5 -5
  326. package/dist/src/oauth/storage/memory.d.ts +2 -2
  327. package/dist/src/oauth/storage/memory.js +18 -18
  328. package/dist/src/oauth/storage/memory.js.map +1 -1
  329. package/dist/src/oauth/storage/postgresql.d.ts +2 -2
  330. package/dist/src/oauth/storage/postgresql.js +11 -11
  331. package/dist/src/oauth/storage/postgresql.js.map +1 -1
  332. package/dist/src/oauth/storage/types.d.ts +3 -3
  333. package/dist/src/oauth/token-context.d.ts +1 -1
  334. package/dist/src/oauth/token-context.js +1 -1
  335. package/dist/src/oauth/token-utils.d.ts +1 -1
  336. package/dist/src/oauth/token-utils.js +20 -20
  337. package/dist/src/oauth/types.d.ts +3 -3
  338. package/dist/src/profiles/applicator.d.ts +1 -1
  339. package/dist/src/profiles/applicator.js +48 -48
  340. package/dist/src/profiles/index.d.ts +5 -5
  341. package/dist/src/profiles/loader.d.ts +3 -3
  342. package/dist/src/profiles/loader.js +25 -25
  343. package/dist/src/profiles/loader.js.map +1 -1
  344. package/dist/src/profiles/project-loader.d.ts +1 -1
  345. package/dist/src/profiles/project-loader.js +23 -23
  346. package/dist/src/profiles/project-loader.js.map +1 -1
  347. package/dist/src/profiles/scope-enforcer.d.ts +2 -2
  348. package/dist/src/profiles/scope-enforcer.js +25 -25
  349. package/dist/src/profiles/scope-enforcer.js.map +1 -1
  350. package/dist/src/profiles/types.d.ts +2 -2
  351. package/dist/src/profiles/types.js +50 -48
  352. package/dist/src/profiles/types.js.map +1 -1
  353. package/dist/src/registry-manager.d.ts +1 -1
  354. package/dist/src/registry-manager.js +64 -64
  355. package/dist/src/registry-manager.js.map +1 -1
  356. package/dist/src/server.js +136 -136
  357. package/dist/src/server.js.map +1 -1
  358. package/dist/src/services/ConnectionManager.d.ts +5 -5
  359. package/dist/src/services/ConnectionManager.js +45 -45
  360. package/dist/src/services/ConnectionManager.js.map +1 -1
  361. package/dist/src/services/GitLabVersionDetector.d.ts +2 -2
  362. package/dist/src/services/GitLabVersionDetector.js +45 -45
  363. package/dist/src/services/GitLabVersionDetector.js.map +1 -1
  364. package/dist/src/services/InstanceConnectionPool.d.ts +2 -2
  365. package/dist/src/services/InstanceConnectionPool.js +13 -13
  366. package/dist/src/services/InstanceConnectionPool.js.map +1 -1
  367. package/dist/src/services/InstanceRateLimiter.js +6 -6
  368. package/dist/src/services/InstanceRateLimiter.js.map +1 -1
  369. package/dist/src/services/InstanceRegistry.d.ts +4 -4
  370. package/dist/src/services/InstanceRegistry.js +23 -23
  371. package/dist/src/services/InstanceRegistry.js.map +1 -1
  372. package/dist/src/services/NamespaceTierDetector.d.ts +2 -2
  373. package/dist/src/services/NamespaceTierDetector.js +30 -30
  374. package/dist/src/services/NamespaceTierDetector.js.map +1 -1
  375. package/dist/src/services/SchemaIntrospector.d.ts +1 -1
  376. package/dist/src/services/SchemaIntrospector.js +42 -42
  377. package/dist/src/services/SchemaIntrospector.js.map +1 -1
  378. package/dist/src/services/TokenScopeDetector.d.ts +2 -2
  379. package/dist/src/services/TokenScopeDetector.js +80 -80
  380. package/dist/src/services/TokenScopeDetector.js.map +1 -1
  381. package/dist/src/services/ToolAvailability.d.ts +6 -6
  382. package/dist/src/services/ToolAvailability.js +122 -122
  383. package/dist/src/services/ToolAvailability.js.map +1 -1
  384. package/dist/src/services/WidgetAvailability.d.ts +2 -2
  385. package/dist/src/services/WidgetAvailability.js +34 -34
  386. package/dist/src/session-manager.d.ts +3 -2
  387. package/dist/src/session-manager.js +17 -14
  388. package/dist/src/session-manager.js.map +1 -1
  389. package/dist/src/types.js +4 -4
  390. package/dist/src/utils/description-utils.js +4 -4
  391. package/dist/src/utils/description-utils.js.map +1 -1
  392. package/dist/src/utils/error-handler.d.ts +9 -9
  393. package/dist/src/utils/error-handler.js +187 -187
  394. package/dist/src/utils/error-handler.js.map +1 -1
  395. package/dist/src/utils/fetch.js +85 -85
  396. package/dist/src/utils/fetch.js.map +1 -1
  397. package/dist/src/utils/gitlab-api.d.ts +1 -1
  398. package/dist/src/utils/gitlab-api.js +24 -24
  399. package/dist/src/utils/idConversion.js +47 -47
  400. package/dist/src/utils/idConversion.js.map +1 -1
  401. package/dist/src/utils/namespace.d.ts +2 -2
  402. package/dist/src/utils/namespace.js +15 -15
  403. package/dist/src/utils/projectIdentifier.js +4 -4
  404. package/dist/src/utils/request-logger.d.ts +4 -4
  405. package/dist/src/utils/request-logger.js +5 -5
  406. package/dist/src/utils/schema-utils.js +24 -24
  407. package/dist/src/utils/schema-utils.js.map +1 -1
  408. package/dist/src/utils/smart-user-search.d.ts +1 -1
  409. package/dist/src/utils/smart-user-search.js +10 -10
  410. package/dist/src/utils/version.js +1 -1
  411. package/dist/structured-world-gitlab-mcp-6.62.2.tgz +0 -0
  412. package/dist/tsconfig.build.tsbuildinfo +1 -1
  413. package/package.json +18 -21
  414. package/dist/structured-world-gitlab-mcp-6.62.1.tgz +0 -0
package/README.md CHANGED
@@ -4,7 +4,7 @@
4
4
 
5
5
  Advanced GitLab MCP server — 44 tools across 18 entity types with CQRS architecture, OAuth 2.1, and multiple transport modes.
6
6
 
7
- [![Install in Claude Desktop](https://img.shields.io/badge/Claude_Desktop-Install_Extension-F97316?style=for-the-badge)](https://gitlab-mcp.sw.foundation/downloads/gitlab-mcp-6.62.1.mcpb)
7
+ [![Install in Claude Desktop](https://img.shields.io/badge/Claude_Desktop-Install_Extension-F97316?style=for-the-badge)](https://gitlab-mcp.sw.foundation/downloads/gitlab-mcp-6.62.2.mcpb)
8
8
  [![Install in VS Code](https://img.shields.io/badge/VS_Code-Install_MCP_Server-007ACC?style=for-the-badge&logo=visualstudiocode&logoColor=white)](vscode:mcp/install?%7B%22name%22%3A%22gitlab-mcp%22%2C%22command%22%3A%22npx%22%2C%22args%22%3A%5B%22-y%22%2C%22%40structured-world%2Fgitlab-mcp%22%5D%7D)
9
9
  [![Install in VS Code Insiders](https://img.shields.io/badge/VS_Code_Insiders-Install_MCP_Server-24bfa5?style=for-the-badge&logo=visualstudiocode&logoColor=white)](vscode-insiders:mcp/install?%7B%22name%22%3A%22gitlab-mcp%22%2C%22command%22%3A%22npx%22%2C%22args%22%3A%5B%22-y%22%2C%22%40structured-world%2Fgitlab-mcp%22%5D%7D)
10
10
 
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../../../generated/prisma/client.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiBA,yDAA0C;AAC1C,mEAAoD;AAmB3C,wBAAM;AAjBf,kDAAiC;AACjC,0CAAuB;AAcV,QAAA,YAAY,GAAG,MAAM,CAAC,oBAAoB,EAAE,CAAA"}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../../generated/prisma/client.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiBA,yDAA0C;AAC1C,mEAAoD;AAqB3C,wBAAM;AAnBf,kDAAiC;AACjC,0CAAuB;AAgBV,QAAA,YAAY,GAAG,MAAM,CAAC,oBAAoB,EAAE,CAAA"}
@@ -37,8 +37,8 @@ exports.getPrismaClientClass = getPrismaClientClass;
37
37
  const runtime = __importStar(require("@prisma/client/runtime/client"));
38
38
  const config = {
39
39
  "previewFeatures": [],
40
- "clientVersion": "7.4.1",
41
- "engineVersion": "55ae170b1ced7fc6ed07a15f110549408c501bb3",
40
+ "clientVersion": "7.5.0",
41
+ "engineVersion": "280c870be64f457428992c43c1f6d557fab6e29e",
42
42
  "activeProvider": "postgresql",
43
43
  "inlineSchema": "// Prisma schema for gitlab-mcp OAuth session storage\n// Supports PostgreSQL for multi-instance deployments\n\ngenerator client {\n provider = \"prisma-client\"\n output = \"../generated/prisma\"\n}\n\ndatasource db {\n provider = \"postgresql\"\n}\n\n// OAuth session representing an authenticated user\nmodel OAuthSession {\n id String @id @default(uuid())\n\n // MCP tokens (issued by gitlab-mcp to Claude)\n mcpAccessToken String @map(\"mcp_access_token\")\n mcpRefreshToken String @map(\"mcp_refresh_token\")\n mcpTokenExpiry BigInt @map(\"mcp_token_expiry\")\n\n // GitLab tokens (obtained from GitLab OAuth)\n gitlabAccessToken String @map(\"gitlab_access_token\")\n gitlabRefreshToken String @map(\"gitlab_refresh_token\")\n gitlabTokenExpiry BigInt @map(\"gitlab_token_expiry\")\n\n // User info from GitLab\n gitlabUserId Int @map(\"gitlab_user_id\")\n gitlabUsername String @map(\"gitlab_username\")\n\n // Multi-instance support\n gitlabApiUrl String? @map(\"gitlab_api_url\")\n instanceLabel String? @map(\"instance_label\")\n\n // Session metadata\n clientId String @map(\"client_id\")\n scopes String[] @default([])\n createdAt BigInt @map(\"created_at\")\n updatedAt BigInt @map(\"updated_at\")\n\n // Relations\n authorizationCodes AuthorizationCode[]\n mcpSessionMappings McpSessionMapping[]\n\n @@index([mcpAccessToken], map: \"idx_oauth_sessions_mcp_access_token\")\n @@index([mcpRefreshToken], map: \"idx_oauth_sessions_mcp_refresh_token\")\n @@index([gitlabUserId], map: \"idx_oauth_sessions_gitlab_user_id\")\n @@map(\"oauth_sessions\")\n}\n\n// State for tracking in-progress Device Flow authorization\nmodel DeviceFlowState {\n state String @id\n deviceCode String @map(\"device_code\")\n userCode String @map(\"user_code\")\n verificationUri String @map(\"verification_uri\")\n verificationUriComplete String? @map(\"verification_uri_complete\")\n expiresAt BigInt @map(\"expires_at\")\n interval Int\n clientId String @map(\"client_id\")\n codeChallenge String @map(\"code_challenge\")\n codeChallengeMethod String @map(\"code_challenge_method\")\n redirectUri String? @map(\"redirect_uri\")\n\n @@index([deviceCode], map: \"idx_oauth_device_flows_device_code\")\n @@index([expiresAt], map: \"idx_oauth_device_flows_expires_at\")\n @@map(\"oauth_device_flows\")\n}\n\n// State for tracking in-progress Authorization Code Flow\nmodel AuthCodeFlowState {\n internalState String @id @map(\"internal_state\")\n clientId String @map(\"client_id\")\n codeChallenge String @map(\"code_challenge\")\n codeChallengeMethod String @map(\"code_challenge_method\")\n clientState String @map(\"client_state\")\n clientRedirectUri String @map(\"client_redirect_uri\")\n callbackUri String @map(\"callback_uri\")\n expiresAt BigInt @map(\"expires_at\")\n\n @@index([expiresAt], map: \"idx_oauth_auth_code_flows_expires_at\")\n @@map(\"oauth_auth_code_flows\")\n}\n\n// Authorization code for OAuth code exchange\nmodel AuthorizationCode {\n code String @id\n sessionId String @map(\"session_id\")\n clientId String @map(\"client_id\")\n codeChallenge String @map(\"code_challenge\")\n codeChallengeMethod String @map(\"code_challenge_method\")\n redirectUri String? @map(\"redirect_uri\")\n expiresAt BigInt @map(\"expires_at\")\n\n // Relations\n session OAuthSession @relation(fields: [sessionId], references: [id], onDelete: Cascade)\n\n @@index([sessionId], map: \"idx_oauth_authorization_codes_session_id\")\n @@index([expiresAt], map: \"idx_oauth_authorization_codes_expires_at\")\n @@map(\"oauth_authorization_codes\")\n}\n\n// MCP session to OAuth session mapping\nmodel McpSessionMapping {\n mcpSessionId String @id @map(\"mcp_session_id\")\n oauthSessionId String @map(\"oauth_session_id\")\n\n // Relations\n oauthSession OAuthSession @relation(fields: [oauthSessionId], references: [id], onDelete: Cascade)\n\n @@index([oauthSessionId], map: \"idx_oauth_mcp_session_mappings_oauth_session_id\")\n @@map(\"oauth_mcp_session_mappings\")\n}\n",
44
44
  "runtimeDataModel": {
@@ -1 +1 @@
1
- {"version":3,"file":"class.js","sourceRoot":"","sources":["../../../../generated/prisma/internal/class.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA6OA,oDAEC;AAlOD,uEAAwD;AAIxD,MAAM,MAAM,GAAkC;IAC5C,iBAAiB,EAAE,EAAE;IACrB,eAAe,EAAE,OAAO;IACxB,eAAe,EAAE,0CAA0C;IAC3D,gBAAgB,EAAE,YAAY;IAC9B,cAAc,EAAE,stIAAstI;IACtuI,kBAAkB,EAAE;QAClB,QAAQ,EAAE,EAAE;QACZ,OAAO,EAAE,EAAE;QACX,OAAO,EAAE,EAAE;KACZ;IACD,wBAAwB,EAAE;QACxB,SAAS,EAAE,EAAE;QACb,OAAO,EAAE,EAAE;KACZ;CACF,CAAA;AAED,MAAM,CAAC,gBAAgB,GAAG,IAAI,CAAC,KAAK,CAAC,y3JAAy3J,CAAC,CAAA;AAC/5J,MAAM,CAAC,sBAAsB,GAAG;IAC9B,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,gsHAAgsH,CAAC;IACrtH,KAAK,EAAE,8+WAA8+W;CACt/W,CAAA;AAED,KAAK,UAAU,kBAAkB,CAAC,UAAkB;IAClD,MAAM,EAAE,MAAM,EAAE,GAAG,wDAAa,aAAa,GAAC,CAAA;IAC9C,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAA;IACnD,OAAO,IAAI,WAAW,CAAC,MAAM,CAAC,SAAS,CAAC,CAAA;AAC1C,CAAC;AAED,MAAM,CAAC,YAAY,GAAG;IACpB,UAAU,EAAE,KAAK,IAAI,EAAE,CAAC,wDAAa,6DAA6D,GAAC;IAEnG,0BAA0B,EAAE,KAAK,IAAI,EAAE;QACrC,MAAM,EAAE,IAAI,EAAE,GAAG,wDAAa,yEAAyE,GAAC,CAAA;QACxG,OAAO,MAAM,kBAAkB,CAAC,IAAI,CAAC,CAAA;IACvC,CAAC;IAED,UAAU,EAAE,6BAA6B;CAC1C,CAAA;AAsLD,SAAgB,oBAAoB;IAClC,OAAO,OAAO,CAAC,eAAe,CAAC,MAAM,CAAuC,CAAA;AAC9E,CAAC"}
1
+ {"version":3,"file":"class.js","sourceRoot":"","sources":["../../../../generated/prisma/internal/class.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiPA,oDAEC;AAtOD,uEAAwD;AAIxD,MAAM,MAAM,GAAkC;IAC5C,iBAAiB,EAAE,EAAE;IACrB,eAAe,EAAE,OAAO;IACxB,eAAe,EAAE,0CAA0C;IAC3D,gBAAgB,EAAE,YAAY;IAC9B,cAAc,EAAE,stIAAstI;IACtuI,kBAAkB,EAAE;QAClB,QAAQ,EAAE,EAAE;QACZ,OAAO,EAAE,EAAE;QACX,OAAO,EAAE,EAAE;KACZ;IACD,wBAAwB,EAAE;QACxB,SAAS,EAAE,EAAE;QACb,OAAO,EAAE,EAAE;KACZ;CACF,CAAA;AAED,MAAM,CAAC,gBAAgB,GAAG,IAAI,CAAC,KAAK,CAAC,y3JAAy3J,CAAC,CAAA;AAC/5J,MAAM,CAAC,sBAAsB,GAAG;IAC9B,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,gsHAAgsH,CAAC;IACrtH,KAAK,EAAE,8+WAA8+W;CACt/W,CAAA;AAED,KAAK,UAAU,kBAAkB,CAAC,UAAkB;IAClD,MAAM,EAAE,MAAM,EAAE,GAAG,wDAAa,aAAa,GAAC,CAAA;IAC9C,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAA;IACnD,OAAO,IAAI,WAAW,CAAC,MAAM,CAAC,SAAS,CAAC,CAAA;AAC1C,CAAC;AAED,MAAM,CAAC,YAAY,GAAG;IACpB,UAAU,EAAE,KAAK,IAAI,EAAE,CAAC,wDAAa,6DAA6D,GAAC;IAEnG,0BAA0B,EAAE,KAAK,IAAI,EAAE;QACrC,MAAM,EAAE,IAAI,EAAE,GAAG,wDAAa,yEAAyE,GAAC,CAAA;QACxG,OAAO,MAAM,kBAAkB,CAAC,IAAI,CAAC,CAAA;IACvC,CAAC;IAED,UAAU,EAAE,6BAA6B;CAC1C,CAAA;AA0LD,SAAgB,oBAAoB;IAClC,OAAO,OAAO,CAAC,eAAe,CAAC,MAAM,CAAuC,CAAA;AAC9E,CAAC"}
@@ -48,8 +48,8 @@ exports.Sql = runtime.Sql;
48
48
  exports.Decimal = runtime.Decimal;
49
49
  exports.getExtensionContext = runtime.Extensions.getExtensionContext;
50
50
  exports.prismaVersion = {
51
- client: "7.4.1",
52
- engine: "55ae170b1ced7fc6ed07a15f110549408c501bb3"
51
+ client: "7.5.0",
52
+ engine: "280c870be64f457428992c43c1f6d557fab6e29e"
53
53
  };
54
54
  exports.NullTypes = {
55
55
  DbNull: runtime.NullTypes.DbNull,
@@ -1,4 +1,4 @@
1
- import { ContainerRuntimeInfo } from "./types";
1
+ import { ContainerRuntimeInfo } from './types';
2
2
  export declare function detectContainerRuntime(): ContainerRuntimeInfo;
3
3
  export declare function getContainerRuntime(): ContainerRuntimeInfo;
4
4
  export declare function resetRuntimeCache(): void;
@@ -8,8 +8,8 @@ let cachedRuntime = null;
8
8
  function commandSucceeds(cmd, args) {
9
9
  try {
10
10
  const result = (0, child_process_1.spawnSync)(cmd, args, {
11
- stdio: "pipe",
12
- encoding: "utf8",
11
+ stdio: 'pipe',
12
+ encoding: 'utf8',
13
13
  });
14
14
  return result.status === 0;
15
15
  }
@@ -20,8 +20,8 @@ function commandSucceeds(cmd, args) {
20
20
  function commandOutput(cmd, args) {
21
21
  try {
22
22
  const result = (0, child_process_1.spawnSync)(cmd, args, {
23
- stdio: "pipe",
24
- encoding: "utf8",
23
+ stdio: 'pipe',
24
+ encoding: 'utf8',
25
25
  });
26
26
  if (result.status === 0 && result.stdout) {
27
27
  return result.stdout.trim();
@@ -38,24 +38,24 @@ function parseVersion(output) {
38
38
  }
39
39
  function detectComposeCmd(runtime) {
40
40
  const runtimeCmd = runtime;
41
- if (commandSucceeds(runtimeCmd, ["compose", "version"])) {
42
- return [runtimeCmd, "compose"];
41
+ if (commandSucceeds(runtimeCmd, ['compose', 'version'])) {
42
+ return [runtimeCmd, 'compose'];
43
43
  }
44
44
  const standaloneCompose = `${runtimeCmd}-compose`;
45
- if (commandSucceeds(standaloneCompose, ["--version"])) {
45
+ if (commandSucceeds(standaloneCompose, ['--version'])) {
46
46
  return [standaloneCompose];
47
47
  }
48
- if (commandSucceeds("docker-compose", ["--version"])) {
49
- return ["docker-compose"];
48
+ if (commandSucceeds('docker-compose', ['--version'])) {
49
+ return ['docker-compose'];
50
50
  }
51
51
  return null;
52
52
  }
53
53
  function detectContainerRuntime() {
54
- const runtimes = ["docker", "podman"];
54
+ const runtimes = ['docker', 'podman'];
55
55
  for (const runtime of runtimes) {
56
- const versionOutput = commandOutput(runtime, ["--version"]);
56
+ const versionOutput = commandOutput(runtime, ['--version']);
57
57
  if (versionOutput) {
58
- const runtimeAvailable = commandSucceeds(runtime, ["info"]);
58
+ const runtimeAvailable = commandSucceeds(runtime, ['info']);
59
59
  const composeCmd = detectComposeCmd(runtime);
60
60
  const runtimeVersion = parseVersion(versionOutput);
61
61
  return {
@@ -68,8 +68,8 @@ function detectContainerRuntime() {
68
68
  }
69
69
  }
70
70
  return {
71
- runtime: "docker",
72
- runtimeCmd: "docker",
71
+ runtime: 'docker',
72
+ runtimeCmd: 'docker',
73
73
  runtimeAvailable: false,
74
74
  composeCmd: null,
75
75
  runtimeVersion: undefined,
@@ -1,4 +1,4 @@
1
- export type DockerSubcommand = "status" | "init" | "start" | "stop" | "restart" | "upgrade" | "logs" | "add-instance" | "remove-instance";
1
+ export type DockerSubcommand = 'status' | 'init' | 'start' | 'stop' | 'restart' | 'upgrade' | 'logs' | 'add-instance' | 'remove-instance';
2
2
  export declare function parseDockerSubcommand(args: string[]): {
3
3
  subcommand: DockerSubcommand | undefined;
4
4
  subArgs: string[];
@@ -52,15 +52,15 @@ function parseDockerSubcommand(args) {
52
52
  const subcommand = args[0];
53
53
  const subArgs = args.slice(1);
54
54
  const validSubcommands = [
55
- "status",
56
- "init",
57
- "start",
58
- "stop",
59
- "restart",
60
- "upgrade",
61
- "logs",
62
- "add-instance",
63
- "remove-instance",
55
+ 'status',
56
+ 'init',
57
+ 'start',
58
+ 'stop',
59
+ 'restart',
60
+ 'upgrade',
61
+ 'logs',
62
+ 'add-instance',
63
+ 'remove-instance',
64
64
  ];
65
65
  if (subcommand && !validSubcommands.includes(subcommand)) {
66
66
  return { subcommand: undefined, subArgs: args };
@@ -69,33 +69,33 @@ function parseDockerSubcommand(args) {
69
69
  }
70
70
  function showStatus() {
71
71
  const status = (0, docker_utils_1.getDockerStatus)();
72
- console.log("\nDocker Environment:");
73
- console.log(` Docker installed: ${status.dockerInstalled ? "" : ""}`);
72
+ console.log('\nDocker Environment:');
73
+ console.log(` Docker installed: ${status.dockerInstalled ? '' : ''}`);
74
74
  if (!status.dockerInstalled) {
75
- console.log("\n⚠ Docker is not installed. Install Docker first.");
76
- console.log(" https://docs.docker.com/get-docker/");
75
+ console.log('\n⚠ Docker is not installed. Install Docker first.');
76
+ console.log(' https://docs.docker.com/get-docker/');
77
77
  return;
78
78
  }
79
- console.log(` Docker running: ${status.dockerRunning ? "" : ""}`);
80
- console.log(` Compose installed: ${status.composeInstalled ? "" : ""}`);
79
+ console.log(` Docker running: ${status.dockerRunning ? '' : ''}`);
80
+ console.log(` Compose installed: ${status.composeInstalled ? '' : ''}`);
81
81
  if (!status.dockerRunning) {
82
- console.log("\n⚠ Docker daemon is not running. Start Docker first.");
82
+ console.log('\n⚠ Docker daemon is not running. Start Docker first.');
83
83
  return;
84
84
  }
85
- console.log("\nContainer Status:");
85
+ console.log('\nContainer Status:');
86
86
  if (status.container) {
87
87
  const c = status.container;
88
88
  console.log(` Name: ${c.name}`);
89
- console.log(` Status: ${c.status}${c.uptime ? ` (${c.uptime})` : ""}`);
89
+ console.log(` Status: ${c.status}${c.uptime ? ` (${c.uptime})` : ''}`);
90
90
  console.log(` Image: ${c.image}`);
91
91
  if (c.ports.length > 0) {
92
- console.log(` Ports: ${c.ports.join(", ")}`);
92
+ console.log(` Ports: ${c.ports.join(', ')}`);
93
93
  }
94
94
  }
95
95
  else {
96
96
  console.log(" Container not found. Run 'gitlab-mcp docker init' to set up.");
97
97
  }
98
- console.log("\nConfigured Instances:");
98
+ console.log('\nConfigured Instances:');
99
99
  if (status.instances.length > 0) {
100
100
  for (const instance of status.instances) {
101
101
  console.log(` ${instance.host}: ${instance.name}`);
@@ -108,55 +108,55 @@ function showStatus() {
108
108
  }
109
109
  }
110
110
  else {
111
- console.log(" No instances configured.");
111
+ console.log(' No instances configured.');
112
112
  }
113
113
  console.log(`\nConfig directory: ${(0, docker_utils_1.getExpandedConfigDir)()}`);
114
114
  }
115
115
  async function initDocker() {
116
- p.intro("Initialize GitLab MCP Docker Setup");
116
+ p.intro('Initialize GitLab MCP Docker Setup');
117
117
  const status = (0, docker_utils_1.getDockerStatus)();
118
118
  if (!status.dockerInstalled) {
119
- p.log.error("Docker is not installed.");
120
- p.note("Visit https://docs.docker.com/get-docker/ to install Docker.", "Install Docker");
121
- p.outro("Setup cancelled.");
119
+ p.log.error('Docker is not installed.');
120
+ p.note('Visit https://docs.docker.com/get-docker/ to install Docker.', 'Install Docker');
121
+ p.outro('Setup cancelled.');
122
122
  return;
123
123
  }
124
124
  if (!status.composeInstalled) {
125
- p.log.error("Docker Compose is not installed.");
126
- p.note("Docker Compose is required. Install it with:\n docker compose version (v2, bundled with Docker Desktop)\n or\n pip install docker-compose (v1)", "Install Compose");
127
- p.outro("Setup cancelled.");
125
+ p.log.error('Docker Compose is not installed.');
126
+ p.note('Docker Compose is required. Install it with:\n docker compose version (v2, bundled with Docker Desktop)\n or\n pip install docker-compose (v1)', 'Install Compose');
127
+ p.outro('Setup cancelled.');
128
128
  return;
129
129
  }
130
130
  const port = await p.text({
131
- message: "SSE port for MCP server:",
132
- placeholder: "3333",
133
- initialValue: "3333",
134
- validate: value => {
135
- const num = parseInt(value ?? "", 10);
131
+ message: 'SSE port for MCP server:',
132
+ placeholder: '3333',
133
+ initialValue: '3333',
134
+ validate: (value) => {
135
+ const num = parseInt(value ?? '', 10);
136
136
  if (isNaN(num) || num < 1 || num > 65535) {
137
- return "Port must be a number between 1 and 65535";
137
+ return 'Port must be a number between 1 and 65535';
138
138
  }
139
139
  return undefined;
140
140
  },
141
141
  });
142
142
  if (p.isCancel(port)) {
143
- p.cancel("Setup cancelled");
143
+ p.cancel('Setup cancelled');
144
144
  return;
145
145
  }
146
146
  const enableOAuth = await p.confirm({
147
- message: "Enable OAuth for multi-instance support?",
147
+ message: 'Enable OAuth for multi-instance support?',
148
148
  initialValue: false,
149
149
  });
150
150
  if (p.isCancel(enableOAuth)) {
151
- p.cancel("Setup cancelled");
151
+ p.cancel('Setup cancelled');
152
152
  return;
153
153
  }
154
154
  let oauthSessionSecret;
155
155
  if (enableOAuth) {
156
- p.note("OAuth mode allows users to authenticate with multiple GitLab instances.\n" +
157
- "You'll need to register OAuth applications on each GitLab instance.", "OAuth Mode");
158
- oauthSessionSecret = (0, crypto_1.randomBytes)(32).toString("hex");
159
- p.log.warn("Session secret will be stored in docker-compose.yml. Keep this file secure and do NOT commit to version control.");
156
+ p.note('OAuth mode allows users to authenticate with multiple GitLab instances.\n' +
157
+ "You'll need to register OAuth applications on each GitLab instance.", 'OAuth Mode');
158
+ oauthSessionSecret = (0, crypto_1.randomBytes)(32).toString('hex');
159
+ p.log.warn('Session secret will be stored in docker-compose.yml. Keep this file secure and do NOT commit to version control.');
160
160
  }
161
161
  const config = {
162
162
  ...types_1.DEFAULT_DOCKER_CONFIG,
@@ -165,42 +165,42 @@ async function initDocker() {
165
165
  oauthSessionSecret,
166
166
  };
167
167
  const spinner = p.spinner();
168
- spinner.start("Creating Docker configuration...");
168
+ spinner.start('Creating Docker configuration...');
169
169
  try {
170
170
  (0, docker_utils_1.initDockerConfig)(config);
171
- spinner.stop("Docker configuration created!");
171
+ spinner.stop('Docker configuration created!');
172
172
  p.log.success(`Config directory: ${(0, docker_utils_1.getExpandedConfigDir)()}`);
173
173
  const startNow = await p.confirm({
174
- message: "Start the container now?",
174
+ message: 'Start the container now?',
175
175
  initialValue: true,
176
176
  });
177
177
  if (p.isCancel(startNow)) {
178
- p.cancel("Setup complete without starting container");
178
+ p.cancel('Setup complete without starting container');
179
179
  return;
180
180
  }
181
181
  if (startNow) {
182
- spinner.start("Starting container...");
182
+ spinner.start('Starting container...');
183
183
  const result = (0, docker_utils_1.startContainer)();
184
184
  if (result.success) {
185
- spinner.stop("Container started!");
185
+ spinner.stop('Container started!');
186
186
  }
187
187
  else {
188
- spinner.stop("Failed to start container");
189
- p.log.error(result.error ?? "Unknown error");
188
+ spinner.stop('Failed to start container');
189
+ p.log.error(result.error ?? 'Unknown error');
190
190
  }
191
191
  }
192
- p.outro("Docker setup complete!");
192
+ p.outro('Docker setup complete!');
193
193
  }
194
194
  catch (error) {
195
- spinner.stop("Configuration failed");
195
+ spinner.stop('Configuration failed');
196
196
  p.log.error(error instanceof Error ? error.message : String(error));
197
197
  }
198
198
  }
199
199
  function dockerStart() {
200
- console.log("Starting gitlab-mcp container...");
200
+ console.log('Starting gitlab-mcp container...');
201
201
  const result = (0, docker_utils_1.startContainer)();
202
202
  if (result.success) {
203
- console.log("✓ Container started");
203
+ console.log('✓ Container started');
204
204
  if (result.output) {
205
205
  console.log(result.output);
206
206
  }
@@ -210,30 +210,30 @@ function dockerStart() {
210
210
  }
211
211
  }
212
212
  function dockerStop() {
213
- console.log("Stopping gitlab-mcp container...");
213
+ console.log('Stopping gitlab-mcp container...');
214
214
  const result = (0, docker_utils_1.stopContainer)();
215
215
  if (result.success) {
216
- console.log("✓ Container stopped");
216
+ console.log('✓ Container stopped');
217
217
  }
218
218
  else {
219
219
  console.error(`✗ Failed to stop container: ${result.error}`);
220
220
  }
221
221
  }
222
222
  function dockerRestart() {
223
- console.log("Restarting gitlab-mcp container...");
223
+ console.log('Restarting gitlab-mcp container...');
224
224
  const result = (0, docker_utils_1.restartContainer)();
225
225
  if (result.success) {
226
- console.log("✓ Container restarted");
226
+ console.log('✓ Container restarted');
227
227
  }
228
228
  else {
229
229
  console.error(`✗ Failed to restart container: ${result.error}`);
230
230
  }
231
231
  }
232
232
  function dockerUpgrade() {
233
- console.log("Upgrading gitlab-mcp container...");
233
+ console.log('Upgrading gitlab-mcp container...');
234
234
  const result = (0, docker_utils_1.upgradeContainer)();
235
235
  if (result.success) {
236
- console.log("✓ Container upgraded to latest version");
236
+ console.log('✓ Container upgraded to latest version');
237
237
  }
238
238
  else {
239
239
  console.error(`✗ Failed to upgrade container: ${result.error}`);
@@ -243,7 +243,7 @@ function dockerLogs(follow = false, lines = 100) {
243
243
  if (follow) {
244
244
  console.log(`Tailing logs (last ${lines} lines, Ctrl+C to exit)...\n`);
245
245
  const process = (0, docker_utils_1.tailLogs)(true, lines);
246
- process.on("error", error => {
246
+ process.on('error', (error) => {
247
247
  console.error(`Failed to get logs: ${error.message}`);
248
248
  });
249
249
  }
@@ -258,94 +258,94 @@ function dockerLogs(follow = false, lines = 100) {
258
258
  }
259
259
  }
260
260
  async function dockerAddInstance(host) {
261
- p.intro("Add GitLab Instance");
261
+ p.intro('Add GitLab Instance');
262
262
  let instanceHost;
263
263
  if (host) {
264
264
  instanceHost = host;
265
265
  }
266
266
  else {
267
267
  const hostInput = await p.text({
268
- message: "GitLab instance host:",
269
- placeholder: "gitlab.company.com",
270
- validate: value => {
268
+ message: 'GitLab instance host:',
269
+ placeholder: 'gitlab.company.com',
270
+ validate: (value) => {
271
271
  if (!value || value.length < 1) {
272
- return "Host is required";
272
+ return 'Host is required';
273
273
  }
274
274
  const hostnamePattern = /^([a-z0-9]([a-z0-9-]*[a-z0-9])?\.)*[a-z0-9]([a-z0-9-]*[a-z0-9])?$/i;
275
275
  const ipv4Pattern = /^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/;
276
276
  const ipMatch = value.match(ipv4Pattern);
277
277
  if (ipMatch) {
278
278
  const octets = [ipMatch[1], ipMatch[2], ipMatch[3], ipMatch[4]].map(Number);
279
- if (octets.every(o => o >= 0 && o <= 255)) {
279
+ if (octets.every((o) => o >= 0 && o <= 255)) {
280
280
  return undefined;
281
281
  }
282
- return "IP address octets must be between 0 and 255";
282
+ return 'IP address octets must be between 0 and 255';
283
283
  }
284
284
  if (hostnamePattern.test(value)) {
285
285
  return undefined;
286
286
  }
287
- return "Invalid hostname or IP address format";
287
+ return 'Invalid hostname or IP address format';
288
288
  },
289
289
  });
290
290
  if (p.isCancel(hostInput)) {
291
- p.cancel("Setup cancelled");
291
+ p.cancel('Setup cancelled');
292
292
  return;
293
293
  }
294
294
  instanceHost = hostInput;
295
295
  }
296
296
  const name = await p.text({
297
- message: "Display name:",
298
- placeholder: "Company GitLab",
297
+ message: 'Display name:',
298
+ placeholder: 'Company GitLab',
299
299
  initialValue: instanceHost,
300
300
  });
301
301
  if (p.isCancel(name)) {
302
- p.cancel("Setup cancelled");
302
+ p.cancel('Setup cancelled');
303
303
  return;
304
304
  }
305
305
  const configureOAuth = await p.confirm({
306
- message: "Configure OAuth for this instance?",
306
+ message: 'Configure OAuth for this instance?',
307
307
  initialValue: false,
308
308
  });
309
309
  if (p.isCancel(configureOAuth)) {
310
- p.cancel("Setup cancelled");
310
+ p.cancel('Setup cancelled');
311
311
  return;
312
312
  }
313
313
  let oauth;
314
314
  if (configureOAuth) {
315
315
  const clientId = await p.text({
316
- message: "OAuth Application ID:",
317
- validate: value => {
316
+ message: 'OAuth Application ID:',
317
+ validate: (value) => {
318
318
  if (!value || value.length < 10) {
319
- return "Application ID is required";
319
+ return 'Application ID is required';
320
320
  }
321
321
  return undefined;
322
322
  },
323
323
  });
324
324
  if (p.isCancel(clientId)) {
325
- p.cancel("Setup cancelled");
325
+ p.cancel('Setup cancelled');
326
326
  return;
327
327
  }
328
- const envName = instanceHost.toUpperCase().replace(/[^A-Z0-9]/g, "_") + "_SECRET";
328
+ const envName = instanceHost.toUpperCase().replace(/[^A-Z0-9]/g, '_') + '_SECRET';
329
329
  p.note(`Store your OAuth secret in environment variable: ${envName}\n` +
330
- `Add to docker-compose.yml environment section or use .env file.`, "OAuth Secret");
330
+ `Add to docker-compose.yml environment section or use .env file.`, 'OAuth Secret');
331
331
  oauth = {
332
332
  clientId,
333
333
  clientSecretEnv: envName,
334
334
  };
335
335
  }
336
336
  const preset = await p.select({
337
- message: "Default preset for this instance:",
337
+ message: 'Default preset for this instance:',
338
338
  options: [
339
- { value: "developer", label: "Developer (default)" },
340
- { value: "senior-dev", label: "Senior Developer" },
341
- { value: "full-access", label: "Full Access" },
342
- { value: "devops", label: "DevOps" },
343
- { value: "code-reviewer", label: "Code Reviewer" },
344
- { value: "readonly", label: "Read-Only" },
339
+ { value: 'developer', label: 'Developer (default)' },
340
+ { value: 'senior-dev', label: 'Senior Developer' },
341
+ { value: 'full-access', label: 'Full Access' },
342
+ { value: 'devops', label: 'DevOps' },
343
+ { value: 'code-reviewer', label: 'Code Reviewer' },
344
+ { value: 'readonly', label: 'Read-Only' },
345
345
  ],
346
346
  });
347
347
  if (p.isCancel(preset)) {
348
- p.cancel("Setup cancelled");
348
+ p.cancel('Setup cancelled');
349
349
  return;
350
350
  }
351
351
  const instance = {
@@ -356,12 +356,12 @@ async function dockerAddInstance(host) {
356
356
  };
357
357
  (0, docker_utils_1.addInstance)(instance);
358
358
  p.log.success(`Added instance: ${instanceHost}`);
359
- p.outro("Instance configuration saved. Restart container to apply changes.");
359
+ p.outro('Instance configuration saved. Restart container to apply changes.');
360
360
  }
361
361
  function dockerRemoveInstance(host) {
362
362
  if ((0, docker_utils_1.removeInstance)(host)) {
363
363
  console.log(`✓ Removed instance: ${host}`);
364
- console.log("Restart container to apply changes.");
364
+ console.log('Restart container to apply changes.');
365
365
  }
366
366
  else {
367
367
  console.error(`✗ Instance not found: ${host}`);
@@ -370,51 +370,51 @@ function dockerRemoveInstance(host) {
370
370
  async function runDockerCommand(args) {
371
371
  const { subcommand, subArgs } = parseDockerSubcommand(args);
372
372
  switch (subcommand) {
373
- case "status":
373
+ case 'status':
374
374
  showStatus();
375
375
  break;
376
- case "init":
376
+ case 'init':
377
377
  await initDocker();
378
378
  break;
379
- case "start":
379
+ case 'start':
380
380
  dockerStart();
381
381
  break;
382
- case "stop":
382
+ case 'stop':
383
383
  dockerStop();
384
384
  break;
385
- case "restart":
385
+ case 'restart':
386
386
  dockerRestart();
387
387
  break;
388
- case "upgrade":
388
+ case 'upgrade':
389
389
  dockerUpgrade();
390
390
  break;
391
- case "logs": {
392
- const follow = subArgs.includes("-f") || subArgs.includes("--follow");
393
- const linesArg = subArgs.find(a => a.startsWith("--lines="));
394
- const lines = linesArg ? parseInt(linesArg.split("=")[1], 10) : 100;
391
+ case 'logs': {
392
+ const follow = subArgs.includes('-f') || subArgs.includes('--follow');
393
+ const linesArg = subArgs.find((a) => a.startsWith('--lines='));
394
+ const lines = linesArg ? parseInt(linesArg.split('=')[1], 10) : 100;
395
395
  dockerLogs(follow, lines);
396
396
  break;
397
397
  }
398
- case "add-instance":
398
+ case 'add-instance':
399
399
  await dockerAddInstance(subArgs[0]);
400
400
  break;
401
- case "remove-instance":
401
+ case 'remove-instance':
402
402
  if (!subArgs[0]) {
403
- throw new Error("Usage: gitlab-mcp docker remove-instance <host>");
403
+ throw new Error('Usage: gitlab-mcp docker remove-instance <host>');
404
404
  }
405
405
  dockerRemoveInstance(subArgs[0]);
406
406
  break;
407
407
  default:
408
- console.log("GitLab MCP Docker Commands:\n");
409
- console.log(" gitlab-mcp docker status Show container and instances status");
410
- console.log(" gitlab-mcp docker init Initialize Docker configuration");
411
- console.log(" gitlab-mcp docker start Start container");
412
- console.log(" gitlab-mcp docker stop Stop container");
413
- console.log(" gitlab-mcp docker restart Restart container");
414
- console.log(" gitlab-mcp docker upgrade Pull latest image and restart");
415
- console.log(" gitlab-mcp docker logs [-f] Show container logs");
416
- console.log(" gitlab-mcp docker add-instance Add GitLab instance");
417
- console.log(" gitlab-mcp docker remove-instance Remove GitLab instance");
408
+ console.log('GitLab MCP Docker Commands:\n');
409
+ console.log(' gitlab-mcp docker status Show container and instances status');
410
+ console.log(' gitlab-mcp docker init Initialize Docker configuration');
411
+ console.log(' gitlab-mcp docker start Start container');
412
+ console.log(' gitlab-mcp docker stop Stop container');
413
+ console.log(' gitlab-mcp docker restart Restart container');
414
+ console.log(' gitlab-mcp docker upgrade Pull latest image and restart');
415
+ console.log(' gitlab-mcp docker logs [-f] Show container logs');
416
+ console.log(' gitlab-mcp docker add-instance Add GitLab instance');
417
+ console.log(' gitlab-mcp docker remove-instance Remove GitLab instance');
418
418
  break;
419
419
  }
420
420
  }