proagents 1.6.5 → 1.6.7

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.
@@ -273,6 +273,49 @@ When the user types commands starting with `pa:`, recognize and execute them.
273
273
  | `pa:help` | Show all available commands |
274
274
  | `pa:status` | Show current progress |
275
275
 
276
+ **How to execute Initialization commands:**
277
+
278
+ For `pa:status` (or `pa:s`):
279
+ 1. **Read the ACTUAL data** from `./.proagents/active-features/_index.json`
280
+ 2. **Check if empty** - if `active_features`, `paused_features`, and `completed_features` are all empty arrays:
281
+ ```
282
+ Project Status
283
+ ══════════════
284
+
285
+ No features currently tracked.
286
+
287
+ Start a new feature with:
288
+ → pa:feature-start "feature name"
289
+
290
+ Or quick bug fix:
291
+ → pa:fix "bug description"
292
+ ```
293
+
294
+ 3. **If has features**, show real status:
295
+ ```
296
+ Project Status
297
+ ══════════════
298
+
299
+ Active Features: [count]
300
+ ────────────────────────
301
+ • [feature-name] - [phase] ([progress]%)
302
+ Branch: [branch]
303
+ Last updated: [timestamp]
304
+
305
+ Paused Features: [count]
306
+ ────────────────────────
307
+ • [feature-name] - Paused: [reason]
308
+
309
+ Completed Features: [count]
310
+ ──────────────────────────
311
+ • [feature-name] - Completed [date]
312
+
313
+ Next Steps:
314
+ → [suggested action based on current state]
315
+ ```
316
+
317
+ 4. **NEVER show example/template data** - only show what's actually in the JSON file
318
+
276
319
  ### Feature Development
277
320
  | Command | Action |
278
321
  |---------|--------|
@@ -1,74 +1,22 @@
1
1
  {
2
2
  "$schema": "./schemas/index-schema.json",
3
3
  "version": "1.0.0",
4
- "last_updated": "2024-01-15T10:30:00Z",
4
+ "last_updated": null,
5
5
 
6
- "active_features": [
7
- {
8
- "id": "feature-user-auth",
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": 1,
69
- "total_paused": 1,
70
- "total_completed": 1,
71
- "average_completion_days": 3.5,
72
- "conflict_rate": 0.15
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
  }
@@ -595,6 +595,35 @@ function detectProjectType(targetDir) {
595
595
  return detectedTypes;
596
596
  }
597
597
 
598
+ /**
599
+ * Prompt user for .gitignore preference
600
+ */
601
+ async function promptGitignoreChoice() {
602
+ const rl = createInterface({
603
+ input: process.stdin,
604
+ output: process.stdout
605
+ });
606
+
607
+ const question = (prompt) => new Promise(resolve => rl.question(prompt, resolve));
608
+
609
+ console.log(chalk.bold('\nGit Ignore Settings'));
610
+ console.log(chalk.gray('─'.repeat(40) + '\n'));
611
+
612
+ console.log(chalk.cyan('What to ignore in .gitignore?'));
613
+ console.log(chalk.white(' 1. Local data only') + chalk.green(' (recommended for teams)'));
614
+ console.log(chalk.gray(' Ignores: cache, learning, sessions, active-features'));
615
+ console.log(chalk.gray(' Shares: prompts, templates, config with team'));
616
+ console.log('');
617
+ console.log(chalk.white(' 2. Entire .proagents/ folder') + chalk.gray(' (solo developers)'));
618
+ console.log(chalk.gray(' Nothing shared with git'));
619
+ console.log('');
620
+
621
+ const choice = await question(chalk.yellow(' Choose (1 or 2, default=1): '));
622
+ rl.close();
623
+
624
+ return choice.trim() === '2' ? 'full' : 'local';
625
+ }
626
+
598
627
  /**
599
628
  * Interactive prompt for project configuration
600
629
  */
@@ -879,6 +908,49 @@ Generated by [ProAgents](https://github.com/prakashpro3/proAgents)
879
908
  }
880
909
  console.log(chalk.green('✓ Created docs/ folder structure'));
881
910
 
911
+ // Add .proagents/ to .gitignore - prompt user for preference
912
+ const gitignorePath = join(targetDir, '.gitignore');
913
+ const existingGitignore = existsSync(gitignorePath) ? readFileSync(gitignorePath, 'utf-8') : '';
914
+
915
+ if (!existingGitignore.includes('.proagents')) {
916
+ // Prompt user for gitignore preference
917
+ const gitignoreChoice = await promptGitignoreChoice();
918
+
919
+ let gitignoreEntries;
920
+ if (gitignoreChoice === 'full') {
921
+ // Ignore entire .proagents/ folder
922
+ gitignoreEntries = [
923
+ '# ProAgents - Entire folder ignored (not shared with team)',
924
+ '.proagents/',
925
+ ''
926
+ ].join('\n');
927
+ } else {
928
+ // Default: Ignore only local data
929
+ gitignoreEntries = [
930
+ '# ProAgents - Local data only (workflow config shared with team)',
931
+ '.proagents/cache/',
932
+ '.proagents/.learning/',
933
+ '.proagents/sessions/',
934
+ '.proagents/active-features/',
935
+ '.proagents/backups/',
936
+ '.proagents/*.log',
937
+ ''
938
+ ].join('\n');
939
+ }
940
+
941
+ if (existingGitignore) {
942
+ writeFileSync(gitignorePath, existingGitignore + '\n' + gitignoreEntries);
943
+ } else {
944
+ writeFileSync(gitignorePath, gitignoreEntries);
945
+ }
946
+
947
+ if (gitignoreChoice === 'full') {
948
+ console.log(chalk.green('✓ Added .proagents/ to .gitignore (entire folder)'));
949
+ } else {
950
+ console.log(chalk.green('✓ Added .proagents/ local data to .gitignore'));
951
+ }
952
+ }
953
+
882
954
  // Create placeholder CHANGELOG.md if not exists
883
955
  const changelogPath = join(targetDir, 'CHANGELOG.md');
884
956
  if (!existsSync(changelogPath)) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "proagents",
3
- "version": "1.6.5",
3
+ "version": "1.6.7",
4
4
  "description": "AI-agnostic development workflow framework that automates the full software development lifecycle",
5
5
  "type": "module",
6
6
  "main": "lib/index.js",
@@ -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
- }