claude-autopm 1.11.10 → 1.12.2

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/README.md CHANGED
@@ -83,13 +83,15 @@ During installation, you'll be asked to:
83
83
 
84
84
  **1. Choose a configuration preset:**
85
85
 
86
- | Preset | Description | Best For |
87
- |--------|-------------|----------|
88
- | **Minimal** | Traditional development without containers | Small projects, beginners |
89
- | **Docker-only** | Container-first with adaptive execution | Medium projects, local development |
90
- | **Full DevOps** šŸŽÆ | Docker + Kubernetes with CI/CD | Production projects (RECOMMENDED) |
91
- | **Performance** | Maximum parallelization (8 agents) | Large projects, powerful machines |
92
- | **Custom** | Configure each option manually | Specific requirements |
86
+ | Preset | Requirements | Description | Best For |
87
+ |--------|--------------|-------------|----------|
88
+ | **Minimal** | None | Traditional development without containers | Small projects, beginners |
89
+ | **Docker-only** | Docker | Container-first with adaptive execution | Medium projects, local development |
90
+ | **Full DevOps** šŸŽÆ | Docker + kubectl | Docker + Kubernetes with CI/CD | Production projects (RECOMMENDED) |
91
+ | **Performance** | Docker + kubectl | Maximum parallelization (8 agents) | Large projects, powerful machines |
92
+ | **Custom** | Varies | Configure each option manually | Specific requirements |
93
+
94
+ > šŸ’” **Note:** The installer automatically detects available tools (Docker, kubectl) and only shows compatible options. Missing tools? See installation links in the interactive prompt.
93
95
 
94
96
  **2. Select your project management provider:**
95
97
 
@@ -10,7 +10,7 @@ All rule files in `.claude/rules/` define mandatory behaviors and must be follow
10
10
 
11
11
  ### Core Development Rules
12
12
 
13
- - **tdd-enforcement.md** - Test-Driven Development cycle (RED-GREEN-REFACTOR). HIGHEST PRIORITY for all code changes
13
+ - **tdd.enforcement.md** - Test-Driven Development cycle (RED-GREEN-REFACTOR). HIGHEST PRIORITY for all code changes
14
14
  - **pipeline-mandatory.md** - Required pipelines for errors, features, bugs, code search, and log analysis
15
15
  - **naming-conventions.md** - Naming standards, code quality requirements, and prohibited patterns
16
16
  - **context-optimization.md** - Agent usage patterns for context preservation (<20% data return)
@@ -185,7 +185,7 @@ Key principles:
185
185
 
186
186
  - NO PARTIAL IMPLEMENTATION
187
187
  - NO CODE DUPLICATION (always search first)
188
- - IMPLEMENT TEST FOR EVERY FUNCTION (see `.claude/rules/tdd-enforcement.md`)
188
+ - IMPLEMENT TEST FOR EVERY FUNCTION (see `.claude/rules/tdd.enforcement.md`)
189
189
  - NO CHEATER TESTS (tests must be meaningful)
190
190
  - Follow all rules defined in `.claude/rules/` without exception
191
191
 
@@ -195,7 +195,7 @@ Key principles:
195
195
 
196
196
  ```bash
197
197
  # Minimum Definition of Done
198
- āœ“ Tests written and passing (TDD - see .claude/rules/tdd-enforcement.md)
198
+ āœ“ Tests written and passing (TDD - see .claude/rules/tdd.enforcement.md)
199
199
  āœ“ Code formatted (black, prettier, eslint)
200
200
  āœ“ No partial implementations
201
201
  āœ“ No code duplication
@@ -5,8 +5,8 @@
5
5
  "args": ["@context7/mcp-server"],
6
6
  "env": {
7
7
  "CONTEXT7_API_KEY": "${CONTEXT7_API_KEY:-}",
8
- "CONTEXT7_MCP_URL": "${CONTEXT7_MCP_URL:-mcp.context7.com/mcp}",
9
- "CONTEXT7_API_URL": "${CONTEXT7_API_URL:-context7.com/api/v1}",
8
+ "CONTEXT7_MCP_URL": "${CONTEXT7_MCP_URL:-https://mcp.context7.com/mcp}",
9
+ "CONTEXT7_API_URL": "${CONTEXT7_API_URL:-https://context7.com/api/v1}",
10
10
  "CONTEXT7_WORKSPACE": "${CONTEXT7_WORKSPACE:-}",
11
11
  "CONTEXT7_MODE": "documentation"
12
12
  },
@@ -17,8 +17,8 @@
17
17
  "args": ["@context7/mcp-server"],
18
18
  "env": {
19
19
  "CONTEXT7_API_KEY": "${CONTEXT7_API_KEY:-}",
20
- "CONTEXT7_MCP_URL": "${CONTEXT7_MCP_URL:-mcp.context7.com/mcp}",
21
- "CONTEXT7_API_URL": "${CONTEXT7_API_URL:-context7.com/api/v1}",
20
+ "CONTEXT7_MCP_URL": "${CONTEXT7_MCP_URL:-https://mcp.context7.com/mcp}",
21
+ "CONTEXT7_API_URL": "${CONTEXT7_API_URL:-https://context7.com/api/v1}",
22
22
  "CONTEXT7_WORKSPACE": "${CONTEXT7_WORKSPACE:-}",
23
23
  "CONTEXT7_MODE": "codebase"
24
24
  },
@@ -217,9 +217,9 @@ class EpicCloser {
217
217
 
218
218
  // Show next steps
219
219
  console.log('\nšŸ’” Next Steps:');
220
- console.log(' • View completed epics: pm status');
221
- console.log(' • Start new epic: pm init <epic-name>');
222
- console.log(' • List all epics: pm epic-list');
220
+ console.log(' • View completed epics: /pm:status');
221
+ console.log(' • Start new epic: /pm:init <epic-name>');
222
+ console.log(' • List all epics: /pm:epic-list');
223
223
 
224
224
  return true;
225
225
  }
@@ -309,7 +309,7 @@ class EpicCloser {
309
309
 
310
310
  if (!epicName) {
311
311
  console.error('āŒ Error: Epic name required');
312
- console.error('Usage: pm epic-close <epic-name> [--force] [--complete-all] [--archive]');
312
+ console.error('Usage: /pm:epic-close <epic-name> [--force] [--complete-all] [--archive]');
313
313
  console.error('\nOptions:');
314
314
  console.error(' --force Close even with incomplete tasks');
315
315
  console.error(' --complete-all Mark all tasks as complete');
@@ -359,7 +359,7 @@ class EpicEditor {
359
359
 
360
360
  if (!epicName) {
361
361
  console.error('āŒ Error: Epic name required');
362
- console.error('Usage: pm epic-edit <epic-name>');
362
+ console.error('Usage: /pm:epic-edit <epic-name>');
363
363
  console.log('\nAvailable epics:');
364
364
  this.listAvailableEpics();
365
365
  process.exit(1);
@@ -356,8 +356,8 @@ ${epics.slice(1).map((e, i) => {
356
356
 
357
357
  ## Next Steps
358
358
  1. Review and adjust epic breakdown
359
- 2. Decompose each epic into tasks: \`pm epic-decompose <feature>/<epic_number>\`
360
- 3. Sync to GitHub: \`pm epic-sync <feature>\`
359
+ 2. Decompose each epic into tasks: \`/pm:epic-decompose <feature>/<epic_number>\`
360
+ 3. Sync to GitHub: \`/pm:epic-sync <feature>\`
361
361
 
362
362
  ---
363
363
  *Generated on ${now} by Epic Split System*`;
@@ -385,7 +385,7 @@ async function main() {
385
385
  await fs.access(prdPath);
386
386
  } catch {
387
387
  console.error(`${colors.red}āŒ PRD not found: ${prdPath}${colors.reset}`);
388
- console.log(`First create a PRD with: pm prd-create ${featureName}`);
388
+ console.log(`First create a PRD with: /pm:prd-new ${featureName}`);
389
389
  process.exit(1);
390
390
  }
391
391
 
@@ -503,9 +503,9 @@ async function main() {
503
503
  }
504
504
 
505
505
  console.log(`\n${colors.bright}šŸ’” Next Steps:${colors.reset}`);
506
- console.log(` 1. Review epics: ${colors.cyan}pm epic-show ${featureName}${colors.reset}`);
507
- console.log(` 2. Decompose first epic: ${colors.cyan}pm epic-decompose ${featureName}/01-${identifiedEpics[0].key}${colors.reset}`);
508
- console.log(` 3. Sync all to GitHub: ${colors.cyan}pm epic-sync ${featureName}${colors.reset}`);
506
+ console.log(` 1. Review epics: ${colors.cyan}/pm:epic-show ${featureName}${colors.reset}`);
507
+ console.log(` 2. Decompose first epic: ${colors.cyan}/pm:epic-decompose ${featureName}/01-${identifiedEpics[0].key}${colors.reset}`);
508
+ console.log(` 3. Sync all to GitHub: ${colors.cyan}/pm:epic-sync ${featureName}${colors.reset}`);
509
509
 
510
510
  } catch (error) {
511
511
  console.error(`${colors.red}āŒ Error: ${error.message}${colors.reset}`);
@@ -118,7 +118,7 @@ class EpicStarter {
118
118
  // Check if epic name provided
119
119
  if (!this.epicName) {
120
120
  console.error('āŒ Error: Epic name required');
121
- console.error('Usage: pm epic-start <epic-name>');
121
+ console.error('Usage: /pm:epic-start epic-name');
122
122
  process.exit(1);
123
123
  }
124
124
 
@@ -164,8 +164,8 @@ class EpicStarter {
164
164
  await this.startParallelExecution(tasks);
165
165
 
166
166
  // Show next steps
167
- console.log('\nšŸ’” Monitor progress with: pm epic-status', this.epicName);
168
- console.log('šŸ“ View details with: pm epic-show', this.epicName);
167
+ console.log(`\nšŸ’” Monitor progress with: /pm:epic-status ${this.epicName}`);
168
+ console.log(`šŸ“ View details with: /pm:epic-show ${this.epicName}`);
169
169
  }
170
170
  }
171
171
 
@@ -16,7 +16,7 @@ EPIC_NAME="${1:-}"
16
16
 
17
17
  if [ -z "$EPIC_NAME" ]; then
18
18
  echo "āŒ Error: Epic name required"
19
- echo "Usage: pm epic-start <epic-name>"
19
+ echo "Usage: /pm:epic-start <epic-name>"
20
20
  exit 1
21
21
  fi
22
22
 
@@ -90,5 +90,5 @@ else
90
90
  fi
91
91
 
92
92
  echo ""
93
- echo "šŸ’” Monitor progress with: pm epic-status $EPIC_NAME"
94
- echo "šŸ“ View details with: pm epic-show $EPIC_NAME"
93
+ echo "šŸ’” Monitor progress with: /pm:epic-status $EPIC_NAME"
94
+ echo "šŸ“ View details with: /pm:epic-show $EPIC_NAME"
@@ -26,7 +26,7 @@ class PrdCreator {
26
26
  const prdFile = path.join(this.prdsDir, `${prdName}.md`);
27
27
  if (fs.existsSync(prdFile)) {
28
28
  console.error(`āŒ PRD already exists: ${prdName}`);
29
- console.log(`šŸ’” Use: pm prd-edit ${prdName}`);
29
+ console.log(`šŸ’” Edit file: .claude/prds/${prdName}.md`);
30
30
  return false;
31
31
  }
32
32
 
@@ -96,10 +96,10 @@ class PrdCreator {
96
96
 
97
97
  // Show next steps
98
98
  console.log('\nšŸ’” Next Steps:');
99
- console.log(` 1. Review and refine: pm prd-edit ${prdName}`);
100
- console.log(` 2. Convert to epic: pm prd-parse ${prdName}`);
101
- console.log(` 3. View PRD: pm prd-show ${prdName}`);
102
- console.log(` 4. List all PRDs: pm prd-list`);
99
+ console.log(` 1. Review PRD file: .claude/prds/${prdName}.md`);
100
+ console.log(` 2. Convert to epic: /pm:prd-parse ${prdName}`);
101
+ console.log(` 3. Check status: /pm:prd-status ${prdName}`);
102
+ console.log(` 4. List all PRDs: /pm:prd-list`);
103
103
 
104
104
  } finally {
105
105
  rl.close();
@@ -221,7 +221,7 @@ class PrdParser {
221
221
  const prdFile = path.join(this.prdsDir, `${featureName}.md`);
222
222
  if (!fs.existsSync(prdFile)) {
223
223
  console.error(`āŒ PRD not found: ${featureName}`);
224
- console.log(`šŸ’” First create it with: pm prd-new ${featureName}`);
224
+ console.log(`šŸ’” First create it with: /pm:prd-new ${featureName}`);
225
225
  return false;
226
226
  }
227
227
 
@@ -232,7 +232,7 @@ class PrdParser {
232
232
  if (fs.existsSync(epicFile) && !options.overwrite) {
233
233
  console.error(`āš ļø Epic '${featureName}' already exists.`);
234
234
  console.log(`šŸ’” Use --overwrite to replace it`);
235
- console.log(`šŸ’” Or view it with: pm epic-show ${featureName}`);
235
+ console.log(`šŸ’” Or view it with: /pm:epic-show ${featureName}`);
236
236
  return false;
237
237
  }
238
238
 
@@ -296,10 +296,10 @@ class PrdParser {
296
296
  }
297
297
 
298
298
  console.log(`\nšŸ’” Next Steps:`);
299
- console.log(` 1. Review epic: pm epic-show ${featureName}`);
300
- console.log(` 2. Decompose into tasks: pm epic-decompose ${featureName}`);
301
- console.log(` 3. Sync to GitHub: pm epic-sync ${featureName}`);
302
- console.log(` 4. Start implementation: pm issue-start TASK-1`);
299
+ console.log(` 1. Review epic: /pm:epic-show ${featureName}`);
300
+ console.log(` 2. Decompose into tasks: /pm:epic-decompose ${featureName}`);
301
+ console.log(` 3. Sync to GitHub: /pm:epic-sync ${featureName}`);
302
+ console.log(` 4. Start implementation: /pm:issue-start TASK-1`);
303
303
 
304
304
  return true;
305
305
  }
@@ -486,7 +486,7 @@ ${prdSections.metrics || '- All functional requirements met\n- Performance targe
486
486
 
487
487
  if (!featureName) {
488
488
  console.error('āŒ Error: Feature name required');
489
- console.error('Usage: pm prd-parse <feature-name> [--overwrite]');
489
+ console.error('Usage: /pm:prd-parse <feature-name> [--overwrite]');
490
490
 
491
491
  // List available PRDs
492
492
  if (fs.existsSync(this.prdsDir)) {
@@ -15,7 +15,7 @@ All rule files in `.claude/rules/` define mandatory behaviors and must be follow
15
15
 
16
16
  ### Core Development Rules
17
17
 
18
- - **tdd-enforcement.md** - Test-Driven Development cycle (RED-GREEN-REFACTOR). HIGHEST PRIORITY for all code changes
18
+ - **tdd.enforcement.md** - Test-Driven Development cycle (RED-GREEN-REFACTOR). HIGHEST PRIORITY for all code changes
19
19
  - **pipeline-mandatory.md** - Required pipelines for errors, features, bugs, code search, and log analysis
20
20
  - **naming-conventions.md** - Naming standards, code quality requirements, and prohibited patterns
21
21
  - **context-optimization.md** - Agent usage patterns for context preservation (<20% data return)
@@ -176,7 +176,7 @@ Key principles:
176
176
 
177
177
  - NO PARTIAL IMPLEMENTATION
178
178
  - NO CODE DUPLICATION (always search first)
179
- - IMPLEMENT TEST FOR EVERY FUNCTION (see `.claude/rules/tdd-enforcement.md`)
179
+ - IMPLEMENT TEST FOR EVERY FUNCTION (see `.claude/rules/tdd.enforcement.md`)
180
180
  - NO CHEATER TESTS (tests must be meaningful)
181
181
  - Follow all rules defined in `.claude/rules/` without exception
182
182
 
@@ -186,7 +186,7 @@ Key principles:
186
186
 
187
187
  ```bash
188
188
  # Minimum Definition of Done
189
- āœ“ Tests written and passing (TDD - see .claude/rules/tdd-enforcement.md)
189
+ āœ“ Tests written and passing (TDD - see .claude/rules/tdd.enforcement.md)
190
190
  āœ“ Code formatted (black, prettier, eslint)
191
191
  āœ“ No partial implementations
192
192
  āœ“ No code duplication
@@ -23,7 +23,8 @@ class Installer {
23
23
  BLUE: '\x1b[0;34m',
24
24
  CYAN: '\x1b[0;36m',
25
25
  NC: '\x1b[0m',
26
- BOLD: '\x1b[1m'
26
+ BOLD: '\x1b[1m',
27
+ DIM: '\x1b[2m'
27
28
  };
28
29
 
29
30
  // Configuration
@@ -339,39 +340,113 @@ ${this.colors.BOLD}Examples:${this.colors.NC}
339
340
  }
340
341
  }
341
342
 
343
+ checkToolAvailability() {
344
+ const tools = {
345
+ docker: false,
346
+ kubectl: false
347
+ };
348
+
349
+ try {
350
+ execSync('docker --version', { encoding: 'utf-8', stdio: 'pipe' });
351
+ tools.docker = true;
352
+ } catch {
353
+ tools.docker = false;
354
+ }
355
+
356
+ try {
357
+ execSync('kubectl version --client', { encoding: 'utf-8', stdio: 'pipe' });
358
+ tools.kubectl = true;
359
+ } catch {
360
+ tools.kubectl = false;
361
+ }
362
+
363
+ return tools;
364
+ }
365
+
342
366
  async selectScenario() {
343
367
  if (this.options.scenario) {
344
368
  return this.options.scenario;
345
369
  }
346
370
 
371
+ // Check available tools
372
+ const availableTools = this.checkToolAvailability();
373
+
374
+ // Show tool availability status
375
+ console.log(`
376
+ ${this.colors.BOLD}Detected Tools:${this.colors.NC}`);
377
+ console.log(` • Docker: ${availableTools.docker ? this.colors.GREEN + 'āœ“ Available' : this.colors.RED + 'āœ— Not installed'}${this.colors.NC}`);
378
+ console.log(` • kubectl: ${availableTools.kubectl ? this.colors.GREEN + 'āœ“ Available' : this.colors.RED + 'āœ— Not installed'}${this.colors.NC}`);
379
+
380
+ if (!availableTools.docker || !availableTools.kubectl) {
381
+ console.log(`
382
+ ${this.colors.YELLOW}Note:${this.colors.NC} Some installation options require additional tools.`);
383
+ if (!availableTools.docker) {
384
+ console.log(` Install Docker: ${this.colors.CYAN}https://docs.docker.com/get-docker/${this.colors.NC}`);
385
+ }
386
+ if (!availableTools.kubectl) {
387
+ console.log(` Install kubectl: ${this.colors.CYAN}https://kubernetes.io/docs/tasks/tools/${this.colors.NC}`);
388
+ }
389
+ }
390
+
347
391
  console.log(`
348
392
  ${this.colors.BOLD}Select installation scenario:${this.colors.NC}
393
+ `);
349
394
 
350
- ${this.colors.CYAN}1. Minimal${this.colors.NC} - Traditional development workflow
395
+ // Option 1: Minimal (always available)
396
+ console.log(`${this.colors.CYAN}1. Minimal${this.colors.NC} - Traditional development workflow
351
397
  • Sequential agent execution (one at a time)
352
398
  • Native tooling: npm, pip, local installs
353
399
  • Best for: Simple projects, learning, debugging
354
400
  • No containers or orchestration
401
+ `);
355
402
 
356
- ${this.colors.CYAN}2. Docker-only${this.colors.NC} - Containerized local development
403
+ // Option 2: Docker-only (requires Docker)
404
+ if (availableTools.docker) {
405
+ console.log(`${this.colors.CYAN}2. Docker-only${this.colors.NC} - Containerized local development
357
406
  • Adaptive execution (smart sequential/parallel choice)
358
407
  • Docker containers for development environment
359
408
  • Best for: Microservices, consistent environments
360
409
  • Local Docker only, no Kubernetes
410
+ `);
411
+ } else {
412
+ console.log(`${this.colors.DIM}2. Docker-only${this.colors.NC} ${this.colors.RED}(Docker not installed)${this.colors.NC}
413
+ `);
414
+ }
361
415
 
362
- ${this.colors.GREEN}3. Full DevOps${this.colors.NC} - Complete CI/CD pipeline ${this.colors.BOLD}(RECOMMENDED)${this.colors.NC}
416
+ // Option 3: Full DevOps (requires Docker and kubectl)
417
+ if (availableTools.docker && availableTools.kubectl) {
418
+ console.log(`${this.colors.GREEN}3. Full DevOps${this.colors.NC} - Complete CI/CD pipeline ${this.colors.BOLD}(RECOMMENDED)${this.colors.NC}
363
419
  • Adaptive execution with Docker-first priority
364
420
  • Kubernetes manifests and cloud deployment ready
365
421
  • GitHub Actions with KIND clusters and Kaniko builds
366
422
  • Best for: Production applications, enterprise projects
423
+ `);
424
+ } else if (availableTools.docker) {
425
+ console.log(`${this.colors.DIM}3. Full DevOps${this.colors.NC} ${this.colors.RED}(kubectl not installed)${this.colors.NC}
426
+ `);
427
+ } else {
428
+ console.log(`${this.colors.DIM}3. Full DevOps${this.colors.NC} ${this.colors.RED}(Docker and kubectl not installed)${this.colors.NC}
429
+ `);
430
+ }
367
431
 
368
- ${this.colors.YELLOW}4. Performance${this.colors.NC} - Maximum parallel execution
432
+ // Option 4: Performance (requires Docker and kubectl)
433
+ if (availableTools.docker && availableTools.kubectl) {
434
+ console.log(`${this.colors.YELLOW}4. Performance${this.colors.NC} - Maximum parallel execution
369
435
  • Hybrid strategy: up to 5 parallel agents
370
436
  • Advanced context isolation and security
371
437
  • Full DevOps capabilities with speed optimization
372
438
  • Best for: Large projects, massive refactoring, power users
439
+ `);
440
+ } else if (availableTools.docker) {
441
+ console.log(`${this.colors.DIM}4. Performance${this.colors.NC} ${this.colors.RED}(kubectl not installed)${this.colors.NC}
442
+ `);
443
+ } else {
444
+ console.log(`${this.colors.DIM}4. Performance${this.colors.NC} ${this.colors.RED}(Docker and kubectl not installed)${this.colors.NC}
445
+ `);
446
+ }
373
447
 
374
- ${this.colors.CYAN}5. Custom${this.colors.NC} - Manual configuration
448
+ // Option 5: Custom (always available)
449
+ console.log(`${this.colors.CYAN}5. Custom${this.colors.NC} - Manual configuration
375
450
  • Configure execution strategy manually
376
451
  • Choose your own agents and workflows
377
452
  • Advanced users only
@@ -387,19 +462,54 @@ ${this.colors.CYAN}5. Custom${this.colors.NC} - Manual configuration
387
462
  output: process.stdout
388
463
  });
389
464
 
465
+ // Determine default based on available tools
466
+ const defaultChoice = availableTools.docker && availableTools.kubectl ? '3' : '1';
467
+
390
468
  return new Promise((resolve) => {
391
- rl.question(`${this.colors.CYAN}Enter your choice (1-5) [3]: ${this.colors.NC}`, (answer) => {
392
- rl.close();
393
- const choice = answer.trim() || '3';
394
- const scenarios = {
395
- '1': 'minimal',
396
- '2': 'docker',
397
- '3': 'full',
398
- '4': 'performance',
399
- '5': 'custom'
400
- };
401
- resolve(scenarios[choice] || 'full');
402
- });
469
+ const askQuestion = () => {
470
+ rl.question(`${this.colors.CYAN}Enter your choice (1-5) [${defaultChoice}]: ${this.colors.NC}`, (answer) => {
471
+ const choice = answer.trim() || defaultChoice;
472
+ const scenarios = {
473
+ '1': 'minimal',
474
+ '2': 'docker',
475
+ '3': 'full',
476
+ '4': 'performance',
477
+ '5': 'custom'
478
+ };
479
+
480
+ const selectedScenario = scenarios[choice];
481
+
482
+ // Validate choice based on available tools
483
+ if (choice === '2' && !availableTools.docker) {
484
+ console.log(`${this.colors.RED}āœ— Docker is required for this option. Please install Docker first or choose option 1 (Minimal).${this.colors.NC}`);
485
+ askQuestion();
486
+ return;
487
+ }
488
+
489
+ if ((choice === '3' || choice === '4') && !availableTools.docker) {
490
+ console.log(`${this.colors.RED}āœ— Docker is required for this option. Please install Docker first or choose option 1 (Minimal).${this.colors.NC}`);
491
+ askQuestion();
492
+ return;
493
+ }
494
+
495
+ if ((choice === '3' || choice === '4') && availableTools.docker && !availableTools.kubectl) {
496
+ console.log(`${this.colors.RED}āœ— kubectl is required for this option. Please install kubectl first or choose option 2 (Docker-only).${this.colors.NC}`);
497
+ askQuestion();
498
+ return;
499
+ }
500
+
501
+ if (!selectedScenario) {
502
+ console.log(`${this.colors.RED}āœ— Invalid choice. Please select 1-5.${this.colors.NC}`);
503
+ askQuestion();
504
+ return;
505
+ }
506
+
507
+ rl.close();
508
+ resolve(selectedScenario);
509
+ });
510
+ };
511
+
512
+ askQuestion();
403
513
  });
404
514
  }
405
515
 
@@ -722,7 +832,7 @@ See: https://github.com/rafeekpro/ClaudeAutoPM
722
832
  console.log('');
723
833
  this.printMsg('GREEN', '╔══════════════════════════════════════════╗');
724
834
  this.printMsg('GREEN', 'ā•‘ Installation complete! šŸŽ‰ ā•‘');
725
- this.printMsg('GREEN', 'ā•šā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•—');
835
+ this.printMsg('GREEN', 'ā•šā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•');
726
836
  console.log('');
727
837
 
728
838
  this.printSuccess('ClaudeAutoPM has been installed successfully!');
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "claude-autopm",
3
- "version": "1.11.10",
3
+ "version": "1.12.2",
4
4
  "description": "Autonomous Project Management Framework for Claude Code - Advanced AI-powered development automation",
5
5
  "main": "bin/autopm.js",
6
6
  "bin": {
@@ -112,14 +112,14 @@
112
112
  "README.md"
113
113
  ],
114
114
  "dependencies": {
115
- "azure-devops-node-api": "^14.0.2",
115
+ "azure-devops-node-api": "^15.1.1",
116
116
  "chalk": "^5.3.0",
117
117
  "dotenv": "^16.6.1",
118
118
  "execa": "^9.6.0",
119
119
  "fast-glob": "^3.3.2",
120
120
  "fs-extra": "^11.3.2",
121
- "glob": "^10.3.10",
122
- "inquirer": "^9.2.12",
121
+ "glob": "^11.0.3",
122
+ "inquirer": "^12.9.6",
123
123
  "js-yaml": "^4.1.0",
124
124
  "moment": "^2.29.4",
125
125
  "ora": "^5.4.1",