wogiflow 1.0.21 → 1.0.22
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/commands/wogi-bug.md +43 -0
- package/.claude/commands/wogi-bulk.md +144 -0
- package/.claude/commands/wogi-changelog.md +36 -0
- package/.claude/commands/wogi-compact.md +99 -0
- package/.claude/commands/wogi-config.md +50 -0
- package/.claude/commands/wogi-context.md +68 -0
- package/.claude/commands/wogi-correction.md +73 -0
- package/.claude/commands/wogi-debt.md +128 -0
- package/.claude/commands/wogi-deps.md +32 -0
- package/.claude/commands/wogi-epics.md +145 -0
- package/.claude/commands/wogi-export.md +100 -0
- package/.claude/commands/wogi-feature.md +149 -0
- package/.claude/commands/wogi-guided-edit.md +83 -0
- package/.claude/commands/wogi-health.md +43 -0
- package/.claude/commands/wogi-help.md +96 -0
- package/.claude/commands/wogi-hybrid-edit.md +36 -0
- package/.claude/commands/wogi-hybrid-off.md +24 -0
- package/.claude/commands/wogi-hybrid-setup.md +79 -0
- package/.claude/commands/wogi-hybrid-status.md +45 -0
- package/.claude/commands/wogi-hybrid.md +54 -0
- package/.claude/commands/wogi-import.md +44 -0
- package/.claude/commands/wogi-init.md +618 -0
- package/.claude/commands/wogi-log.md +38 -0
- package/.claude/commands/wogi-map-add.md +29 -0
- package/.claude/commands/wogi-map-check.md +35 -0
- package/.claude/commands/wogi-map-index.md +98 -0
- package/.claude/commands/wogi-map-scan.md +38 -0
- package/.claude/commands/wogi-map-sync.md +91 -0
- package/.claude/commands/wogi-map.md +33 -0
- package/.claude/commands/wogi-morning.md +65 -0
- package/.claude/commands/wogi-onboard.md +99 -0
- package/.claude/commands/wogi-plan.md +173 -0
- package/.claude/commands/wogi-ready.md +84 -0
- package/.claude/commands/wogi-resume.md +95 -0
- package/.claude/commands/wogi-review.md +636 -0
- package/.claude/commands/wogi-roadmap.md +241 -0
- package/.claude/commands/wogi-rules.md +104 -0
- package/.claude/commands/wogi-search.md +33 -0
- package/.claude/commands/wogi-session-end.md +49 -0
- package/.claude/commands/wogi-setup-stack.md +151 -0
- package/.claude/commands/wogi-skill-learn.md +66 -0
- package/.claude/commands/wogi-skills.md +87 -0
- package/.claude/commands/wogi-standup.md +28 -0
- package/.claude/commands/wogi-start.md +465 -0
- package/.claude/commands/wogi-status.md +41 -0
- package/.claude/commands/wogi-statusline-setup/skill.md +109 -0
- package/.claude/commands/wogi-story.md +98 -0
- package/.claude/commands/wogi-suspend.md +87 -0
- package/.claude/commands/wogi-test-browser.md +43 -0
- package/.claude/commands/wogi-trace.md +198 -0
- package/.claude/docs/architecture.md +37 -0
- package/.claude/docs/commands.md +343 -0
- package/.claude/docs/knowledge-base/01-setup-onboarding/README.md +177 -0
- package/.claude/docs/knowledge-base/01-setup-onboarding/component-indexing.md +341 -0
- package/.claude/docs/knowledge-base/01-setup-onboarding/framework-detection.md +269 -0
- package/.claude/docs/knowledge-base/01-setup-onboarding/installation.md +146 -0
- package/.claude/docs/knowledge-base/01-setup-onboarding/onboarding-existing.md +317 -0
- package/.claude/docs/knowledge-base/01-setup-onboarding/team-setup.md +346 -0
- package/.claude/docs/knowledge-base/02-task-execution/01-task-planning.md +259 -0
- package/.claude/docs/knowledge-base/02-task-execution/02-execution-loop.md +443 -0
- package/.claude/docs/knowledge-base/02-task-execution/03-verification.md +417 -0
- package/.claude/docs/knowledge-base/02-task-execution/04-completion.md +374 -0
- package/.claude/docs/knowledge-base/02-task-execution/05-session-review.md +170 -0
- package/.claude/docs/knowledge-base/02-task-execution/README.md +173 -0
- package/.claude/docs/knowledge-base/02-task-execution/external-integrations.md +133 -0
- package/.claude/docs/knowledge-base/02-task-execution/model-management.md +202 -0
- package/.claude/docs/knowledge-base/02-task-execution/specification-mode.md +292 -0
- package/.claude/docs/knowledge-base/02-task-execution/sync-daemon.md +96 -0
- package/.claude/docs/knowledge-base/02-task-execution/trade-offs.md +345 -0
- package/.claude/docs/knowledge-base/02-task-execution/workflow-steps.md +357 -0
- package/.claude/docs/knowledge-base/03-self-improvement/README.md +199 -0
- package/.claude/docs/knowledge-base/03-self-improvement/long-input-processing.md +160 -0
- package/.claude/docs/knowledge-base/03-self-improvement/model-learning.md +334 -0
- package/.claude/docs/knowledge-base/03-self-improvement/project-learning.md +301 -0
- package/.claude/docs/knowledge-base/03-self-improvement/skill-learning.md +372 -0
- package/.claude/docs/knowledge-base/03-self-improvement/skill-matching.md +304 -0
- package/.claude/docs/knowledge-base/03-self-improvement/team-learning.md +342 -0
- package/.claude/docs/knowledge-base/04-memory-context/README.md +189 -0
- package/.claude/docs/knowledge-base/04-memory-context/context-management.md +308 -0
- package/.claude/docs/knowledge-base/04-memory-context/memory-commands.md +176 -0
- package/.claude/docs/knowledge-base/04-memory-context/memory-systems.md +359 -0
- package/.claude/docs/knowledge-base/04-memory-context/prd-management.md +115 -0
- package/.claude/docs/knowledge-base/04-memory-context/session-persistence.md +359 -0
- package/.claude/docs/knowledge-base/04-memory-context/team-history.md +317 -0
- package/.claude/docs/knowledge-base/05-development-tools/README.md +84 -0
- package/.claude/docs/knowledge-base/05-development-tools/code-traces.md +278 -0
- package/.claude/docs/knowledge-base/05-development-tools/figma-analyzer.md +253 -0
- package/.claude/docs/knowledge-base/05-development-tools/guided-edit.md +173 -0
- package/.claude/docs/knowledge-base/05-development-tools/mcp-integrations.md +286 -0
- package/.claude/docs/knowledge-base/06-safety-guardrails/README.md +153 -0
- package/.claude/docs/knowledge-base/06-safety-guardrails/checkpoint-rollback.md +302 -0
- package/.claude/docs/knowledge-base/06-safety-guardrails/commit-gates.md +309 -0
- package/.claude/docs/knowledge-base/06-safety-guardrails/damage-control.md +292 -0
- package/.claude/docs/knowledge-base/06-safety-guardrails/security-scanning.md +291 -0
- package/.claude/docs/knowledge-base/README.md +92 -0
- package/.claude/docs/knowledge-base/configuration/README.md +228 -0
- package/.claude/docs/knowledge-base/configuration/all-options.md +1632 -0
- package/.claude/docs/knowledge-base/future-features.md +277 -0
- package/.claude/docs/stack.md +25 -0
- package/.claude/docs/testing.md +71 -0
- package/.claude/rules/README.md +60 -0
- package/.claude/rules/architecture/component-reuse.md +38 -0
- package/.claude/rules/architecture/document-structure.md +76 -0
- package/.claude/rules/architecture/feature-refactoring-cleanup.md +87 -0
- package/.claude/rules/architecture/model-management.md +35 -0
- package/.claude/rules/code-style/naming-conventions.md +55 -0
- package/.claude/rules/security/security-patterns.md +116 -0
- package/.claude/skills/.gitkeep +0 -0
- package/.claude/skills/README.md +131 -0
- package/.claude/skills/_template/commands/.gitkeep +0 -0
- package/.claude/skills/_template/knowledge/anti-patterns.md +49 -0
- package/.claude/skills/_template/knowledge/learnings.md +60 -0
- package/.claude/skills/_template/knowledge/patterns.md +45 -0
- package/.claude/skills/_template/rules/.gitkeep +0 -0
- package/.claude/skills/_template/skill.md +99 -0
- package/.claude/skills/_template/templates/.gitkeep +0 -0
- package/.claude/skills/figma-analyzer/knowledge/anti-patterns.md +216 -0
- package/.claude/skills/figma-analyzer/knowledge/patterns.md +144 -0
- package/.claude/skills/figma-analyzer/skill.md +236 -0
- package/lib/installer.js +59 -19
- package/package.json +5 -1
|
@@ -0,0 +1,1632 @@
|
|
|
1
|
+
# Configuration Reference
|
|
2
|
+
|
|
3
|
+
Complete reference for all WogiFlow configuration options.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Location
|
|
8
|
+
|
|
9
|
+
Configuration lives in `.workflow/config.json`
|
|
10
|
+
|
|
11
|
+
```json
|
|
12
|
+
{
|
|
13
|
+
"version": "2.0.0",
|
|
14
|
+
"projectName": "my-project",
|
|
15
|
+
// ... options
|
|
16
|
+
}
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
---
|
|
20
|
+
|
|
21
|
+
## Quick Navigation
|
|
22
|
+
|
|
23
|
+
### Core Settings
|
|
24
|
+
| Option | Purpose |
|
|
25
|
+
|--------|---------|
|
|
26
|
+
| [version](#other-top-level-options) | Config schema version |
|
|
27
|
+
| [projectName](#other-top-level-options) | Project name |
|
|
28
|
+
| [autoLog](#other-top-level-options) | Auto-update request log |
|
|
29
|
+
| [autoUpdateAppMap](#other-top-level-options) | Auto-update app-map |
|
|
30
|
+
|
|
31
|
+
### Category 1: Task & Workflow
|
|
32
|
+
| Section | Purpose |
|
|
33
|
+
|---------|---------|
|
|
34
|
+
| [enforcement](#enforcement) | Task gating and strict mode |
|
|
35
|
+
| [workflow](#workflow) | Planning and agent structure |
|
|
36
|
+
| [loops](#loops) | Self-completing execution loops |
|
|
37
|
+
| [durableSteps](#durablesteps) | Crash recovery |
|
|
38
|
+
| [suspension](#suspension) | Long-running task handling |
|
|
39
|
+
| [parallel](#parallel) | Concurrent execution |
|
|
40
|
+
| [phases](#phases) | Project phase tracking |
|
|
41
|
+
| [mandatorySteps](#mandatorysteps) | Required workflow steps |
|
|
42
|
+
| [priorities](#priorities) | Task priority levels |
|
|
43
|
+
| [storyDecomposition](#storydecomposition) | Story breakdown |
|
|
44
|
+
|
|
45
|
+
### Category 2: Quality & Validation
|
|
46
|
+
| Section | Purpose |
|
|
47
|
+
|---------|---------|
|
|
48
|
+
| [qualityGates](#qualitygates) | Per-task-type requirements |
|
|
49
|
+
| [validation](#validation) | Auto-validation commands |
|
|
50
|
+
| [testing](#testing) | Test execution |
|
|
51
|
+
| [regressionTesting](#regressiontesting) | Regression checks |
|
|
52
|
+
| [browserTesting](#browsertesting) | Browser test integration |
|
|
53
|
+
| [componentRules](#componentrules) | Component reuse rules |
|
|
54
|
+
| [strictMode](#strictmode) | Additional strict options |
|
|
55
|
+
|
|
56
|
+
### Category 3: Learning & Memory
|
|
57
|
+
| Section | Purpose |
|
|
58
|
+
|---------|---------|
|
|
59
|
+
| [skills](#skills) | Installed skills |
|
|
60
|
+
| [skillLearning](#skilllearning) | Skill auto-creation |
|
|
61
|
+
| [memory](#memory) | Fact storage |
|
|
62
|
+
| [automaticMemory](#automaticmemory) | Memory management |
|
|
63
|
+
| [automaticPromotion](#automaticpromotion) | Pattern promotion |
|
|
64
|
+
| [knowledgeRouting](#knowledgerouting) | Local vs team knowledge |
|
|
65
|
+
| [modelAdapters](#modeladapters) | Per-model learning |
|
|
66
|
+
| [prd](#prd) | PRD chunking |
|
|
67
|
+
|
|
68
|
+
### Category 4: Context & Session
|
|
69
|
+
| Section | Purpose |
|
|
70
|
+
|---------|---------|
|
|
71
|
+
| [autoContext](#autocontext) | Auto-loading related files |
|
|
72
|
+
| [sessionState](#sessionstate) | Session persistence |
|
|
73
|
+
| [contextMonitor](#contextmonitor) | Context window management |
|
|
74
|
+
| [morningBriefing](#morningbriefing) | Session start context |
|
|
75
|
+
| [requestLog](#requestlog) | Change history |
|
|
76
|
+
|
|
77
|
+
### Category 5: Development Tools
|
|
78
|
+
| Section | Purpose |
|
|
79
|
+
|---------|---------|
|
|
80
|
+
| [componentIndex](#componentindex) | Component scanning |
|
|
81
|
+
| [figmaAnalyzer](#figmaanalyzer) | Design-to-code |
|
|
82
|
+
| [guidedEdit](#guidededit) | Multi-file editing |
|
|
83
|
+
| [traces](#traces) | Code flow traces |
|
|
84
|
+
| [worktree](#worktree) | Git worktree isolation |
|
|
85
|
+
| [hybrid](#hybrid) | Local LLM execution |
|
|
86
|
+
| [lsp](#lsp) | Language server integration |
|
|
87
|
+
| [codebaseInsights](#codebaseinsights) | Project analysis |
|
|
88
|
+
|
|
89
|
+
### Category 6: Safety & Commits
|
|
90
|
+
| Section | Purpose |
|
|
91
|
+
|---------|---------|
|
|
92
|
+
| [commits](#commits) | Commit approval workflow |
|
|
93
|
+
| [security](#security) | Pre-commit security scans |
|
|
94
|
+
| [damageControl](#damagecontrol) | Destructive command protection |
|
|
95
|
+
|
|
96
|
+
### Category 7: Integrations
|
|
97
|
+
| Section | Purpose |
|
|
98
|
+
|---------|---------|
|
|
99
|
+
| [team](#team) | Team sync |
|
|
100
|
+
| [agents](#agents) | Agent personas |
|
|
101
|
+
| [multiApproach](#multiapproach) | Multiple solution analysis |
|
|
102
|
+
| [hooks](#hooks) | CLI hooks (Claude Code, etc.) |
|
|
103
|
+
| [metrics](#metrics) | Usage tracking |
|
|
104
|
+
| [corrections](#corrections) | Correction file handling |
|
|
105
|
+
|
|
106
|
+
---
|
|
107
|
+
|
|
108
|
+
## enforcement
|
|
109
|
+
|
|
110
|
+
Controls task gating and strict mode behavior.
|
|
111
|
+
|
|
112
|
+
```json
|
|
113
|
+
{
|
|
114
|
+
"enforcement": {
|
|
115
|
+
"strictMode": true,
|
|
116
|
+
"requireTaskForImplementation": true,
|
|
117
|
+
"requireStoryForMediumTasks": true,
|
|
118
|
+
"requirePatternCitation": false,
|
|
119
|
+
"citationFormat": "// Pattern: {pattern}",
|
|
120
|
+
"taskSizeThresholds": {
|
|
121
|
+
"small": { "maxFiles": 3, "maxHours": 1 },
|
|
122
|
+
"medium": { "maxFiles": 10, "maxHours": 4 },
|
|
123
|
+
"large": { "minFiles": 10, "minHours": 4 }
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
| Option | Type | Default | Description |
|
|
130
|
+
|--------|------|---------|-------------|
|
|
131
|
+
| `strictMode` | boolean | `true` | Enable strict task gating |
|
|
132
|
+
| `requireTaskForImplementation` | boolean | `true` | Require task before coding |
|
|
133
|
+
| `requireStoryForMediumTasks` | boolean | `true` | Require story for medium+ tasks |
|
|
134
|
+
| `requirePatternCitation` | boolean | `false` | Require citing patterns in code |
|
|
135
|
+
| `citationFormat` | string | `"// Pattern: {pattern}"` | Format for pattern citations |
|
|
136
|
+
| `taskSizeThresholds.small.maxFiles` | number | `3` | Max files for small task |
|
|
137
|
+
| `taskSizeThresholds.small.maxHours` | number | `1` | Max hours for small task |
|
|
138
|
+
| `taskSizeThresholds.medium.maxFiles` | number | `10` | Max files for medium task |
|
|
139
|
+
| `taskSizeThresholds.medium.maxHours` | number | `4` | Max hours for medium task |
|
|
140
|
+
| `taskSizeThresholds.large.minFiles` | number | `10` | Min files for large task |
|
|
141
|
+
| `taskSizeThresholds.large.minHours` | number | `4` | Min hours for large task |
|
|
142
|
+
|
|
143
|
+
---
|
|
144
|
+
|
|
145
|
+
## commits
|
|
146
|
+
|
|
147
|
+
Controls commit approval workflow.
|
|
148
|
+
|
|
149
|
+
```json
|
|
150
|
+
{
|
|
151
|
+
"commits": {
|
|
152
|
+
"requireApproval": {
|
|
153
|
+
"feature": true,
|
|
154
|
+
"bugfix": false,
|
|
155
|
+
"refactor": true,
|
|
156
|
+
"docs": false
|
|
157
|
+
},
|
|
158
|
+
"autoCommitSmallFixes": true,
|
|
159
|
+
"smallFixThreshold": 3,
|
|
160
|
+
"squashTaskCommits": true,
|
|
161
|
+
"commitMessageFormat": "conventional"
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
| Option | Type | Default | Description |
|
|
167
|
+
|--------|------|---------|-------------|
|
|
168
|
+
| `requireApproval.feature` | boolean | `true` | Require approval for features |
|
|
169
|
+
| `requireApproval.bugfix` | boolean | `false` | Require approval for bugfixes |
|
|
170
|
+
| `requireApproval.refactor` | boolean | `true` | Require approval for refactors |
|
|
171
|
+
| `requireApproval.docs` | boolean | `false` | Require approval for docs |
|
|
172
|
+
| `autoCommitSmallFixes` | boolean | `true` | Auto-commit small changes |
|
|
173
|
+
| `smallFixThreshold` | number | `3` | Max files for "small fix" |
|
|
174
|
+
| `squashTaskCommits` | boolean | `true` | Squash commits on task complete |
|
|
175
|
+
| `commitMessageFormat` | string | `"conventional"` | `"conventional"` or `"simple"` |
|
|
176
|
+
|
|
177
|
+
---
|
|
178
|
+
|
|
179
|
+
## workflow
|
|
180
|
+
|
|
181
|
+
High-level workflow configuration.
|
|
182
|
+
|
|
183
|
+
```json
|
|
184
|
+
{
|
|
185
|
+
"workflow": {
|
|
186
|
+
"planningStyle": "feature-based",
|
|
187
|
+
"agentStructure": "unified"
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
```
|
|
191
|
+
|
|
192
|
+
| Option | Type | Default | Description |
|
|
193
|
+
|--------|------|---------|-------------|
|
|
194
|
+
| `planningStyle` | string | `"feature-based"` | Planning approach |
|
|
195
|
+
| `agentStructure` | string | `"unified"` | Agent organization |
|
|
196
|
+
|
|
197
|
+
---
|
|
198
|
+
|
|
199
|
+
## loops
|
|
200
|
+
|
|
201
|
+
Controls self-completing execution loops.
|
|
202
|
+
|
|
203
|
+
```json
|
|
204
|
+
{
|
|
205
|
+
"loops": {
|
|
206
|
+
"enabled": true,
|
|
207
|
+
"enforced": true,
|
|
208
|
+
"blockExitUntilComplete": true,
|
|
209
|
+
"requireVerification": true,
|
|
210
|
+
"blockOnSkip": true,
|
|
211
|
+
"maxRetries": 5,
|
|
212
|
+
"maxIterations": 20,
|
|
213
|
+
"commitEvery": 3,
|
|
214
|
+
"pauseBetweenScenarios": false,
|
|
215
|
+
"autoInferVerification": true,
|
|
216
|
+
"fallbackToManual": true,
|
|
217
|
+
"suggestBrowserTests": true
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
```
|
|
221
|
+
|
|
222
|
+
| Option | Type | Default | Description |
|
|
223
|
+
|--------|------|---------|-------------|
|
|
224
|
+
| `enabled` | boolean | `true` | Enable execution loops |
|
|
225
|
+
| `enforced` | boolean | `true` | Enforce loop completion |
|
|
226
|
+
| `blockExitUntilComplete` | boolean | `true` | Prevent early exit |
|
|
227
|
+
| `requireVerification` | boolean | `true` | Require verification pass |
|
|
228
|
+
| `blockOnSkip` | boolean | `true` | Block if scenario skipped |
|
|
229
|
+
| `maxRetries` | number | `5` | Max retries per scenario |
|
|
230
|
+
| `maxIterations` | number | `20` | Max total loop iterations |
|
|
231
|
+
| `commitEvery` | number | `3` | Commit every N scenarios |
|
|
232
|
+
| `pauseBetweenScenarios` | boolean | `false` | Pause between scenarios |
|
|
233
|
+
| `autoInferVerification` | boolean | `true` | Auto-generate verification steps |
|
|
234
|
+
| `fallbackToManual` | boolean | `true` | Fall back to manual on failure |
|
|
235
|
+
| `suggestBrowserTests` | boolean | `true` | Suggest browser tests for UI |
|
|
236
|
+
|
|
237
|
+
**Trade-off**: Higher `maxRetries`/`maxIterations` = higher completion rate but more token usage.
|
|
238
|
+
|
|
239
|
+
---
|
|
240
|
+
|
|
241
|
+
## durableSteps
|
|
242
|
+
|
|
243
|
+
Controls crash recovery and session persistence.
|
|
244
|
+
|
|
245
|
+
```json
|
|
246
|
+
{
|
|
247
|
+
"durableSteps": {
|
|
248
|
+
"enabled": true,
|
|
249
|
+
"autoResume": true,
|
|
250
|
+
"checkSuspensionsOnStart": true,
|
|
251
|
+
"defaultMaxAttempts": 5
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
```
|
|
255
|
+
|
|
256
|
+
| Option | Type | Default | Description |
|
|
257
|
+
|--------|------|---------|-------------|
|
|
258
|
+
| `enabled` | boolean | `true` | Enable durable sessions |
|
|
259
|
+
| `autoResume` | boolean | `true` | Auto-resume interrupted tasks |
|
|
260
|
+
| `checkSuspensionsOnStart` | boolean | `true` | Check for suspended tasks |
|
|
261
|
+
| `defaultMaxAttempts` | number | `5` | Default retry attempts |
|
|
262
|
+
|
|
263
|
+
---
|
|
264
|
+
|
|
265
|
+
## suspension
|
|
266
|
+
|
|
267
|
+
Controls long-running task handling.
|
|
268
|
+
|
|
269
|
+
```json
|
|
270
|
+
{
|
|
271
|
+
"suspension": {
|
|
272
|
+
"enabled": true,
|
|
273
|
+
"pollIntervalSeconds": 60,
|
|
274
|
+
"maxPollAttempts": 120,
|
|
275
|
+
"reminderAfterHours": 24
|
|
276
|
+
}
|
|
277
|
+
}
|
|
278
|
+
```
|
|
279
|
+
|
|
280
|
+
| Option | Type | Default | Description |
|
|
281
|
+
|--------|------|---------|-------------|
|
|
282
|
+
| `enabled` | boolean | `true` | Enable suspend/resume |
|
|
283
|
+
| `pollIntervalSeconds` | number | `60` | Polling interval for conditions |
|
|
284
|
+
| `maxPollAttempts` | number | `120` | Max poll attempts before timeout |
|
|
285
|
+
| `reminderAfterHours` | number | `24` | Hours before reminder |
|
|
286
|
+
|
|
287
|
+
---
|
|
288
|
+
|
|
289
|
+
## parallel
|
|
290
|
+
|
|
291
|
+
Controls concurrent task execution.
|
|
292
|
+
|
|
293
|
+
```json
|
|
294
|
+
{
|
|
295
|
+
"parallel": {
|
|
296
|
+
"enabled": true,
|
|
297
|
+
"maxConcurrent": 3,
|
|
298
|
+
"autoApprove": false,
|
|
299
|
+
"requireWorktree": true,
|
|
300
|
+
"showProgress": true,
|
|
301
|
+
"autoDetect": true,
|
|
302
|
+
"autoSuggest": true,
|
|
303
|
+
"autoExecute": false,
|
|
304
|
+
"minTasksForParallel": 2
|
|
305
|
+
}
|
|
306
|
+
}
|
|
307
|
+
```
|
|
308
|
+
|
|
309
|
+
| Option | Type | Default | Description |
|
|
310
|
+
|--------|------|---------|-------------|
|
|
311
|
+
| `enabled` | boolean | `true` | Enable parallel execution |
|
|
312
|
+
| `maxConcurrent` | number | `3` | Max concurrent tasks |
|
|
313
|
+
| `autoApprove` | boolean | `false` | Auto-approve parallel work |
|
|
314
|
+
| `requireWorktree` | boolean | `true` | Require git worktree isolation |
|
|
315
|
+
| `showProgress` | boolean | `true` | Show progress indicators |
|
|
316
|
+
| `autoDetect` | boolean | `true` | Auto-detect parallelizable tasks |
|
|
317
|
+
| `autoSuggest` | boolean | `true` | Suggest parallel execution |
|
|
318
|
+
| `autoExecute` | boolean | `false` | Auto-execute in parallel |
|
|
319
|
+
| `minTasksForParallel` | number | `2` | Min tasks for parallel mode |
|
|
320
|
+
|
|
321
|
+
---
|
|
322
|
+
|
|
323
|
+
## corrections
|
|
324
|
+
|
|
325
|
+
Controls correction file handling.
|
|
326
|
+
|
|
327
|
+
```json
|
|
328
|
+
{
|
|
329
|
+
"corrections": {
|
|
330
|
+
"mode": "inline",
|
|
331
|
+
"detailPath": ".workflow/corrections"
|
|
332
|
+
}
|
|
333
|
+
}
|
|
334
|
+
```
|
|
335
|
+
|
|
336
|
+
| Option | Type | Default | Description |
|
|
337
|
+
|--------|------|---------|-------------|
|
|
338
|
+
| `mode` | string | `"inline"` | `"inline"` or `"detailed"` |
|
|
339
|
+
| `detailPath` | string | `".workflow/corrections"` | Path for detailed corrections |
|
|
340
|
+
|
|
341
|
+
---
|
|
342
|
+
|
|
343
|
+
## phases
|
|
344
|
+
|
|
345
|
+
Controls project phases (disabled by default).
|
|
346
|
+
|
|
347
|
+
```json
|
|
348
|
+
{
|
|
349
|
+
"phases": {
|
|
350
|
+
"enabled": false,
|
|
351
|
+
"definitions": []
|
|
352
|
+
}
|
|
353
|
+
}
|
|
354
|
+
```
|
|
355
|
+
|
|
356
|
+
| Option | Type | Default | Description |
|
|
357
|
+
|--------|------|---------|-------------|
|
|
358
|
+
| `enabled` | boolean | `false` | Enable phase tracking |
|
|
359
|
+
| `definitions` | array | `[]` | Phase definitions |
|
|
360
|
+
|
|
361
|
+
---
|
|
362
|
+
|
|
363
|
+
## mandatorySteps
|
|
364
|
+
|
|
365
|
+
Required steps at various points.
|
|
366
|
+
|
|
367
|
+
```json
|
|
368
|
+
{
|
|
369
|
+
"mandatorySteps": {
|
|
370
|
+
"afterTask": [],
|
|
371
|
+
"beforeCommit": [],
|
|
372
|
+
"onSessionEnd": ["updateRequestLog", "updateAppMap"]
|
|
373
|
+
}
|
|
374
|
+
}
|
|
375
|
+
```
|
|
376
|
+
|
|
377
|
+
| Option | Type | Default | Description |
|
|
378
|
+
|--------|------|---------|-------------|
|
|
379
|
+
| `afterTask` | array | `[]` | Steps after each task |
|
|
380
|
+
| `beforeCommit` | array | `[]` | Steps before commit |
|
|
381
|
+
| `onSessionEnd` | array | `["updateRequestLog", "updateAppMap"]` | Steps on session end |
|
|
382
|
+
|
|
383
|
+
---
|
|
384
|
+
|
|
385
|
+
## qualityGates
|
|
386
|
+
|
|
387
|
+
Per-task-type quality requirements.
|
|
388
|
+
|
|
389
|
+
```json
|
|
390
|
+
{
|
|
391
|
+
"qualityGates": {
|
|
392
|
+
"feature": {
|
|
393
|
+
"require": ["loopComplete", "tests", "appMapUpdate", "requestLogEntry"],
|
|
394
|
+
"optional": ["review", "docs"]
|
|
395
|
+
},
|
|
396
|
+
"bugfix": {
|
|
397
|
+
"require": ["loopComplete", "tests", "requestLogEntry"],
|
|
398
|
+
"optional": ["review"]
|
|
399
|
+
},
|
|
400
|
+
"refactor": {
|
|
401
|
+
"require": ["loopComplete", "tests", "noNewFeatures"],
|
|
402
|
+
"optional": ["review"]
|
|
403
|
+
}
|
|
404
|
+
}
|
|
405
|
+
}
|
|
406
|
+
```
|
|
407
|
+
|
|
408
|
+
| Gate | Description |
|
|
409
|
+
|------|-------------|
|
|
410
|
+
| `loopComplete` | Self-completing loop must finish all acceptance criteria |
|
|
411
|
+
| `tests` | Tests must pass |
|
|
412
|
+
| `appMapUpdate` | App-map must be updated |
|
|
413
|
+
| `requestLogEntry` | Request log must be updated |
|
|
414
|
+
| `review` | Code review required |
|
|
415
|
+
| `docs` | Documentation required |
|
|
416
|
+
| `noNewFeatures` | No new features (refactor only) |
|
|
417
|
+
|
|
418
|
+
---
|
|
419
|
+
|
|
420
|
+
## strictMode
|
|
421
|
+
|
|
422
|
+
Additional strict mode options.
|
|
423
|
+
|
|
424
|
+
```json
|
|
425
|
+
{
|
|
426
|
+
"strictMode": {
|
|
427
|
+
"verificationChecklist": false,
|
|
428
|
+
"correctionReportsOnFail": false,
|
|
429
|
+
"featureReportsOnComplete": false
|
|
430
|
+
}
|
|
431
|
+
}
|
|
432
|
+
```
|
|
433
|
+
|
|
434
|
+
| Option | Type | Default | Description |
|
|
435
|
+
|--------|------|---------|-------------|
|
|
436
|
+
| `verificationChecklist` | boolean | `false` | Require verification checklist |
|
|
437
|
+
| `correctionReportsOnFail` | boolean | `false` | Generate correction reports |
|
|
438
|
+
| `featureReportsOnComplete` | boolean | `false` | Generate feature reports |
|
|
439
|
+
|
|
440
|
+
---
|
|
441
|
+
|
|
442
|
+
## componentRules
|
|
443
|
+
|
|
444
|
+
Component reuse and creation rules.
|
|
445
|
+
|
|
446
|
+
```json
|
|
447
|
+
{
|
|
448
|
+
"componentRules": {
|
|
449
|
+
"preferVariants": true,
|
|
450
|
+
"requireAppMapEntry": true,
|
|
451
|
+
"requireDetailDoc": false,
|
|
452
|
+
"autoGenerateStorybook": false,
|
|
453
|
+
"storybookPath": "src/stories"
|
|
454
|
+
}
|
|
455
|
+
}
|
|
456
|
+
```
|
|
457
|
+
|
|
458
|
+
| Option | Type | Default | Description |
|
|
459
|
+
|--------|------|---------|-------------|
|
|
460
|
+
| `preferVariants` | boolean | `true` | Prefer variants over new components |
|
|
461
|
+
| `requireAppMapEntry` | boolean | `true` | Require app-map entry for new components |
|
|
462
|
+
| `requireDetailDoc` | boolean | `false` | Require detailed documentation |
|
|
463
|
+
| `autoGenerateStorybook` | boolean | `false` | Auto-generate Storybook stories |
|
|
464
|
+
| `storybookPath` | string | `"src/stories"` | Path for Storybook stories |
|
|
465
|
+
|
|
466
|
+
---
|
|
467
|
+
|
|
468
|
+
## testing
|
|
469
|
+
|
|
470
|
+
Test execution configuration.
|
|
471
|
+
|
|
472
|
+
```json
|
|
473
|
+
{
|
|
474
|
+
"testing": {
|
|
475
|
+
"runAfterTask": false,
|
|
476
|
+
"runBeforeCommit": false,
|
|
477
|
+
"browserTests": false,
|
|
478
|
+
"browserTestUrl": "http://localhost:3000"
|
|
479
|
+
}
|
|
480
|
+
}
|
|
481
|
+
```
|
|
482
|
+
|
|
483
|
+
| Option | Type | Default | Description |
|
|
484
|
+
|--------|------|---------|-------------|
|
|
485
|
+
| `runAfterTask` | boolean | `false` | Run tests after task |
|
|
486
|
+
| `runBeforeCommit` | boolean | `false` | Run tests before commit |
|
|
487
|
+
| `browserTests` | boolean | `false` | Enable browser tests |
|
|
488
|
+
| `browserTestUrl` | string | `"http://localhost:3000"` | Browser test base URL |
|
|
489
|
+
|
|
490
|
+
---
|
|
491
|
+
|
|
492
|
+
## hooks
|
|
493
|
+
|
|
494
|
+
CLI hooks configuration for AI tools (Claude Code, future Gemini/Codex support).
|
|
495
|
+
|
|
496
|
+
```json
|
|
497
|
+
{
|
|
498
|
+
"hooks": {
|
|
499
|
+
"enabled": true,
|
|
500
|
+
"targets": ["claude-code"],
|
|
501
|
+
"gracefulDegradation": true,
|
|
502
|
+
"timeout": 5000,
|
|
503
|
+
"rules": {
|
|
504
|
+
"taskGating": { "enabled": true, "blockWithoutTask": true },
|
|
505
|
+
"validation": { "enabled": true, "runAfterEdit": true },
|
|
506
|
+
"loopEnforcement": { "enabled": true },
|
|
507
|
+
"componentReuse": { "enabled": true, "threshold": 80, "blockOnSimilar": false },
|
|
508
|
+
"sessionContext": { "enabled": true, "loadSuspendedTasks": true },
|
|
509
|
+
"autoLogging": { "enabled": true }
|
|
510
|
+
},
|
|
511
|
+
"claudeCode": {
|
|
512
|
+
"installPath": ".claude/settings.local.json"
|
|
513
|
+
}
|
|
514
|
+
}
|
|
515
|
+
}
|
|
516
|
+
```
|
|
517
|
+
|
|
518
|
+
| Option | Type | Default | Description |
|
|
519
|
+
|--------|------|---------|-------------|
|
|
520
|
+
| `enabled` | boolean | `true` | Enable CLI hooks |
|
|
521
|
+
| `targets` | array | `["claude-code"]` | Target CLIs for hooks |
|
|
522
|
+
| `gracefulDegradation` | boolean | `true` | Continue on hook failure |
|
|
523
|
+
| `timeout` | number | `5000` | Hook timeout in ms |
|
|
524
|
+
| `rules.taskGating.enabled` | boolean | `true` | Enable task gating hook |
|
|
525
|
+
| `rules.taskGating.blockWithoutTask` | boolean | `true` | Block edits without active task |
|
|
526
|
+
| `rules.validation.enabled` | boolean | `true` | Enable validation hook |
|
|
527
|
+
| `rules.validation.runAfterEdit` | boolean | `true` | Run validation after file edits |
|
|
528
|
+
| `rules.loopEnforcement.enabled` | boolean | `true` | Block stop until criteria met |
|
|
529
|
+
| `rules.componentReuse.enabled` | boolean | `true` | Check for similar components |
|
|
530
|
+
| `rules.componentReuse.threshold` | number | `80` | Similarity threshold (0-100) |
|
|
531
|
+
| `rules.sessionContext.enabled` | boolean | `true` | Load context on session start |
|
|
532
|
+
| `rules.autoLogging.enabled` | boolean | `true` | Auto-log session activity |
|
|
533
|
+
|
|
534
|
+
**Setup/Management:**
|
|
535
|
+
```bash
|
|
536
|
+
./scripts/flow hooks setup # Install hooks
|
|
537
|
+
./scripts/flow hooks status # Check hook status
|
|
538
|
+
./scripts/flow hooks remove # Remove hooks
|
|
539
|
+
./scripts/flow hooks test X # Test a specific hook
|
|
540
|
+
```
|
|
541
|
+
|
|
542
|
+
---
|
|
543
|
+
|
|
544
|
+
## skills
|
|
545
|
+
|
|
546
|
+
Installed skills.
|
|
547
|
+
|
|
548
|
+
```json
|
|
549
|
+
{
|
|
550
|
+
"skills": {
|
|
551
|
+
"installed": []
|
|
552
|
+
}
|
|
553
|
+
}
|
|
554
|
+
```
|
|
555
|
+
|
|
556
|
+
| Option | Type | Default | Description |
|
|
557
|
+
|--------|------|---------|-------------|
|
|
558
|
+
| `installed` | array | `[]` | List of installed skill names |
|
|
559
|
+
|
|
560
|
+
---
|
|
561
|
+
|
|
562
|
+
## skillLearning
|
|
563
|
+
|
|
564
|
+
Skill auto-creation and learning.
|
|
565
|
+
|
|
566
|
+
```json
|
|
567
|
+
{
|
|
568
|
+
"skillLearning": {
|
|
569
|
+
"enabled": true,
|
|
570
|
+
"autoExtract": true,
|
|
571
|
+
"triggers": {
|
|
572
|
+
"onCommit": true,
|
|
573
|
+
"onTaskComplete": true,
|
|
574
|
+
"onCompact": true
|
|
575
|
+
},
|
|
576
|
+
"minCorrectionsToLearn": 1,
|
|
577
|
+
"autoCreateSkills": "ask",
|
|
578
|
+
"autoDetectFrameworks": true,
|
|
579
|
+
"fetchOfficialDocs": true,
|
|
580
|
+
"frameworkDetectionPatterns": {
|
|
581
|
+
"nestjs": ["*.module.ts", "*.controller.ts", "*.service.ts", "@nestjs/*"],
|
|
582
|
+
"react": ["*.tsx", "*.jsx", "use*.ts", "react", "react-dom"],
|
|
583
|
+
"vue": ["*.vue", "vue", "@vue/*"],
|
|
584
|
+
"angular": ["*.component.ts", "*.module.ts", "@angular/*"],
|
|
585
|
+
"fastapi": ["main.py", "fastapi", "pydantic"],
|
|
586
|
+
"django": ["manage.py", "django", "settings.py"],
|
|
587
|
+
"express": ["app.js", "express", "router.js"]
|
|
588
|
+
},
|
|
589
|
+
"officialDocsUrls": {
|
|
590
|
+
"nestjs": "https://docs.nestjs.com",
|
|
591
|
+
"react": "https://react.dev",
|
|
592
|
+
"vue": "https://vuejs.org/guide",
|
|
593
|
+
"angular": "https://angular.io/docs",
|
|
594
|
+
"fastapi": "https://fastapi.tiangolo.com",
|
|
595
|
+
"django": "https://docs.djangoproject.com",
|
|
596
|
+
"express": "https://expressjs.com/en/guide"
|
|
597
|
+
}
|
|
598
|
+
}
|
|
599
|
+
}
|
|
600
|
+
```
|
|
601
|
+
|
|
602
|
+
| Option | Type | Default | Description |
|
|
603
|
+
|--------|------|---------|-------------|
|
|
604
|
+
| `enabled` | boolean | `true` | Enable skill learning |
|
|
605
|
+
| `autoExtract` | boolean | `true` | Auto-extract patterns |
|
|
606
|
+
| `triggers.onCommit` | boolean | `true` | Learn on commit |
|
|
607
|
+
| `triggers.onTaskComplete` | boolean | `true` | Learn on task complete |
|
|
608
|
+
| `triggers.onCompact` | boolean | `true` | Learn on compact |
|
|
609
|
+
| `minCorrectionsToLearn` | number | `1` | Min corrections to create pattern |
|
|
610
|
+
| `autoCreateSkills` | string | `"ask"` | `"ask"`, `"auto"`, or `"never"` |
|
|
611
|
+
| `autoDetectFrameworks` | boolean | `true` | Auto-detect frameworks |
|
|
612
|
+
| `fetchOfficialDocs` | boolean | `true` | Fetch official documentation |
|
|
613
|
+
| `frameworkDetectionPatterns` | object | (see above) | Patterns to detect frameworks |
|
|
614
|
+
| `officialDocsUrls` | object | (see above) | URLs for official docs |
|
|
615
|
+
|
|
616
|
+
---
|
|
617
|
+
|
|
618
|
+
## componentIndex
|
|
619
|
+
|
|
620
|
+
Component auto-scanning configuration.
|
|
621
|
+
|
|
622
|
+
```json
|
|
623
|
+
{
|
|
624
|
+
"componentIndex": {
|
|
625
|
+
"autoScan": true,
|
|
626
|
+
"scanOn": ["sessionStart", "afterTask", "preCommit"],
|
|
627
|
+
"staleAfterMinutes": 60,
|
|
628
|
+
"directories": [
|
|
629
|
+
"src/components",
|
|
630
|
+
"src/hooks",
|
|
631
|
+
"src/services",
|
|
632
|
+
"src/pages",
|
|
633
|
+
"src/modules",
|
|
634
|
+
"app"
|
|
635
|
+
],
|
|
636
|
+
"ignore": [
|
|
637
|
+
"*.test.*",
|
|
638
|
+
"*.spec.*",
|
|
639
|
+
"*.stories.*",
|
|
640
|
+
"index.ts",
|
|
641
|
+
"index.js",
|
|
642
|
+
"__tests__",
|
|
643
|
+
"__mocks__"
|
|
644
|
+
]
|
|
645
|
+
}
|
|
646
|
+
}
|
|
647
|
+
```
|
|
648
|
+
|
|
649
|
+
| Option | Type | Default | Description |
|
|
650
|
+
|--------|------|---------|-------------|
|
|
651
|
+
| `autoScan` | boolean | `true` | Auto-scan on triggers |
|
|
652
|
+
| `scanOn` | array | `["sessionStart"]` | When to scan: `sessionStart`, `afterTask`, `preCommit` |
|
|
653
|
+
| `staleAfterMinutes` | number | `60` | Refresh if older than this (with sessionStart) |
|
|
654
|
+
| `directories` | array | (see above) | Directories to scan |
|
|
655
|
+
| `ignore` | array | (see above) | Patterns to ignore |
|
|
656
|
+
|
|
657
|
+
---
|
|
658
|
+
|
|
659
|
+
## guidedEdit
|
|
660
|
+
|
|
661
|
+
Step-by-step multi-file editing configuration.
|
|
662
|
+
|
|
663
|
+
```json
|
|
664
|
+
{
|
|
665
|
+
"guidedEdit": {
|
|
666
|
+
"enabled": true,
|
|
667
|
+
"sessionFile": ".workflow/state/guided-edit-session.json",
|
|
668
|
+
"extensions": ["ts", "tsx", "js", "jsx", "vue", "svelte"],
|
|
669
|
+
"srcDir": null
|
|
670
|
+
}
|
|
671
|
+
}
|
|
672
|
+
```
|
|
673
|
+
|
|
674
|
+
| Option | Type | Default | Description |
|
|
675
|
+
|--------|------|---------|-------------|
|
|
676
|
+
| `enabled` | boolean | `true` | Enable guided edit |
|
|
677
|
+
| `sessionFile` | string | (see above) | Session persistence file |
|
|
678
|
+
| `extensions` | array | `["ts", "tsx", "js", "jsx", "vue", "svelte"]` | File extensions to search |
|
|
679
|
+
| `srcDir` | string\|null | `null` | Source directory (null = auto-detect) |
|
|
680
|
+
|
|
681
|
+
---
|
|
682
|
+
|
|
683
|
+
## figmaAnalyzer
|
|
684
|
+
|
|
685
|
+
Design-to-code matching configuration.
|
|
686
|
+
|
|
687
|
+
```json
|
|
688
|
+
{
|
|
689
|
+
"figmaAnalyzer": {
|
|
690
|
+
"enabled": true,
|
|
691
|
+
"thresholds": {
|
|
692
|
+
"exactMatch": 95,
|
|
693
|
+
"strongMatch": 80,
|
|
694
|
+
"variantCandidate": 60
|
|
695
|
+
},
|
|
696
|
+
"componentDirs": ["src/components", "components", "src/ui", "ui"],
|
|
697
|
+
"mcpServer": {
|
|
698
|
+
"port": 3847,
|
|
699
|
+
"autoStart": false
|
|
700
|
+
},
|
|
701
|
+
"autoScanOnAnalyze": true,
|
|
702
|
+
"generatePrompts": true
|
|
703
|
+
}
|
|
704
|
+
}
|
|
705
|
+
```
|
|
706
|
+
|
|
707
|
+
| Option | Type | Default | Description |
|
|
708
|
+
|--------|------|---------|-------------|
|
|
709
|
+
| `enabled` | boolean | `true` | Enable Figma analyzer |
|
|
710
|
+
| `thresholds.exactMatch` | number | `95` | Score for exact match |
|
|
711
|
+
| `thresholds.strongMatch` | number | `80` | Score for strong match |
|
|
712
|
+
| `thresholds.variantCandidate` | number | `60` | Score for variant candidate |
|
|
713
|
+
| `componentDirs` | array | (see above) | Directories to search |
|
|
714
|
+
| `mcpServer.port` | number | `3847` | MCP server port |
|
|
715
|
+
| `mcpServer.autoStart` | boolean | `false` | Auto-start MCP server |
|
|
716
|
+
| `autoScanOnAnalyze` | boolean | `true` | Scan components on analyze |
|
|
717
|
+
| `generatePrompts` | boolean | `true` | Generate implementation prompts |
|
|
718
|
+
|
|
719
|
+
---
|
|
720
|
+
|
|
721
|
+
## traces
|
|
722
|
+
|
|
723
|
+
Code flow trace configuration.
|
|
724
|
+
|
|
725
|
+
```json
|
|
726
|
+
{
|
|
727
|
+
"traces": {
|
|
728
|
+
"saveTo": ".workflow/traces",
|
|
729
|
+
"generateDiagrams": true
|
|
730
|
+
}
|
|
731
|
+
}
|
|
732
|
+
```
|
|
733
|
+
|
|
734
|
+
| Option | Type | Default | Description |
|
|
735
|
+
|--------|------|---------|-------------|
|
|
736
|
+
| `saveTo` | string | `".workflow/traces"` | Where to save traces |
|
|
737
|
+
| `generateDiagrams` | boolean | `true` | Generate Mermaid diagrams |
|
|
738
|
+
|
|
739
|
+
---
|
|
740
|
+
|
|
741
|
+
## worktree
|
|
742
|
+
|
|
743
|
+
Git worktree isolation configuration.
|
|
744
|
+
|
|
745
|
+
```json
|
|
746
|
+
{
|
|
747
|
+
"worktree": {
|
|
748
|
+
"enabled": false,
|
|
749
|
+
"autoCleanupHours": 24,
|
|
750
|
+
"keepOnFailure": false,
|
|
751
|
+
"squashOnMerge": true
|
|
752
|
+
}
|
|
753
|
+
}
|
|
754
|
+
```
|
|
755
|
+
|
|
756
|
+
| Option | Type | Default | Description |
|
|
757
|
+
|--------|------|---------|-------------|
|
|
758
|
+
| `enabled` | boolean | `false` | Enable worktree isolation |
|
|
759
|
+
| `autoCleanupHours` | number | `24` | Hours before cleanup |
|
|
760
|
+
| `keepOnFailure` | boolean | `false` | Keep worktree on failure |
|
|
761
|
+
| `squashOnMerge` | boolean | `true` | Squash commits on merge |
|
|
762
|
+
|
|
763
|
+
---
|
|
764
|
+
|
|
765
|
+
## hybrid
|
|
766
|
+
|
|
767
|
+
Local LLM execution configuration (85-95% token savings).
|
|
768
|
+
|
|
769
|
+
```json
|
|
770
|
+
{
|
|
771
|
+
"hybrid": {
|
|
772
|
+
"enabled": false,
|
|
773
|
+
"executor": {
|
|
774
|
+
"type": "local",
|
|
775
|
+
"provider": null,
|
|
776
|
+
"providerEndpoint": null,
|
|
777
|
+
"model": null,
|
|
778
|
+
"apiKey": null
|
|
779
|
+
},
|
|
780
|
+
"planner": {
|
|
781
|
+
"adaptToExecutor": true,
|
|
782
|
+
"useAdapterKnowledge": true
|
|
783
|
+
},
|
|
784
|
+
"settings": {
|
|
785
|
+
"temperature": 0.7,
|
|
786
|
+
"maxTokens": 4096,
|
|
787
|
+
"maxRetries": 20,
|
|
788
|
+
"timeout": 120000,
|
|
789
|
+
"autoExecute": false,
|
|
790
|
+
"createBranch": false,
|
|
791
|
+
"tokenEstimation": {
|
|
792
|
+
"enabled": true,
|
|
793
|
+
"minTokens": 1000,
|
|
794
|
+
"maxTokens": 8000,
|
|
795
|
+
"defaultLevel": "medium",
|
|
796
|
+
"logMetrics": true
|
|
797
|
+
}
|
|
798
|
+
},
|
|
799
|
+
"cloudProviders": {
|
|
800
|
+
"openai": {
|
|
801
|
+
"models": ["gpt-4o-mini", "gpt-4o"],
|
|
802
|
+
"defaultModel": "gpt-4o-mini",
|
|
803
|
+
"envKey": "OPENAI_API_KEY"
|
|
804
|
+
},
|
|
805
|
+
"anthropic": {
|
|
806
|
+
"models": ["claude-3-5-haiku-latest", "claude-3-haiku-20240307"],
|
|
807
|
+
"defaultModel": "claude-3-5-haiku-latest",
|
|
808
|
+
"envKey": "ANTHROPIC_API_KEY"
|
|
809
|
+
},
|
|
810
|
+
"google": {
|
|
811
|
+
"models": ["gemini-2.0-flash-exp", "gemini-1.5-flash"],
|
|
812
|
+
"defaultModel": "gemini-2.0-flash-exp",
|
|
813
|
+
"envKey": "GOOGLE_API_KEY"
|
|
814
|
+
}
|
|
815
|
+
},
|
|
816
|
+
"templates": {
|
|
817
|
+
"directory": "templates/hybrid"
|
|
818
|
+
},
|
|
819
|
+
"projectContext": {
|
|
820
|
+
"uiFramework": null,
|
|
821
|
+
"stylingApproach": null,
|
|
822
|
+
"componentDirs": [],
|
|
823
|
+
"typeDirs": ["src/types/*.ts"],
|
|
824
|
+
"doNotImport": ["React"],
|
|
825
|
+
"excludeDirectories": ["__tests__", "__mocks__", "node_modules", ".git", "dist", "build"]
|
|
826
|
+
}
|
|
827
|
+
}
|
|
828
|
+
}
|
|
829
|
+
```
|
|
830
|
+
|
|
831
|
+
| Option | Type | Default | Description |
|
|
832
|
+
|--------|------|---------|-------------|
|
|
833
|
+
| `enabled` | boolean | `false` | Enable hybrid mode |
|
|
834
|
+
| `executor.type` | string | `"local"` | `"local"` or `"cloud"` |
|
|
835
|
+
| `executor.provider` | string | `null` | Cloud provider name |
|
|
836
|
+
| `executor.providerEndpoint` | string | `null` | Custom endpoint URL |
|
|
837
|
+
| `executor.model` | string | `null` | Model to use |
|
|
838
|
+
| `executor.apiKey` | string | `null` | API key (or use env var) |
|
|
839
|
+
| `planner.adaptToExecutor` | boolean | `true` | Adapt prompts to executor |
|
|
840
|
+
| `planner.useAdapterKnowledge` | boolean | `true` | Use model adapter knowledge |
|
|
841
|
+
| `settings.temperature` | number | `0.7` | LLM temperature |
|
|
842
|
+
| `settings.maxTokens` | number | `4096` | Max tokens per request |
|
|
843
|
+
| `settings.maxRetries` | number | `20` | Max retry attempts |
|
|
844
|
+
| `settings.timeout` | number | `120000` | Timeout in ms |
|
|
845
|
+
| `settings.autoExecute` | boolean | `false` | Auto-execute plans |
|
|
846
|
+
| `settings.createBranch` | boolean | `false` | Create branch for changes |
|
|
847
|
+
| `tokenEstimation.enabled` | boolean | `true` | Estimate tokens |
|
|
848
|
+
| `tokenEstimation.minTokens` | number | `1000` | Min estimated tokens |
|
|
849
|
+
| `tokenEstimation.maxTokens` | number | `8000` | Max estimated tokens |
|
|
850
|
+
|
|
851
|
+
---
|
|
852
|
+
|
|
853
|
+
## validation
|
|
854
|
+
|
|
855
|
+
Auto-validation command configuration.
|
|
856
|
+
|
|
857
|
+
```json
|
|
858
|
+
{
|
|
859
|
+
"validation": {
|
|
860
|
+
"afterFileEdit": {
|
|
861
|
+
"enabled": false,
|
|
862
|
+
"commands": {
|
|
863
|
+
"*.ts": ["npx tsc --noEmit"],
|
|
864
|
+
"*.tsx": ["npx tsc --noEmit", "npx eslint {file} --fix"],
|
|
865
|
+
"*.js": ["npx eslint {file} --fix"],
|
|
866
|
+
"*.jsx": ["npx eslint {file} --fix"]
|
|
867
|
+
},
|
|
868
|
+
"fixErrorsBeforeContinuing": true
|
|
869
|
+
},
|
|
870
|
+
"afterTaskComplete": {
|
|
871
|
+
"enabled": true,
|
|
872
|
+
"commands": ["npm run lint", "npm run typecheck"]
|
|
873
|
+
},
|
|
874
|
+
"beforeCommit": {
|
|
875
|
+
"enabled": true,
|
|
876
|
+
"commands": ["npm run lint", "npm run typecheck", "npm run test"]
|
|
877
|
+
}
|
|
878
|
+
}
|
|
879
|
+
}
|
|
880
|
+
```
|
|
881
|
+
|
|
882
|
+
| Option | Type | Default | Description |
|
|
883
|
+
|--------|------|---------|-------------|
|
|
884
|
+
| `afterFileEdit.enabled` | boolean | `false` | Validate after each edit |
|
|
885
|
+
| `afterFileEdit.commands` | object | (see above) | Commands per file type |
|
|
886
|
+
| `afterFileEdit.fixErrorsBeforeContinuing` | boolean | `true` | Block on errors |
|
|
887
|
+
| `afterTaskComplete.enabled` | boolean | `true` | Validate after task |
|
|
888
|
+
| `afterTaskComplete.commands` | array | (see above) | Commands to run |
|
|
889
|
+
| `beforeCommit.enabled` | boolean | `true` | Validate before commit |
|
|
890
|
+
| `beforeCommit.commands` | array | (see above) | Commands to run |
|
|
891
|
+
|
|
892
|
+
---
|
|
893
|
+
|
|
894
|
+
## agents
|
|
895
|
+
|
|
896
|
+
Agent persona configuration.
|
|
897
|
+
|
|
898
|
+
```json
|
|
899
|
+
{
|
|
900
|
+
"agents": {
|
|
901
|
+
"enabled": ["orchestrator", "story-writer", "developer", "reviewer", "tester"],
|
|
902
|
+
"optional": ["accessibility", "security", "performance", "docs", "design-system", "onboarding"]
|
|
903
|
+
}
|
|
904
|
+
}
|
|
905
|
+
```
|
|
906
|
+
|
|
907
|
+
| Option | Type | Default | Description |
|
|
908
|
+
|--------|------|---------|-------------|
|
|
909
|
+
| `enabled` | array | (see above) | Enabled agent personas |
|
|
910
|
+
| `optional` | array | (see above) | Optional agent personas |
|
|
911
|
+
|
|
912
|
+
---
|
|
913
|
+
|
|
914
|
+
## multiApproach
|
|
915
|
+
|
|
916
|
+
Multiple solution analysis configuration.
|
|
917
|
+
|
|
918
|
+
```json
|
|
919
|
+
{
|
|
920
|
+
"multiApproach": {
|
|
921
|
+
"enabled": true,
|
|
922
|
+
"mode": "suggest",
|
|
923
|
+
"triggerOn": ["large", "xl"],
|
|
924
|
+
"maxApproaches": 3,
|
|
925
|
+
"selectionStrategy": "first-passing"
|
|
926
|
+
}
|
|
927
|
+
}
|
|
928
|
+
```
|
|
929
|
+
|
|
930
|
+
| Option | Type | Default | Description |
|
|
931
|
+
|--------|------|---------|-------------|
|
|
932
|
+
| `enabled` | boolean | `true` | Enable multi-approach |
|
|
933
|
+
| `mode` | string | `"suggest"` | `"suggest"` or `"auto"` |
|
|
934
|
+
| `triggerOn` | array | `["large", "xl"]` | Task sizes to trigger |
|
|
935
|
+
| `maxApproaches` | number | `3` | Max approaches to generate |
|
|
936
|
+
| `selectionStrategy` | string | `"first-passing"` | How to select approach |
|
|
937
|
+
|
|
938
|
+
---
|
|
939
|
+
|
|
940
|
+
## autoContext
|
|
941
|
+
|
|
942
|
+
Auto-loading related files configuration. Automatically discovers relevant files, semantic memory facts, and LSP type information when starting a task.
|
|
943
|
+
|
|
944
|
+
```json
|
|
945
|
+
{
|
|
946
|
+
"autoContext": {
|
|
947
|
+
"enabled": true,
|
|
948
|
+
"showLoadedFiles": true,
|
|
949
|
+
"maxFilesToLoad": 10,
|
|
950
|
+
"maxGrepResults": 10,
|
|
951
|
+
"maxComponentMatches": 15,
|
|
952
|
+
"maxContentLines": 50,
|
|
953
|
+
"includeContent": false,
|
|
954
|
+
"useAstGrep": false,
|
|
955
|
+
"maxSemanticFacts": 5,
|
|
956
|
+
"semanticMinRelevance": 40,
|
|
957
|
+
"lspEnrichment": {
|
|
958
|
+
"enabled": true,
|
|
959
|
+
"maxFiles": 5,
|
|
960
|
+
"timeoutMs": 2000,
|
|
961
|
+
"showExports": true,
|
|
962
|
+
"showDiagnostics": true,
|
|
963
|
+
"prioritizeHealthyFiles": true
|
|
964
|
+
}
|
|
965
|
+
}
|
|
966
|
+
}
|
|
967
|
+
```
|
|
968
|
+
|
|
969
|
+
| Option | Type | Default | Description |
|
|
970
|
+
|--------|------|---------|-------------|
|
|
971
|
+
| `enabled` | boolean | `true` | Enable auto-context |
|
|
972
|
+
| `showLoadedFiles` | boolean | `true` | Show loaded files |
|
|
973
|
+
| `maxFilesToLoad` | number | `10` | Max files to load |
|
|
974
|
+
| `maxGrepResults` | number | `10` | Max grep results |
|
|
975
|
+
| `maxComponentMatches` | number | `15` | Max component matches |
|
|
976
|
+
| `maxContentLines` | number | `50` | Max lines per file |
|
|
977
|
+
| `includeContent` | boolean | `false` | Include file content |
|
|
978
|
+
| `useAstGrep` | boolean | `false` | Use AST-based grep |
|
|
979
|
+
| `maxSemanticFacts` | number | `5` | Max semantic memory facts to include |
|
|
980
|
+
| `semanticMinRelevance` | number | `40` | Min relevance % for semantic facts |
|
|
981
|
+
|
|
982
|
+
### LSP Enrichment (v2.2+)
|
|
983
|
+
|
|
984
|
+
LSP enrichment adds type information and diagnostics to discovered files.
|
|
985
|
+
|
|
986
|
+
| Option | Type | Default | Description |
|
|
987
|
+
|--------|------|---------|-------------|
|
|
988
|
+
| `lspEnrichment.enabled` | boolean | `true` | Enable LSP enrichment |
|
|
989
|
+
| `lspEnrichment.maxFiles` | number | `5` | Max files to enrich |
|
|
990
|
+
| `lspEnrichment.timeoutMs` | number | `2000` | LSP timeout in ms |
|
|
991
|
+
| `lspEnrichment.showExports` | boolean | `true` | Show exported symbols |
|
|
992
|
+
| `lspEnrichment.showDiagnostics` | boolean | `true` | Show error/warning counts |
|
|
993
|
+
| `lspEnrichment.prioritizeHealthyFiles` | boolean | `true` | Sort error-free files first |
|
|
994
|
+
|
|
995
|
+
**Output Example:**
|
|
996
|
+
```
|
|
997
|
+
📂 Auto-loaded context:
|
|
998
|
+
✓ src/services/AuthService.ts
|
|
999
|
+
⚠️ src/hooks/useAuth.ts (2 warnings)
|
|
1000
|
+
❌ src/utils/broken.ts (1 error)
|
|
1001
|
+
|
|
1002
|
+
📦 Key exports:
|
|
1003
|
+
AuthService.ts: login, logout, refreshToken
|
|
1004
|
+
useAuth.ts: useAuth, AuthProvider
|
|
1005
|
+
|
|
1006
|
+
🧠 Learned facts:
|
|
1007
|
+
● Always use AuthContext for user state
|
|
1008
|
+
```
|
|
1009
|
+
|
|
1010
|
+
---
|
|
1011
|
+
|
|
1012
|
+
## metrics
|
|
1013
|
+
|
|
1014
|
+
Usage tracking configuration.
|
|
1015
|
+
|
|
1016
|
+
```json
|
|
1017
|
+
{
|
|
1018
|
+
"metrics": {
|
|
1019
|
+
"enabled": true,
|
|
1020
|
+
"trackCommands": true,
|
|
1021
|
+
"retentionDays": 30,
|
|
1022
|
+
"alertOnFailureRate": 0.3
|
|
1023
|
+
}
|
|
1024
|
+
}
|
|
1025
|
+
```
|
|
1026
|
+
|
|
1027
|
+
| Option | Type | Default | Description |
|
|
1028
|
+
|--------|------|---------|-------------|
|
|
1029
|
+
| `enabled` | boolean | `true` | Enable metrics |
|
|
1030
|
+
| `trackCommands` | boolean | `true` | Track command usage |
|
|
1031
|
+
| `retentionDays` | number | `30` | Days to retain metrics |
|
|
1032
|
+
| `alertOnFailureRate` | number | `0.3` | Alert threshold (0-1) |
|
|
1033
|
+
|
|
1034
|
+
---
|
|
1035
|
+
|
|
1036
|
+
## security
|
|
1037
|
+
|
|
1038
|
+
Pre-commit security scanning configuration.
|
|
1039
|
+
|
|
1040
|
+
```json
|
|
1041
|
+
{
|
|
1042
|
+
"security": {
|
|
1043
|
+
"scanBeforeCommit": true,
|
|
1044
|
+
"blockOnHigh": true,
|
|
1045
|
+
"checkPatterns": {
|
|
1046
|
+
"secrets": true,
|
|
1047
|
+
"injection": true,
|
|
1048
|
+
"npmAudit": true
|
|
1049
|
+
},
|
|
1050
|
+
"ignoreFiles": ["*.test.ts", "*.spec.ts"]
|
|
1051
|
+
}
|
|
1052
|
+
}
|
|
1053
|
+
```
|
|
1054
|
+
|
|
1055
|
+
| Option | Type | Default | Description |
|
|
1056
|
+
|--------|------|---------|-------------|
|
|
1057
|
+
| `scanBeforeCommit` | boolean | `true` | Scan before commit |
|
|
1058
|
+
| `blockOnHigh` | boolean | `true` | Block on high severity |
|
|
1059
|
+
| `checkPatterns.secrets` | boolean | `true` | Check for secrets |
|
|
1060
|
+
| `checkPatterns.injection` | boolean | `true` | Check for injection |
|
|
1061
|
+
| `checkPatterns.npmAudit` | boolean | `true` | Run npm audit |
|
|
1062
|
+
| `ignoreFiles` | array | (see above) | Files to ignore |
|
|
1063
|
+
|
|
1064
|
+
---
|
|
1065
|
+
|
|
1066
|
+
## modelAdapters
|
|
1067
|
+
|
|
1068
|
+
Per-model learning configuration.
|
|
1069
|
+
|
|
1070
|
+
```json
|
|
1071
|
+
{
|
|
1072
|
+
"modelAdapters": {
|
|
1073
|
+
"enabled": true,
|
|
1074
|
+
"autoLearn": true,
|
|
1075
|
+
"directory": ".workflow/model-adapters"
|
|
1076
|
+
}
|
|
1077
|
+
}
|
|
1078
|
+
```
|
|
1079
|
+
|
|
1080
|
+
| Option | Type | Default | Description |
|
|
1081
|
+
|--------|------|---------|-------------|
|
|
1082
|
+
| `enabled` | boolean | `true` | Enable model adapters |
|
|
1083
|
+
| `autoLearn` | boolean | `true` | Auto-learn from errors |
|
|
1084
|
+
| `directory` | string | `".workflow/model-adapters"` | Adapter storage path |
|
|
1085
|
+
|
|
1086
|
+
---
|
|
1087
|
+
|
|
1088
|
+
## codebaseInsights
|
|
1089
|
+
|
|
1090
|
+
Project analysis configuration.
|
|
1091
|
+
|
|
1092
|
+
```json
|
|
1093
|
+
{
|
|
1094
|
+
"codebaseInsights": {
|
|
1095
|
+
"enabled": true,
|
|
1096
|
+
"generateOn": ["onboarding", "manual"]
|
|
1097
|
+
}
|
|
1098
|
+
}
|
|
1099
|
+
```
|
|
1100
|
+
|
|
1101
|
+
| Option | Type | Default | Description |
|
|
1102
|
+
|--------|------|---------|-------------|
|
|
1103
|
+
| `enabled` | boolean | `true` | Enable insights |
|
|
1104
|
+
| `generateOn` | array | `["onboarding", "manual"]` | When to generate |
|
|
1105
|
+
|
|
1106
|
+
---
|
|
1107
|
+
|
|
1108
|
+
## lsp
|
|
1109
|
+
|
|
1110
|
+
Language server integration configuration. LSP provides type information, diagnostics, and symbol navigation.
|
|
1111
|
+
|
|
1112
|
+
```json
|
|
1113
|
+
{
|
|
1114
|
+
"lsp": {
|
|
1115
|
+
"enabled": true,
|
|
1116
|
+
"server": "typescript-language-server",
|
|
1117
|
+
"timeout": 5000,
|
|
1118
|
+
"cacheTypes": true
|
|
1119
|
+
}
|
|
1120
|
+
}
|
|
1121
|
+
```
|
|
1122
|
+
|
|
1123
|
+
| Option | Type | Default | Description |
|
|
1124
|
+
|--------|------|---------|-------------|
|
|
1125
|
+
| `enabled` | boolean | `true` | Enable LSP integration |
|
|
1126
|
+
| `server` | string | `"typescript-language-server"` | LSP server to use |
|
|
1127
|
+
| `timeout` | number | `5000` | Request timeout in ms |
|
|
1128
|
+
| `cacheTypes` | boolean | `true` | Cache type information |
|
|
1129
|
+
|
|
1130
|
+
### Installation
|
|
1131
|
+
|
|
1132
|
+
LSP dependencies can be installed manually:
|
|
1133
|
+
|
|
1134
|
+
```bash
|
|
1135
|
+
npm i -D typescript-language-server typescript
|
|
1136
|
+
```
|
|
1137
|
+
|
|
1138
|
+
### Auto-Context Integration
|
|
1139
|
+
|
|
1140
|
+
When `autoContext.lspEnrichment.enabled` is `true`, the LSP server enriches auto-context results with:
|
|
1141
|
+
- **Exported symbols**: Function, class, interface, and variable names
|
|
1142
|
+
- **Diagnostics**: Error and warning counts per file
|
|
1143
|
+
- **Health prioritization**: Files with errors are sorted to the bottom
|
|
1144
|
+
|
|
1145
|
+
See [autoContext.lspEnrichment](#lsp-enrichment-v22) for configuration options.
|
|
1146
|
+
|
|
1147
|
+
---
|
|
1148
|
+
|
|
1149
|
+
## contextMonitor
|
|
1150
|
+
|
|
1151
|
+
Context window management configuration.
|
|
1152
|
+
|
|
1153
|
+
```json
|
|
1154
|
+
{
|
|
1155
|
+
"contextMonitor": {
|
|
1156
|
+
"enabled": true,
|
|
1157
|
+
"warnAt": 0.7,
|
|
1158
|
+
"criticalAt": 0.85,
|
|
1159
|
+
"contextWindow": 200000,
|
|
1160
|
+
"checkOnSessionStart": true,
|
|
1161
|
+
"checkAfterTask": true
|
|
1162
|
+
}
|
|
1163
|
+
}
|
|
1164
|
+
```
|
|
1165
|
+
|
|
1166
|
+
| Option | Type | Default | Description |
|
|
1167
|
+
|--------|------|---------|-------------|
|
|
1168
|
+
| `enabled` | boolean | `true` | Enable monitoring |
|
|
1169
|
+
| `warnAt` | number | `0.7` | Warning threshold (0-1) |
|
|
1170
|
+
| `criticalAt` | number | `0.85` | Critical threshold (0-1) |
|
|
1171
|
+
| `contextWindow` | number | `200000` | Estimated context window |
|
|
1172
|
+
| `checkOnSessionStart` | boolean | `true` | Check on start |
|
|
1173
|
+
| `checkAfterTask` | boolean | `true` | Check after task |
|
|
1174
|
+
| `trackingMethod` | string | `"auto"` | Tracking method: "auto", "native", or "estimated" |
|
|
1175
|
+
|
|
1176
|
+
---
|
|
1177
|
+
|
|
1178
|
+
## requestLog
|
|
1179
|
+
|
|
1180
|
+
Change history configuration.
|
|
1181
|
+
|
|
1182
|
+
```json
|
|
1183
|
+
{
|
|
1184
|
+
"requestLog": {
|
|
1185
|
+
"enabled": true,
|
|
1186
|
+
"autoArchive": true,
|
|
1187
|
+
"maxRecentEntries": 50,
|
|
1188
|
+
"keepRecent": 30,
|
|
1189
|
+
"createSummary": true
|
|
1190
|
+
}
|
|
1191
|
+
}
|
|
1192
|
+
```
|
|
1193
|
+
|
|
1194
|
+
| Option | Type | Default | Description |
|
|
1195
|
+
|--------|------|---------|-------------|
|
|
1196
|
+
| `enabled` | boolean | `true` | Enable request log |
|
|
1197
|
+
| `autoArchive` | boolean | `true` | Auto-archive old entries |
|
|
1198
|
+
| `maxRecentEntries` | number | `50` | Max entries before archive |
|
|
1199
|
+
| `keepRecent` | number | `30` | Days to keep recent |
|
|
1200
|
+
| `createSummary` | boolean | `true` | Create summary on archive |
|
|
1201
|
+
|
|
1202
|
+
---
|
|
1203
|
+
|
|
1204
|
+
## sessionState
|
|
1205
|
+
|
|
1206
|
+
Session persistence configuration.
|
|
1207
|
+
|
|
1208
|
+
```json
|
|
1209
|
+
{
|
|
1210
|
+
"sessionState": {
|
|
1211
|
+
"enabled": true,
|
|
1212
|
+
"autoRestore": true,
|
|
1213
|
+
"maxGapHours": 24,
|
|
1214
|
+
"trackFiles": true,
|
|
1215
|
+
"trackDecisions": true,
|
|
1216
|
+
"maxRecentFiles": 20,
|
|
1217
|
+
"maxRecentDecisions": 10
|
|
1218
|
+
}
|
|
1219
|
+
}
|
|
1220
|
+
```
|
|
1221
|
+
|
|
1222
|
+
| Option | Type | Default | Description |
|
|
1223
|
+
|--------|------|---------|-------------|
|
|
1224
|
+
| `enabled` | boolean | `true` | Enable session state |
|
|
1225
|
+
| `autoRestore` | boolean | `true` | Auto-restore session |
|
|
1226
|
+
| `maxGapHours` | number | `24` | Max hours between sessions |
|
|
1227
|
+
| `trackFiles` | boolean | `true` | Track file access |
|
|
1228
|
+
| `trackDecisions` | boolean | `true` | Track decisions |
|
|
1229
|
+
| `maxRecentFiles` | number | `20` | Max recent files |
|
|
1230
|
+
| `maxRecentDecisions` | number | `10` | Max recent decisions |
|
|
1231
|
+
|
|
1232
|
+
---
|
|
1233
|
+
|
|
1234
|
+
## team
|
|
1235
|
+
|
|
1236
|
+
Team sync configuration.
|
|
1237
|
+
|
|
1238
|
+
```json
|
|
1239
|
+
{
|
|
1240
|
+
"team": {
|
|
1241
|
+
"enabled": false,
|
|
1242
|
+
"teamId": null,
|
|
1243
|
+
"userId": null,
|
|
1244
|
+
"setupId": null,
|
|
1245
|
+
"projectId": null,
|
|
1246
|
+
"apiKey": null,
|
|
1247
|
+
"backendUrl": "https://api.wogi-flow.com",
|
|
1248
|
+
"syncInterval": 300000,
|
|
1249
|
+
"autoSync": true,
|
|
1250
|
+
"projectScope": true,
|
|
1251
|
+
"sync": {
|
|
1252
|
+
"decisions": true,
|
|
1253
|
+
"appMap": true,
|
|
1254
|
+
"componentIndex": true,
|
|
1255
|
+
"skills": true,
|
|
1256
|
+
"memory": true,
|
|
1257
|
+
"requestLog": "recent",
|
|
1258
|
+
"tasks": false
|
|
1259
|
+
},
|
|
1260
|
+
"conflictResolution": "newest-wins"
|
|
1261
|
+
}
|
|
1262
|
+
}
|
|
1263
|
+
```
|
|
1264
|
+
|
|
1265
|
+
| Option | Type | Default | Description |
|
|
1266
|
+
|--------|------|---------|-------------|
|
|
1267
|
+
| `enabled` | boolean | `false` | Enable team sync |
|
|
1268
|
+
| `teamId` | string | `null` | Team identifier |
|
|
1269
|
+
| `userId` | string | `null` | User identifier |
|
|
1270
|
+
| `backendUrl` | string | `"https://api.wogi-flow.com"` | Backend URL |
|
|
1271
|
+
| `syncInterval` | number | `300000` | Sync interval in ms |
|
|
1272
|
+
| `autoSync` | boolean | `true` | Auto-sync enabled |
|
|
1273
|
+
| `sync.decisions` | boolean | `true` | Sync decisions |
|
|
1274
|
+
| `sync.appMap` | boolean | `true` | Sync app-map |
|
|
1275
|
+
| `sync.componentIndex` | boolean | `true` | Sync component index |
|
|
1276
|
+
| `sync.skills` | boolean | `true` | Sync skills |
|
|
1277
|
+
| `sync.memory` | boolean | `true` | Sync memory |
|
|
1278
|
+
| `sync.requestLog` | string | `"recent"` | `"all"`, `"recent"`, or `false` |
|
|
1279
|
+
| `sync.tasks` | boolean | `false` | Sync tasks |
|
|
1280
|
+
| `conflictResolution` | string | `"newest-wins"` | Conflict resolution strategy |
|
|
1281
|
+
|
|
1282
|
+
---
|
|
1283
|
+
|
|
1284
|
+
## memory
|
|
1285
|
+
|
|
1286
|
+
Fact storage configuration.
|
|
1287
|
+
|
|
1288
|
+
```json
|
|
1289
|
+
{
|
|
1290
|
+
"memory": {
|
|
1291
|
+
"enabled": true,
|
|
1292
|
+
"localDb": ".workflow/memory/local.db",
|
|
1293
|
+
"embeddingModel": "Xenova/all-MiniLM-L6-v2",
|
|
1294
|
+
"maxLocalFacts": 1000,
|
|
1295
|
+
"autoRemember": false
|
|
1296
|
+
}
|
|
1297
|
+
}
|
|
1298
|
+
```
|
|
1299
|
+
|
|
1300
|
+
| Option | Type | Default | Description |
|
|
1301
|
+
|--------|------|---------|-------------|
|
|
1302
|
+
| `enabled` | boolean | `true` | Enable memory system |
|
|
1303
|
+
| `localDb` | string | `".workflow/memory/local.db"` | Local database path |
|
|
1304
|
+
| `embeddingModel` | string | `"Xenova/all-MiniLM-L6-v2"` | Embedding model |
|
|
1305
|
+
| `maxLocalFacts` | number | `1000` | Max stored facts |
|
|
1306
|
+
| `autoRemember` | boolean | `false` | Auto-remember facts |
|
|
1307
|
+
|
|
1308
|
+
---
|
|
1309
|
+
|
|
1310
|
+
## knowledgeRouting
|
|
1311
|
+
|
|
1312
|
+
Local vs team knowledge configuration.
|
|
1313
|
+
|
|
1314
|
+
```json
|
|
1315
|
+
{
|
|
1316
|
+
"knowledgeRouting": {
|
|
1317
|
+
"autoDetect": true,
|
|
1318
|
+
"confirmWithUser": true,
|
|
1319
|
+
"defaultScope": "local",
|
|
1320
|
+
"modelSpecificLearning": true
|
|
1321
|
+
}
|
|
1322
|
+
}
|
|
1323
|
+
```
|
|
1324
|
+
|
|
1325
|
+
| Option | Type | Default | Description |
|
|
1326
|
+
|--------|------|---------|-------------|
|
|
1327
|
+
| `autoDetect` | boolean | `true` | Auto-detect knowledge type |
|
|
1328
|
+
| `confirmWithUser` | boolean | `true` | Confirm before routing |
|
|
1329
|
+
| `defaultScope` | string | `"local"` | Default scope |
|
|
1330
|
+
| `modelSpecificLearning` | boolean | `true` | Per-model learning |
|
|
1331
|
+
|
|
1332
|
+
---
|
|
1333
|
+
|
|
1334
|
+
## prd
|
|
1335
|
+
|
|
1336
|
+
PRD chunking configuration.
|
|
1337
|
+
|
|
1338
|
+
```json
|
|
1339
|
+
{
|
|
1340
|
+
"prd": {
|
|
1341
|
+
"enabled": true,
|
|
1342
|
+
"maxContextTokens": 2000,
|
|
1343
|
+
"chunkSize": 500,
|
|
1344
|
+
"autoRetrieve": false
|
|
1345
|
+
}
|
|
1346
|
+
}
|
|
1347
|
+
```
|
|
1348
|
+
|
|
1349
|
+
| Option | Type | Default | Description |
|
|
1350
|
+
|--------|------|---------|-------------|
|
|
1351
|
+
| `enabled` | boolean | `true` | Enable PRD support |
|
|
1352
|
+
| `maxContextTokens` | number | `2000` | Max tokens per chunk |
|
|
1353
|
+
| `chunkSize` | number | `500` | Chunk size in tokens |
|
|
1354
|
+
| `autoRetrieve` | boolean | `false` | Auto-retrieve relevant chunks |
|
|
1355
|
+
|
|
1356
|
+
---
|
|
1357
|
+
|
|
1358
|
+
## automaticMemory
|
|
1359
|
+
|
|
1360
|
+
Memory management configuration.
|
|
1361
|
+
|
|
1362
|
+
```json
|
|
1363
|
+
{
|
|
1364
|
+
"automaticMemory": {
|
|
1365
|
+
"enabled": true,
|
|
1366
|
+
"entropyThreshold": 0.7,
|
|
1367
|
+
"compactOnSessionEnd": true,
|
|
1368
|
+
"relevanceDecay": {
|
|
1369
|
+
"enabled": true,
|
|
1370
|
+
"decayRate": 0.033,
|
|
1371
|
+
"neverAccessedPenalty": 0.1
|
|
1372
|
+
},
|
|
1373
|
+
"demotion": {
|
|
1374
|
+
"relevanceThreshold": 0.3,
|
|
1375
|
+
"coldRetentionDays": 90
|
|
1376
|
+
},
|
|
1377
|
+
"selfTuning": {
|
|
1378
|
+
"enabled": false,
|
|
1379
|
+
"adjustOnOverflow": true,
|
|
1380
|
+
"adjustOnFailures": true
|
|
1381
|
+
}
|
|
1382
|
+
}
|
|
1383
|
+
}
|
|
1384
|
+
```
|
|
1385
|
+
|
|
1386
|
+
| Option | Type | Default | Description |
|
|
1387
|
+
|--------|------|---------|-------------|
|
|
1388
|
+
| `enabled` | boolean | `true` | Enable auto memory |
|
|
1389
|
+
| `entropyThreshold` | number | `0.7` | Entropy threshold |
|
|
1390
|
+
| `compactOnSessionEnd` | boolean | `true` | Compact on session end |
|
|
1391
|
+
| `relevanceDecay.enabled` | boolean | `true` | Enable decay |
|
|
1392
|
+
| `relevanceDecay.decayRate` | number | `0.033` | Decay rate per day |
|
|
1393
|
+
| `relevanceDecay.neverAccessedPenalty` | number | `0.1` | Penalty for unused |
|
|
1394
|
+
| `demotion.relevanceThreshold` | number | `0.3` | Threshold for demotion |
|
|
1395
|
+
| `demotion.coldRetentionDays` | number | `90` | Days to keep cold |
|
|
1396
|
+
| `selfTuning.enabled` | boolean | `false` | Enable self-tuning |
|
|
1397
|
+
|
|
1398
|
+
---
|
|
1399
|
+
|
|
1400
|
+
## automaticPromotion
|
|
1401
|
+
|
|
1402
|
+
Pattern promotion configuration.
|
|
1403
|
+
|
|
1404
|
+
```json
|
|
1405
|
+
{
|
|
1406
|
+
"automaticPromotion": {
|
|
1407
|
+
"enabled": false,
|
|
1408
|
+
"threshold": 3,
|
|
1409
|
+
"minRelevance": 0.8,
|
|
1410
|
+
"destinations": ["decisions.md"],
|
|
1411
|
+
"requireApproval": true,
|
|
1412
|
+
"autoApplyTeamApproved": true
|
|
1413
|
+
}
|
|
1414
|
+
}
|
|
1415
|
+
```
|
|
1416
|
+
|
|
1417
|
+
| Option | Type | Default | Description |
|
|
1418
|
+
|--------|------|---------|-------------|
|
|
1419
|
+
| `enabled` | boolean | `false` | Enable promotion |
|
|
1420
|
+
| `threshold` | number | `3` | Uses before promotion |
|
|
1421
|
+
| `minRelevance` | number | `0.8` | Min relevance score |
|
|
1422
|
+
| `destinations` | array | `["decisions.md"]` | Where to promote |
|
|
1423
|
+
| `requireApproval` | boolean | `true` | Require user approval |
|
|
1424
|
+
| `autoApplyTeamApproved` | boolean | `true` | Auto-apply team approved |
|
|
1425
|
+
|
|
1426
|
+
---
|
|
1427
|
+
|
|
1428
|
+
## regressionTesting
|
|
1429
|
+
|
|
1430
|
+
Regression test configuration.
|
|
1431
|
+
|
|
1432
|
+
```json
|
|
1433
|
+
{
|
|
1434
|
+
"regressionTesting": {
|
|
1435
|
+
"enabled": true,
|
|
1436
|
+
"sampleSize": 3,
|
|
1437
|
+
"runOnTaskComplete": true,
|
|
1438
|
+
"onFailure": "warn"
|
|
1439
|
+
}
|
|
1440
|
+
}
|
|
1441
|
+
```
|
|
1442
|
+
|
|
1443
|
+
| Option | Type | Default | Description |
|
|
1444
|
+
|--------|------|---------|-------------|
|
|
1445
|
+
| `enabled` | boolean | `true` | Enable regression tests |
|
|
1446
|
+
| `sampleSize` | number | `3` | Tasks to test |
|
|
1447
|
+
| `runOnTaskComplete` | boolean | `true` | Run after task |
|
|
1448
|
+
| `onFailure` | string | `"warn"` | `"warn"`, `"block"`, or `"fix"` |
|
|
1449
|
+
|
|
1450
|
+
---
|
|
1451
|
+
|
|
1452
|
+
## storyDecomposition
|
|
1453
|
+
|
|
1454
|
+
Story breakdown configuration.
|
|
1455
|
+
|
|
1456
|
+
```json
|
|
1457
|
+
{
|
|
1458
|
+
"storyDecomposition": {
|
|
1459
|
+
"autoDetect": true,
|
|
1460
|
+
"autoDecompose": false,
|
|
1461
|
+
"complexityThreshold": "medium",
|
|
1462
|
+
"minSubTasks": 5,
|
|
1463
|
+
"edgeCases": true,
|
|
1464
|
+
"loadingStates": true,
|
|
1465
|
+
"errorStates": true
|
|
1466
|
+
}
|
|
1467
|
+
}
|
|
1468
|
+
```
|
|
1469
|
+
|
|
1470
|
+
| Option | Type | Default | Description |
|
|
1471
|
+
|--------|------|---------|-------------|
|
|
1472
|
+
| `autoDetect` | boolean | `true` | Auto-detect complex stories |
|
|
1473
|
+
| `autoDecompose` | boolean | `false` | Auto-decompose stories |
|
|
1474
|
+
| `complexityThreshold` | string | `"medium"` | Threshold for decomposition |
|
|
1475
|
+
| `minSubTasks` | number | `5` | Min sub-tasks to suggest |
|
|
1476
|
+
| `edgeCases` | boolean | `true` | Include edge cases |
|
|
1477
|
+
| `loadingStates` | boolean | `true` | Include loading states |
|
|
1478
|
+
| `errorStates` | boolean | `true` | Include error states |
|
|
1479
|
+
|
|
1480
|
+
---
|
|
1481
|
+
|
|
1482
|
+
## browserTesting
|
|
1483
|
+
|
|
1484
|
+
Browser test configuration.
|
|
1485
|
+
|
|
1486
|
+
```json
|
|
1487
|
+
{
|
|
1488
|
+
"browserTesting": {
|
|
1489
|
+
"enabled": true,
|
|
1490
|
+
"runOnTaskComplete": true,
|
|
1491
|
+
"runForUITasks": true,
|
|
1492
|
+
"autoRun": false,
|
|
1493
|
+
"timeout": 30000,
|
|
1494
|
+
"screenshotOnFailure": true
|
|
1495
|
+
}
|
|
1496
|
+
}
|
|
1497
|
+
```
|
|
1498
|
+
|
|
1499
|
+
| Option | Type | Default | Description |
|
|
1500
|
+
|--------|------|---------|-------------|
|
|
1501
|
+
| `enabled` | boolean | `true` | Enable browser tests |
|
|
1502
|
+
| `runOnTaskComplete` | boolean | `true` | Run after task |
|
|
1503
|
+
| `runForUITasks` | boolean | `true` | Run for UI tasks |
|
|
1504
|
+
| `autoRun` | boolean | `false` | Auto-run tests |
|
|
1505
|
+
| `timeout` | number | `30000` | Test timeout in ms |
|
|
1506
|
+
| `screenshotOnFailure` | boolean | `true` | Screenshot on failure |
|
|
1507
|
+
|
|
1508
|
+
---
|
|
1509
|
+
|
|
1510
|
+
## damageControl
|
|
1511
|
+
|
|
1512
|
+
Destructive command protection configuration.
|
|
1513
|
+
|
|
1514
|
+
```json
|
|
1515
|
+
{
|
|
1516
|
+
"damageControl": {
|
|
1517
|
+
"enabled": false,
|
|
1518
|
+
"patternsFile": ".workflow/damage-control.yaml",
|
|
1519
|
+
"promptHook": {
|
|
1520
|
+
"enabled": false,
|
|
1521
|
+
"model": "haiku",
|
|
1522
|
+
"timeout": 5000,
|
|
1523
|
+
"skipSafeCommands": true
|
|
1524
|
+
},
|
|
1525
|
+
"onBlock": "error",
|
|
1526
|
+
"onAsk": "prompt",
|
|
1527
|
+
"logging": true
|
|
1528
|
+
}
|
|
1529
|
+
}
|
|
1530
|
+
```
|
|
1531
|
+
|
|
1532
|
+
| Option | Type | Default | Description |
|
|
1533
|
+
|--------|------|---------|-------------|
|
|
1534
|
+
| `enabled` | boolean | `false` | Enable damage control |
|
|
1535
|
+
| `patternsFile` | string | `".workflow/damage-control.yaml"` | Patterns file path |
|
|
1536
|
+
| `promptHook.enabled` | boolean | `false` | Enable AI review |
|
|
1537
|
+
| `promptHook.model` | string | `"haiku"` | Model for review |
|
|
1538
|
+
| `promptHook.timeout` | number | `5000` | Review timeout |
|
|
1539
|
+
| `promptHook.skipSafeCommands` | boolean | `true` | Skip safe commands |
|
|
1540
|
+
| `onBlock` | string | `"error"` | `"error"`, `"warn"`, or `"log"` |
|
|
1541
|
+
| `onAsk` | string | `"prompt"` | `"prompt"`, `"block"`, or `"allow"` |
|
|
1542
|
+
| `logging` | boolean | `true` | Log blocked commands |
|
|
1543
|
+
|
|
1544
|
+
---
|
|
1545
|
+
|
|
1546
|
+
## priorities
|
|
1547
|
+
|
|
1548
|
+
Task priority configuration.
|
|
1549
|
+
|
|
1550
|
+
```json
|
|
1551
|
+
{
|
|
1552
|
+
"priorities": {
|
|
1553
|
+
"defaultPriority": "P2",
|
|
1554
|
+
"autoBoostDays": 2,
|
|
1555
|
+
"autoBoostAmount": 1,
|
|
1556
|
+
"levels": {
|
|
1557
|
+
"P0": { "label": "Critical", "description": "Drop everything" },
|
|
1558
|
+
"P1": { "label": "High", "description": "Do today" },
|
|
1559
|
+
"P2": { "label": "Medium", "description": "Do this week" },
|
|
1560
|
+
"P3": { "label": "Low", "description": "Do when possible" },
|
|
1561
|
+
"P4": { "label": "Backlog", "description": "Someday" }
|
|
1562
|
+
}
|
|
1563
|
+
}
|
|
1564
|
+
}
|
|
1565
|
+
```
|
|
1566
|
+
|
|
1567
|
+
| Option | Type | Default | Description |
|
|
1568
|
+
|--------|------|---------|-------------|
|
|
1569
|
+
| `defaultPriority` | string | `"P2"` | Default task priority |
|
|
1570
|
+
| `autoBoostDays` | number | `2` | Days before auto-boost |
|
|
1571
|
+
| `autoBoostAmount` | number | `1` | Priority levels to boost |
|
|
1572
|
+
| `levels` | object | (see above) | Priority level definitions |
|
|
1573
|
+
|
|
1574
|
+
---
|
|
1575
|
+
|
|
1576
|
+
## morningBriefing
|
|
1577
|
+
|
|
1578
|
+
Session start context configuration.
|
|
1579
|
+
|
|
1580
|
+
```json
|
|
1581
|
+
{
|
|
1582
|
+
"morningBriefing": {
|
|
1583
|
+
"enabled": true,
|
|
1584
|
+
"showLastSession": true,
|
|
1585
|
+
"showChanges": true,
|
|
1586
|
+
"showRecommendedTasks": 3,
|
|
1587
|
+
"generatePrompt": true,
|
|
1588
|
+
"showBlockers": true,
|
|
1589
|
+
"showKeyContext": true
|
|
1590
|
+
}
|
|
1591
|
+
}
|
|
1592
|
+
```
|
|
1593
|
+
|
|
1594
|
+
| Option | Type | Default | Description |
|
|
1595
|
+
|--------|------|---------|-------------|
|
|
1596
|
+
| `enabled` | boolean | `true` | Enable briefing |
|
|
1597
|
+
| `showLastSession` | boolean | `true` | Show last session info |
|
|
1598
|
+
| `showChanges` | boolean | `true` | Show recent changes |
|
|
1599
|
+
| `showRecommendedTasks` | number | `3` | Tasks to recommend |
|
|
1600
|
+
| `generatePrompt` | boolean | `true` | Generate startup prompt |
|
|
1601
|
+
| `showBlockers` | boolean | `true` | Show blockers |
|
|
1602
|
+
| `showKeyContext` | boolean | `true` | Show key context |
|
|
1603
|
+
|
|
1604
|
+
---
|
|
1605
|
+
|
|
1606
|
+
## Other Top-Level Options
|
|
1607
|
+
|
|
1608
|
+
```json
|
|
1609
|
+
{
|
|
1610
|
+
"version": "2.0.0",
|
|
1611
|
+
"projectName": "",
|
|
1612
|
+
"autoLog": true,
|
|
1613
|
+
"autoUpdateAppMap": true,
|
|
1614
|
+
"requireApproval": []
|
|
1615
|
+
}
|
|
1616
|
+
```
|
|
1617
|
+
|
|
1618
|
+
| Option | Type | Default | Description |
|
|
1619
|
+
|--------|------|---------|-------------|
|
|
1620
|
+
| `version` | string | `"2.0.0"` | Config version |
|
|
1621
|
+
| `projectName` | string | `""` | Project name |
|
|
1622
|
+
| `autoLog` | boolean | `true` | Auto-update request log |
|
|
1623
|
+
| `autoUpdateAppMap` | boolean | `true` | Auto-update app-map |
|
|
1624
|
+
| `requireApproval` | array | `[]` | Operations requiring approval |
|
|
1625
|
+
|
|
1626
|
+
---
|
|
1627
|
+
|
|
1628
|
+
## Related
|
|
1629
|
+
|
|
1630
|
+
- [Task Execution](../02-task-execution/) - Where most config applies
|
|
1631
|
+
- [Setup & Onboarding](../01-setup-onboarding/) - Initial configuration
|
|
1632
|
+
- [Safety & Guardrails](../06-safety-guardrails/) - Security configuration
|