Files
boc/packages/domain/src/auth/feature-flags.ts
T
Bernt 207185e5fb Minimal RBAC + Feature Flags + Developer Mode
- 4 roles: SuperAdmin, Operator, Reviewer, PilotUser
- Capabilities (not pages): mission.create, artifact.view, decision.approve, etc.
- Feature flags: ENABLE_REPLAY, ENABLE_MODEL_TRAINING, etc.
- Developer Mode toggle in UI (activated by permission)
- New rule: All features must link to module, capability, and role

Next: Deploy pilot environment
2026-07-02 16:59:00 +00:00

51 lines
1.1 KiB
TypeScript

/**
* Feature Flags — enable features without new releases
*
* Pilot 001-010: Control which modules are visible.
*/
export type FeatureFlag =
| 'ENABLE_REPLAY'
| 'ENABLE_DATASET_EXPLORER'
| 'ENABLE_MODEL_TRAINING'
| 'ENABLE_HOTSPOTS'
| 'ENABLE_ECONOMIC_ENGINE'
| 'ENABLE_DEVELOPER_MODE';
export interface FeatureFlags {
readonly flags: Record<FeatureFlag, boolean>;
}
export const DefaultFeatureFlags: FeatureFlags = {
flags: {
ENABLE_REPLAY: false,
ENABLE_DATASET_EXPLORER: true,
ENABLE_MODEL_TRAINING: false,
ENABLE_HOTSPOTS: false,
ENABLE_ECONOMIC_ENGINE: false,
ENABLE_DEVELOPER_MODE: false,
},
};
export function isEnabled(flags: FeatureFlags, flag: FeatureFlag): boolean {
return flags.flags[flag] ?? false;
}
export function enable(flags: FeatureFlags, flag: FeatureFlag): FeatureFlags {
return {
flags: {
...flags.flags,
[flag]: true,
},
};
}
export function disable(flags: FeatureFlags, flag: FeatureFlag): FeatureFlags {
return {
flags: {
...flags.flags,
[flag]: false,
},
};
}