proagents 1.6.4 → 1.6.6
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/.proagents/AI_INSTRUCTIONS.md +782 -28
- package/.proagents/active-features/_index.json +10 -62
- package/.proagents/proagents.config.yaml +91 -0
- package/README.md +29 -2
- package/package.json +1 -1
- package/.proagents/active-features/feature-user-auth/dependencies.json +0 -81
- package/.proagents/active-features/feature-user-auth/files-modified.json +0 -126
- package/.proagents/active-features/feature-user-auth/status.json +0 -122
|
@@ -1,74 +1,22 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "./schemas/index-schema.json",
|
|
3
3
|
"version": "1.0.0",
|
|
4
|
-
"last_updated":
|
|
4
|
+
"last_updated": null,
|
|
5
5
|
|
|
6
|
-
"active_features": [
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
"name": "User Authentication",
|
|
10
|
-
"description": "Add user authentication with OAuth support",
|
|
11
|
-
"current_phase": "implementation",
|
|
12
|
-
"phase_progress": 60,
|
|
13
|
-
"branch": "feature/user-auth",
|
|
14
|
-
"started": "2024-01-10T09:00:00Z",
|
|
15
|
-
"last_updated": "2024-01-15T10:30:00Z",
|
|
16
|
-
"estimated_completion": "2024-01-17T17:00:00Z",
|
|
17
|
-
"assignee": "developer-1",
|
|
18
|
-
"priority": "high",
|
|
19
|
-
"blockers": [],
|
|
20
|
-
"dependencies": [],
|
|
21
|
-
"files_modified_count": 12,
|
|
22
|
-
"checkpoints_completed": ["after_analysis", "after_requirements", "after_design"],
|
|
23
|
-
"checkpoints_pending": ["after_implementation", "before_deployment"]
|
|
24
|
-
}
|
|
25
|
-
],
|
|
26
|
-
|
|
27
|
-
"paused_features": [
|
|
28
|
-
{
|
|
29
|
-
"id": "feature-notifications",
|
|
30
|
-
"name": "Push Notifications",
|
|
31
|
-
"description": "Add push notification support",
|
|
32
|
-
"current_phase": "requirements",
|
|
33
|
-
"phase_progress": 30,
|
|
34
|
-
"branch": "feature/notifications",
|
|
35
|
-
"started": "2024-01-08T14:00:00Z",
|
|
36
|
-
"paused_at": "2024-01-12T11:00:00Z",
|
|
37
|
-
"pause_reason": "Waiting for user-auth to complete",
|
|
38
|
-
"assignee": "developer-2",
|
|
39
|
-
"priority": "medium",
|
|
40
|
-
"blocked_by": ["feature-user-auth"]
|
|
41
|
-
}
|
|
42
|
-
],
|
|
43
|
-
|
|
44
|
-
"completed_features": [
|
|
45
|
-
{
|
|
46
|
-
"id": "feature-dark-mode",
|
|
47
|
-
"name": "Dark Mode Support",
|
|
48
|
-
"completed_at": "2024-01-09T16:00:00Z",
|
|
49
|
-
"duration_hours": 18,
|
|
50
|
-
"merged_commit": "abc123def",
|
|
51
|
-
"pr_number": 42
|
|
52
|
-
}
|
|
53
|
-
],
|
|
6
|
+
"active_features": [],
|
|
7
|
+
"paused_features": [],
|
|
8
|
+
"completed_features": [],
|
|
54
9
|
|
|
55
10
|
"conflicts": {
|
|
56
11
|
"active": [],
|
|
57
|
-
"resolved": [
|
|
58
|
-
{
|
|
59
|
-
"features": ["feature-user-auth", "feature-dark-mode"],
|
|
60
|
-
"file": "src/styles/theme.ts",
|
|
61
|
-
"resolved_at": "2024-01-09T15:30:00Z",
|
|
62
|
-
"resolution": "merged"
|
|
63
|
-
}
|
|
64
|
-
]
|
|
12
|
+
"resolved": []
|
|
65
13
|
},
|
|
66
14
|
|
|
67
15
|
"statistics": {
|
|
68
|
-
"total_active":
|
|
69
|
-
"total_paused":
|
|
70
|
-
"total_completed":
|
|
71
|
-
"average_completion_days":
|
|
72
|
-
"conflict_rate": 0
|
|
16
|
+
"total_active": 0,
|
|
17
|
+
"total_paused": 0,
|
|
18
|
+
"total_completed": 0,
|
|
19
|
+
"average_completion_days": 0,
|
|
20
|
+
"conflict_rate": 0
|
|
73
21
|
}
|
|
74
22
|
}
|
|
@@ -102,6 +102,97 @@ testing:
|
|
|
102
102
|
parallel: true
|
|
103
103
|
max_workers: 4
|
|
104
104
|
|
|
105
|
+
# Custom Testing Tools (override defaults)
|
|
106
|
+
# Define your own tools for each test type
|
|
107
|
+
tools:
|
|
108
|
+
# Unit testing
|
|
109
|
+
unit:
|
|
110
|
+
command: "npm test" # or: pytest, go test, ./gradlew test
|
|
111
|
+
framework: "jest" # jest | vitest | mocha | pytest | junit | xctest | flutter_test
|
|
112
|
+
# install: "npm install" # optional: auto-install command
|
|
113
|
+
|
|
114
|
+
# Integration testing
|
|
115
|
+
integration:
|
|
116
|
+
command: "npm run test:integration"
|
|
117
|
+
framework: "jest"
|
|
118
|
+
|
|
119
|
+
# E2E testing
|
|
120
|
+
e2e:
|
|
121
|
+
command: "npx playwright test" # or: maestro test, detox test, ./gradlew connectedTest
|
|
122
|
+
framework: "playwright" # playwright | cypress | maestro | detox | espresso | xcuitest
|
|
123
|
+
# install: "npx playwright install"
|
|
124
|
+
|
|
125
|
+
# Visual testing
|
|
126
|
+
visual:
|
|
127
|
+
command: "npx percy exec -- npm test"
|
|
128
|
+
framework: "percy" # percy | chromatic | applitools | custom
|
|
129
|
+
|
|
130
|
+
# Load testing
|
|
131
|
+
load:
|
|
132
|
+
command: "k6 run loadtest.js"
|
|
133
|
+
framework: "k6" # k6 | artillery | locust | jmeter
|
|
134
|
+
|
|
135
|
+
# Security testing
|
|
136
|
+
security:
|
|
137
|
+
command: "npm audit && snyk test"
|
|
138
|
+
framework: "snyk" # snyk | npm-audit | owasp-zap
|
|
139
|
+
|
|
140
|
+
# Mobile Testing Tools (platform-specific)
|
|
141
|
+
mobile:
|
|
142
|
+
# React Native / Expo
|
|
143
|
+
react_native:
|
|
144
|
+
unit:
|
|
145
|
+
command: "npm test"
|
|
146
|
+
framework: "jest"
|
|
147
|
+
component:
|
|
148
|
+
command: "npm test -- --testPathPattern=components"
|
|
149
|
+
framework: "@testing-library/react-native"
|
|
150
|
+
e2e:
|
|
151
|
+
command: "maestro test .maestro/"
|
|
152
|
+
framework: "maestro" # maestro | detox | appium
|
|
153
|
+
# alternative: "npx detox test -c ios.sim.release"
|
|
154
|
+
|
|
155
|
+
# Native Android (Kotlin/Java)
|
|
156
|
+
android:
|
|
157
|
+
unit:
|
|
158
|
+
command: "./gradlew test"
|
|
159
|
+
framework: "junit" # junit | junit5 | kotest
|
|
160
|
+
integration:
|
|
161
|
+
command: "./gradlew connectedAndroidTest"
|
|
162
|
+
framework: "espresso"
|
|
163
|
+
e2e:
|
|
164
|
+
command: "maestro test .maestro/"
|
|
165
|
+
framework: "maestro" # maestro | espresso | ui-automator
|
|
166
|
+
|
|
167
|
+
# Native iOS (Swift/Objective-C)
|
|
168
|
+
ios:
|
|
169
|
+
unit:
|
|
170
|
+
command: "xcodebuild test -scheme MyApp -destination 'platform=iOS Simulator,name=iPhone 15'"
|
|
171
|
+
framework: "xctest"
|
|
172
|
+
e2e:
|
|
173
|
+
command: "maestro test .maestro/"
|
|
174
|
+
framework: "maestro" # maestro | xcuitest
|
|
175
|
+
|
|
176
|
+
# Flutter
|
|
177
|
+
flutter:
|
|
178
|
+
unit:
|
|
179
|
+
command: "flutter test"
|
|
180
|
+
framework: "flutter_test"
|
|
181
|
+
integration:
|
|
182
|
+
command: "flutter test integration_test/"
|
|
183
|
+
framework: "integration_test"
|
|
184
|
+
e2e:
|
|
185
|
+
command: "maestro test .maestro/"
|
|
186
|
+
framework: "maestro"
|
|
187
|
+
|
|
188
|
+
# Auto-install missing tools
|
|
189
|
+
auto_install: true
|
|
190
|
+
|
|
191
|
+
# Custom test commands (shortcuts)
|
|
192
|
+
custom_commands:
|
|
193
|
+
"test:quick": "npm test -- --onlyChanged"
|
|
194
|
+
"test:ci": "npm test -- --coverage --ci"
|
|
195
|
+
|
|
105
196
|
# Security Configuration
|
|
106
197
|
security:
|
|
107
198
|
require_review: true
|
package/README.md
CHANGED
|
@@ -109,6 +109,22 @@ npx proagents init --list-templates # Show all templates
|
|
|
109
109
|
- **Decision Log** - Track architectural decisions with reasoning
|
|
110
110
|
- **Context File** - Persistent project knowledge AI reads every session
|
|
111
111
|
|
|
112
|
+
### Full Automation
|
|
113
|
+
|
|
114
|
+
ProAgents follows **"ALWAYS DO, NEVER JUST TELL"** principle:
|
|
115
|
+
|
|
116
|
+
| Instead of | ProAgents does |
|
|
117
|
+
|------------|----------------|
|
|
118
|
+
| "Run `npm test`" | Actually runs the tests |
|
|
119
|
+
| "Create a test file" | Creates the file |
|
|
120
|
+
| "Fix the bug by..." | Fixes the bug directly |
|
|
121
|
+
| "Next steps: 1. 2. 3." | Does all steps automatically |
|
|
122
|
+
|
|
123
|
+
**Auto-fix intelligence:**
|
|
124
|
+
- Learns from previous fixes
|
|
125
|
+
- Applies known patterns automatically
|
|
126
|
+
- Stores successful fixes in `.proagents/.learning/`
|
|
127
|
+
|
|
112
128
|
### File Protection
|
|
113
129
|
|
|
114
130
|
- **Watch List** - Critical files require confirmation before AI modifies
|
|
@@ -408,10 +424,15 @@ Type these in any AI assistant (Claude, ChatGPT, Gemini, Cursor, etc.):
|
|
|
408
424
|
| `pa:alias-add` | Add custom alias |
|
|
409
425
|
| `pa:alias-remove` | Remove custom alias |
|
|
410
426
|
|
|
411
|
-
###
|
|
427
|
+
### Platform-Specific Test Suites
|
|
428
|
+
|
|
429
|
+
**Fully automated**: Auto-install tools, run tests, auto-fix failures, loop until all pass.
|
|
430
|
+
|
|
412
431
|
| Command | Description |
|
|
413
432
|
|---------|-------------|
|
|
414
|
-
| `pa:test-mobile` |
|
|
433
|
+
| `pa:test-mobile` | Full mobile test suite (React Native, Android, iOS, Flutter) |
|
|
434
|
+
| `pa:test-web` | Full web test suite (React/Next.js/Vue) |
|
|
435
|
+
| `pa:test-api` | Full API test suite (Node.js/Python) |
|
|
415
436
|
| `pa:test-visual` | Visual/design comparison testing |
|
|
416
437
|
| `pa:test-auto-fix` | Auto-fix failing tests |
|
|
417
438
|
| `pa:test-loop` | Test → Fix → Retest until all pass |
|
|
@@ -419,6 +440,12 @@ Type these in any AI assistant (Claude, ChatGPT, Gemini, Cursor, etc.):
|
|
|
419
440
|
| `pa:compare-image` | Compare UI against image/sketch |
|
|
420
441
|
| `pa:screenshot` | Capture app screenshots |
|
|
421
442
|
|
|
443
|
+
**What these commands do:**
|
|
444
|
+
- Check required tools → Auto-install if missing
|
|
445
|
+
- Run all tests (unit, integration, e2e)
|
|
446
|
+
- Auto-fix failures (no confirmation needed)
|
|
447
|
+
- Loop until all pass or fix is impossible
|
|
448
|
+
|
|
422
449
|
### Custom Commands
|
|
423
450
|
| Command | Description |
|
|
424
451
|
|---------|-------------|
|
package/package.json
CHANGED
|
@@ -1,81 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"$schema": "../schemas/dependencies-schema.json",
|
|
3
|
-
"feature_id": "feature-user-auth",
|
|
4
|
-
"updated_at": "2024-01-15T10:30:00Z",
|
|
5
|
-
|
|
6
|
-
"depends_on": [],
|
|
7
|
-
|
|
8
|
-
"blocks": [
|
|
9
|
-
{
|
|
10
|
-
"feature_id": "feature-notifications",
|
|
11
|
-
"reason": "Notifications require authenticated user context",
|
|
12
|
-
"required_phase": "implementation_complete",
|
|
13
|
-
"blocking_since": "2024-01-12T11:00:00Z"
|
|
14
|
-
},
|
|
15
|
-
{
|
|
16
|
-
"feature_id": "feature-user-preferences",
|
|
17
|
-
"reason": "Preferences need user authentication",
|
|
18
|
-
"required_phase": "testing_complete"
|
|
19
|
-
}
|
|
20
|
-
],
|
|
21
|
-
|
|
22
|
-
"shared_resources": [
|
|
23
|
-
{
|
|
24
|
-
"resource": "prisma/schema.prisma",
|
|
25
|
-
"shared_with": ["feature-user-preferences"],
|
|
26
|
-
"conflict_risk": "medium",
|
|
27
|
-
"coordination_required": true
|
|
28
|
-
},
|
|
29
|
-
{
|
|
30
|
-
"resource": "src/middleware.ts",
|
|
31
|
-
"shared_with": [],
|
|
32
|
-
"conflict_risk": "low"
|
|
33
|
-
}
|
|
34
|
-
],
|
|
35
|
-
|
|
36
|
-
"external_dependencies": {
|
|
37
|
-
"packages": [
|
|
38
|
-
{
|
|
39
|
-
"name": "next-auth",
|
|
40
|
-
"version": "^4.24.0",
|
|
41
|
-
"added": true,
|
|
42
|
-
"reason": "Authentication framework"
|
|
43
|
-
},
|
|
44
|
-
{
|
|
45
|
-
"name": "@auth/prisma-adapter",
|
|
46
|
-
"version": "^1.0.0",
|
|
47
|
-
"added": true,
|
|
48
|
-
"reason": "Prisma adapter for NextAuth"
|
|
49
|
-
}
|
|
50
|
-
],
|
|
51
|
-
"services": [
|
|
52
|
-
{
|
|
53
|
-
"name": "Google OAuth",
|
|
54
|
-
"type": "oauth_provider",
|
|
55
|
-
"required": true,
|
|
56
|
-
"configured": true
|
|
57
|
-
},
|
|
58
|
-
{
|
|
59
|
-
"name": "GitHub OAuth",
|
|
60
|
-
"type": "oauth_provider",
|
|
61
|
-
"required": true,
|
|
62
|
-
"configured": true
|
|
63
|
-
}
|
|
64
|
-
],
|
|
65
|
-
"environment_variables": [
|
|
66
|
-
"NEXTAUTH_SECRET",
|
|
67
|
-
"NEXTAUTH_URL",
|
|
68
|
-
"GOOGLE_CLIENT_ID",
|
|
69
|
-
"GOOGLE_CLIENT_SECRET",
|
|
70
|
-
"GITHUB_CLIENT_ID",
|
|
71
|
-
"GITHUB_CLIENT_SECRET"
|
|
72
|
-
]
|
|
73
|
-
},
|
|
74
|
-
|
|
75
|
-
"merge_requirements": {
|
|
76
|
-
"order": 1,
|
|
77
|
-
"can_merge_independently": true,
|
|
78
|
-
"requires_features": [],
|
|
79
|
-
"required_before": ["feature-notifications", "feature-user-preferences"]
|
|
80
|
-
}
|
|
81
|
-
}
|
|
@@ -1,126 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"$schema": "../schemas/files-schema.json",
|
|
3
|
-
"feature_id": "feature-user-auth",
|
|
4
|
-
"updated_at": "2024-01-15T10:30:00Z",
|
|
5
|
-
|
|
6
|
-
"summary": {
|
|
7
|
-
"total_files": 12,
|
|
8
|
-
"new_files": 8,
|
|
9
|
-
"modified_files": 4,
|
|
10
|
-
"deleted_files": 0,
|
|
11
|
-
"lines_added": 845,
|
|
12
|
-
"lines_removed": 23
|
|
13
|
-
},
|
|
14
|
-
|
|
15
|
-
"files": [
|
|
16
|
-
{
|
|
17
|
-
"path": "src/lib/auth.ts",
|
|
18
|
-
"status": "new",
|
|
19
|
-
"lines_added": 120,
|
|
20
|
-
"lines_removed": 0,
|
|
21
|
-
"last_modified": "2024-01-14T16:30:00Z",
|
|
22
|
-
"purpose": "Core authentication utilities"
|
|
23
|
-
},
|
|
24
|
-
{
|
|
25
|
-
"path": "src/app/api/auth/[...nextauth]/route.ts",
|
|
26
|
-
"status": "new",
|
|
27
|
-
"lines_added": 85,
|
|
28
|
-
"lines_removed": 0,
|
|
29
|
-
"last_modified": "2024-01-14T14:00:00Z",
|
|
30
|
-
"purpose": "NextAuth API route handler"
|
|
31
|
-
},
|
|
32
|
-
{
|
|
33
|
-
"path": "src/components/auth/LoginButton.tsx",
|
|
34
|
-
"status": "new",
|
|
35
|
-
"lines_added": 45,
|
|
36
|
-
"lines_removed": 0,
|
|
37
|
-
"last_modified": "2024-01-15T09:00:00Z",
|
|
38
|
-
"purpose": "Login button component"
|
|
39
|
-
},
|
|
40
|
-
{
|
|
41
|
-
"path": "src/components/auth/LogoutButton.tsx",
|
|
42
|
-
"status": "new",
|
|
43
|
-
"lines_added": 35,
|
|
44
|
-
"lines_removed": 0,
|
|
45
|
-
"last_modified": "2024-01-15T09:15:00Z",
|
|
46
|
-
"purpose": "Logout button component"
|
|
47
|
-
},
|
|
48
|
-
{
|
|
49
|
-
"path": "src/components/auth/UserMenu.tsx",
|
|
50
|
-
"status": "new",
|
|
51
|
-
"lines_added": 78,
|
|
52
|
-
"lines_removed": 0,
|
|
53
|
-
"last_modified": "2024-01-15T10:00:00Z",
|
|
54
|
-
"purpose": "User dropdown menu"
|
|
55
|
-
},
|
|
56
|
-
{
|
|
57
|
-
"path": "src/hooks/useAuth.ts",
|
|
58
|
-
"status": "new",
|
|
59
|
-
"lines_added": 52,
|
|
60
|
-
"lines_removed": 0,
|
|
61
|
-
"last_modified": "2024-01-14T15:00:00Z",
|
|
62
|
-
"purpose": "Authentication hook"
|
|
63
|
-
},
|
|
64
|
-
{
|
|
65
|
-
"path": "src/middleware.ts",
|
|
66
|
-
"status": "modified",
|
|
67
|
-
"lines_added": 35,
|
|
68
|
-
"lines_removed": 5,
|
|
69
|
-
"last_modified": "2024-01-14T17:00:00Z",
|
|
70
|
-
"purpose": "Added auth middleware"
|
|
71
|
-
},
|
|
72
|
-
{
|
|
73
|
-
"path": "src/types/auth.ts",
|
|
74
|
-
"status": "new",
|
|
75
|
-
"lines_added": 28,
|
|
76
|
-
"lines_removed": 0,
|
|
77
|
-
"last_modified": "2024-01-14T11:00:00Z",
|
|
78
|
-
"purpose": "Authentication type definitions"
|
|
79
|
-
},
|
|
80
|
-
{
|
|
81
|
-
"path": "src/app/layout.tsx",
|
|
82
|
-
"status": "modified",
|
|
83
|
-
"lines_added": 15,
|
|
84
|
-
"lines_removed": 8,
|
|
85
|
-
"last_modified": "2024-01-15T10:30:00Z",
|
|
86
|
-
"purpose": "Added SessionProvider wrapper"
|
|
87
|
-
},
|
|
88
|
-
{
|
|
89
|
-
"path": "prisma/schema.prisma",
|
|
90
|
-
"status": "modified",
|
|
91
|
-
"lines_added": 42,
|
|
92
|
-
"lines_removed": 0,
|
|
93
|
-
"last_modified": "2024-01-13T14:00:00Z",
|
|
94
|
-
"purpose": "Added User and Session models"
|
|
95
|
-
},
|
|
96
|
-
{
|
|
97
|
-
"path": ".env.example",
|
|
98
|
-
"status": "modified",
|
|
99
|
-
"lines_added": 8,
|
|
100
|
-
"lines_removed": 0,
|
|
101
|
-
"last_modified": "2024-01-13T10:00:00Z",
|
|
102
|
-
"purpose": "Added auth environment variables"
|
|
103
|
-
},
|
|
104
|
-
{
|
|
105
|
-
"path": "src/tests/auth.test.ts",
|
|
106
|
-
"status": "new",
|
|
107
|
-
"lines_added": 302,
|
|
108
|
-
"lines_removed": 0,
|
|
109
|
-
"last_modified": "2024-01-15T10:15:00Z",
|
|
110
|
-
"purpose": "Authentication test suite"
|
|
111
|
-
}
|
|
112
|
-
],
|
|
113
|
-
|
|
114
|
-
"conflicts": {
|
|
115
|
-
"potential": [],
|
|
116
|
-
"detected": [],
|
|
117
|
-
"resolved": []
|
|
118
|
-
},
|
|
119
|
-
|
|
120
|
-
"impact_analysis": {
|
|
121
|
-
"affected_modules": ["auth", "middleware", "database"],
|
|
122
|
-
"breaking_changes": false,
|
|
123
|
-
"requires_migration": true,
|
|
124
|
-
"security_sensitive": true
|
|
125
|
-
}
|
|
126
|
-
}
|
|
@@ -1,122 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"$schema": "../schemas/feature-schema.json",
|
|
3
|
-
"id": "feature-user-auth",
|
|
4
|
-
"name": "User Authentication",
|
|
5
|
-
"description": "Add user authentication with OAuth support for Google and GitHub",
|
|
6
|
-
"created_at": "2024-01-10T09:00:00Z",
|
|
7
|
-
"updated_at": "2024-01-15T10:30:00Z",
|
|
8
|
-
|
|
9
|
-
"workflow": {
|
|
10
|
-
"mode": "full",
|
|
11
|
-
"entry_point": "feature_start",
|
|
12
|
-
"current_phase": "implementation",
|
|
13
|
-
"phase_progress": 60
|
|
14
|
-
},
|
|
15
|
-
|
|
16
|
-
"phases": {
|
|
17
|
-
"init": {
|
|
18
|
-
"status": "completed",
|
|
19
|
-
"started_at": "2024-01-10T09:00:00Z",
|
|
20
|
-
"completed_at": "2024-01-10T09:15:00Z",
|
|
21
|
-
"duration_minutes": 15
|
|
22
|
-
},
|
|
23
|
-
"analysis": {
|
|
24
|
-
"status": "completed",
|
|
25
|
-
"started_at": "2024-01-10T09:15:00Z",
|
|
26
|
-
"completed_at": "2024-01-10T10:00:00Z",
|
|
27
|
-
"duration_minutes": 45,
|
|
28
|
-
"artifacts": ["analysis-report.md"]
|
|
29
|
-
},
|
|
30
|
-
"requirements": {
|
|
31
|
-
"status": "completed",
|
|
32
|
-
"started_at": "2024-01-10T10:00:00Z",
|
|
33
|
-
"completed_at": "2024-01-10T11:30:00Z",
|
|
34
|
-
"duration_minutes": 90,
|
|
35
|
-
"artifacts": ["requirements.md", "user-stories.md"]
|
|
36
|
-
},
|
|
37
|
-
"design": {
|
|
38
|
-
"status": "completed",
|
|
39
|
-
"started_at": "2024-01-10T13:00:00Z",
|
|
40
|
-
"completed_at": "2024-01-10T15:00:00Z",
|
|
41
|
-
"duration_minutes": 120,
|
|
42
|
-
"artifacts": ["ui-specification.md", "component-designs.md"]
|
|
43
|
-
},
|
|
44
|
-
"planning": {
|
|
45
|
-
"status": "completed",
|
|
46
|
-
"started_at": "2024-01-10T15:00:00Z",
|
|
47
|
-
"completed_at": "2024-01-10T16:00:00Z",
|
|
48
|
-
"duration_minutes": 60,
|
|
49
|
-
"artifacts": ["implementation-plan.md"]
|
|
50
|
-
},
|
|
51
|
-
"implementation": {
|
|
52
|
-
"status": "in_progress",
|
|
53
|
-
"started_at": "2024-01-11T09:00:00Z",
|
|
54
|
-
"progress": 60,
|
|
55
|
-
"tasks_completed": 6,
|
|
56
|
-
"tasks_total": 10
|
|
57
|
-
},
|
|
58
|
-
"testing": {
|
|
59
|
-
"status": "pending"
|
|
60
|
-
},
|
|
61
|
-
"review": {
|
|
62
|
-
"status": "pending"
|
|
63
|
-
},
|
|
64
|
-
"documentation": {
|
|
65
|
-
"status": "pending"
|
|
66
|
-
},
|
|
67
|
-
"deployment": {
|
|
68
|
-
"status": "pending"
|
|
69
|
-
}
|
|
70
|
-
},
|
|
71
|
-
|
|
72
|
-
"checkpoints": {
|
|
73
|
-
"after_analysis": {
|
|
74
|
-
"triggered": true,
|
|
75
|
-
"approved": true,
|
|
76
|
-
"approved_by": "@tech-lead",
|
|
77
|
-
"approved_at": "2024-01-10T10:05:00Z"
|
|
78
|
-
},
|
|
79
|
-
"after_requirements": {
|
|
80
|
-
"triggered": true,
|
|
81
|
-
"approved": true,
|
|
82
|
-
"approved_by": "@product-manager",
|
|
83
|
-
"approved_at": "2024-01-10T11:45:00Z"
|
|
84
|
-
},
|
|
85
|
-
"after_design": {
|
|
86
|
-
"triggered": true,
|
|
87
|
-
"approved": true,
|
|
88
|
-
"approved_by": "@tech-lead",
|
|
89
|
-
"approved_at": "2024-01-10T15:15:00Z"
|
|
90
|
-
},
|
|
91
|
-
"after_implementation": {
|
|
92
|
-
"triggered": false
|
|
93
|
-
},
|
|
94
|
-
"before_deployment": {
|
|
95
|
-
"triggered": false
|
|
96
|
-
}
|
|
97
|
-
},
|
|
98
|
-
|
|
99
|
-
"git": {
|
|
100
|
-
"branch": "feature/user-auth",
|
|
101
|
-
"base_branch": "develop",
|
|
102
|
-
"commits": 12,
|
|
103
|
-
"last_commit": "abc123def",
|
|
104
|
-
"pr_number": null,
|
|
105
|
-
"pr_status": null
|
|
106
|
-
},
|
|
107
|
-
|
|
108
|
-
"assignees": {
|
|
109
|
-
"primary": "developer-1",
|
|
110
|
-
"reviewers": ["tech-lead", "developer-2"]
|
|
111
|
-
},
|
|
112
|
-
|
|
113
|
-
"context": {
|
|
114
|
-
"key_decisions": [
|
|
115
|
-
"Using NextAuth.js for authentication",
|
|
116
|
-
"JWT tokens stored in httpOnly cookies",
|
|
117
|
-
"Refresh token rotation enabled"
|
|
118
|
-
],
|
|
119
|
-
"open_questions": [],
|
|
120
|
-
"blockers": []
|
|
121
|
-
}
|
|
122
|
-
}
|