@featureflip/mcp 0.1.12 → 0.1.13

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.
package/dist/cli.mjs CHANGED
@@ -1,4 +1,4 @@
1
- import { a as e, i as t, n, o as r, s as i, t as a } from "./org-Dq8g_Duu.js";
1
+ import { a as e, i as t, n, o as r, s as i, t as a } from "./org-D-y_4-WG.js";
2
2
  import { serveStdio as o } from "@modelcontextprotocol/server/stdio";
3
3
  //#region src/unconfigured.ts
4
4
  var s = class extends i {
@@ -1 +1 @@
1
- {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAC1C,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,wBAAgB,MAAM,CAAC,IAAI,EAAE,OAAO,GAAG,UAAU,CAEhD;AAED,wBAAgB,WAAW,CAAC,GAAG,EAAE,OAAO,GAAG,UAAU,CAqBpD;AAED,wBAAsB,GAAG,CAAC,EAAE,EAAE,MAAM,OAAO,CAAC,UAAU,CAAC,GAAG,OAAO,CAAC,UAAU,CAAC,CAM5E"}
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAC1C,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,wBAAgB,MAAM,CAAC,IAAI,EAAE,OAAO,GAAG,UAAU,CAOhD;AAED,wBAAgB,WAAW,CAAC,GAAG,EAAE,OAAO,GAAG,UAAU,CAqBpD;AAED,wBAAsB,GAAG,CAAC,EAAE,EAAE,MAAM,OAAO,CAAC,UAAU,CAAC,GAAG,OAAO,CAAC,UAAU,CAAC,CAM5E"}
@@ -4014,6 +4014,219 @@ export interface paths {
4014
4014
  patch?: never;
4015
4015
  trace?: never;
4016
4016
  };
4017
+ "/api/v1/orgs/{org}/projects/{project}/default-flag-lifetime": {
4018
+ parameters: {
4019
+ query?: never;
4020
+ header?: never;
4021
+ path?: never;
4022
+ cookie?: never;
4023
+ };
4024
+ get?: never;
4025
+ /**
4026
+ * Sets or removes the project's default flag lifetime, in days (1–3650; null removes it).
4027
+ * @description Temporary
4028
+ * flags with no expiry date of their own then expire that many days after they were created, reported
4029
+ * as `expirySource: "project-default"`. Takes effect at the next hourly staleness run. Requires at
4030
+ * least Member, and the default-flag-lifetime feature to set one (400 `FEATURE_NOT_ENABLED`);
4031
+ * removing one is always allowed.
4032
+ */
4033
+ put: {
4034
+ parameters: {
4035
+ query?: never;
4036
+ header?: never;
4037
+ path: {
4038
+ org: string;
4039
+ project: string;
4040
+ };
4041
+ cookie?: never;
4042
+ };
4043
+ requestBody?: {
4044
+ content: {
4045
+ "application/json": components["schemas"]["PublicSetDefaultFlagLifetimeRequest"];
4046
+ "text/json": components["schemas"]["PublicSetDefaultFlagLifetimeRequest"];
4047
+ "application/*+json": components["schemas"]["PublicSetDefaultFlagLifetimeRequest"];
4048
+ };
4049
+ };
4050
+ responses: {
4051
+ /** @description No Content */
4052
+ 204: {
4053
+ headers: {
4054
+ "X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
4055
+ "X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
4056
+ "X-RateLimit-Reset": components["headers"]["X-RateLimit-Reset"];
4057
+ [name: string]: unknown;
4058
+ };
4059
+ content?: never;
4060
+ };
4061
+ /** @description Bad Request */
4062
+ 400: {
4063
+ headers: {
4064
+ "X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
4065
+ "X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
4066
+ "X-RateLimit-Reset": components["headers"]["X-RateLimit-Reset"];
4067
+ [name: string]: unknown;
4068
+ };
4069
+ content: {
4070
+ "application/json": components["schemas"]["PublicApiErrorEnvelope"];
4071
+ };
4072
+ };
4073
+ /** @description Authentication is required, or the supplied API token is invalid or expired. */
4074
+ 401: {
4075
+ headers: {
4076
+ "X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
4077
+ "X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
4078
+ "X-RateLimit-Reset": components["headers"]["X-RateLimit-Reset"];
4079
+ [name: string]: unknown;
4080
+ };
4081
+ content: {
4082
+ "application/json": components["schemas"]["PublicApiErrorEnvelope"];
4083
+ };
4084
+ };
4085
+ /** @description Forbidden */
4086
+ 403: {
4087
+ headers: {
4088
+ "X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
4089
+ "X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
4090
+ "X-RateLimit-Reset": components["headers"]["X-RateLimit-Reset"];
4091
+ [name: string]: unknown;
4092
+ };
4093
+ content: {
4094
+ "application/json": components["schemas"]["PublicApiErrorEnvelope"];
4095
+ };
4096
+ };
4097
+ /** @description Not Found */
4098
+ 404: {
4099
+ headers: {
4100
+ "X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
4101
+ "X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
4102
+ "X-RateLimit-Reset": components["headers"]["X-RateLimit-Reset"];
4103
+ [name: string]: unknown;
4104
+ };
4105
+ content: {
4106
+ "application/json": components["schemas"]["PublicApiErrorEnvelope"];
4107
+ };
4108
+ };
4109
+ /** @description Rate limit exceeded. Retry after the interval indicated by the Retry-After header. */
4110
+ 429: {
4111
+ headers: {
4112
+ /** @description Number of seconds to wait before retrying the request. */
4113
+ "Retry-After"?: number;
4114
+ "X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
4115
+ "X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
4116
+ "X-RateLimit-Reset": components["headers"]["X-RateLimit-Reset"];
4117
+ [name: string]: unknown;
4118
+ };
4119
+ content: {
4120
+ "application/json": components["schemas"]["PublicApiErrorEnvelope"];
4121
+ };
4122
+ };
4123
+ };
4124
+ };
4125
+ post?: never;
4126
+ delete?: never;
4127
+ options?: never;
4128
+ head?: never;
4129
+ patch?: never;
4130
+ trace?: never;
4131
+ };
4132
+ "/api/v1/orgs/{org}/projects/{project}/default-flag-lifetime/impact": {
4133
+ parameters: {
4134
+ query?: never;
4135
+ header?: never;
4136
+ path?: never;
4137
+ cookie?: never;
4138
+ };
4139
+ /**
4140
+ * Previews a default flag lifetime: how many temporary flags with no expiry date of their own would newly be past expiry, and how many would stop being past the current one.
4141
+ * @description Omit `days` to
4142
+ * preview removing it.
4143
+ */
4144
+ get: {
4145
+ parameters: {
4146
+ query?: {
4147
+ days?: number;
4148
+ };
4149
+ header?: never;
4150
+ path: {
4151
+ org: string;
4152
+ project: string;
4153
+ };
4154
+ cookie?: never;
4155
+ };
4156
+ requestBody?: never;
4157
+ responses: {
4158
+ /** @description OK */
4159
+ 200: {
4160
+ headers: {
4161
+ "X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
4162
+ "X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
4163
+ "X-RateLimit-Reset": components["headers"]["X-RateLimit-Reset"];
4164
+ [name: string]: unknown;
4165
+ };
4166
+ content: {
4167
+ "application/json": components["schemas"]["PublicDefaultFlagLifetimeImpact"];
4168
+ };
4169
+ };
4170
+ /** @description Bad Request */
4171
+ 400: {
4172
+ headers: {
4173
+ "X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
4174
+ "X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
4175
+ "X-RateLimit-Reset": components["headers"]["X-RateLimit-Reset"];
4176
+ [name: string]: unknown;
4177
+ };
4178
+ content: {
4179
+ "application/json": components["schemas"]["PublicApiErrorEnvelope"];
4180
+ };
4181
+ };
4182
+ /** @description Authentication is required, or the supplied API token is invalid or expired. */
4183
+ 401: {
4184
+ headers: {
4185
+ "X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
4186
+ "X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
4187
+ "X-RateLimit-Reset": components["headers"]["X-RateLimit-Reset"];
4188
+ [name: string]: unknown;
4189
+ };
4190
+ content: {
4191
+ "application/json": components["schemas"]["PublicApiErrorEnvelope"];
4192
+ };
4193
+ };
4194
+ /** @description Not Found */
4195
+ 404: {
4196
+ headers: {
4197
+ "X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
4198
+ "X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
4199
+ "X-RateLimit-Reset": components["headers"]["X-RateLimit-Reset"];
4200
+ [name: string]: unknown;
4201
+ };
4202
+ content: {
4203
+ "application/json": components["schemas"]["PublicApiErrorEnvelope"];
4204
+ };
4205
+ };
4206
+ /** @description Rate limit exceeded. Retry after the interval indicated by the Retry-After header. */
4207
+ 429: {
4208
+ headers: {
4209
+ /** @description Number of seconds to wait before retrying the request. */
4210
+ "Retry-After"?: number;
4211
+ "X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
4212
+ "X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
4213
+ "X-RateLimit-Reset": components["headers"]["X-RateLimit-Reset"];
4214
+ [name: string]: unknown;
4215
+ };
4216
+ content: {
4217
+ "application/json": components["schemas"]["PublicApiErrorEnvelope"];
4218
+ };
4219
+ };
4220
+ };
4221
+ };
4222
+ put?: never;
4223
+ post?: never;
4224
+ delete?: never;
4225
+ options?: never;
4226
+ head?: never;
4227
+ patch?: never;
4228
+ trace?: never;
4229
+ };
4017
4230
  "/api/v1/orgs/{org}/projects/{project}/environments/{env}/sdk-keys": {
4018
4231
  parameters: {
4019
4232
  query?: never;
@@ -6105,6 +6318,7 @@ export interface components {
6105
6318
  * public API surfaces environments via their own endpoint (Task 6), not embedded here.
6106
6319
  * UpdatedAt is only populated from ProjectDto (the detail/create
6107
6320
  * shape); ProjectListItemDto doesn't carry it, so list rows leave it `null`.
6321
+ * DefaultFlagLifetimeDays is the project's default flag lifetime in days, or null (#3194).
6108
6322
  * @example {
6109
6323
  * "id": "0197b69f-1a2b-7c3d-8e4f-5a6b7c8d9e0f",
6110
6324
  * "key": "checkout",
@@ -6124,6 +6338,8 @@ export interface components {
6124
6338
  createdAt?: string;
6125
6339
  /** Format: date-time */
6126
6340
  updatedAt?: string | null;
6341
+ /** Format: int32 */
6342
+ defaultFlagLifetimeDays?: number | null;
6127
6343
  /** @description Capability hints: which operations the authenticated caller may perform on this resource, each with allowed + optional reason. Computed from the caller's role and the resource's state. Injected at runtime; safe to ignore. Present only on top-level resource responses — nested occurrences (e.g. a rule inside a targeting-config response) do not carry it. */
6128
6344
  _actions?: {
6129
6345
  [key: string]: components["schemas"]["ActionCapability"];
@@ -6530,6 +6746,16 @@ export interface components {
6530
6746
  secret?: string | null;
6531
6747
  warning?: string | null;
6532
6748
  };
6749
+ /**
6750
+ * @description Response of `GET .../default-flag-lifetime/impact`: how many temporary flags with no expiry
6751
+ * date of their own would newly be past expiry, and how many would stop being past it.
6752
+ */
6753
+ PublicDefaultFlagLifetimeImpact: {
6754
+ /** Format: int32 */
6755
+ newlyPastExpiry?: number;
6756
+ /** Format: int32 */
6757
+ noLongerPastExpiry?: number;
6758
+ };
6533
6759
  /**
6534
6760
  * @description Public representation of an environment, returned by
6535
6761
  * `GET /api/v1/orgs/{org}/projects/{project}/environments` (list),
@@ -6621,6 +6847,9 @@ export interface components {
6621
6847
  * Variations (a summary-only shape upstream) and
6622
6848
  * Staleness, matching the "list is narrower than detail"
6623
6849
  * split already present on the Application-layer DTOs.
6850
+ * EffectiveExpiresAtUtc is when the flag counts as past expiry, from its own ExpiresAtUtc
6851
+ * or its project's default lifetime; ExpirySource says which (`explicit` / `project-default`),
6852
+ * both null when neither applies.
6624
6853
  */
6625
6854
  PublicFlagListItem: {
6626
6855
  /** Format: uuid */
@@ -6644,6 +6873,9 @@ export interface components {
6644
6873
  owner?: components["schemas"]["PublicFlagOwner"];
6645
6874
  removalPrUrl?: string | null;
6646
6875
  isPermanent?: boolean;
6876
+ /** Format: date-time */
6877
+ effectiveExpiresAtUtc?: string | null;
6878
+ expirySource?: string | null;
6647
6879
  };
6648
6880
  /**
6649
6881
  * @description A page of results plus an opaque cursor for the next page, or null when this is the last
@@ -6716,6 +6948,9 @@ export interface components {
6716
6948
  * `GET .../flags/{flag}` and the body of a successful create. Drops internal/dashboard-only
6717
6949
  * fields present on FeatureFlagDto — notably `ProjectId` (implicit in the
6718
6950
  * route) and `Staleness` (an internal analytics signal, not part of the public contract).
6951
+ * EffectiveExpiresAtUtc is when the flag counts as past expiry, from its own ExpiresAtUtc
6952
+ * or its project's default lifetime; ExpirySource says which (`explicit` / `project-default`),
6953
+ * both null when neither applies.
6719
6954
  * @example {
6720
6955
  * "id": "0197b6a0-5f2a-7c3e-9b4d-1e2f3a4b5c6d",
6721
6956
  * "key": "new-checkout-flow",
@@ -6772,6 +7007,9 @@ export interface components {
6772
7007
  owner?: components["schemas"]["PublicFlagOwner"];
6773
7008
  removalPrUrl?: string | null;
6774
7009
  isPermanent?: boolean;
7010
+ /** Format: date-time */
7011
+ effectiveExpiresAtUtc?: string | null;
7012
+ expirySource?: string | null;
6775
7013
  /** @description Capability hints: which operations the authenticated caller may perform on this resource, each with allowed + optional reason. Computed from the caller's role and the resource's state. Injected at runtime; safe to ignore. Present only on top-level resource responses — nested occurrences (e.g. a rule inside a targeting-config response) do not carry it. */
6776
7014
  _actions?: {
6777
7015
  [key: string]: components["schemas"]["ActionCapability"];
@@ -6940,6 +7178,14 @@ export interface components {
6940
7178
  [key: string]: components["schemas"]["ActionCapability"];
6941
7179
  };
6942
7180
  };
7181
+ /**
7182
+ * @description Request body for `PUT /api/v1/orgs/{org}/projects/{project}/default-flag-lifetime`. `days`
7183
+ * is 1–3650; null (or an empty body) removes the default.
7184
+ */
7185
+ PublicSetDefaultFlagLifetimeRequest: {
7186
+ /** Format: int32 */
7187
+ days?: number | null;
7188
+ };
6943
7189
  /**
6944
7190
  * @description Request body for `PUT /api/v1/orgs/{org}/projects/{project}/flags/{flag}/expiry`. Expiry is a
6945
7191
  * dedicated sub-resource, deliberately NOT a field on PublicUpdateFeatureFlagRequest: that