@launchdarkly/mcp-server 0.4.0 → 0.4.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 (253) hide show
  1. package/FUNCTIONS.md +3 -5
  2. package/README.md +9 -0
  3. package/bin/mcp-server.js +846 -58
  4. package/bin/mcp-server.js.map +28 -9
  5. package/dist/commonjs/funcs/codeReferencesListRepositories.d.ts +19 -0
  6. package/dist/commonjs/funcs/codeReferencesListRepositories.d.ts.map +1 -0
  7. package/dist/commonjs/funcs/codeReferencesListRepositories.js +125 -0
  8. package/dist/commonjs/funcs/codeReferencesListRepositories.js.map +1 -0
  9. package/dist/commonjs/funcs/environmentsListByProject.d.ts +41 -0
  10. package/dist/commonjs/funcs/environmentsListByProject.d.ts.map +1 -0
  11. package/dist/commonjs/funcs/environmentsListByProject.js +153 -0
  12. package/dist/commonjs/funcs/environmentsListByProject.js.map +1 -0
  13. package/dist/commonjs/funcs/featureFlagsGetStatus.d.ts +19 -0
  14. package/dist/commonjs/funcs/featureFlagsGetStatus.d.ts.map +1 -0
  15. package/dist/commonjs/funcs/featureFlagsGetStatus.js +133 -0
  16. package/dist/commonjs/funcs/featureFlagsGetStatus.js.map +1 -0
  17. package/dist/commonjs/lib/config.d.ts +2 -2
  18. package/dist/commonjs/lib/config.js +2 -2
  19. package/dist/commonjs/mcp-server/mcp-server.js +1 -1
  20. package/dist/commonjs/mcp-server/server.d.ts.map +1 -1
  21. package/dist/commonjs/mcp-server/server.js +7 -1
  22. package/dist/commonjs/mcp-server/server.js.map +1 -1
  23. package/dist/commonjs/mcp-server/tools/codeReferencesListRepositories.d.ts +8 -0
  24. package/dist/commonjs/mcp-server/tools/codeReferencesListRepositories.d.ts.map +1 -0
  25. package/dist/commonjs/mcp-server/tools/codeReferencesListRepositories.js +64 -0
  26. package/dist/commonjs/mcp-server/tools/codeReferencesListRepositories.js.map +1 -0
  27. package/dist/commonjs/mcp-server/tools/environmentsListByProject.d.ts +8 -0
  28. package/dist/commonjs/mcp-server/tools/environmentsListByProject.d.ts.map +1 -0
  29. package/dist/commonjs/mcp-server/tools/environmentsListByProject.js +64 -0
  30. package/dist/commonjs/mcp-server/tools/environmentsListByProject.js.map +1 -0
  31. package/dist/commonjs/mcp-server/tools/featureFlagsGetStatus.d.ts +8 -0
  32. package/dist/commonjs/mcp-server/tools/featureFlagsGetStatus.d.ts.map +1 -0
  33. package/dist/commonjs/mcp-server/tools/featureFlagsGetStatus.js +64 -0
  34. package/dist/commonjs/mcp-server/tools/featureFlagsGetStatus.js.map +1 -0
  35. package/dist/commonjs/models/components/approvalsettings.d.ts +83 -0
  36. package/dist/commonjs/models/components/approvalsettings.d.ts.map +1 -0
  37. package/dist/commonjs/models/components/approvalsettings.js +89 -0
  38. package/dist/commonjs/models/components/approvalsettings.js.map +1 -0
  39. package/dist/commonjs/models/components/branchrep.d.ts +59 -0
  40. package/dist/commonjs/models/components/branchrep.d.ts.map +1 -0
  41. package/dist/commonjs/models/components/branchrep.js +89 -0
  42. package/dist/commonjs/models/components/branchrep.js.map +1 -0
  43. package/dist/commonjs/models/components/environment.d.ts +114 -0
  44. package/dist/commonjs/models/components/environment.d.ts.map +1 -0
  45. package/dist/commonjs/models/components/environment.js +113 -0
  46. package/dist/commonjs/models/components/environment.js.map +1 -0
  47. package/dist/commonjs/models/components/environments.d.ts +48 -0
  48. package/dist/commonjs/models/components/environments.d.ts.map +1 -0
  49. package/dist/commonjs/models/components/environments.js +84 -0
  50. package/dist/commonjs/models/components/environments.js.map +1 -0
  51. package/dist/commonjs/models/components/featureflagstatus.d.ts +80 -0
  52. package/dist/commonjs/models/components/featureflagstatus.d.ts.map +1 -0
  53. package/dist/commonjs/models/components/featureflagstatus.js +98 -0
  54. package/dist/commonjs/models/components/featureflagstatus.js.map +1 -0
  55. package/dist/commonjs/models/components/featureflagstatusacrossenvironments.d.ts +49 -0
  56. package/dist/commonjs/models/components/featureflagstatusacrossenvironments.d.ts.map +1 -0
  57. package/dist/commonjs/models/components/featureflagstatusacrossenvironments.js +84 -0
  58. package/dist/commonjs/models/components/featureflagstatusacrossenvironments.js.map +1 -0
  59. package/dist/commonjs/models/components/hunkrep.d.ts +52 -0
  60. package/dist/commonjs/models/components/hunkrep.d.ts.map +1 -0
  61. package/dist/commonjs/models/components/hunkrep.js +77 -0
  62. package/dist/commonjs/models/components/hunkrep.js.map +1 -0
  63. package/dist/commonjs/models/components/index.d.ts +10 -0
  64. package/dist/commonjs/models/components/index.d.ts.map +1 -1
  65. package/dist/commonjs/models/components/index.js +10 -0
  66. package/dist/commonjs/models/components/index.js.map +1 -1
  67. package/dist/commonjs/models/components/referencerep.d.ts +40 -0
  68. package/dist/commonjs/models/components/referencerep.d.ts.map +1 -0
  69. package/dist/commonjs/models/components/referencerep.js +74 -0
  70. package/dist/commonjs/models/components/referencerep.js.map +1 -0
  71. package/dist/commonjs/models/components/repositorycollectionrep.d.ts +40 -0
  72. package/dist/commonjs/models/components/repositorycollectionrep.d.ts.map +1 -0
  73. package/dist/commonjs/models/components/repositorycollectionrep.js +82 -0
  74. package/dist/commonjs/models/components/repositorycollectionrep.js.map +1 -0
  75. package/dist/commonjs/models/components/repositoryrep.d.ts +120 -0
  76. package/dist/commonjs/models/components/repositoryrep.d.ts.map +1 -0
  77. package/dist/commonjs/models/components/repositoryrep.js +126 -0
  78. package/dist/commonjs/models/components/repositoryrep.js.map +1 -0
  79. package/dist/commonjs/models/operations/getenvironmentsbyproject.d.ts +52 -0
  80. package/dist/commonjs/models/operations/getenvironmentsbyproject.d.ts.map +1 -0
  81. package/dist/commonjs/models/operations/getenvironmentsbyproject.js +77 -0
  82. package/dist/commonjs/models/operations/getenvironmentsbyproject.js.map +1 -0
  83. package/dist/commonjs/models/operations/getfeatureflagstatusacrossenvironments.d.ts +42 -0
  84. package/dist/commonjs/models/operations/getfeatureflagstatusacrossenvironments.d.ts.map +1 -0
  85. package/dist/commonjs/models/operations/getfeatureflagstatusacrossenvironments.js +73 -0
  86. package/dist/commonjs/models/operations/getfeatureflagstatusacrossenvironments.js.map +1 -0
  87. package/dist/commonjs/models/operations/getrepositories.d.ts +47 -0
  88. package/dist/commonjs/models/operations/getrepositories.d.ts.map +1 -0
  89. package/dist/commonjs/models/operations/getrepositories.js +75 -0
  90. package/dist/commonjs/models/operations/getrepositories.js.map +1 -0
  91. package/dist/commonjs/models/operations/index.d.ts +3 -0
  92. package/dist/commonjs/models/operations/index.d.ts.map +1 -1
  93. package/dist/commonjs/models/operations/index.js +3 -0
  94. package/dist/commonjs/models/operations/index.js.map +1 -1
  95. package/dist/commonjs/sdk/codereferences.d.ts +13 -0
  96. package/dist/commonjs/sdk/codereferences.d.ts.map +1 -0
  97. package/dist/commonjs/sdk/codereferences.js +22 -0
  98. package/dist/commonjs/sdk/codereferences.js.map +1 -0
  99. package/dist/commonjs/sdk/environments.d.ts +35 -0
  100. package/dist/commonjs/sdk/environments.d.ts.map +1 -0
  101. package/dist/commonjs/sdk/environments.js +44 -0
  102. package/dist/commonjs/sdk/environments.js.map +1 -0
  103. package/dist/commonjs/sdk/featureflags.d.ts +7 -0
  104. package/dist/commonjs/sdk/featureflags.d.ts.map +1 -1
  105. package/dist/commonjs/sdk/featureflags.js +10 -0
  106. package/dist/commonjs/sdk/featureflags.js.map +1 -1
  107. package/dist/commonjs/sdk/sdk.d.ts +6 -0
  108. package/dist/commonjs/sdk/sdk.d.ts.map +1 -1
  109. package/dist/commonjs/sdk/sdk.js +8 -0
  110. package/dist/commonjs/sdk/sdk.js.map +1 -1
  111. package/dist/esm/funcs/codeReferencesListRepositories.d.ts +19 -0
  112. package/dist/esm/funcs/codeReferencesListRepositories.d.ts.map +1 -0
  113. package/dist/esm/funcs/codeReferencesListRepositories.js +89 -0
  114. package/dist/esm/funcs/codeReferencesListRepositories.js.map +1 -0
  115. package/dist/esm/funcs/environmentsListByProject.d.ts +41 -0
  116. package/dist/esm/funcs/environmentsListByProject.d.ts.map +1 -0
  117. package/dist/esm/funcs/environmentsListByProject.js +117 -0
  118. package/dist/esm/funcs/environmentsListByProject.js.map +1 -0
  119. package/dist/esm/funcs/featureFlagsGetStatus.d.ts +19 -0
  120. package/dist/esm/funcs/featureFlagsGetStatus.d.ts.map +1 -0
  121. package/dist/esm/funcs/featureFlagsGetStatus.js +97 -0
  122. package/dist/esm/funcs/featureFlagsGetStatus.js.map +1 -0
  123. package/dist/esm/lib/config.d.ts +2 -2
  124. package/dist/esm/lib/config.js +2 -2
  125. package/dist/esm/mcp-server/mcp-server.js +1 -1
  126. package/dist/esm/mcp-server/server.d.ts.map +1 -1
  127. package/dist/esm/mcp-server/server.js +7 -1
  128. package/dist/esm/mcp-server/server.js.map +1 -1
  129. package/dist/esm/mcp-server/tools/codeReferencesListRepositories.d.ts +8 -0
  130. package/dist/esm/mcp-server/tools/codeReferencesListRepositories.d.ts.map +1 -0
  131. package/dist/esm/mcp-server/tools/codeReferencesListRepositories.js +28 -0
  132. package/dist/esm/mcp-server/tools/codeReferencesListRepositories.js.map +1 -0
  133. package/dist/esm/mcp-server/tools/environmentsListByProject.d.ts +8 -0
  134. package/dist/esm/mcp-server/tools/environmentsListByProject.d.ts.map +1 -0
  135. package/dist/esm/mcp-server/tools/environmentsListByProject.js +28 -0
  136. package/dist/esm/mcp-server/tools/environmentsListByProject.js.map +1 -0
  137. package/dist/esm/mcp-server/tools/featureFlagsGetStatus.d.ts +8 -0
  138. package/dist/esm/mcp-server/tools/featureFlagsGetStatus.d.ts.map +1 -0
  139. package/dist/esm/mcp-server/tools/featureFlagsGetStatus.js +28 -0
  140. package/dist/esm/mcp-server/tools/featureFlagsGetStatus.js.map +1 -0
  141. package/dist/esm/models/components/approvalsettings.d.ts +83 -0
  142. package/dist/esm/models/components/approvalsettings.d.ts.map +1 -0
  143. package/dist/esm/models/components/approvalsettings.js +51 -0
  144. package/dist/esm/models/components/approvalsettings.js.map +1 -0
  145. package/dist/esm/models/components/branchrep.d.ts +59 -0
  146. package/dist/esm/models/components/branchrep.d.ts.map +1 -0
  147. package/dist/esm/models/components/branchrep.js +51 -0
  148. package/dist/esm/models/components/branchrep.js.map +1 -0
  149. package/dist/esm/models/components/environment.d.ts +114 -0
  150. package/dist/esm/models/components/environment.d.ts.map +1 -0
  151. package/dist/esm/models/components/environment.js +75 -0
  152. package/dist/esm/models/components/environment.js.map +1 -0
  153. package/dist/esm/models/components/environments.d.ts +48 -0
  154. package/dist/esm/models/components/environments.d.ts.map +1 -0
  155. package/dist/esm/models/components/environments.js +46 -0
  156. package/dist/esm/models/components/environments.js.map +1 -0
  157. package/dist/esm/models/components/featureflagstatus.d.ts +80 -0
  158. package/dist/esm/models/components/featureflagstatus.d.ts.map +1 -0
  159. package/dist/esm/models/components/featureflagstatus.js +60 -0
  160. package/dist/esm/models/components/featureflagstatus.js.map +1 -0
  161. package/dist/esm/models/components/featureflagstatusacrossenvironments.d.ts +49 -0
  162. package/dist/esm/models/components/featureflagstatusacrossenvironments.d.ts.map +1 -0
  163. package/dist/esm/models/components/featureflagstatusacrossenvironments.js +46 -0
  164. package/dist/esm/models/components/featureflagstatusacrossenvironments.js.map +1 -0
  165. package/dist/esm/models/components/hunkrep.d.ts +52 -0
  166. package/dist/esm/models/components/hunkrep.d.ts.map +1 -0
  167. package/dist/esm/models/components/hunkrep.js +39 -0
  168. package/dist/esm/models/components/hunkrep.js.map +1 -0
  169. package/dist/esm/models/components/index.d.ts +10 -0
  170. package/dist/esm/models/components/index.d.ts.map +1 -1
  171. package/dist/esm/models/components/index.js +10 -0
  172. package/dist/esm/models/components/index.js.map +1 -1
  173. package/dist/esm/models/components/referencerep.d.ts +40 -0
  174. package/dist/esm/models/components/referencerep.d.ts.map +1 -0
  175. package/dist/esm/models/components/referencerep.js +36 -0
  176. package/dist/esm/models/components/referencerep.js.map +1 -0
  177. package/dist/esm/models/components/repositorycollectionrep.d.ts +40 -0
  178. package/dist/esm/models/components/repositorycollectionrep.d.ts.map +1 -0
  179. package/dist/esm/models/components/repositorycollectionrep.js +44 -0
  180. package/dist/esm/models/components/repositorycollectionrep.js.map +1 -0
  181. package/dist/esm/models/components/repositoryrep.d.ts +120 -0
  182. package/dist/esm/models/components/repositoryrep.d.ts.map +1 -0
  183. package/dist/esm/models/components/repositoryrep.js +88 -0
  184. package/dist/esm/models/components/repositoryrep.js.map +1 -0
  185. package/dist/esm/models/operations/getenvironmentsbyproject.d.ts +52 -0
  186. package/dist/esm/models/operations/getenvironmentsbyproject.d.ts.map +1 -0
  187. package/dist/esm/models/operations/getenvironmentsbyproject.js +39 -0
  188. package/dist/esm/models/operations/getenvironmentsbyproject.js.map +1 -0
  189. package/dist/esm/models/operations/getfeatureflagstatusacrossenvironments.d.ts +42 -0
  190. package/dist/esm/models/operations/getfeatureflagstatusacrossenvironments.d.ts.map +1 -0
  191. package/dist/esm/models/operations/getfeatureflagstatusacrossenvironments.js +35 -0
  192. package/dist/esm/models/operations/getfeatureflagstatusacrossenvironments.js.map +1 -0
  193. package/dist/esm/models/operations/getrepositories.d.ts +47 -0
  194. package/dist/esm/models/operations/getrepositories.d.ts.map +1 -0
  195. package/dist/esm/models/operations/getrepositories.js +37 -0
  196. package/dist/esm/models/operations/getrepositories.js.map +1 -0
  197. package/dist/esm/models/operations/index.d.ts +3 -0
  198. package/dist/esm/models/operations/index.d.ts.map +1 -1
  199. package/dist/esm/models/operations/index.js +3 -0
  200. package/dist/esm/models/operations/index.js.map +1 -1
  201. package/dist/esm/sdk/codereferences.d.ts +13 -0
  202. package/dist/esm/sdk/codereferences.d.ts.map +1 -0
  203. package/dist/esm/sdk/codereferences.js +18 -0
  204. package/dist/esm/sdk/codereferences.js.map +1 -0
  205. package/dist/esm/sdk/environments.d.ts +35 -0
  206. package/dist/esm/sdk/environments.d.ts.map +1 -0
  207. package/dist/esm/sdk/environments.js +40 -0
  208. package/dist/esm/sdk/environments.js.map +1 -0
  209. package/dist/esm/sdk/featureflags.d.ts +7 -0
  210. package/dist/esm/sdk/featureflags.d.ts.map +1 -1
  211. package/dist/esm/sdk/featureflags.js +10 -0
  212. package/dist/esm/sdk/featureflags.js.map +1 -1
  213. package/dist/esm/sdk/sdk.d.ts +6 -0
  214. package/dist/esm/sdk/sdk.d.ts.map +1 -1
  215. package/dist/esm/sdk/sdk.js +8 -0
  216. package/dist/esm/sdk/sdk.js.map +1 -1
  217. package/docs/sdks/codereferences/README.md +79 -0
  218. package/docs/sdks/environments/README.md +112 -0
  219. package/docs/sdks/featureflags/README.md +79 -0
  220. package/examples/{featureFlagsList.example.ts → codeReferencesListRepositories.example.ts} +2 -4
  221. package/examples/package-lock.json +1 -1
  222. package/jsr.json +1 -1
  223. package/package.json +1 -1
  224. package/schemas/openapi.json +2 -0
  225. package/schemas/output.json +26 -3
  226. package/src/funcs/codeReferencesListRepositories.ts +185 -0
  227. package/src/funcs/environmentsListByProject.ts +229 -0
  228. package/src/funcs/featureFlagsGetStatus.ts +201 -0
  229. package/src/lib/config.ts +2 -2
  230. package/src/mcp-server/mcp-server.ts +1 -1
  231. package/src/mcp-server/server.ts +7 -1
  232. package/src/mcp-server/tools/codeReferencesListRepositories.ts +39 -0
  233. package/src/mcp-server/tools/environmentsListByProject.ts +38 -0
  234. package/src/mcp-server/tools/featureFlagsGetStatus.ts +39 -0
  235. package/src/models/components/approvalsettings.ts +136 -0
  236. package/src/models/components/branchrep.ts +112 -0
  237. package/src/models/components/environment.ts +193 -0
  238. package/src/models/components/environments.ts +100 -0
  239. package/src/models/components/featureflagstatus.ts +121 -0
  240. package/src/models/components/featureflagstatusacrossenvironments.ts +106 -0
  241. package/src/models/components/hunkrep.ts +90 -0
  242. package/src/models/components/index.ts +10 -0
  243. package/src/models/components/referencerep.ts +82 -0
  244. package/src/models/components/repositorycollectionrep.ts +94 -0
  245. package/src/models/components/repositoryrep.ts +188 -0
  246. package/src/models/operations/getenvironmentsbyproject.ts +99 -0
  247. package/src/models/operations/getfeatureflagstatusacrossenvironments.ts +96 -0
  248. package/src/models/operations/getrepositories.ts +90 -0
  249. package/src/models/operations/index.ts +3 -0
  250. package/src/sdk/codereferences.ts +28 -0
  251. package/src/sdk/environments.ts +50 -0
  252. package/src/sdk/featureflags.ts +18 -0
  253. package/src/sdk/sdk.ts +12 -0
@@ -0,0 +1,229 @@
1
+ /*
2
+ * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
3
+ */
4
+
5
+ import { LaunchDarklyCore } from "../core.js";
6
+ import { encodeFormQuery, encodeSimple } from "../lib/encodings.js";
7
+ import * as M from "../lib/matchers.js";
8
+ import { compactMap } from "../lib/primitives.js";
9
+ import { safeParse } from "../lib/schemas.js";
10
+ import { RequestOptions } from "../lib/sdks.js";
11
+ import { extractSecurity, resolveGlobalSecurity } from "../lib/security.js";
12
+ import { pathToFunc } from "../lib/url.js";
13
+ import * as components from "../models/components/index.js";
14
+ import {
15
+ ConnectionError,
16
+ InvalidRequestError,
17
+ RequestAbortedError,
18
+ RequestTimeoutError,
19
+ UnexpectedClientError,
20
+ } from "../models/errors/httpclienterrors.js";
21
+ import * as errors from "../models/errors/index.js";
22
+ import { LaunchDarklyError } from "../models/errors/launchdarklyerror.js";
23
+ import { ResponseValidationError } from "../models/errors/responsevalidationerror.js";
24
+ import { SDKValidationError } from "../models/errors/sdkvalidationerror.js";
25
+ import * as operations from "../models/operations/index.js";
26
+ import { APICall, APIPromise } from "../types/async.js";
27
+ import { Result } from "../types/fp.js";
28
+
29
+ /**
30
+ * List environments
31
+ *
32
+ * @remarks
33
+ * Return a list of environments for the specified project.
34
+ *
35
+ * By default, this returns the first 20 environments. Page through this list with the `limit` parameter and by following the `first`, `prev`, `next`, and `last` links in the `_links` field that returns. If those links do not appear, the pages they refer to don't exist. For example, the `first` and `prev` links will be missing from the response on the first page, because there is no previous page and you cannot return to the first page when you are already on the first page.
36
+ *
37
+ * ### Filtering environments
38
+ *
39
+ * LaunchDarkly supports two fields for filters:
40
+ * - `query` is a string that matches against the environments' names and keys. It is not case sensitive.
41
+ * - `tags` is a `+`-separated list of environment tags. It filters the list of environments that have all of the tags in the list.
42
+ *
43
+ * For example, the filter `filter=query:abc,tags:tag-1+tag-2` matches environments with the string `abc` in their name or key and also are tagged with `tag-1` and `tag-2`. The filter is not case-sensitive.
44
+ *
45
+ * The documented values for `filter` query parameters are prior to URL encoding. For example, the `+` in `filter=tags:tag-1+tag-2` must be encoded to `%2B`.
46
+ *
47
+ * ### Sorting environments
48
+ *
49
+ * LaunchDarkly supports the following fields for sorting:
50
+ *
51
+ * - `createdOn` sorts by the creation date of the environment.
52
+ * - `critical` sorts by whether the environments are marked as critical.
53
+ * - `name` sorts by environment name.
54
+ *
55
+ * For example, `sort=name` sorts the response by environment name in ascending order.
56
+ */
57
+ export function environmentsListByProject(
58
+ client: LaunchDarklyCore,
59
+ request: operations.GetEnvironmentsByProjectRequest,
60
+ options?: RequestOptions,
61
+ ): APIPromise<
62
+ Result<
63
+ components.Environments,
64
+ | errors.InvalidRequestErrorRep
65
+ | errors.UnauthorizedErrorRep
66
+ | errors.ForbiddenErrorRep
67
+ | errors.NotFoundErrorRep
68
+ | errors.MethodNotAllowedErrorRep
69
+ | errors.RateLimitedErrorRep
70
+ | LaunchDarklyError
71
+ | ResponseValidationError
72
+ | ConnectionError
73
+ | RequestAbortedError
74
+ | RequestTimeoutError
75
+ | InvalidRequestError
76
+ | UnexpectedClientError
77
+ | SDKValidationError
78
+ >
79
+ > {
80
+ return new APIPromise($do(
81
+ client,
82
+ request,
83
+ options,
84
+ ));
85
+ }
86
+
87
+ async function $do(
88
+ client: LaunchDarklyCore,
89
+ request: operations.GetEnvironmentsByProjectRequest,
90
+ options?: RequestOptions,
91
+ ): Promise<
92
+ [
93
+ Result<
94
+ components.Environments,
95
+ | errors.InvalidRequestErrorRep
96
+ | errors.UnauthorizedErrorRep
97
+ | errors.ForbiddenErrorRep
98
+ | errors.NotFoundErrorRep
99
+ | errors.MethodNotAllowedErrorRep
100
+ | errors.RateLimitedErrorRep
101
+ | LaunchDarklyError
102
+ | ResponseValidationError
103
+ | ConnectionError
104
+ | RequestAbortedError
105
+ | RequestTimeoutError
106
+ | InvalidRequestError
107
+ | UnexpectedClientError
108
+ | SDKValidationError
109
+ >,
110
+ APICall,
111
+ ]
112
+ > {
113
+ const parsed = safeParse(
114
+ request,
115
+ (value) =>
116
+ operations.GetEnvironmentsByProjectRequest$outboundSchema.parse(value),
117
+ "Input validation failed",
118
+ );
119
+ if (!parsed.ok) {
120
+ return [parsed, { status: "invalid" }];
121
+ }
122
+ const payload = parsed.value;
123
+ const body = null;
124
+
125
+ const pathParams = {
126
+ projectKey: encodeSimple("projectKey", payload.projectKey, {
127
+ explode: false,
128
+ charEncoding: "percent",
129
+ }),
130
+ };
131
+
132
+ const path = pathToFunc("/api/v2/projects/{projectKey}/environments")(
133
+ pathParams,
134
+ );
135
+
136
+ const query = encodeFormQuery({
137
+ "filter": payload.filter,
138
+ "limit": payload.limit,
139
+ "offset": payload.offset,
140
+ "sort": payload.sort,
141
+ });
142
+
143
+ const headers = new Headers(compactMap({
144
+ Accept: "application/json",
145
+ }));
146
+
147
+ const secConfig = await extractSecurity(client._options.apiKey);
148
+ const securityInput = secConfig == null ? {} : { apiKey: secConfig };
149
+ const requestSecurity = resolveGlobalSecurity(securityInput);
150
+
151
+ const context = {
152
+ options: client._options,
153
+ baseURL: options?.serverURL ?? client._baseURL ?? "",
154
+ operationID: "getEnvironmentsByProject",
155
+ oAuth2Scopes: [],
156
+
157
+ resolvedSecurity: requestSecurity,
158
+
159
+ securitySource: client._options.apiKey,
160
+ retryConfig: options?.retries
161
+ || client._options.retryConfig
162
+ || { strategy: "none" },
163
+ retryCodes: options?.retryCodes || ["429", "500", "502", "503", "504"],
164
+ };
165
+
166
+ const requestRes = client._createRequest(context, {
167
+ security: requestSecurity,
168
+ method: "GET",
169
+ baseURL: options?.serverURL,
170
+ path: path,
171
+ headers: headers,
172
+ query: query,
173
+ body: body,
174
+ userAgent: client._options.userAgent,
175
+ timeoutMs: options?.timeoutMs || client._options.timeoutMs || -1,
176
+ }, options);
177
+ if (!requestRes.ok) {
178
+ return [requestRes, { status: "invalid" }];
179
+ }
180
+ const req = requestRes.value;
181
+
182
+ const doResult = await client._do(req, {
183
+ context,
184
+ errorCodes: ["400", "401", "403", "404", "405", "429", "4XX", "5XX"],
185
+ retryConfig: context.retryConfig,
186
+ retryCodes: context.retryCodes,
187
+ });
188
+ if (!doResult.ok) {
189
+ return [doResult, { status: "request-error", request: req }];
190
+ }
191
+ const response = doResult.value;
192
+
193
+ const responseFields = {
194
+ HttpMeta: { Response: response, Request: req },
195
+ };
196
+
197
+ const [result] = await M.match<
198
+ components.Environments,
199
+ | errors.InvalidRequestErrorRep
200
+ | errors.UnauthorizedErrorRep
201
+ | errors.ForbiddenErrorRep
202
+ | errors.NotFoundErrorRep
203
+ | errors.MethodNotAllowedErrorRep
204
+ | errors.RateLimitedErrorRep
205
+ | LaunchDarklyError
206
+ | ResponseValidationError
207
+ | ConnectionError
208
+ | RequestAbortedError
209
+ | RequestTimeoutError
210
+ | InvalidRequestError
211
+ | UnexpectedClientError
212
+ | SDKValidationError
213
+ >(
214
+ M.json(200, components.Environments$inboundSchema),
215
+ M.jsonErr(400, errors.InvalidRequestErrorRep$inboundSchema),
216
+ M.jsonErr(401, errors.UnauthorizedErrorRep$inboundSchema),
217
+ M.jsonErr(403, errors.ForbiddenErrorRep$inboundSchema),
218
+ M.jsonErr(404, errors.NotFoundErrorRep$inboundSchema),
219
+ M.jsonErr(405, errors.MethodNotAllowedErrorRep$inboundSchema),
220
+ M.jsonErr(429, errors.RateLimitedErrorRep$inboundSchema),
221
+ M.fail("4XX"),
222
+ M.fail("5XX"),
223
+ )(response, req, { extraFields: responseFields });
224
+ if (!result.ok) {
225
+ return [result, { status: "complete", request: req, response }];
226
+ }
227
+
228
+ return [result, { status: "complete", request: req, response }];
229
+ }
@@ -0,0 +1,201 @@
1
+ /*
2
+ * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
3
+ */
4
+
5
+ import { LaunchDarklyCore } from "../core.js";
6
+ import { encodeFormQuery, encodeSimple } from "../lib/encodings.js";
7
+ import * as M from "../lib/matchers.js";
8
+ import { compactMap } from "../lib/primitives.js";
9
+ import { safeParse } from "../lib/schemas.js";
10
+ import { RequestOptions } from "../lib/sdks.js";
11
+ import { extractSecurity, resolveGlobalSecurity } from "../lib/security.js";
12
+ import { pathToFunc } from "../lib/url.js";
13
+ import * as components from "../models/components/index.js";
14
+ import {
15
+ ConnectionError,
16
+ InvalidRequestError,
17
+ RequestAbortedError,
18
+ RequestTimeoutError,
19
+ UnexpectedClientError,
20
+ } from "../models/errors/httpclienterrors.js";
21
+ import * as errors from "../models/errors/index.js";
22
+ import { LaunchDarklyError } from "../models/errors/launchdarklyerror.js";
23
+ import { ResponseValidationError } from "../models/errors/responsevalidationerror.js";
24
+ import { SDKValidationError } from "../models/errors/sdkvalidationerror.js";
25
+ import * as operations from "../models/operations/index.js";
26
+ import { APICall, APIPromise } from "../types/async.js";
27
+ import { Result } from "../types/fp.js";
28
+
29
+ /**
30
+ * Get flag status across environments
31
+ *
32
+ * @remarks
33
+ * Get the status for a particular feature flag across environments.
34
+ */
35
+ export function featureFlagsGetStatus(
36
+ client: LaunchDarklyCore,
37
+ request: operations.GetFeatureFlagStatusAcrossEnvironmentsRequest,
38
+ options?: RequestOptions,
39
+ ): APIPromise<
40
+ Result<
41
+ components.FeatureFlagStatusAcrossEnvironments,
42
+ | errors.UnauthorizedErrorRep
43
+ | errors.ForbiddenErrorRep
44
+ | errors.NotFoundErrorRep
45
+ | errors.RateLimitedErrorRep
46
+ | LaunchDarklyError
47
+ | ResponseValidationError
48
+ | ConnectionError
49
+ | RequestAbortedError
50
+ | RequestTimeoutError
51
+ | InvalidRequestError
52
+ | UnexpectedClientError
53
+ | SDKValidationError
54
+ >
55
+ > {
56
+ return new APIPromise($do(
57
+ client,
58
+ request,
59
+ options,
60
+ ));
61
+ }
62
+
63
+ async function $do(
64
+ client: LaunchDarklyCore,
65
+ request: operations.GetFeatureFlagStatusAcrossEnvironmentsRequest,
66
+ options?: RequestOptions,
67
+ ): Promise<
68
+ [
69
+ Result<
70
+ components.FeatureFlagStatusAcrossEnvironments,
71
+ | errors.UnauthorizedErrorRep
72
+ | errors.ForbiddenErrorRep
73
+ | errors.NotFoundErrorRep
74
+ | errors.RateLimitedErrorRep
75
+ | LaunchDarklyError
76
+ | ResponseValidationError
77
+ | ConnectionError
78
+ | RequestAbortedError
79
+ | RequestTimeoutError
80
+ | InvalidRequestError
81
+ | UnexpectedClientError
82
+ | SDKValidationError
83
+ >,
84
+ APICall,
85
+ ]
86
+ > {
87
+ const parsed = safeParse(
88
+ request,
89
+ (value) =>
90
+ operations.GetFeatureFlagStatusAcrossEnvironmentsRequest$outboundSchema
91
+ .parse(value),
92
+ "Input validation failed",
93
+ );
94
+ if (!parsed.ok) {
95
+ return [parsed, { status: "invalid" }];
96
+ }
97
+ const payload = parsed.value;
98
+ const body = null;
99
+
100
+ const pathParams = {
101
+ featureFlagKey: encodeSimple("featureFlagKey", payload.featureFlagKey, {
102
+ explode: false,
103
+ charEncoding: "percent",
104
+ }),
105
+ projectKey: encodeSimple("projectKey", payload.projectKey, {
106
+ explode: false,
107
+ charEncoding: "percent",
108
+ }),
109
+ };
110
+
111
+ const path = pathToFunc("/api/v2/flag-status/{projectKey}/{featureFlagKey}")(
112
+ pathParams,
113
+ );
114
+
115
+ const query = encodeFormQuery({
116
+ "env": payload.env,
117
+ });
118
+
119
+ const headers = new Headers(compactMap({
120
+ Accept: "application/json",
121
+ }));
122
+
123
+ const secConfig = await extractSecurity(client._options.apiKey);
124
+ const securityInput = secConfig == null ? {} : { apiKey: secConfig };
125
+ const requestSecurity = resolveGlobalSecurity(securityInput);
126
+
127
+ const context = {
128
+ options: client._options,
129
+ baseURL: options?.serverURL ?? client._baseURL ?? "",
130
+ operationID: "getFeatureFlagStatusAcrossEnvironments",
131
+ oAuth2Scopes: [],
132
+
133
+ resolvedSecurity: requestSecurity,
134
+
135
+ securitySource: client._options.apiKey,
136
+ retryConfig: options?.retries
137
+ || client._options.retryConfig
138
+ || { strategy: "none" },
139
+ retryCodes: options?.retryCodes || ["429", "500", "502", "503", "504"],
140
+ };
141
+
142
+ const requestRes = client._createRequest(context, {
143
+ security: requestSecurity,
144
+ method: "GET",
145
+ baseURL: options?.serverURL,
146
+ path: path,
147
+ headers: headers,
148
+ query: query,
149
+ body: body,
150
+ userAgent: client._options.userAgent,
151
+ timeoutMs: options?.timeoutMs || client._options.timeoutMs || -1,
152
+ }, options);
153
+ if (!requestRes.ok) {
154
+ return [requestRes, { status: "invalid" }];
155
+ }
156
+ const req = requestRes.value;
157
+
158
+ const doResult = await client._do(req, {
159
+ context,
160
+ errorCodes: ["401", "403", "404", "429", "4XX", "5XX"],
161
+ retryConfig: context.retryConfig,
162
+ retryCodes: context.retryCodes,
163
+ });
164
+ if (!doResult.ok) {
165
+ return [doResult, { status: "request-error", request: req }];
166
+ }
167
+ const response = doResult.value;
168
+
169
+ const responseFields = {
170
+ HttpMeta: { Response: response, Request: req },
171
+ };
172
+
173
+ const [result] = await M.match<
174
+ components.FeatureFlagStatusAcrossEnvironments,
175
+ | errors.UnauthorizedErrorRep
176
+ | errors.ForbiddenErrorRep
177
+ | errors.NotFoundErrorRep
178
+ | errors.RateLimitedErrorRep
179
+ | LaunchDarklyError
180
+ | ResponseValidationError
181
+ | ConnectionError
182
+ | RequestAbortedError
183
+ | RequestTimeoutError
184
+ | InvalidRequestError
185
+ | UnexpectedClientError
186
+ | SDKValidationError
187
+ >(
188
+ M.json(200, components.FeatureFlagStatusAcrossEnvironments$inboundSchema),
189
+ M.jsonErr(401, errors.UnauthorizedErrorRep$inboundSchema),
190
+ M.jsonErr(403, errors.ForbiddenErrorRep$inboundSchema),
191
+ M.jsonErr(404, errors.NotFoundErrorRep$inboundSchema),
192
+ M.jsonErr(429, errors.RateLimitedErrorRep$inboundSchema),
193
+ M.fail("4XX"),
194
+ M.fail("5XX"),
195
+ )(response, req, { extraFields: responseFields });
196
+ if (!result.ok) {
197
+ return [result, { status: "complete", request: req, response }];
198
+ }
199
+
200
+ return [result, { status: "complete", request: req, response }];
201
+ }
package/src/lib/config.ts CHANGED
@@ -69,8 +69,8 @@ export function serverURLFromOptions(options: SDKOptions): URL | null {
69
69
  export const SDK_METADATA = {
70
70
  language: "typescript",
71
71
  openapiDocVersion: "2.0",
72
- sdkVersion: "0.4.0",
72
+ sdkVersion: "0.4.2",
73
73
  genVersion: "2.654.2",
74
74
  userAgent:
75
- "speakeasy-sdk/typescript 0.4.0 2.654.2 2.0 @launchdarkly/mcp-server",
75
+ "speakeasy-sdk/typescript 0.4.2 2.654.2 2.0 @launchdarkly/mcp-server",
76
76
  } as const;
@@ -19,7 +19,7 @@ const routes = buildRouteMap({
19
19
  export const app = buildApplication(routes, {
20
20
  name: "mcp",
21
21
  versionInfo: {
22
- currentVersion: "0.4.0",
22
+ currentVersion: "0.4.2",
23
23
  },
24
24
  });
25
25
 
@@ -24,9 +24,12 @@ import { tool$aiConfigsList } from "./tools/aiConfigsList.js";
24
24
  import { tool$aiConfigsUpdate } from "./tools/aiConfigsUpdate.js";
25
25
  import { tool$aiConfigsUpdateTargeting } from "./tools/aiConfigsUpdateTargeting.js";
26
26
  import { tool$aiConfigsUpdateVariation } from "./tools/aiConfigsUpdateVariation.js";
27
+ import { tool$codeReferencesListRepositories } from "./tools/codeReferencesListRepositories.js";
28
+ import { tool$environmentsListByProject } from "./tools/environmentsListByProject.js";
27
29
  import { tool$featureFlagsCreate } from "./tools/featureFlagsCreate.js";
28
30
  import { tool$featureFlagsDelete } from "./tools/featureFlagsDelete.js";
29
31
  import { tool$featureFlagsGet } from "./tools/featureFlagsGet.js";
32
+ import { tool$featureFlagsGetStatus } from "./tools/featureFlagsGetStatus.js";
30
33
  import { tool$featureFlagsList } from "./tools/featureFlagsList.js";
31
34
  import { tool$featureFlagsPatch } from "./tools/featureFlagsPatch.js";
32
35
 
@@ -40,7 +43,7 @@ export function createMCPServer(deps: {
40
43
  }) {
41
44
  const server = new McpServer({
42
45
  name: "LaunchDarkly",
43
- version: "0.4.0",
46
+ version: "0.4.2",
44
47
  });
45
48
 
46
49
  const client = new LaunchDarklyCore({
@@ -70,11 +73,14 @@ export function createMCPServer(deps: {
70
73
  const register = { tool, resource, resourceTemplate, prompt };
71
74
  void register; // suppress unused warnings
72
75
 
76
+ tool(tool$codeReferencesListRepositories);
77
+ tool(tool$featureFlagsGetStatus);
73
78
  tool(tool$featureFlagsList);
74
79
  tool(tool$featureFlagsCreate);
75
80
  tool(tool$featureFlagsGet);
76
81
  tool(tool$featureFlagsPatch);
77
82
  tool(tool$featureFlagsDelete);
83
+ tool(tool$environmentsListByProject);
78
84
  tool(tool$aiConfigsGetTargeting);
79
85
  tool(tool$aiConfigsUpdateTargeting);
80
86
  tool(tool$aiConfigsList);
@@ -0,0 +1,39 @@
1
+ /*
2
+ * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
3
+ */
4
+
5
+ import { codeReferencesListRepositories } from "../../funcs/codeReferencesListRepositories.js";
6
+ import * as operations from "../../models/operations/index.js";
7
+ import { formatResult, ToolDefinition } from "../tools.js";
8
+
9
+ const args = {
10
+ request: operations.GetRepositoriesRequest$inboundSchema,
11
+ };
12
+
13
+ export const tool$codeReferencesListRepositories: ToolDefinition<typeof args> =
14
+ {
15
+ name: "get-code-references",
16
+ description:
17
+ `Identifies which repositories have code references to a given flag, helping agents determine if they're operating on the correct repository and understand the scope of cleanup (single vs multi-repo).
18
+ `,
19
+ scopes: ["read"],
20
+ args,
21
+ tool: async (client, args, ctx) => {
22
+ const [result, apiCall] = await codeReferencesListRepositories(
23
+ client,
24
+ args.request,
25
+ { fetchOptions: { signal: ctx.signal } },
26
+ ).$inspect();
27
+
28
+ if (!result.ok) {
29
+ return {
30
+ content: [{ type: "text", text: result.error.message }],
31
+ isError: true,
32
+ };
33
+ }
34
+
35
+ const value = result.value;
36
+
37
+ return formatResult(value, apiCall);
38
+ },
39
+ };
@@ -0,0 +1,38 @@
1
+ /*
2
+ * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
3
+ */
4
+
5
+ import { environmentsListByProject } from "../../funcs/environmentsListByProject.js";
6
+ import * as operations from "../../models/operations/index.js";
7
+ import { formatResult, ToolDefinition } from "../tools.js";
8
+
9
+ const args = {
10
+ request: operations.GetEnvironmentsByProjectRequest$inboundSchema,
11
+ };
12
+
13
+ export const tool$environmentsListByProject: ToolDefinition<typeof args> = {
14
+ name: "get-environments",
15
+ description:
16
+ `Identifies which environments exist in a project and determines which are marked as "critical" (production, staging, etc.). Allows agents to programmatically identify critical environments instead of hardcoding assumptions.
17
+ `,
18
+ scopes: ["read"],
19
+ args,
20
+ tool: async (client, args, ctx) => {
21
+ const [result, apiCall] = await environmentsListByProject(
22
+ client,
23
+ args.request,
24
+ { fetchOptions: { signal: ctx.signal } },
25
+ ).$inspect();
26
+
27
+ if (!result.ok) {
28
+ return {
29
+ content: [{ type: "text", text: result.error.message }],
30
+ isError: true,
31
+ };
32
+ }
33
+
34
+ const value = result.value;
35
+
36
+ return formatResult(value, apiCall);
37
+ },
38
+ };
@@ -0,0 +1,39 @@
1
+ /*
2
+ * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
3
+ */
4
+
5
+ import { featureFlagsGetStatus } from "../../funcs/featureFlagsGetStatus.js";
6
+ import * as operations from "../../models/operations/index.js";
7
+ import { formatResult, ToolDefinition } from "../tools.js";
8
+
9
+ const args = {
10
+ request:
11
+ operations.GetFeatureFlagStatusAcrossEnvironmentsRequest$inboundSchema,
12
+ };
13
+
14
+ export const tool$featureFlagsGetStatus: ToolDefinition<typeof args> = {
15
+ name: "get-flag-status-across-environments",
16
+ description:
17
+ `Returns lifecycle status (new, active, inactive, launched) based on actual usage patterns, evaluation counts, and configuration stability. This is the key intelligence for removal readiness assessment.
18
+ `,
19
+ scopes: ["read"],
20
+ args,
21
+ tool: async (client, args, ctx) => {
22
+ const [result, apiCall] = await featureFlagsGetStatus(
23
+ client,
24
+ args.request,
25
+ { fetchOptions: { signal: ctx.signal } },
26
+ ).$inspect();
27
+
28
+ if (!result.ok) {
29
+ return {
30
+ content: [{ type: "text", text: result.error.message }],
31
+ isError: true,
32
+ };
33
+ }
34
+
35
+ const value = result.value;
36
+
37
+ return formatResult(value, apiCall);
38
+ },
39
+ };