@contractspec/lib.feature-flags 1.56.1 → 1.58.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (279) hide show
  1. package/dist/browser/contracts/index.js +636 -0
  2. package/dist/browser/docs/feature-flags.docblock.js +71 -0
  3. package/dist/browser/docs/index.js +71 -0
  4. package/dist/browser/entities/index.js +306 -0
  5. package/dist/browser/evaluation/index.js +223 -0
  6. package/dist/browser/events.js +296 -0
  7. package/dist/browser/feature-flags.capability.js +28 -0
  8. package/dist/browser/feature-flags.feature.js +55 -0
  9. package/dist/browser/index.js +1583 -0
  10. package/dist/contracts/index.d.ts +944 -953
  11. package/dist/contracts/index.d.ts.map +1 -1
  12. package/dist/contracts/index.js +635 -906
  13. package/dist/docs/feature-flags.docblock.d.ts +2 -1
  14. package/dist/docs/feature-flags.docblock.d.ts.map +1 -0
  15. package/dist/docs/feature-flags.docblock.js +18 -22
  16. package/dist/docs/index.d.ts +2 -1
  17. package/dist/docs/index.d.ts.map +1 -0
  18. package/dist/docs/index.js +72 -1
  19. package/dist/entities/index.d.ts +159 -164
  20. package/dist/entities/index.d.ts.map +1 -1
  21. package/dist/entities/index.js +297 -315
  22. package/dist/evaluation/index.d.ts +119 -122
  23. package/dist/evaluation/index.d.ts.map +1 -1
  24. package/dist/evaluation/index.js +215 -212
  25. package/dist/events.d.ts +480 -489
  26. package/dist/events.d.ts.map +1 -1
  27. package/dist/events.js +272 -511
  28. package/dist/feature-flags.capability.d.ts +2 -8
  29. package/dist/feature-flags.capability.d.ts.map +1 -1
  30. package/dist/feature-flags.capability.js +29 -25
  31. package/dist/feature-flags.feature.d.ts +1 -7
  32. package/dist/feature-flags.feature.d.ts.map +1 -1
  33. package/dist/feature-flags.feature.js +54 -146
  34. package/dist/index.d.ts +7 -6
  35. package/dist/index.d.ts.map +1 -0
  36. package/dist/index.js +1584 -8
  37. package/dist/node/contracts/index.js +636 -0
  38. package/dist/node/docs/feature-flags.docblock.js +71 -0
  39. package/dist/node/docs/index.js +71 -0
  40. package/dist/node/entities/index.js +306 -0
  41. package/dist/node/evaluation/index.js +223 -0
  42. package/dist/node/events.js +296 -0
  43. package/dist/node/feature-flags.capability.js +28 -0
  44. package/dist/node/feature-flags.feature.js +55 -0
  45. package/dist/node/index.js +1583 -0
  46. package/package.json +117 -30
  47. package/dist/contracts/index.js.map +0 -1
  48. package/dist/contracts/src/app-config/lifecycle.d.ts +0 -1
  49. package/dist/contracts/src/app-config/runtime.d.ts +0 -13
  50. package/dist/contracts/src/app-config/spec.d.ts +0 -9
  51. package/dist/contracts/src/app-config/validation.d.ts +0 -8
  52. package/dist/contracts/src/capabilities/capabilities.d.ts +0 -60
  53. package/dist/contracts/src/capabilities/capabilities.d.ts.map +0 -1
  54. package/dist/contracts/src/capabilities/context.d.ts +0 -1
  55. package/dist/contracts/src/capabilities/guards.d.ts +0 -4
  56. package/dist/contracts/src/capabilities/index.d.ts +0 -5
  57. package/dist/contracts/src/capabilities/openbanking.d.ts +0 -1
  58. package/dist/contracts/src/capabilities/validation.d.ts +0 -4
  59. package/dist/contracts/src/client/index.d.ts +0 -1
  60. package/dist/contracts/src/client/react/drivers/rn-reusables.d.ts +0 -1
  61. package/dist/contracts/src/client/react/drivers/shadcn.d.ts +0 -1
  62. package/dist/contracts/src/client/react/feature-render.d.ts +0 -3
  63. package/dist/contracts/src/client/react/form-render.d.ts +0 -4
  64. package/dist/contracts/src/client/react/index.d.ts +0 -4
  65. package/dist/contracts/src/contract-registry/index.d.ts +0 -2
  66. package/dist/contracts/src/contract-registry/schemas.d.ts +0 -2
  67. package/dist/contracts/src/contract-registry/types.d.ts +0 -1
  68. package/dist/contracts/src/data-views/index.d.ts +0 -4
  69. package/dist/contracts/src/data-views/registry.d.ts +0 -2
  70. package/dist/contracts/src/data-views/report/contractVerificationTable.d.ts +0 -1
  71. package/dist/contracts/src/data-views/spec.d.ts +0 -3
  72. package/dist/contracts/src/data-views/types.d.ts +0 -2
  73. package/dist/contracts/src/docs/accessibility_wcag_compliance_specs.docblock.d.ts +0 -1
  74. package/dist/contracts/src/docs/capabilities/documentationSystem.capability.d.ts +0 -1
  75. package/dist/contracts/src/docs/capabilities/index.d.ts +0 -1
  76. package/dist/contracts/src/docs/commands/docsGenerate.command.d.ts +0 -2
  77. package/dist/contracts/src/docs/commands/docsPublish.command.d.ts +0 -2
  78. package/dist/contracts/src/docs/commands/index.d.ts +0 -2
  79. package/dist/contracts/src/docs/contracts.d.ts +0 -7
  80. package/dist/contracts/src/docs/events/docsGenerated.event.d.ts +0 -2
  81. package/dist/contracts/src/docs/events/docsPublished.event.d.ts +0 -2
  82. package/dist/contracts/src/docs/events/index.d.ts +0 -2
  83. package/dist/contracts/src/docs/forms/docsSearch.form.d.ts +0 -2
  84. package/dist/contracts/src/docs/forms/index.d.ts +0 -1
  85. package/dist/contracts/src/docs/index.d.ts +0 -33
  86. package/dist/contracts/src/docs/presentations/docsLayout.presentation.d.ts +0 -1
  87. package/dist/contracts/src/docs/presentations/docsReferencePage.presentation.d.ts +0 -1
  88. package/dist/contracts/src/docs/presentations/index.d.ts +0 -2
  89. package/dist/contracts/src/docs/presentations.d.ts +0 -2
  90. package/dist/contracts/src/docs/queries/contractReference.query.d.ts +0 -2
  91. package/dist/contracts/src/docs/queries/docsIndex.query.d.ts +0 -2
  92. package/dist/contracts/src/docs/queries/index.d.ts +0 -2
  93. package/dist/contracts/src/docs/registry.d.ts +0 -10
  94. package/dist/contracts/src/docs/registry.d.ts.map +0 -1
  95. package/dist/contracts/src/docs/tech/auth/better-auth-nextjs.docblock.d.ts +0 -1
  96. package/dist/contracts/src/docs/tech/contracts/README.docblock.d.ts +0 -1
  97. package/dist/contracts/src/docs/tech/contracts/openapi-export.docblock.d.ts +0 -1
  98. package/dist/contracts/src/docs/tech/contracts/openapi-import.docblock.d.ts +0 -1
  99. package/dist/contracts/src/docs/tech/lifecycle-stage-system.docblock.d.ts +0 -1
  100. package/dist/contracts/src/docs/tech/llm/llm-integration.docblock.d.ts +0 -1
  101. package/dist/contracts/src/docs/tech/mcp-endpoints.docblock.d.ts +0 -1
  102. package/dist/contracts/src/docs/tech/presentation-runtime.docblock.d.ts +0 -1
  103. package/dist/contracts/src/docs/tech/schema/README.docblock.d.ts +0 -1
  104. package/dist/contracts/src/docs/tech/studio/learning-events.docblock.d.ts +0 -1
  105. package/dist/contracts/src/docs/tech/studio/learning-journeys.docblock.d.ts +0 -1
  106. package/dist/contracts/src/docs/tech/studio/platform-admin-panel.docblock.d.ts +0 -1
  107. package/dist/contracts/src/docs/tech/studio/project-access-teams.docblock.d.ts +0 -1
  108. package/dist/contracts/src/docs/tech/studio/project-routing.docblock.d.ts +0 -1
  109. package/dist/contracts/src/docs/tech/studio/sandbox-unlogged.docblock.d.ts +0 -1
  110. package/dist/contracts/src/docs/tech/studio/team-invitations.docblock.d.ts +0 -1
  111. package/dist/contracts/src/docs/tech/studio/workspace-ops.docblock.d.ts +0 -1
  112. package/dist/contracts/src/docs/tech/studio/workspaces.docblock.d.ts +0 -1
  113. package/dist/contracts/src/docs/tech/telemetry-ingest.docblock.d.ts +0 -1
  114. package/dist/contracts/src/docs/tech/vscode-extension.docblock.d.ts +0 -1
  115. package/dist/contracts/src/docs/views/contractReference.dataView.d.ts +0 -1
  116. package/dist/contracts/src/docs/views/docsIndex.dataView.d.ts +0 -1
  117. package/dist/contracts/src/docs/views/exampleCatalog.dataView.d.ts +0 -1
  118. package/dist/contracts/src/docs/views/index.d.ts +0 -3
  119. package/dist/contracts/src/events.d.ts +0 -45
  120. package/dist/contracts/src/events.d.ts.map +0 -1
  121. package/dist/contracts/src/examples/index.d.ts +0 -4
  122. package/dist/contracts/src/examples/registry.d.ts +0 -2
  123. package/dist/contracts/src/examples/schema.d.ts +0 -2
  124. package/dist/contracts/src/examples/types.d.ts +0 -3
  125. package/dist/contracts/src/examples/validation.d.ts +0 -1
  126. package/dist/contracts/src/experiments/evaluator.d.ts +0 -2
  127. package/dist/contracts/src/experiments/spec-resolver.d.ts +0 -4
  128. package/dist/contracts/src/experiments/spec.d.ts +0 -16
  129. package/dist/contracts/src/experiments/spec.d.ts.map +0 -1
  130. package/dist/contracts/src/features/index.d.ts +0 -4
  131. package/dist/contracts/src/features/install.d.ts +0 -6
  132. package/dist/contracts/src/features/registry.d.ts +0 -2
  133. package/dist/contracts/src/features/types.d.ts +0 -80
  134. package/dist/contracts/src/features/types.d.ts.map +0 -1
  135. package/dist/contracts/src/features/validation.d.ts +0 -2
  136. package/dist/contracts/src/forms/forms.d.ts +0 -3
  137. package/dist/contracts/src/forms/index.d.ts +0 -1
  138. package/dist/contracts/src/index.d.ts +0 -53
  139. package/dist/contracts/src/install.d.ts +0 -7
  140. package/dist/contracts/src/integrations/connection.d.ts +0 -1
  141. package/dist/contracts/src/integrations/index.d.ts +0 -6
  142. package/dist/contracts/src/integrations/openbanking/contracts/accounts.d.ts +0 -4
  143. package/dist/contracts/src/integrations/openbanking/contracts/balances.d.ts +0 -4
  144. package/dist/contracts/src/integrations/openbanking/contracts/index.d.ts +0 -5
  145. package/dist/contracts/src/integrations/openbanking/contracts/transactions.d.ts +0 -4
  146. package/dist/contracts/src/integrations/openbanking/guards.d.ts +0 -1
  147. package/dist/contracts/src/integrations/openbanking/models.d.ts +0 -1
  148. package/dist/contracts/src/integrations/openbanking/openbanking.feature.d.ts +0 -1
  149. package/dist/contracts/src/integrations/operations.d.ts +0 -4
  150. package/dist/contracts/src/integrations/providers/elevenlabs.d.ts +0 -2
  151. package/dist/contracts/src/integrations/providers/gcs-storage.d.ts +0 -2
  152. package/dist/contracts/src/integrations/providers/gmail.d.ts +0 -2
  153. package/dist/contracts/src/integrations/providers/google-calendar.d.ts +0 -2
  154. package/dist/contracts/src/integrations/providers/index.d.ts +0 -11
  155. package/dist/contracts/src/integrations/providers/mistral.d.ts +0 -2
  156. package/dist/contracts/src/integrations/providers/postmark.d.ts +0 -2
  157. package/dist/contracts/src/integrations/providers/powens.d.ts +0 -2
  158. package/dist/contracts/src/integrations/providers/qdrant.d.ts +0 -2
  159. package/dist/contracts/src/integrations/providers/registry.d.ts +0 -1
  160. package/dist/contracts/src/integrations/providers/stripe.d.ts +0 -2
  161. package/dist/contracts/src/integrations/providers/twilio-sms.d.ts +0 -2
  162. package/dist/contracts/src/integrations/spec.d.ts +0 -3
  163. package/dist/contracts/src/jsonschema.d.ts +0 -4
  164. package/dist/contracts/src/knowledge/index.d.ts +0 -2
  165. package/dist/contracts/src/knowledge/operations.d.ts +0 -4
  166. package/dist/contracts/src/knowledge/spaces/email-threads.d.ts +0 -1
  167. package/dist/contracts/src/knowledge/spaces/financial-docs.d.ts +0 -1
  168. package/dist/contracts/src/knowledge/spaces/financial-overview.d.ts +0 -1
  169. package/dist/contracts/src/knowledge/spaces/index.d.ts +0 -6
  170. package/dist/contracts/src/knowledge/spaces/product-canon.d.ts +0 -1
  171. package/dist/contracts/src/knowledge/spaces/support-faq.d.ts +0 -1
  172. package/dist/contracts/src/knowledge/spaces/uploaded-docs.d.ts +0 -1
  173. package/dist/contracts/src/knowledge/spec.d.ts +0 -3
  174. package/dist/contracts/src/llm/exporters.d.ts +0 -7
  175. package/dist/contracts/src/llm/index.d.ts +0 -3
  176. package/dist/contracts/src/llm/prompts.d.ts +0 -2
  177. package/dist/contracts/src/llm/types.d.ts +0 -5
  178. package/dist/contracts/src/migrations.d.ts +0 -1
  179. package/dist/contracts/src/model-registry.d.ts +0 -1
  180. package/dist/contracts/src/onboarding-base.d.ts +0 -2
  181. package/dist/contracts/src/openapi.d.ts +0 -1
  182. package/dist/contracts/src/operations/index.d.ts +0 -3
  183. package/dist/contracts/src/operations/operation.d.ts +0 -176
  184. package/dist/contracts/src/operations/operation.d.ts.map +0 -1
  185. package/dist/contracts/src/operations/registry.d.ts +0 -6
  186. package/dist/contracts/src/operations/report/getContractVerificationStatus.d.ts +0 -3
  187. package/dist/contracts/src/operations/report/index.d.ts +0 -4
  188. package/dist/contracts/src/ownership.d.ts +0 -164
  189. package/dist/contracts/src/ownership.d.ts.map +0 -1
  190. package/dist/contracts/src/policy/engine.d.ts +0 -3
  191. package/dist/contracts/src/policy/guards.d.ts +0 -1
  192. package/dist/contracts/src/policy/index.d.ts +0 -6
  193. package/dist/contracts/src/policy/opa-adapter.d.ts +0 -3
  194. package/dist/contracts/src/policy/registry.d.ts +0 -2
  195. package/dist/contracts/src/policy/spec.d.ts +0 -13
  196. package/dist/contracts/src/policy/spec.d.ts.map +0 -1
  197. package/dist/contracts/src/policy/validation.d.ts +0 -3
  198. package/dist/contracts/src/presentations/index.d.ts +0 -3
  199. package/dist/contracts/src/presentations/presentations.d.ts +0 -10
  200. package/dist/contracts/src/presentations/presentations.d.ts.map +0 -1
  201. package/dist/contracts/src/presentations/registry.d.ts +0 -2
  202. package/dist/contracts/src/presentations/transform-engine.d.ts +0 -2
  203. package/dist/contracts/src/prompt.d.ts +0 -2
  204. package/dist/contracts/src/promptRegistry.d.ts +0 -2
  205. package/dist/contracts/src/regenerator/adapters.d.ts +0 -1
  206. package/dist/contracts/src/regenerator/executor.d.ts +0 -1
  207. package/dist/contracts/src/regenerator/index.d.ts +0 -6
  208. package/dist/contracts/src/regenerator/service.d.ts +0 -2
  209. package/dist/contracts/src/regenerator/sinks.d.ts +0 -2
  210. package/dist/contracts/src/regenerator/types.d.ts +0 -3
  211. package/dist/contracts/src/regenerator/utils.d.ts +0 -1
  212. package/dist/contracts/src/registry-utils.d.ts +0 -1
  213. package/dist/contracts/src/registry.d.ts +0 -3
  214. package/dist/contracts/src/resources.d.ts +0 -19
  215. package/dist/contracts/src/resources.d.ts.map +0 -1
  216. package/dist/contracts/src/schema-to-markdown.d.ts +0 -1
  217. package/dist/contracts/src/serialization/index.d.ts +0 -1
  218. package/dist/contracts/src/serialization/serializers.d.ts +0 -7
  219. package/dist/contracts/src/server/graphql-pothos.d.ts +0 -7
  220. package/dist/contracts/src/server/index.d.ts +0 -7
  221. package/dist/contracts/src/server/mcp/createMcpServer.d.ts +0 -5
  222. package/dist/contracts/src/server/mcp/mcpTypes.d.ts +0 -2
  223. package/dist/contracts/src/server/provider-mcp.d.ts +0 -1
  224. package/dist/contracts/src/server/rest-elysia.d.ts +0 -3
  225. package/dist/contracts/src/server/rest-express.d.ts +0 -3
  226. package/dist/contracts/src/server/rest-generic.d.ts +0 -2
  227. package/dist/contracts/src/server/rest-next-app.d.ts +0 -3
  228. package/dist/contracts/src/server/rest-next-pages.d.ts +0 -3
  229. package/dist/contracts/src/telemetry/anomaly.d.ts +0 -2
  230. package/dist/contracts/src/telemetry/index.d.ts +0 -3
  231. package/dist/contracts/src/telemetry/spec.d.ts +0 -2
  232. package/dist/contracts/src/telemetry/tracker.d.ts +0 -3
  233. package/dist/contracts/src/tests/index.d.ts +0 -2
  234. package/dist/contracts/src/tests/runner.d.ts +0 -3
  235. package/dist/contracts/src/tests/spec.d.ts +0 -13
  236. package/dist/contracts/src/tests/spec.d.ts.map +0 -1
  237. package/dist/contracts/src/themes.d.ts +0 -2
  238. package/dist/contracts/src/types.d.ts +0 -5
  239. package/dist/contracts/src/versioning/refs.d.ts +0 -47
  240. package/dist/contracts/src/versioning/refs.d.ts.map +0 -1
  241. package/dist/contracts/src/workflow/adapters/db-adapter.d.ts +0 -1
  242. package/dist/contracts/src/workflow/adapters/file-adapter.d.ts +0 -1
  243. package/dist/contracts/src/workflow/adapters/index.d.ts +0 -3
  244. package/dist/contracts/src/workflow/adapters/memory-store.d.ts +0 -1
  245. package/dist/contracts/src/workflow/context.d.ts +0 -2
  246. package/dist/contracts/src/workflow/index.d.ts +0 -8
  247. package/dist/contracts/src/workflow/overview.docblock.d.ts +0 -1
  248. package/dist/contracts/src/workflow/runner.d.ts +0 -5
  249. package/dist/contracts/src/workflow/sla-monitor.d.ts +0 -2
  250. package/dist/contracts/src/workflow/spec.d.ts +0 -6
  251. package/dist/contracts/src/workflow/state.d.ts +0 -1
  252. package/dist/contracts/src/workflow/validation.d.ts +0 -5
  253. package/dist/contracts/src/workspace-config/contractsrc-schema.d.ts +0 -1
  254. package/dist/contracts/src/workspace-config/index.d.ts +0 -1
  255. package/dist/contracts/src/workspace-config/workspace-config.docblock.d.ts +0 -1
  256. package/dist/docs/feature-flags.docblock.js.map +0 -1
  257. package/dist/entities/index.js.map +0 -1
  258. package/dist/evaluation/index.js.map +0 -1
  259. package/dist/events.js.map +0 -1
  260. package/dist/feature-flags.capability.js.map +0 -1
  261. package/dist/feature-flags.feature.js.map +0 -1
  262. package/dist/schema/src/EnumType.d.ts +0 -36
  263. package/dist/schema/src/EnumType.d.ts.map +0 -1
  264. package/dist/schema/src/FieldType.d.ts +0 -30
  265. package/dist/schema/src/FieldType.d.ts.map +0 -1
  266. package/dist/schema/src/GraphQLSchemaType.d.ts +0 -2
  267. package/dist/schema/src/JsonSchemaType.d.ts +0 -2
  268. package/dist/schema/src/ScalarTypeEnum.d.ts +0 -1
  269. package/dist/schema/src/SchemaModel.d.ts +0 -70
  270. package/dist/schema/src/SchemaModel.d.ts.map +0 -1
  271. package/dist/schema/src/SchemaModelType.d.ts +0 -38
  272. package/dist/schema/src/SchemaModelType.d.ts.map +0 -1
  273. package/dist/schema/src/ZodSchemaType.d.ts +0 -2
  274. package/dist/schema/src/entity/defineEntity.d.ts +0 -1
  275. package/dist/schema/src/entity/generator.d.ts +0 -1
  276. package/dist/schema/src/entity/index.d.ts +0 -3
  277. package/dist/schema/src/entity/types.d.ts +0 -146
  278. package/dist/schema/src/entity/types.d.ts.map +0 -1
  279. package/dist/schema/src/index.d.ts +0 -10
@@ -0,0 +1,296 @@
1
+ // src/events.ts
2
+ import { ScalarTypeEnum, defineSchemaModel } from "@contractspec/lib.schema";
3
+ import { defineEvent } from "@contractspec/lib.contracts";
4
+ var FlagCreatedPayload = defineSchemaModel({
5
+ name: "FlagCreatedEventPayload",
6
+ description: "Payload when a feature flag is created",
7
+ fields: {
8
+ flagId: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
9
+ key: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
10
+ name: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
11
+ status: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
12
+ orgId: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },
13
+ createdBy: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },
14
+ createdAt: { type: ScalarTypeEnum.DateTime(), isOptional: false }
15
+ }
16
+ });
17
+ var FlagUpdatedPayload = defineSchemaModel({
18
+ name: "FlagUpdatedEventPayload",
19
+ description: "Payload when a feature flag is updated",
20
+ fields: {
21
+ flagId: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
22
+ key: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
23
+ changes: { type: ScalarTypeEnum.JSON(), isOptional: false },
24
+ updatedBy: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },
25
+ updatedAt: { type: ScalarTypeEnum.DateTime(), isOptional: false }
26
+ }
27
+ });
28
+ var FlagDeletedPayload = defineSchemaModel({
29
+ name: "FlagDeletedEventPayload",
30
+ description: "Payload when a feature flag is deleted",
31
+ fields: {
32
+ flagId: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
33
+ key: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
34
+ deletedBy: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },
35
+ deletedAt: { type: ScalarTypeEnum.DateTime(), isOptional: false }
36
+ }
37
+ });
38
+ var FlagToggledPayload = defineSchemaModel({
39
+ name: "FlagToggledEventPayload",
40
+ description: "Payload when a feature flag status is toggled",
41
+ fields: {
42
+ flagId: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
43
+ key: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
44
+ previousStatus: {
45
+ type: ScalarTypeEnum.String_unsecure(),
46
+ isOptional: false
47
+ },
48
+ newStatus: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
49
+ toggledBy: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },
50
+ toggledAt: { type: ScalarTypeEnum.DateTime(), isOptional: false }
51
+ }
52
+ });
53
+ var RuleCreatedPayload = defineSchemaModel({
54
+ name: "RuleCreatedEventPayload",
55
+ description: "Payload when a targeting rule is created",
56
+ fields: {
57
+ ruleId: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
58
+ flagId: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
59
+ flagKey: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
60
+ attribute: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
61
+ operator: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
62
+ createdAt: { type: ScalarTypeEnum.DateTime(), isOptional: false }
63
+ }
64
+ });
65
+ var RuleDeletedPayload = defineSchemaModel({
66
+ name: "RuleDeletedEventPayload",
67
+ description: "Payload when a targeting rule is deleted",
68
+ fields: {
69
+ ruleId: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
70
+ flagId: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
71
+ flagKey: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
72
+ deletedAt: { type: ScalarTypeEnum.DateTime(), isOptional: false }
73
+ }
74
+ });
75
+ var ExperimentCreatedPayload = defineSchemaModel({
76
+ name: "ExperimentCreatedEventPayload",
77
+ description: "Payload when an experiment is created",
78
+ fields: {
79
+ experimentId: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
80
+ key: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
81
+ name: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
82
+ flagId: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
83
+ variants: { type: ScalarTypeEnum.JSON(), isOptional: false },
84
+ createdBy: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },
85
+ createdAt: { type: ScalarTypeEnum.DateTime(), isOptional: false }
86
+ }
87
+ });
88
+ var ExperimentStartedPayload = defineSchemaModel({
89
+ name: "ExperimentStartedEventPayload",
90
+ description: "Payload when an experiment starts",
91
+ fields: {
92
+ experimentId: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
93
+ key: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
94
+ flagId: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
95
+ variants: { type: ScalarTypeEnum.JSON(), isOptional: false },
96
+ audiencePercentage: {
97
+ type: ScalarTypeEnum.Int_unsecure(),
98
+ isOptional: false
99
+ },
100
+ startedBy: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },
101
+ startedAt: { type: ScalarTypeEnum.DateTime(), isOptional: false }
102
+ }
103
+ });
104
+ var ExperimentStoppedPayload = defineSchemaModel({
105
+ name: "ExperimentStoppedEventPayload",
106
+ description: "Payload when an experiment stops",
107
+ fields: {
108
+ experimentId: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
109
+ key: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
110
+ reason: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
111
+ winningVariant: {
112
+ type: ScalarTypeEnum.String_unsecure(),
113
+ isOptional: true
114
+ },
115
+ stoppedBy: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },
116
+ stoppedAt: { type: ScalarTypeEnum.DateTime(), isOptional: false }
117
+ }
118
+ });
119
+ var FlagEvaluatedPayload = defineSchemaModel({
120
+ name: "FlagEvaluatedEventPayload",
121
+ description: "Payload when a flag is evaluated (for analytics)",
122
+ fields: {
123
+ flagId: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
124
+ flagKey: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
125
+ subjectType: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
126
+ subjectId: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
127
+ result: { type: ScalarTypeEnum.Boolean(), isOptional: false },
128
+ variant: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },
129
+ reason: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
130
+ evaluatedAt: { type: ScalarTypeEnum.DateTime(), isOptional: false }
131
+ }
132
+ });
133
+ var VariantAssignedPayload = defineSchemaModel({
134
+ name: "VariantAssignedEventPayload",
135
+ description: "Payload when a subject is assigned to an experiment variant",
136
+ fields: {
137
+ experimentId: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
138
+ experimentKey: {
139
+ type: ScalarTypeEnum.String_unsecure(),
140
+ isOptional: false
141
+ },
142
+ subjectType: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
143
+ subjectId: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
144
+ variant: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
145
+ bucket: { type: ScalarTypeEnum.Int_unsecure(), isOptional: false },
146
+ assignedAt: { type: ScalarTypeEnum.DateTime(), isOptional: false }
147
+ }
148
+ });
149
+ var FlagCreatedEvent = defineEvent({
150
+ meta: {
151
+ key: "flag.created",
152
+ version: "1.0.0",
153
+ description: "A feature flag has been created.",
154
+ stability: "stable",
155
+ owners: ["@platform.feature-flags"],
156
+ tags: ["feature-flags", "create"]
157
+ },
158
+ payload: FlagCreatedPayload
159
+ });
160
+ var FlagUpdatedEvent = defineEvent({
161
+ meta: {
162
+ key: "flag.updated",
163
+ version: "1.0.0",
164
+ description: "A feature flag has been updated.",
165
+ stability: "stable",
166
+ owners: ["@platform.feature-flags"],
167
+ tags: ["feature-flags", "update"]
168
+ },
169
+ payload: FlagUpdatedPayload
170
+ });
171
+ var FlagDeletedEvent = defineEvent({
172
+ meta: {
173
+ key: "flag.deleted",
174
+ version: "1.0.0",
175
+ description: "A feature flag has been deleted.",
176
+ stability: "stable",
177
+ owners: ["@platform.feature-flags"],
178
+ tags: ["feature-flags", "delete"]
179
+ },
180
+ payload: FlagDeletedPayload
181
+ });
182
+ var FlagToggledEvent = defineEvent({
183
+ meta: {
184
+ key: "flag.toggled",
185
+ version: "1.0.0",
186
+ description: "A feature flag status has been toggled.",
187
+ stability: "stable",
188
+ owners: ["@platform.feature-flags"],
189
+ tags: ["feature-flags", "toggle"]
190
+ },
191
+ payload: FlagToggledPayload
192
+ });
193
+ var RuleCreatedEvent = defineEvent({
194
+ meta: {
195
+ key: "flag.rule_created",
196
+ version: "1.0.0",
197
+ description: "A targeting rule has been created.",
198
+ stability: "stable",
199
+ owners: ["@platform.feature-flags"],
200
+ tags: ["feature-flags", "rule", "create"]
201
+ },
202
+ payload: RuleCreatedPayload
203
+ });
204
+ var RuleDeletedEvent = defineEvent({
205
+ meta: {
206
+ key: "flag.rule_deleted",
207
+ version: "1.0.0",
208
+ description: "A targeting rule has been deleted.",
209
+ stability: "stable",
210
+ owners: ["@platform.feature-flags"],
211
+ tags: ["feature-flags", "rule", "delete"]
212
+ },
213
+ payload: RuleDeletedPayload
214
+ });
215
+ var ExperimentCreatedEvent = defineEvent({
216
+ meta: {
217
+ key: "experiment.created",
218
+ version: "1.0.0",
219
+ description: "An experiment has been created.",
220
+ stability: "stable",
221
+ owners: ["@platform.feature-flags"],
222
+ tags: ["feature-flags", "experiment", "create"]
223
+ },
224
+ payload: ExperimentCreatedPayload
225
+ });
226
+ var ExperimentStartedEvent = defineEvent({
227
+ meta: {
228
+ key: "experiment.started",
229
+ version: "1.0.0",
230
+ description: "An experiment has started.",
231
+ stability: "stable",
232
+ owners: ["@platform.feature-flags"],
233
+ tags: ["feature-flags", "experiment", "start"]
234
+ },
235
+ payload: ExperimentStartedPayload
236
+ });
237
+ var ExperimentStoppedEvent = defineEvent({
238
+ meta: {
239
+ key: "experiment.stopped",
240
+ version: "1.0.0",
241
+ description: "An experiment has stopped.",
242
+ stability: "stable",
243
+ owners: ["@platform.feature-flags"],
244
+ tags: ["feature-flags", "experiment", "stop"]
245
+ },
246
+ payload: ExperimentStoppedPayload
247
+ });
248
+ var FlagEvaluatedEvent = defineEvent({
249
+ meta: {
250
+ key: "flag.evaluated",
251
+ version: "1.0.0",
252
+ description: "A feature flag has been evaluated.",
253
+ stability: "stable",
254
+ owners: ["@platform.feature-flags"],
255
+ tags: ["feature-flags", "evaluate"]
256
+ },
257
+ payload: FlagEvaluatedPayload
258
+ });
259
+ var VariantAssignedEvent = defineEvent({
260
+ meta: {
261
+ key: "experiment.variant_assigned",
262
+ version: "1.0.0",
263
+ description: "A subject has been assigned to an experiment variant.",
264
+ stability: "stable",
265
+ owners: ["@platform.feature-flags"],
266
+ tags: ["feature-flags", "experiment", "variant"]
267
+ },
268
+ payload: VariantAssignedPayload
269
+ });
270
+ var FeatureFlagEvents = {
271
+ FlagCreatedEvent,
272
+ FlagUpdatedEvent,
273
+ FlagDeletedEvent,
274
+ FlagToggledEvent,
275
+ RuleCreatedEvent,
276
+ RuleDeletedEvent,
277
+ ExperimentCreatedEvent,
278
+ ExperimentStartedEvent,
279
+ ExperimentStoppedEvent,
280
+ FlagEvaluatedEvent,
281
+ VariantAssignedEvent
282
+ };
283
+ export {
284
+ VariantAssignedEvent,
285
+ RuleDeletedEvent,
286
+ RuleCreatedEvent,
287
+ FlagUpdatedEvent,
288
+ FlagToggledEvent,
289
+ FlagEvaluatedEvent,
290
+ FlagDeletedEvent,
291
+ FlagCreatedEvent,
292
+ FeatureFlagEvents,
293
+ ExperimentStoppedEvent,
294
+ ExperimentStartedEvent,
295
+ ExperimentCreatedEvent
296
+ };
@@ -0,0 +1,28 @@
1
+ // src/feature-flags.capability.ts
2
+ import { defineCapability, StabilityEnum } from "@contractspec/lib.contracts";
3
+ var FeatureFlagsCapability = defineCapability({
4
+ meta: {
5
+ key: "feature-flag",
6
+ version: "1.0.0",
7
+ kind: "api",
8
+ stability: StabilityEnum.Experimental,
9
+ description: "Feature flag management and evaluation",
10
+ owners: ["@platform.featureflags"],
11
+ tags: ["feature-flags", "configuration"]
12
+ }
13
+ });
14
+ var ExperimentsCapability = defineCapability({
15
+ meta: {
16
+ key: "experiments",
17
+ version: "1.0.0",
18
+ kind: "api",
19
+ stability: StabilityEnum.Experimental,
20
+ description: "A/B testing and experimentation platform",
21
+ owners: ["@platform.featureflags"],
22
+ tags: ["experiments", "ab-testing"]
23
+ }
24
+ });
25
+ export {
26
+ FeatureFlagsCapability,
27
+ ExperimentsCapability
28
+ };
@@ -0,0 +1,55 @@
1
+ // src/feature-flags.feature.ts
2
+ import { defineFeature } from "@contractspec/lib.contracts";
3
+ var FeatureFlagsFeature = defineFeature({
4
+ meta: {
5
+ key: "feature-flags",
6
+ version: "1.0.0",
7
+ title: "Feature Flags",
8
+ description: "Feature flag management with targeting rules and A/B experiments",
9
+ domain: "platform",
10
+ owners: ["@platform.feature-flags"],
11
+ tags: ["feature-flags", "experiments", "targeting"],
12
+ stability: "stable"
13
+ },
14
+ operations: [
15
+ { key: "flag.create", version: "1.0.0" },
16
+ { key: "flag.update", version: "1.0.0" },
17
+ { key: "flag.delete", version: "1.0.0" },
18
+ { key: "flag.toggle", version: "1.0.0" },
19
+ { key: "flag.get", version: "1.0.0" },
20
+ { key: "flag.list", version: "1.0.0" },
21
+ { key: "flag.evaluate", version: "1.0.0" },
22
+ { key: "flag.rule.create", version: "1.0.0" },
23
+ { key: "flag.rule.delete", version: "1.0.0" },
24
+ { key: "experiment.create", version: "1.0.0" },
25
+ { key: "experiment.start", version: "1.0.0" },
26
+ { key: "experiment.stop", version: "1.0.0" },
27
+ { key: "experiment.get", version: "1.0.0" }
28
+ ],
29
+ events: [
30
+ { key: "flag.created", version: "1.0.0" },
31
+ { key: "flag.updated", version: "1.0.0" },
32
+ { key: "flag.deleted", version: "1.0.0" },
33
+ { key: "flag.toggled", version: "1.0.0" },
34
+ { key: "flag.evaluated", version: "1.0.0" },
35
+ { key: "flag.rule_created", version: "1.0.0" },
36
+ { key: "flag.rule_deleted", version: "1.0.0" },
37
+ { key: "experiment.created", version: "1.0.0" },
38
+ { key: "experiment.started", version: "1.0.0" },
39
+ { key: "experiment.stopped", version: "1.0.0" },
40
+ { key: "experiment.variant_assigned", version: "1.0.0" }
41
+ ],
42
+ presentations: [],
43
+ opToPresentation: [],
44
+ presentationsTargets: [],
45
+ capabilities: {
46
+ provides: [
47
+ { key: "feature-flag", version: "1.0.0" },
48
+ { key: "experiments", version: "1.0.0" }
49
+ ],
50
+ requires: [{ key: "identity", version: "1.0.0" }]
51
+ }
52
+ });
53
+ export {
54
+ FeatureFlagsFeature
55
+ };