proagents 1.6.17 → 1.6.19
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/.claude/settings.local.json +169 -0
- package/.proagents/AGENTS.md +2 -0
- package/.proagents/AI_INSTRUCTIONS.md +13 -0
- package/.proagents/ANTIGRAVITY.md +2 -0
- package/.proagents/BOLT.md +2 -0
- package/.proagents/CHATGPT.md +2 -0
- package/.proagents/CLAUDE.md +2 -0
- package/.proagents/GEMINI.md +2 -0
- package/.proagents/GROQ.md +2 -0
- package/.proagents/KIRO.md +2 -0
- package/.proagents/LOVABLE.md +2 -0
- package/.proagents/PROAGENTS.md +2 -0
- package/.proagents/REPLIT.md +2 -0
- package/.proagents/prompts/00-project-setup.md +878 -0
- package/.proagents/prompts/04-planning.md +38 -0
- package/.proagents/prompts/12-rnd.md +957 -0
- package/.proagents/workflow-modes/entry-modes.md +27 -0
- package/.proagents/worklog/_context.template.md +47 -0
- package/COMMANDS.md +654 -0
- package/README.md +16 -24
- package/package.json +2 -7
- package/.proagents/ai-models/README.md +0 -141
- package/.proagents/ai-models/cost-management.md +0 -362
- package/.proagents/ai-models/fallbacks.md +0 -342
- package/.proagents/ai-models/model-config.md +0 -318
- package/.proagents/ai-models/task-routing.md +0 -503
- package/.proagents/ai-training/README.md +0 -155
- package/.proagents/ai-training/continuous-learning.md +0 -413
- package/.proagents/ai-training/domain-knowledge.md +0 -378
- package/.proagents/ai-training/pattern-learning.md +0 -455
- package/.proagents/ai-training/training-data.md +0 -337
- package/.proagents/ai-training/user-preferences.md +0 -346
- package/.proagents/approval-workflows/README.md +0 -146
- package/.proagents/approval-workflows/approval-config.md +0 -332
- package/.proagents/approval-workflows/approval-stages.md +0 -503
- package/.proagents/approval-workflows/emergency-bypass.md +0 -351
- package/.proagents/approval-workflows/examples.md +0 -859
- package/.proagents/approval-workflows/notifications.md +0 -320
- package/.proagents/compliance/README.md +0 -206
- package/.proagents/compliance/access-control.md +0 -310
- package/.proagents/compliance/audit-logging.md +0 -444
- package/.proagents/compliance/compliance-frameworks.md +0 -429
- package/.proagents/compliance/reports.md +0 -491
- package/.proagents/compliance/retention-policies.md +0 -454
- package/.proagents/config-versioning/README.md +0 -120
- package/.proagents/config-versioning/changelog.md +0 -300
- package/.proagents/config-versioning/rollback.md +0 -283
- package/.proagents/config-versioning/versioning.md +0 -330
- package/.proagents/contract-testing/README.md +0 -223
- package/.proagents/contract-testing/contract-testing.md +0 -614
- package/.proagents/contract-testing/pact-integration.md +0 -507
- package/.proagents/contract-testing/schema-validation.md +0 -565
- package/.proagents/dependency-management/README.md +0 -140
- package/.proagents/dependency-management/automation.md +0 -363
- package/.proagents/dependency-management/compatibility.md +0 -319
- package/.proagents/dependency-management/security-scanning.md +0 -413
- package/.proagents/dependency-management/update-policies.md +0 -374
- package/.proagents/disaster-recovery/README.md +0 -247
- package/.proagents/disaster-recovery/automation.md +0 -366
- package/.proagents/disaster-recovery/backup-recovery.md +0 -571
- package/.proagents/disaster-recovery/incident-response.md +0 -565
- package/.proagents/disaster-recovery/rollback-procedures.md +0 -499
- package/.proagents/disaster-recovery/runbooks.md +0 -603
- package/.proagents/disaster-recovery/scenarios.md +0 -892
- package/.proagents/disaster-recovery/testing.md +0 -438
- package/.proagents/environments/README.md +0 -244
- package/.proagents/environments/configuration.md +0 -437
- package/.proagents/environments/promotion.md +0 -434
- package/.proagents/environments/setup.md +0 -420
- package/.proagents/examples/README.md +0 -55
- package/.proagents/examples/backend-nodejs/README.md +0 -188
- package/.proagents/examples/backend-nodejs/complete-conversation.md +0 -601
- package/.proagents/examples/backend-nodejs/proagents.config.yaml +0 -415
- package/.proagents/examples/backend-nodejs/workflow-example.md +0 -909
- package/.proagents/examples/fullstack-nextjs/README.md +0 -155
- package/.proagents/examples/fullstack-nextjs/complete-conversation.md +0 -604
- package/.proagents/examples/fullstack-nextjs/proagents.config.yaml +0 -287
- package/.proagents/examples/fullstack-nextjs/workflow-example.md +0 -553
- package/.proagents/examples/mobile-react-native/README.md +0 -171
- package/.proagents/examples/mobile-react-native/complete-conversation.md +0 -825
- package/.proagents/examples/mobile-react-native/proagents.config.yaml +0 -330
- package/.proagents/examples/mobile-react-native/workflow-example.md +0 -723
- package/.proagents/examples/web-frontend-react/README.md +0 -125
- package/.proagents/examples/web-frontend-react/complete-conversation.md +0 -556
- package/.proagents/examples/web-frontend-react/proagents.config.yaml +0 -183
- package/.proagents/examples/web-frontend-react/workflow-example.md +0 -603
- package/.proagents/existing-projects/README.md +0 -65
- package/.proagents/existing-projects/challenges.md +0 -861
- package/.proagents/existing-projects/coexistence-mode.md +0 -483
- package/.proagents/existing-projects/compatibility-assessment.md +0 -541
- package/.proagents/existing-projects/gradual-adoption.md +0 -515
- package/.proagents/existing-projects/migration-strategies.md +0 -788
- package/.proagents/existing-projects/pattern-reconciliation.md +0 -489
- package/.proagents/existing-projects/team-onboarding.md +0 -617
- package/.proagents/existing-projects/technical-debt-handling.md +0 -644
- package/.proagents/feature-flags/README.md +0 -263
- package/.proagents/feature-flags/ab-testing.md +0 -413
- package/.proagents/feature-flags/configuration.md +0 -420
- package/.proagents/feature-flags/kill-switches.md +0 -444
- package/.proagents/feature-flags/rollout-strategies.md +0 -392
- package/.proagents/history.log +0 -12
- package/.proagents/i18n/README.md +0 -133
- package/.proagents/i18n/extraction.md +0 -433
- package/.proagents/i18n/tms-integration.md +0 -332
- package/.proagents/i18n/translation-workflow.md +0 -413
- package/.proagents/i18n/validation.md +0 -355
- package/.proagents/logging/README.md +0 -276
- package/.proagents/logging/aggregation.md +0 -475
- package/.proagents/logging/log-levels.md +0 -376
- package/.proagents/logging/sensitive-data.md +0 -423
- package/.proagents/logging/structured-logging.md +0 -406
- package/.proagents/metrics/README.md +0 -69
- package/.proagents/metrics/code-quality-kpis.md +0 -461
- package/.proagents/metrics/deployment-metrics.md +0 -517
- package/.proagents/metrics/developer-productivity.md +0 -368
- package/.proagents/metrics/learning-effectiveness.md +0 -478
- package/.proagents/migrations/README.md +0 -77
- package/.proagents/migrations/from-claude-projects.md +0 -313
- package/.proagents/migrations/from-cursor-rules.md +0 -345
- package/.proagents/migrations/from-custom-workflows.md +0 -410
- package/.proagents/monitoring/README.md +0 -308
- package/.proagents/monitoring/alerting.md +0 -449
- package/.proagents/monitoring/dashboards.md +0 -454
- package/.proagents/monitoring/health-checks.md +0 -436
- package/.proagents/monitoring/metrics.md +0 -434
- package/.proagents/multi-project/README.md +0 -170
- package/.proagents/multi-project/coordinated-deploy.md +0 -510
- package/.proagents/multi-project/cross-project-deps.md +0 -395
- package/.proagents/multi-project/unified-changelog.md +0 -477
- package/.proagents/multi-project/walkthroughs/monorepo-setup.md +0 -787
- package/.proagents/multi-project/workspace-config.md +0 -408
- package/.proagents/notifications/README.md +0 -151
- package/.proagents/notifications/channels.md +0 -457
- package/.proagents/notifications/preferences.md +0 -415
- package/.proagents/notifications/routing.md +0 -449
- package/.proagents/notifications/scheduling.md +0 -425
- package/.proagents/notifications/templates.md +0 -446
- package/.proagents/offline-mode/README.md +0 -145
- package/.proagents/offline-mode/caching.md +0 -344
- package/.proagents/offline-mode/offline-operations.md +0 -312
- package/.proagents/offline-mode/queue-specifications.md +0 -679
- package/.proagents/offline-mode/sync.md +0 -475
- package/.proagents/parallel-features/README.md +0 -85
- package/.proagents/parallel-features/conflict-detection.md +0 -226
- package/.proagents/parallel-features/dependency-management.md +0 -392
- package/.proagents/parallel-features/merge-coordination.md +0 -506
- package/.proagents/parallel-features/tracking-system.md +0 -416
- package/.proagents/performance/README.md +0 -59
- package/.proagents/performance/bundle-analysis.md +0 -375
- package/.proagents/performance/load-testing.md +0 -563
- package/.proagents/performance/runtime-metrics.md +0 -489
- package/.proagents/performance/web-vitals.md +0 -425
- package/.proagents/plugins/README.md +0 -139
- package/.proagents/plugins/creating-plugins.md +0 -504
- package/.proagents/plugins/plugin-api.md +0 -467
- package/.proagents/plugins/plugin-registry.md +0 -276
- package/.proagents/reporting/README.md +0 -158
- package/.proagents/reporting/dashboards.md +0 -366
- package/.proagents/reporting/exports.md +0 -524
- package/.proagents/reporting/quality-metrics.md +0 -385
- package/.proagents/reporting/templates/README.md +0 -56
- package/.proagents/reporting/templates/dashboard-config.json +0 -187
- package/.proagents/reporting/templates/metrics-queries.md +0 -427
- package/.proagents/reporting/templates/react-dashboard.tsx +0 -544
- package/.proagents/reporting/templates/widgets.md +0 -451
- package/.proagents/reporting/velocity-metrics.md +0 -340
- package/.proagents/reverse-engineering/README.md +0 -151
- package/.proagents/reverse-engineering/architecture-extraction.md +0 -325
- package/.proagents/reverse-engineering/code-analysis.md +0 -377
- package/.proagents/reverse-engineering/dependency-mapping.md +0 -567
- package/.proagents/reverse-engineering/diagram-generation.md +0 -586
- package/.proagents/reverse-engineering/documentation-generation.md +0 -468
- package/.proagents/reverse-engineering/pattern-detection.md +0 -569
- package/.proagents/reverse-engineering/quality-assessment.md +0 -733
- package/.proagents/secrets/README.md +0 -278
- package/.proagents/secrets/access-control.md +0 -443
- package/.proagents/secrets/rotation.md +0 -403
- package/.proagents/secrets/scanning.md +0 -487
- package/.proagents/secrets/storage.md +0 -394
- package/.proagents/webhooks/README.md +0 -126
- package/.proagents/webhooks/endpoints.md +0 -298
- package/.proagents/webhooks/events.md +0 -316
- package/.proagents/webhooks/payloads.md +0 -325
- package/.proagents/webhooks/reliability.md +0 -363
- package/.proagents/webhooks/security.md +0 -380
|
@@ -1,420 +0,0 @@
|
|
|
1
|
-
# Feature Flag Configuration
|
|
2
|
-
|
|
3
|
-
Setting up and managing feature flags in your application.
|
|
4
|
-
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
## Configuration Structure
|
|
8
|
-
|
|
9
|
-
### Basic Flag Definition
|
|
10
|
-
|
|
11
|
-
```yaml
|
|
12
|
-
# proagents.config.yaml
|
|
13
|
-
feature_flags:
|
|
14
|
-
enabled: true
|
|
15
|
-
|
|
16
|
-
# Flag definitions
|
|
17
|
-
flags:
|
|
18
|
-
new_checkout_flow:
|
|
19
|
-
description: "New streamlined checkout experience"
|
|
20
|
-
type: "boolean"
|
|
21
|
-
default: false
|
|
22
|
-
environments:
|
|
23
|
-
development: true
|
|
24
|
-
staging: true
|
|
25
|
-
production: false
|
|
26
|
-
|
|
27
|
-
max_upload_size:
|
|
28
|
-
description: "Maximum file upload size in MB"
|
|
29
|
-
type: "number"
|
|
30
|
-
default: 10
|
|
31
|
-
environments:
|
|
32
|
-
development: 100
|
|
33
|
-
staging: 50
|
|
34
|
-
production: 25
|
|
35
|
-
|
|
36
|
-
pricing_tier:
|
|
37
|
-
description: "Active pricing model"
|
|
38
|
-
type: "string"
|
|
39
|
-
default: "standard"
|
|
40
|
-
allowed_values: ["standard", "premium", "enterprise"]
|
|
41
|
-
```
|
|
42
|
-
|
|
43
|
-
### Flag Types
|
|
44
|
-
|
|
45
|
-
```yaml
|
|
46
|
-
feature_flags:
|
|
47
|
-
flags:
|
|
48
|
-
# Boolean flag
|
|
49
|
-
dark_mode:
|
|
50
|
-
type: "boolean"
|
|
51
|
-
default: false
|
|
52
|
-
|
|
53
|
-
# Number flag
|
|
54
|
-
rate_limit:
|
|
55
|
-
type: "number"
|
|
56
|
-
default: 100
|
|
57
|
-
min: 10
|
|
58
|
-
max: 1000
|
|
59
|
-
|
|
60
|
-
# String flag
|
|
61
|
-
api_version:
|
|
62
|
-
type: "string"
|
|
63
|
-
default: "v1"
|
|
64
|
-
allowed_values: ["v1", "v2", "v3"]
|
|
65
|
-
|
|
66
|
-
# JSON flag
|
|
67
|
-
feature_config:
|
|
68
|
-
type: "json"
|
|
69
|
-
default:
|
|
70
|
-
enabled: true
|
|
71
|
-
max_items: 50
|
|
72
|
-
show_banner: false
|
|
73
|
-
```
|
|
74
|
-
|
|
75
|
-
---
|
|
76
|
-
|
|
77
|
-
## Flag Targeting
|
|
78
|
-
|
|
79
|
-
### User-Based Targeting
|
|
80
|
-
|
|
81
|
-
```yaml
|
|
82
|
-
feature_flags:
|
|
83
|
-
flags:
|
|
84
|
-
beta_features:
|
|
85
|
-
type: "boolean"
|
|
86
|
-
default: false
|
|
87
|
-
|
|
88
|
-
targeting:
|
|
89
|
-
# Enable for specific users
|
|
90
|
-
users:
|
|
91
|
-
- "user-123"
|
|
92
|
-
- "user-456"
|
|
93
|
-
|
|
94
|
-
# Enable for user attributes
|
|
95
|
-
rules:
|
|
96
|
-
- attribute: "plan"
|
|
97
|
-
operator: "equals"
|
|
98
|
-
value: "enterprise"
|
|
99
|
-
percentage: 100
|
|
100
|
-
|
|
101
|
-
- attribute: "signup_date"
|
|
102
|
-
operator: "before"
|
|
103
|
-
value: "2024-01-01"
|
|
104
|
-
percentage: 50
|
|
105
|
-
```
|
|
106
|
-
|
|
107
|
-
### Percentage Rollouts
|
|
108
|
-
|
|
109
|
-
```yaml
|
|
110
|
-
feature_flags:
|
|
111
|
-
flags:
|
|
112
|
-
new_ui:
|
|
113
|
-
type: "boolean"
|
|
114
|
-
default: false
|
|
115
|
-
|
|
116
|
-
targeting:
|
|
117
|
-
# Gradual rollout
|
|
118
|
-
percentage:
|
|
119
|
-
enabled: 25 # 25% of users
|
|
120
|
-
sticky: true # Same users always get same value
|
|
121
|
-
|
|
122
|
-
# Exclude specific segments
|
|
123
|
-
exclude:
|
|
124
|
-
- attribute: "account_type"
|
|
125
|
-
value: "free"
|
|
126
|
-
```
|
|
127
|
-
|
|
128
|
-
### Geographic Targeting
|
|
129
|
-
|
|
130
|
-
```yaml
|
|
131
|
-
feature_flags:
|
|
132
|
-
flags:
|
|
133
|
-
gdpr_consent:
|
|
134
|
-
type: "boolean"
|
|
135
|
-
default: false
|
|
136
|
-
|
|
137
|
-
targeting:
|
|
138
|
-
# By country
|
|
139
|
-
geo:
|
|
140
|
-
countries:
|
|
141
|
-
- code: "EU"
|
|
142
|
-
value: true
|
|
143
|
-
- code: "US"
|
|
144
|
-
value: false
|
|
145
|
-
|
|
146
|
-
# By region
|
|
147
|
-
regions:
|
|
148
|
-
- name: "Europe"
|
|
149
|
-
value: true
|
|
150
|
-
- name: "California"
|
|
151
|
-
value: true
|
|
152
|
-
```
|
|
153
|
-
|
|
154
|
-
### Time-Based Targeting
|
|
155
|
-
|
|
156
|
-
```yaml
|
|
157
|
-
feature_flags:
|
|
158
|
-
flags:
|
|
159
|
-
holiday_theme:
|
|
160
|
-
type: "boolean"
|
|
161
|
-
default: false
|
|
162
|
-
|
|
163
|
-
targeting:
|
|
164
|
-
schedule:
|
|
165
|
-
- start: "2024-12-20T00:00:00Z"
|
|
166
|
-
end: "2024-12-26T23:59:59Z"
|
|
167
|
-
value: true
|
|
168
|
-
|
|
169
|
-
- start: "2024-12-31T18:00:00Z"
|
|
170
|
-
end: "2025-01-01T12:00:00Z"
|
|
171
|
-
value: true
|
|
172
|
-
```
|
|
173
|
-
|
|
174
|
-
---
|
|
175
|
-
|
|
176
|
-
## Provider Integration
|
|
177
|
-
|
|
178
|
-
### LaunchDarkly
|
|
179
|
-
|
|
180
|
-
```yaml
|
|
181
|
-
feature_flags:
|
|
182
|
-
provider: "launchdarkly"
|
|
183
|
-
|
|
184
|
-
launchdarkly:
|
|
185
|
-
sdk_key_env: "LAUNCHDARKLY_SDK_KEY"
|
|
186
|
-
stream_url: "https://stream.launchdarkly.com"
|
|
187
|
-
|
|
188
|
-
# Sync local flags
|
|
189
|
-
sync:
|
|
190
|
-
enabled: true
|
|
191
|
-
interval: "5m"
|
|
192
|
-
|
|
193
|
-
# Offline fallback
|
|
194
|
-
offline:
|
|
195
|
-
enabled: true
|
|
196
|
-
fallback_file: "./flags-cache.json"
|
|
197
|
-
```
|
|
198
|
-
|
|
199
|
-
### Split.io
|
|
200
|
-
|
|
201
|
-
```yaml
|
|
202
|
-
feature_flags:
|
|
203
|
-
provider: "split"
|
|
204
|
-
|
|
205
|
-
split:
|
|
206
|
-
api_key_env: "SPLIT_API_KEY"
|
|
207
|
-
|
|
208
|
-
# Traffic type
|
|
209
|
-
traffic_type: "user"
|
|
210
|
-
|
|
211
|
-
# Impressions
|
|
212
|
-
impressions:
|
|
213
|
-
mode: "optimized"
|
|
214
|
-
```
|
|
215
|
-
|
|
216
|
-
### Unleash
|
|
217
|
-
|
|
218
|
-
```yaml
|
|
219
|
-
feature_flags:
|
|
220
|
-
provider: "unleash"
|
|
221
|
-
|
|
222
|
-
unleash:
|
|
223
|
-
url: "https://unleash.company.com/api"
|
|
224
|
-
api_token_env: "UNLEASH_API_TOKEN"
|
|
225
|
-
app_name: "myapp"
|
|
226
|
-
instance_id: "${HOSTNAME}"
|
|
227
|
-
|
|
228
|
-
# Refresh interval
|
|
229
|
-
refresh_interval: 15
|
|
230
|
-
```
|
|
231
|
-
|
|
232
|
-
### Local Provider
|
|
233
|
-
|
|
234
|
-
```yaml
|
|
235
|
-
feature_flags:
|
|
236
|
-
provider: "local"
|
|
237
|
-
|
|
238
|
-
local:
|
|
239
|
-
# Load from file
|
|
240
|
-
config_file: "./feature-flags.yaml"
|
|
241
|
-
|
|
242
|
-
# Hot reload
|
|
243
|
-
watch: true
|
|
244
|
-
reload_interval: "30s"
|
|
245
|
-
```
|
|
246
|
-
|
|
247
|
-
---
|
|
248
|
-
|
|
249
|
-
## Code Integration
|
|
250
|
-
|
|
251
|
-
### JavaScript/TypeScript
|
|
252
|
-
|
|
253
|
-
```typescript
|
|
254
|
-
// Initialize
|
|
255
|
-
import { FeatureFlags } from '@proagents/feature-flags';
|
|
256
|
-
|
|
257
|
-
const flags = new FeatureFlags({
|
|
258
|
-
provider: 'launchdarkly',
|
|
259
|
-
sdkKey: process.env.LAUNCHDARKLY_SDK_KEY,
|
|
260
|
-
});
|
|
261
|
-
|
|
262
|
-
// Check flag
|
|
263
|
-
if (await flags.isEnabled('new_checkout_flow', { userId: user.id })) {
|
|
264
|
-
// New checkout flow
|
|
265
|
-
} else {
|
|
266
|
-
// Old checkout flow
|
|
267
|
-
}
|
|
268
|
-
|
|
269
|
-
// Get variation
|
|
270
|
-
const maxSize = await flags.getValue('max_upload_size', { userId: user.id });
|
|
271
|
-
|
|
272
|
-
// With default fallback
|
|
273
|
-
const tier = await flags.getValue('pricing_tier', { userId: user.id }, 'standard');
|
|
274
|
-
```
|
|
275
|
-
|
|
276
|
-
### React
|
|
277
|
-
|
|
278
|
-
```tsx
|
|
279
|
-
import { useFeatureFlag, FeatureFlagProvider } from '@proagents/feature-flags/react';
|
|
280
|
-
|
|
281
|
-
// Provider setup
|
|
282
|
-
function App() {
|
|
283
|
-
return (
|
|
284
|
-
<FeatureFlagProvider config={{ provider: 'launchdarkly' }}>
|
|
285
|
-
<MyComponent />
|
|
286
|
-
</FeatureFlagProvider>
|
|
287
|
-
);
|
|
288
|
-
}
|
|
289
|
-
|
|
290
|
-
// Hook usage
|
|
291
|
-
function MyComponent() {
|
|
292
|
-
const { isEnabled, isLoading } = useFeatureFlag('new_ui');
|
|
293
|
-
|
|
294
|
-
if (isLoading) return <Loading />;
|
|
295
|
-
|
|
296
|
-
return isEnabled ? <NewUI /> : <OldUI />;
|
|
297
|
-
}
|
|
298
|
-
|
|
299
|
-
// Conditional rendering
|
|
300
|
-
function FeatureGate({ flag, children, fallback }) {
|
|
301
|
-
const { isEnabled } = useFeatureFlag(flag);
|
|
302
|
-
return isEnabled ? children : fallback;
|
|
303
|
-
}
|
|
304
|
-
|
|
305
|
-
<FeatureGate flag="beta_features" fallback={<StandardView />}>
|
|
306
|
-
<BetaView />
|
|
307
|
-
</FeatureGate>
|
|
308
|
-
```
|
|
309
|
-
|
|
310
|
-
### Backend (Node.js)
|
|
311
|
-
|
|
312
|
-
```typescript
|
|
313
|
-
// Middleware
|
|
314
|
-
import { featureFlagMiddleware } from '@proagents/feature-flags/express';
|
|
315
|
-
|
|
316
|
-
app.use(featureFlagMiddleware({
|
|
317
|
-
provider: 'launchdarkly',
|
|
318
|
-
userIdExtractor: (req) => req.user?.id,
|
|
319
|
-
}));
|
|
320
|
-
|
|
321
|
-
// Route usage
|
|
322
|
-
app.get('/api/checkout', async (req, res) => {
|
|
323
|
-
if (req.featureFlags.isEnabled('new_checkout_flow')) {
|
|
324
|
-
return handleNewCheckout(req, res);
|
|
325
|
-
}
|
|
326
|
-
return handleOldCheckout(req, res);
|
|
327
|
-
});
|
|
328
|
-
```
|
|
329
|
-
|
|
330
|
-
---
|
|
331
|
-
|
|
332
|
-
## Flag Lifecycle
|
|
333
|
-
|
|
334
|
-
### Flag States
|
|
335
|
-
|
|
336
|
-
```yaml
|
|
337
|
-
feature_flags:
|
|
338
|
-
lifecycle:
|
|
339
|
-
states:
|
|
340
|
-
- "development" # Being developed
|
|
341
|
-
- "testing" # In QA/staging
|
|
342
|
-
- "rollout" # Gradually releasing
|
|
343
|
-
- "released" # Fully released
|
|
344
|
-
- "deprecated" # Marked for removal
|
|
345
|
-
- "archived" # Removed from code
|
|
346
|
-
|
|
347
|
-
# Automatic transitions
|
|
348
|
-
transitions:
|
|
349
|
-
testing_to_rollout:
|
|
350
|
-
condition: "staging_tests_pass"
|
|
351
|
-
approval_required: true
|
|
352
|
-
|
|
353
|
-
rollout_to_released:
|
|
354
|
-
condition: "rollout_percentage == 100 AND no_issues"
|
|
355
|
-
approval_required: false
|
|
356
|
-
```
|
|
357
|
-
|
|
358
|
-
### Flag Cleanup
|
|
359
|
-
|
|
360
|
-
```yaml
|
|
361
|
-
feature_flags:
|
|
362
|
-
cleanup:
|
|
363
|
-
# Alert on stale flags
|
|
364
|
-
stale_alert:
|
|
365
|
-
enabled: true
|
|
366
|
-
threshold: "90d"
|
|
367
|
-
notify: ["engineering@company.com"]
|
|
368
|
-
|
|
369
|
-
# Auto-archive
|
|
370
|
-
auto_archive:
|
|
371
|
-
enabled: true
|
|
372
|
-
threshold: "180d"
|
|
373
|
-
condition: "released_and_no_changes"
|
|
374
|
-
|
|
375
|
-
# Cleanup reports
|
|
376
|
-
reports:
|
|
377
|
-
schedule: "monthly"
|
|
378
|
-
recipients: ["tech-leads@company.com"]
|
|
379
|
-
```
|
|
380
|
-
|
|
381
|
-
---
|
|
382
|
-
|
|
383
|
-
## Commands
|
|
384
|
-
|
|
385
|
-
```bash
|
|
386
|
-
# List all flags
|
|
387
|
-
proagents flags list
|
|
388
|
-
|
|
389
|
-
# Get flag value
|
|
390
|
-
proagents flags get new_checkout_flow
|
|
391
|
-
|
|
392
|
-
# Set flag value
|
|
393
|
-
proagents flags set new_checkout_flow true --env production
|
|
394
|
-
|
|
395
|
-
# Enable for percentage
|
|
396
|
-
proagents flags rollout new_ui --percentage 25
|
|
397
|
-
|
|
398
|
-
# Enable for users
|
|
399
|
-
proagents flags enable new_ui --users user-123,user-456
|
|
400
|
-
|
|
401
|
-
# Disable flag
|
|
402
|
-
proagents flags disable new_checkout_flow
|
|
403
|
-
|
|
404
|
-
# View flag history
|
|
405
|
-
proagents flags history new_ui
|
|
406
|
-
|
|
407
|
-
# Cleanup stale flags
|
|
408
|
-
proagents flags cleanup --dry-run
|
|
409
|
-
```
|
|
410
|
-
|
|
411
|
-
---
|
|
412
|
-
|
|
413
|
-
## Best Practices
|
|
414
|
-
|
|
415
|
-
1. **Naming Convention**: Use snake_case, be descriptive
|
|
416
|
-
2. **Short-Lived Flags**: Remove flags after full rollout
|
|
417
|
-
3. **Default Safe**: Defaults should be the safe/old behavior
|
|
418
|
-
4. **Document Purpose**: Always add descriptions
|
|
419
|
-
5. **Test Both States**: Ensure both flag states work
|
|
420
|
-
6. **Monitor Usage**: Track flag evaluations and outcomes
|