@lssm/lib.feature-flags 0.0.0-canary-20251217083314 → 1.41.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (138) hide show
  1. package/dist/contracts/index.js +1 -910
  2. package/dist/docs/feature-flags.docblock.js +2 -21
  3. package/dist/docs/index.js +1 -1
  4. package/dist/entities/index.js +1 -325
  5. package/dist/evaluation/index.js +1 -220
  6. package/dist/events.js +1 -459
  7. package/dist/feature-flags.feature.js +1 -139
  8. package/dist/index.js +1 -8
  9. package/package.json +13 -13
  10. package/dist/contracts/dist/capabilities/openbanking.js +0 -88
  11. package/dist/contracts/dist/client/index.js +0 -5
  12. package/dist/contracts/dist/client/react/feature-render.js +0 -2
  13. package/dist/contracts/dist/client/react/form-render.js +0 -4
  14. package/dist/contracts/dist/client/react/index.js +0 -4
  15. package/dist/contracts/dist/contract-registry/index.js +0 -1
  16. package/dist/contracts/dist/contract-registry/schemas.js +0 -60
  17. package/dist/contracts/dist/docs/PUBLISHING.docblock.js +0 -16
  18. package/dist/contracts/dist/docs/accessibility_wcag_compliance_specs.docblock.js +0 -16
  19. package/dist/contracts/dist/docs/index.js +0 -29
  20. package/dist/contracts/dist/docs/presentations.js +0 -71
  21. package/dist/contracts/dist/docs/registry.js +0 -44
  22. package/dist/contracts/dist/docs/tech/PHASE_1_QUICKSTART.docblock.js +0 -16
  23. package/dist/contracts/dist/docs/tech/PHASE_2_AI_NATIVE_OPERATIONS.docblock.js +0 -16
  24. package/dist/contracts/dist/docs/tech/PHASE_3_AUTO_EVOLUTION.docblock.js +0 -16
  25. package/dist/contracts/dist/docs/tech/PHASE_4_PERSONALIZATION_ENGINE.docblock.js +0 -16
  26. package/dist/contracts/dist/docs/tech/PHASE_5_ZERO_TOUCH_OPERATIONS.docblock.js +0 -16
  27. package/dist/contracts/dist/docs/tech/auth/better-auth-nextjs.docblock.js +0 -80
  28. package/dist/contracts/dist/docs/tech/contracts/openapi-export.docblock.js +0 -57
  29. package/dist/contracts/dist/docs/tech/lifecycle-stage-system.docblock.js +0 -16
  30. package/dist/contracts/dist/docs/tech/llm/llm-integration.docblock.js +0 -357
  31. package/dist/contracts/dist/docs/tech/mcp-endpoints.docblock.js +0 -37
  32. package/dist/contracts/dist/docs/tech/presentation-runtime.docblock.js +0 -16
  33. package/dist/contracts/dist/docs/tech/schema/README.docblock.js +0 -20
  34. package/dist/contracts/dist/docs/tech/studio/learning-events.docblock.js +0 -48
  35. package/dist/contracts/dist/docs/tech/studio/learning-journeys.docblock.js +0 -79
  36. package/dist/contracts/dist/docs/tech/studio/platform-admin-panel.docblock.js +0 -84
  37. package/dist/contracts/dist/docs/tech/studio/project-access-teams.docblock.js +0 -45
  38. package/dist/contracts/dist/docs/tech/studio/project-routing.docblock.js +0 -67
  39. package/dist/contracts/dist/docs/tech/studio/sandbox-unlogged.docblock.js +0 -40
  40. package/dist/contracts/dist/docs/tech/studio/team-invitations.docblock.js +0 -69
  41. package/dist/contracts/dist/docs/tech/studio/workspace-ops.docblock.js +0 -47
  42. package/dist/contracts/dist/docs/tech/studio/workspaces.docblock.js +0 -62
  43. package/dist/contracts/dist/docs/tech/telemetry-ingest.docblock.js +0 -155
  44. package/dist/contracts/dist/docs/tech/templates/runtime.docblock.js +0 -20
  45. package/dist/contracts/dist/docs/tech/vscode-extension.docblock.js +0 -101
  46. package/dist/contracts/dist/docs/tech/workflows/overview.docblock.js +0 -20
  47. package/dist/contracts/dist/events.js +0 -10
  48. package/dist/contracts/dist/experiments/evaluator.js +0 -1
  49. package/dist/contracts/dist/index.js +0 -71
  50. package/dist/contracts/dist/install.js +0 -2
  51. package/dist/contracts/dist/integrations/contracts.js +0 -377
  52. package/dist/contracts/dist/integrations/index.js +0 -18
  53. package/dist/contracts/dist/integrations/openbanking/contracts/accounts.js +0 -228
  54. package/dist/contracts/dist/integrations/openbanking/contracts/balances.js +0 -159
  55. package/dist/contracts/dist/integrations/openbanking/contracts/index.js +0 -3
  56. package/dist/contracts/dist/integrations/openbanking/contracts/transactions.js +0 -210
  57. package/dist/contracts/dist/integrations/openbanking/models.js +0 -242
  58. package/dist/contracts/dist/integrations/openbanking/telemetry.js +0 -13
  59. package/dist/contracts/dist/integrations/providers/elevenlabs.js +0 -52
  60. package/dist/contracts/dist/integrations/providers/gcs-storage.js +0 -75
  61. package/dist/contracts/dist/integrations/providers/gmail.js +0 -87
  62. package/dist/contracts/dist/integrations/providers/google-calendar.js +0 -66
  63. package/dist/contracts/dist/integrations/providers/index.js +0 -11
  64. package/dist/contracts/dist/integrations/providers/mistral.js +0 -68
  65. package/dist/contracts/dist/integrations/providers/postmark.js +0 -68
  66. package/dist/contracts/dist/integrations/providers/powens.js +0 -116
  67. package/dist/contracts/dist/integrations/providers/qdrant.js +0 -73
  68. package/dist/contracts/dist/integrations/providers/registry.js +0 -10
  69. package/dist/contracts/dist/integrations/providers/stripe.js +0 -83
  70. package/dist/contracts/dist/integrations/providers/twilio-sms.js +0 -61
  71. package/dist/contracts/dist/jsonschema.js +0 -1
  72. package/dist/contracts/dist/knowledge/contracts.js +0 -306
  73. package/dist/contracts/dist/knowledge/index.js +0 -7
  74. package/dist/contracts/dist/knowledge/spaces/email-threads.js +0 -34
  75. package/dist/contracts/dist/knowledge/spaces/financial-docs.js +0 -34
  76. package/dist/contracts/dist/knowledge/spaces/financial-overview.js +0 -38
  77. package/dist/contracts/dist/knowledge/spaces/index.js +0 -6
  78. package/dist/contracts/dist/knowledge/spaces/product-canon.js +0 -34
  79. package/dist/contracts/dist/knowledge/spaces/support-faq.js +0 -37
  80. package/dist/contracts/dist/knowledge/spaces/uploaded-docs.js +0 -34
  81. package/dist/contracts/dist/llm/exporters.js +0 -19
  82. package/dist/contracts/dist/llm/index.js +0 -2
  83. package/dist/contracts/dist/llm/prompts.js +0 -1
  84. package/dist/contracts/dist/onboarding-base.js +0 -196
  85. package/dist/contracts/dist/openapi.js +0 -1
  86. package/dist/contracts/dist/ownership.js +0 -21
  87. package/dist/contracts/dist/presentations.js +0 -1
  88. package/dist/contracts/dist/presentations.v2.js +0 -11
  89. package/dist/contracts/dist/prompt.js +0 -1
  90. package/dist/contracts/dist/promptRegistry.js +0 -1
  91. package/dist/contracts/dist/regenerator/index.js +0 -1
  92. package/dist/contracts/dist/regenerator/service.js +0 -6
  93. package/dist/contracts/dist/registry.js +0 -2
  94. package/dist/contracts/dist/resources.js +0 -1
  95. package/dist/contracts/dist/schema/dist/EnumType.js +0 -2
  96. package/dist/contracts/dist/schema/dist/FieldType.js +0 -49
  97. package/dist/contracts/dist/schema/dist/ScalarTypeEnum.js +0 -236
  98. package/dist/contracts/dist/schema/dist/SchemaModel.js +0 -34
  99. package/dist/contracts/dist/schema/dist/entity/defineEntity.js +0 -1
  100. package/dist/contracts/dist/schema/dist/entity/index.js +0 -2
  101. package/dist/contracts/dist/schema/dist/entity/types.js +0 -1
  102. package/dist/contracts/dist/schema/dist/index.js +0 -6
  103. package/dist/contracts/dist/server/graphql-pothos.js +0 -6
  104. package/dist/contracts/dist/server/index.js +0 -8
  105. package/dist/contracts/dist/server/mcp/createMcpServer.js +0 -4
  106. package/dist/contracts/dist/server/mcp/registerPresentations.js +0 -2
  107. package/dist/contracts/dist/server/mcp/registerPrompts.js +0 -1
  108. package/dist/contracts/dist/server/mcp/registerResources.js +0 -2
  109. package/dist/contracts/dist/server/mcp/registerTools.js +0 -1
  110. package/dist/contracts/dist/server/provider-mcp.js +0 -1
  111. package/dist/contracts/dist/server/rest-elysia.js +0 -1
  112. package/dist/contracts/dist/server/rest-express.js +0 -1
  113. package/dist/contracts/dist/server/rest-generic.js +0 -1
  114. package/dist/contracts/dist/server/rest-next-app.js +0 -1
  115. package/dist/contracts/dist/server/rest-next-pages.js +0 -1
  116. package/dist/contracts/dist/spec.js +0 -34
  117. package/dist/contracts/dist/telemetry/index.js +0 -1
  118. package/dist/contracts/dist/telemetry/tracker.js +0 -1
  119. package/dist/contracts/dist/tests/index.js +0 -1
  120. package/dist/contracts/dist/tests/runner.js +0 -2
  121. package/dist/contracts/dist/workflow/index.js +0 -1
  122. package/dist/contracts/dist/workflow/runner.js +0 -1
  123. package/dist/contracts/index.d.ts +0 -1006
  124. package/dist/docs/feature-flags.docblock.d.ts +0 -1
  125. package/dist/docs/index.d.ts +0 -1
  126. package/dist/entities/index.d.ts +0 -200
  127. package/dist/evaluation/index.d.ts +0 -162
  128. package/dist/events.d.ts +0 -624
  129. package/dist/feature-flags.feature.d.ts +0 -11
  130. package/dist/index.d.ts +0 -6
  131. package/dist/schema/dist/EnumType.js +0 -2
  132. package/dist/schema/dist/FieldType.js +0 -49
  133. package/dist/schema/dist/ScalarTypeEnum.js +0 -236
  134. package/dist/schema/dist/SchemaModel.js +0 -39
  135. package/dist/schema/dist/entity/defineEntity.js +0 -236
  136. package/dist/schema/dist/entity/index.js +0 -2
  137. package/dist/schema/dist/entity/types.js +0 -1
  138. package/dist/schema/dist/index.js +0 -6
@@ -1 +0,0 @@
1
- export { };
@@ -1 +0,0 @@
1
- export { };
@@ -1,200 +0,0 @@
1
- import * as _lssm_lib_schema413 from "@lssm/lib.schema";
2
- import { ModuleSchemaContribution } from "@lssm/lib.schema";
3
-
4
- //#region src/entities/index.d.ts
5
- /**
6
- * Feature flag status enum.
7
- */
8
- declare const FlagStatusEnum: _lssm_lib_schema413.EntityEnumDef;
9
- /**
10
- * Targeting rule operator enum.
11
- */
12
- declare const RuleOperatorEnum: _lssm_lib_schema413.EntityEnumDef;
13
- /**
14
- * Experiment status enum.
15
- */
16
- declare const ExperimentStatusEnum: _lssm_lib_schema413.EntityEnumDef;
17
- /**
18
- * FeatureFlag entity - defines a feature flag.
19
- */
20
- declare const FeatureFlagEntity: _lssm_lib_schema413.EntitySpec<{
21
- id: _lssm_lib_schema413.EntityScalarField;
22
- key: _lssm_lib_schema413.EntityScalarField;
23
- name: _lssm_lib_schema413.EntityScalarField;
24
- description: _lssm_lib_schema413.EntityScalarField;
25
- status: _lssm_lib_schema413.EntityEnumField;
26
- defaultValue: _lssm_lib_schema413.EntityScalarField;
27
- variants: _lssm_lib_schema413.EntityScalarField;
28
- orgId: _lssm_lib_schema413.EntityScalarField;
29
- tags: _lssm_lib_schema413.EntityScalarField;
30
- metadata: _lssm_lib_schema413.EntityScalarField;
31
- createdAt: _lssm_lib_schema413.EntityScalarField;
32
- updatedAt: _lssm_lib_schema413.EntityScalarField;
33
- targetingRules: _lssm_lib_schema413.EntityRelationField;
34
- experiments: _lssm_lib_schema413.EntityRelationField;
35
- evaluations: _lssm_lib_schema413.EntityRelationField;
36
- }>;
37
- /**
38
- * FlagTargetingRule entity - conditions for targeting.
39
- */
40
- declare const FlagTargetingRuleEntity: _lssm_lib_schema413.EntitySpec<{
41
- id: _lssm_lib_schema413.EntityScalarField;
42
- flagId: _lssm_lib_schema413.EntityScalarField;
43
- name: _lssm_lib_schema413.EntityScalarField;
44
- priority: _lssm_lib_schema413.EntityScalarField;
45
- enabled: _lssm_lib_schema413.EntityScalarField;
46
- attribute: _lssm_lib_schema413.EntityScalarField;
47
- operator: _lssm_lib_schema413.EntityEnumField;
48
- value: _lssm_lib_schema413.EntityScalarField;
49
- rolloutPercentage: _lssm_lib_schema413.EntityScalarField;
50
- serveValue: _lssm_lib_schema413.EntityScalarField;
51
- serveVariant: _lssm_lib_schema413.EntityScalarField;
52
- createdAt: _lssm_lib_schema413.EntityScalarField;
53
- updatedAt: _lssm_lib_schema413.EntityScalarField;
54
- flag: _lssm_lib_schema413.EntityRelationField;
55
- }>;
56
- /**
57
- * Experiment entity - A/B test configuration.
58
- */
59
- declare const ExperimentEntity: _lssm_lib_schema413.EntitySpec<{
60
- id: _lssm_lib_schema413.EntityScalarField;
61
- key: _lssm_lib_schema413.EntityScalarField;
62
- name: _lssm_lib_schema413.EntityScalarField;
63
- description: _lssm_lib_schema413.EntityScalarField;
64
- hypothesis: _lssm_lib_schema413.EntityScalarField;
65
- flagId: _lssm_lib_schema413.EntityScalarField;
66
- status: _lssm_lib_schema413.EntityEnumField;
67
- variants: _lssm_lib_schema413.EntityScalarField;
68
- metrics: _lssm_lib_schema413.EntityScalarField;
69
- audiencePercentage: _lssm_lib_schema413.EntityScalarField;
70
- audienceFilter: _lssm_lib_schema413.EntityScalarField;
71
- scheduledStartAt: _lssm_lib_schema413.EntityScalarField;
72
- scheduledEndAt: _lssm_lib_schema413.EntityScalarField;
73
- startedAt: _lssm_lib_schema413.EntityScalarField;
74
- endedAt: _lssm_lib_schema413.EntityScalarField;
75
- winningVariant: _lssm_lib_schema413.EntityScalarField;
76
- results: _lssm_lib_schema413.EntityScalarField;
77
- orgId: _lssm_lib_schema413.EntityScalarField;
78
- createdAt: _lssm_lib_schema413.EntityScalarField;
79
- updatedAt: _lssm_lib_schema413.EntityScalarField;
80
- flag: _lssm_lib_schema413.EntityRelationField;
81
- assignments: _lssm_lib_schema413.EntityRelationField;
82
- }>;
83
- /**
84
- * ExperimentAssignment entity - tracks which variant a subject is assigned to.
85
- */
86
- declare const ExperimentAssignmentEntity: _lssm_lib_schema413.EntitySpec<{
87
- id: _lssm_lib_schema413.EntityScalarField;
88
- experimentId: _lssm_lib_schema413.EntityScalarField;
89
- subjectType: _lssm_lib_schema413.EntityScalarField;
90
- subjectId: _lssm_lib_schema413.EntityScalarField;
91
- variant: _lssm_lib_schema413.EntityScalarField;
92
- bucket: _lssm_lib_schema413.EntityScalarField;
93
- context: _lssm_lib_schema413.EntityScalarField;
94
- assignedAt: _lssm_lib_schema413.EntityScalarField;
95
- experiment: _lssm_lib_schema413.EntityRelationField;
96
- }>;
97
- /**
98
- * FlagEvaluation entity - evaluation log for analytics.
99
- */
100
- declare const FlagEvaluationEntity: _lssm_lib_schema413.EntitySpec<{
101
- id: _lssm_lib_schema413.EntityScalarField;
102
- flagId: _lssm_lib_schema413.EntityScalarField;
103
- flagKey: _lssm_lib_schema413.EntityScalarField;
104
- subjectType: _lssm_lib_schema413.EntityScalarField;
105
- subjectId: _lssm_lib_schema413.EntityScalarField;
106
- result: _lssm_lib_schema413.EntityScalarField;
107
- variant: _lssm_lib_schema413.EntityScalarField;
108
- matchedRuleId: _lssm_lib_schema413.EntityScalarField;
109
- reason: _lssm_lib_schema413.EntityScalarField;
110
- context: _lssm_lib_schema413.EntityScalarField;
111
- evaluatedAt: _lssm_lib_schema413.EntityScalarField;
112
- flag: _lssm_lib_schema413.EntityRelationField;
113
- }>;
114
- /**
115
- * All feature flag entities for schema composition.
116
- */
117
- declare const featureFlagEntities: (_lssm_lib_schema413.EntitySpec<{
118
- id: _lssm_lib_schema413.EntityScalarField;
119
- key: _lssm_lib_schema413.EntityScalarField;
120
- name: _lssm_lib_schema413.EntityScalarField;
121
- description: _lssm_lib_schema413.EntityScalarField;
122
- status: _lssm_lib_schema413.EntityEnumField;
123
- defaultValue: _lssm_lib_schema413.EntityScalarField;
124
- variants: _lssm_lib_schema413.EntityScalarField;
125
- orgId: _lssm_lib_schema413.EntityScalarField;
126
- tags: _lssm_lib_schema413.EntityScalarField;
127
- metadata: _lssm_lib_schema413.EntityScalarField;
128
- createdAt: _lssm_lib_schema413.EntityScalarField;
129
- updatedAt: _lssm_lib_schema413.EntityScalarField;
130
- targetingRules: _lssm_lib_schema413.EntityRelationField;
131
- experiments: _lssm_lib_schema413.EntityRelationField;
132
- evaluations: _lssm_lib_schema413.EntityRelationField;
133
- }> | _lssm_lib_schema413.EntitySpec<{
134
- id: _lssm_lib_schema413.EntityScalarField;
135
- flagId: _lssm_lib_schema413.EntityScalarField;
136
- name: _lssm_lib_schema413.EntityScalarField;
137
- priority: _lssm_lib_schema413.EntityScalarField;
138
- enabled: _lssm_lib_schema413.EntityScalarField;
139
- attribute: _lssm_lib_schema413.EntityScalarField;
140
- operator: _lssm_lib_schema413.EntityEnumField;
141
- value: _lssm_lib_schema413.EntityScalarField;
142
- rolloutPercentage: _lssm_lib_schema413.EntityScalarField;
143
- serveValue: _lssm_lib_schema413.EntityScalarField;
144
- serveVariant: _lssm_lib_schema413.EntityScalarField;
145
- createdAt: _lssm_lib_schema413.EntityScalarField;
146
- updatedAt: _lssm_lib_schema413.EntityScalarField;
147
- flag: _lssm_lib_schema413.EntityRelationField;
148
- }> | _lssm_lib_schema413.EntitySpec<{
149
- id: _lssm_lib_schema413.EntityScalarField;
150
- key: _lssm_lib_schema413.EntityScalarField;
151
- name: _lssm_lib_schema413.EntityScalarField;
152
- description: _lssm_lib_schema413.EntityScalarField;
153
- hypothesis: _lssm_lib_schema413.EntityScalarField;
154
- flagId: _lssm_lib_schema413.EntityScalarField;
155
- status: _lssm_lib_schema413.EntityEnumField;
156
- variants: _lssm_lib_schema413.EntityScalarField;
157
- metrics: _lssm_lib_schema413.EntityScalarField;
158
- audiencePercentage: _lssm_lib_schema413.EntityScalarField;
159
- audienceFilter: _lssm_lib_schema413.EntityScalarField;
160
- scheduledStartAt: _lssm_lib_schema413.EntityScalarField;
161
- scheduledEndAt: _lssm_lib_schema413.EntityScalarField;
162
- startedAt: _lssm_lib_schema413.EntityScalarField;
163
- endedAt: _lssm_lib_schema413.EntityScalarField;
164
- winningVariant: _lssm_lib_schema413.EntityScalarField;
165
- results: _lssm_lib_schema413.EntityScalarField;
166
- orgId: _lssm_lib_schema413.EntityScalarField;
167
- createdAt: _lssm_lib_schema413.EntityScalarField;
168
- updatedAt: _lssm_lib_schema413.EntityScalarField;
169
- flag: _lssm_lib_schema413.EntityRelationField;
170
- assignments: _lssm_lib_schema413.EntityRelationField;
171
- }> | _lssm_lib_schema413.EntitySpec<{
172
- id: _lssm_lib_schema413.EntityScalarField;
173
- experimentId: _lssm_lib_schema413.EntityScalarField;
174
- subjectType: _lssm_lib_schema413.EntityScalarField;
175
- subjectId: _lssm_lib_schema413.EntityScalarField;
176
- variant: _lssm_lib_schema413.EntityScalarField;
177
- bucket: _lssm_lib_schema413.EntityScalarField;
178
- context: _lssm_lib_schema413.EntityScalarField;
179
- assignedAt: _lssm_lib_schema413.EntityScalarField;
180
- experiment: _lssm_lib_schema413.EntityRelationField;
181
- }> | _lssm_lib_schema413.EntitySpec<{
182
- id: _lssm_lib_schema413.EntityScalarField;
183
- flagId: _lssm_lib_schema413.EntityScalarField;
184
- flagKey: _lssm_lib_schema413.EntityScalarField;
185
- subjectType: _lssm_lib_schema413.EntityScalarField;
186
- subjectId: _lssm_lib_schema413.EntityScalarField;
187
- result: _lssm_lib_schema413.EntityScalarField;
188
- variant: _lssm_lib_schema413.EntityScalarField;
189
- matchedRuleId: _lssm_lib_schema413.EntityScalarField;
190
- reason: _lssm_lib_schema413.EntityScalarField;
191
- context: _lssm_lib_schema413.EntityScalarField;
192
- evaluatedAt: _lssm_lib_schema413.EntityScalarField;
193
- flag: _lssm_lib_schema413.EntityRelationField;
194
- }>)[];
195
- /**
196
- * Module schema contribution for feature flags.
197
- */
198
- declare const featureFlagsSchemaContribution: ModuleSchemaContribution;
199
- //#endregion
200
- export { ExperimentAssignmentEntity, ExperimentEntity, ExperimentStatusEnum, FeatureFlagEntity, FlagEvaluationEntity, FlagStatusEnum, FlagTargetingRuleEntity, RuleOperatorEnum, featureFlagEntities, featureFlagsSchemaContribution };
@@ -1,162 +0,0 @@
1
- //#region src/evaluation/index.d.ts
2
- /**
3
- * Feature flag evaluation engine.
4
- *
5
- * Provides deterministic evaluation of feature flags based on targeting rules
6
- * and experiment assignments.
7
- */
8
- interface EvaluationContext {
9
- /** User identifier */
10
- userId?: string;
11
- /** Organization identifier */
12
- orgId?: string;
13
- /** User's plan (free, pro, enterprise, etc.) */
14
- plan?: string;
15
- /** User segment or cohort */
16
- segment?: string;
17
- /** Session identifier for anonymous users */
18
- sessionId?: string;
19
- /** Additional custom attributes */
20
- attributes?: Record<string, unknown>;
21
- }
22
- interface FeatureFlag {
23
- id: string;
24
- key: string;
25
- status: 'OFF' | 'ON' | 'GRADUAL';
26
- defaultValue: boolean;
27
- variants?: VariantConfig[];
28
- }
29
- interface TargetingRule {
30
- id: string;
31
- priority: number;
32
- enabled: boolean;
33
- attribute: string;
34
- operator: RuleOperator;
35
- value: unknown;
36
- rolloutPercentage?: number;
37
- serveValue?: boolean;
38
- serveVariant?: string;
39
- }
40
- interface Experiment {
41
- id: string;
42
- key: string;
43
- status: 'DRAFT' | 'RUNNING' | 'PAUSED' | 'COMPLETED' | 'CANCELLED';
44
- variants: ExperimentVariant[];
45
- audiencePercentage: number;
46
- audienceFilter?: Record<string, unknown>;
47
- }
48
- interface VariantConfig {
49
- key: string;
50
- name: string;
51
- description?: string;
52
- weight?: number;
53
- }
54
- interface ExperimentVariant {
55
- key: string;
56
- name: string;
57
- percentage: number;
58
- }
59
- interface EvaluationResult {
60
- enabled: boolean;
61
- variant?: string;
62
- reason: EvaluationReason;
63
- ruleId?: string;
64
- experimentId?: string;
65
- }
66
- type EvaluationReason = 'FLAG_OFF' | 'FLAG_ON' | 'DEFAULT_VALUE' | 'RULE_MATCH' | 'PERCENTAGE_ROLLOUT' | 'EXPERIMENT_VARIANT' | 'FLAG_NOT_FOUND';
67
- type RuleOperator = 'EQ' | 'NEQ' | 'IN' | 'NIN' | 'CONTAINS' | 'NOT_CONTAINS' | 'GT' | 'GTE' | 'LT' | 'LTE' | 'PERCENTAGE';
68
- /**
69
- * Simple hash function for consistent bucketing.
70
- * Uses a deterministic algorithm so the same input always produces the same bucket.
71
- */
72
- declare function hashToBucket(value: string, seed?: string): number;
73
- /**
74
- * Get subject identifier from context for consistent hashing.
75
- */
76
- declare function getSubjectId(context: EvaluationContext): string;
77
- /**
78
- * Evaluate a single targeting rule condition.
79
- */
80
- declare function evaluateRuleCondition(rule: TargetingRule, context: EvaluationContext): boolean;
81
- interface FlagRepository {
82
- getFlag(key: string, orgId?: string): Promise<FeatureFlag | null>;
83
- getRules(flagId: string): Promise<TargetingRule[]>;
84
- getActiveExperiment(flagId: string): Promise<Experiment | null>;
85
- getExperimentAssignment(experimentId: string, subjectType: string, subjectId: string): Promise<string | null>;
86
- saveExperimentAssignment(experimentId: string, subjectType: string, subjectId: string, variant: string, bucket: number): Promise<void>;
87
- }
88
- interface EvaluationLogger {
89
- log(evaluation: {
90
- flagId: string;
91
- flagKey: string;
92
- subjectType: string;
93
- subjectId: string;
94
- result: boolean;
95
- variant?: string;
96
- reason: string;
97
- ruleId?: string;
98
- experimentId?: string;
99
- context?: EvaluationContext;
100
- }): void;
101
- }
102
- interface FlagEvaluatorOptions {
103
- repository: FlagRepository;
104
- logger?: EvaluationLogger;
105
- /** Whether to log evaluations (default: false for performance) */
106
- logEvaluations?: boolean;
107
- }
108
- /**
109
- * Feature flag evaluator.
110
- *
111
- * Evaluates flags based on:
112
- * 1. Flag status (OFF/ON/GRADUAL)
113
- * 2. Targeting rules (in priority order)
114
- * 3. Experiments (if running)
115
- * 4. Default value (fallback)
116
- */
117
- declare class FlagEvaluator {
118
- private repository;
119
- private logger?;
120
- private logEvaluations;
121
- constructor(options: FlagEvaluatorOptions);
122
- /**
123
- * Evaluate a feature flag.
124
- */
125
- evaluate(key: string, context: EvaluationContext): Promise<EvaluationResult>;
126
- /**
127
- * Evaluate experiment and assign variant.
128
- */
129
- private evaluateExperiment;
130
- /**
131
- * Assign a variant based on bucket and variant percentages.
132
- */
133
- private assignVariant;
134
- /**
135
- * Create evaluation result.
136
- */
137
- private makeResult;
138
- /**
139
- * Log evaluation and return result.
140
- */
141
- private logAndReturn;
142
- }
143
- /**
144
- * In-memory flag repository for testing and development.
145
- */
146
- declare class InMemoryFlagRepository implements FlagRepository {
147
- private flags;
148
- private rules;
149
- private experiments;
150
- private assignments;
151
- addFlag(flag: FeatureFlag): void;
152
- addRule(flagId: string, rule: TargetingRule): void;
153
- addExperiment(experiment: Experiment, flagId: string): void;
154
- getFlag(key: string): Promise<FeatureFlag | null>;
155
- getRules(flagId: string): Promise<TargetingRule[]>;
156
- getActiveExperiment(flagId: string): Promise<Experiment | null>;
157
- getExperimentAssignment(experimentId: string, subjectType: string, subjectId: string): Promise<string | null>;
158
- saveExperimentAssignment(experimentId: string, subjectType: string, subjectId: string, variant: string): Promise<void>;
159
- clear(): void;
160
- }
161
- //#endregion
162
- export { EvaluationContext, EvaluationLogger, EvaluationReason, EvaluationResult, Experiment, ExperimentVariant, FeatureFlag, FlagEvaluator, FlagEvaluatorOptions, FlagRepository, InMemoryFlagRepository, RuleOperator, TargetingRule, VariantConfig, evaluateRuleCondition, getSubjectId, hashToBucket };