dhurandhar 2.3.1 → 2.4.1

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/CHANGELOG.md CHANGED
@@ -5,6 +5,59 @@ All notable changes to Dhurandhar will be documented in this file.
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
6
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
+ ## [2.4.1] - 2026-04-02
9
+
10
+ ### Fixed - Critical Bug Fix
11
+ - Fixed "require is not defined" error in setup
12
+ - Added `chmodSync` to imports (was missing)
13
+ - Removed `require()` call in ES module
14
+ - Local executable now creates successfully
15
+
16
+ ### Error Fixed
17
+ User saw: "Error creating directories: require is not defined"
18
+ **FIXED**: Proper ES module imports now used!
19
+
20
+ ---
21
+
22
+ ## [2.4.0] - 2026-04-02
23
+
24
+ ### Added - LOCAL EXECUTABLE! No Global Install Needed! šŸŽ‰
25
+ - **Created `./dhurandhar` executable** in project directory
26
+ - **Created `dhurandhar.bat`** for Windows
27
+ - Works just like BMAD - no global installation required!
28
+ - Uses `npx` internally to always get latest version
29
+
30
+ ### Changed
31
+ - All command files use `./dhurandhar` instead of global `dhurandhar`
32
+ - Setup message updated: "No global installation needed!"
33
+ - README updated: Instructions use `./dhurandhar`
34
+ - Removed global install warnings
35
+
36
+ ### How It Works
37
+ Setup creates:
38
+ - `./dhurandhar` - Shell script (Linux/Mac)
39
+ - `dhurandhar.bat` - Batch file (Windows)
40
+
41
+ Both use `npx --yes dhurandhar@latest` internally.
42
+
43
+ ### User Feedback Implemented
44
+ User: "I never needed to install bmad globally. So we should ensure
45
+ that dhurandhar doesn't require global installation either."
46
+
47
+ **SOLUTION**: Local executables just like BMAD! āœ…
48
+
49
+ ### Benefits
50
+ - āœ… No global npm install needed
51
+ - āœ… Works immediately after setup
52
+ - āœ… Always uses latest version
53
+ - āœ… Same workflow as BMAD
54
+ - āœ… Auggie commands work out of the box
55
+
56
+ This is a MINOR version bump (2.3.x → 2.4.0) adding significant
57
+ functionality while maintaining backward compatibility.
58
+
59
+ ---
60
+
8
61
  ## [2.3.1] - 2026-04-02
9
62
 
10
63
  ### Fixed - Installation Instructions Added
@@ -10,7 +10,7 @@
10
10
 
11
11
  import * as clack from '@clack/prompts';
12
12
  import chalk from 'chalk';
13
- import { existsSync, writeFileSync, mkdirSync } from 'fs';
13
+ import { existsSync, writeFileSync, mkdirSync, chmodSync } from 'fs';
14
14
  import { homedir } from 'os';
15
15
  import { join } from 'path';
16
16
 
@@ -49,32 +49,16 @@ export default async function setupCommand(options) {
49
49
  clack.outro(chalk.green.bold('āœ… Setup Complete!'));
50
50
 
51
51
  console.log(chalk.cyan('\nšŸ“š Next Steps:'));
52
+ console.log(chalk.gray(' 1. ./dhurandhar init (to initialize design)'));
53
+ console.log(chalk.gray(' 2. ./dhurandhar yudhishthira (start Phase 1)\n'));
52
54
 
53
- // Check if dhurandhar is installed globally
54
- const { execSync } = await import('child_process');
55
- let isInstalled = false;
56
- try {
57
- execSync('which dhurandhar', { stdio: 'ignore' });
58
- isInstalled = true;
59
- } catch (e) {
60
- isInstalled = false;
61
- }
62
-
63
- if (!isInstalled) {
64
- console.log(chalk.yellow('\nāš ļø Important: Install Dhurandhar globally to use commands'));
65
- console.log(chalk.cyan(' npm install -g dhurandhar@latest\n'));
66
- console.log(chalk.gray(' Then you can run:'));
67
- } else {
68
- console.log(chalk.gray(' To start:'));
69
- }
70
-
71
- console.log(chalk.gray(' 1. dhurandhar init (to initialize design)'));
72
- console.log(chalk.gray(' 2. dhurandhar yudhishthira (start Phase 1)\n'));
55
+ console.log(chalk.green('✨ No global installation needed!'));
56
+ console.log(chalk.gray(' Use ./dhurandhar (just like BMAD)\n'));
73
57
 
74
58
  if (config.aiCodingAssistant === 'augment') {
75
59
  console.log(chalk.magenta('šŸ’” Auggie Integration:'));
76
60
  console.log(chalk.gray(' - Type / in Auggie chat to see 32 commands'));
77
- console.log(chalk.gray(' - Commands work after global install\n'));
61
+ console.log(chalk.gray(' - All commands use ./dhurandhar\n'));
78
62
  }
79
63
  } catch (error) {
80
64
  console.error(chalk.red('\nāŒ Setup failed:'), error.message);
@@ -311,6 +295,9 @@ async function createProjectDirectories(config) {
311
295
  mkdirSync(join(dhurandharDir, 'phases'), { recursive: true });
312
296
  }
313
297
 
298
+ // Create local dhurandhar executable (like BMAD)
299
+ createLocalExecutable(cwd);
300
+
314
301
  // Create _dhurandhar-output directory (like BMAD's _bmad-output)
315
302
  const outputDir = join(cwd, '_dhurandhar-output');
316
303
  if (!existsSync(outputDir)) {
@@ -387,76 +374,75 @@ Setup completed on: ${new Date().toISOString()}
387
374
  // Create README first
388
375
  const readmeContent = `# Dhurandhar Commands
389
376
 
390
- ## Installation Required
377
+ ## No Installation Needed!
391
378
 
392
- To use these commands, install Dhurandhar globally:
379
+ Dhurandhar works locally (just like BMAD). Use the \`./dhurandhar\` script in your project directory.
393
380
 
394
- \`\`\`bash
395
- npm install -g dhurandhar@latest
396
- \`\`\`
381
+ ## Usage
397
382
 
398
- Then you can run any command like:
399
383
  \`\`\`bash
400
- dhurandhar yudhishthira
401
- dhurandhar status
402
- dhurandhar codegen -t all
384
+ ./dhurandhar yudhishthira # Phase 1: Features
385
+ ./dhurandhar status # Check status
386
+ ./dhurandhar codegen -t all # Generate code
403
387
  \`\`\`
404
388
 
405
389
  ## All Commands
406
390
 
407
391
  See individual .md files in this directory for each command.
392
+
393
+ All commands use \`./dhurandhar <command>\` - no global install required!
408
394
  `;
409
395
  writeFileSync(join(commandsDir, 'README.md'), readmeContent, 'utf-8');
410
396
 
411
397
  // Create comprehensive .md files for ALL commands
412
398
  const commands = [
413
399
  // Status & Navigation
414
- { file: 'status.md', content: '---\ndescription: Check design project status\n---\n\n**Installation**: `npm install -g dhurandhar@latest`\n\nRun `dhurandhar status` to see the current state of your design project.' },
415
- { file: 'next.md', content: '---\ndescription: Move to next phase\n---\n\n**Installation**: `npm install -g dhurandhar@latest`\n\nRun `dhurandhar next` to automatically move to the next design phase.' },
416
- { file: 'back.md', content: '---\ndescription: Go back to previous phase\n---\n\n**Installation**: `npm install -g dhurandhar@latest`\n\nRun `dhurandhar back` to return to the previous design phase.' },
400
+ { file: 'status.md', content: '---\ndescription: Check design project status\n---\n\n**No installation needed!** Use the local executable.\n\nRun `./dhurandhar status` to see the current state of your design project.' },
401
+ { file: 'next.md', content: '---\ndescription: Move to next phase\n---\n\n**No installation needed!** Use the local executable.\n\nRun `./dhurandhar next` to automatically move to the next design phase.' },
402
+ { file: 'back.md', content: '---\ndescription: Go back to previous phase\n---\n\n**No installation needed!** Use the local executable.\n\nRun `./dhurandhar back` to return to the previous design phase.' },
417
403
 
418
404
  // Master Agents (All 8)
419
- { file: 'yudhishthira.md', content: '---\ndescription: Phase 1 - Features with Yudhishthira (Dharma)\n---\n\nRun `dhurandhar yudhishthira` to define features with the master of dharma.' },
420
- { file: 'bhishma.md', content: '---\ndescription: Phase 2 - Requirements with Bhishma (Grandfather)\n---\n\nRun `dhurandhar bhishma` to define functional and non-functional requirements.' },
421
- { file: 'sahadeva.md', content: '---\ndescription: Phase 3 - Entities with Sahadeva (Wisdom)\n---\n\nRun `dhurandhar sahadeva` to design domain model and entities.' },
422
- { file: 'nakula.md', content: '---\ndescription: Phase 4 - APIs with Nakula (Handsome)\n---\n\nRun `dhurandhar nakula` to design REST APIs.' },
423
- { file: 'bheema.md', content: '---\ndescription: Phase 5 & 7 - HLD & Implementation with Bheema (Strength)\n---\n\nRun `dhurandhar bheema` for high-level design and implementation planning.' },
424
- { file: 'arjuna.md', content: '---\ndescription: Phase 6 - LLD with Arjuna (Warrior)\n---\n\nRun `dhurandhar arjuna` for low-level design and class diagrams.' },
425
- { file: 'draupadi.md', content: '---\ndescription: Phase 8 - Blessing with Draupadi (Queen)\n---\n\nRun `dhurandhar draupadi` for the final quality review and imperial blessing.' },
405
+ { file: 'yudhishthira.md', content: '---\ndescription: Phase 1 - Features with Yudhishthira (Dharma)\n---\n\nRun `./dhurandhar yudhishthira` to define features with the master of dharma.' },
406
+ { file: 'bhishma.md', content: '---\ndescription: Phase 2 - Requirements with Bhishma (Grandfather)\n---\n\nRun `./dhurandhar bhishma` to define functional and non-functional requirements.' },
407
+ { file: 'sahadeva.md', content: '---\ndescription: Phase 3 - Entities with Sahadeva (Wisdom)\n---\n\nRun `./dhurandhar sahadeva` to design domain model and entities.' },
408
+ { file: 'nakula.md', content: '---\ndescription: Phase 4 - APIs with Nakula (Handsome)\n---\n\nRun `./dhurandhar nakula` to design REST APIs.' },
409
+ { file: 'bheema.md', content: '---\ndescription: Phase 5 & 7 - HLD & Implementation with Bheema (Strength)\n---\n\nRun `./dhurandhar bheema` for high-level design and implementation planning.' },
410
+ { file: 'arjuna.md', content: '---\ndescription: Phase 6 - LLD with Arjuna (Warrior)\n---\n\nRun `./dhurandhar arjuna` for low-level design and class diagrams.' },
411
+ { file: 'draupadi.md', content: '---\ndescription: Phase 8 - Blessing with Draupadi (Queen)\n---\n\nRun `./dhurandhar draupadi` for the final quality review and imperial blessing.' },
426
412
 
427
413
  // Code Generation (All options)
428
- { file: 'codegen-all.md', content: '---\ndescription: Generate complete full-stack application\n---\n\nRun `dhurandhar codegen -t all` to generate backend, frontend, tests, and infrastructure.' },
429
- { file: 'codegen-backend.md', content: '---\ndescription: Generate NestJS backend only\n---\n\nRun `dhurandhar codegen -t backend` to generate NestJS + TypeORM backend code.' },
430
- { file: 'codegen-frontend.md', content: '---\ndescription: Generate React frontend only\n---\n\nRun `dhurandhar codegen -t frontend` to generate React + Vite + Tailwind frontend.' },
431
- { file: 'codegen-tests.md', content: '---\ndescription: Generate Jest tests only\n---\n\nRun `dhurandhar codegen -t tests` to generate unit and E2E tests.' },
432
- { file: 'codegen-infra.md', content: '---\ndescription: Generate infrastructure code\n---\n\nRun `dhurandhar codegen -t infrastructure` to generate Docker and Kubernetes configs.' },
414
+ { file: 'codegen-all.md', content: '---\ndescription: Generate complete full-stack application\n---\n\nRun `./dhurandhar codegen -t all` to generate backend, frontend, tests, and infrastructure.' },
415
+ { file: 'codegen-backend.md', content: '---\ndescription: Generate NestJS backend only\n---\n\nRun `./dhurandhar codegen -t backend` to generate NestJS + TypeORM backend code.' },
416
+ { file: 'codegen-frontend.md', content: '---\ndescription: Generate React frontend only\n---\n\nRun `./dhurandhar codegen -t frontend` to generate React + Vite + Tailwind frontend.' },
417
+ { file: 'codegen-tests.md', content: '---\ndescription: Generate Jest tests only\n---\n\nRun `./dhurandhar codegen -t tests` to generate unit and E2E tests.' },
418
+ { file: 'codegen-infra.md', content: '---\ndescription: Generate infrastructure code\n---\n\nRun `./dhurandhar codegen -t infrastructure` to generate Docker and Kubernetes configs.' },
433
419
 
434
420
  // Export (All formats)
435
- { file: 'export-markdown.md', content: '---\ndescription: Export design to Markdown\n---\n\nRun `dhurandhar export -f markdown` to export design as Markdown document.' },
436
- { file: 'export-json.md', content: '---\ndescription: Export design to JSON\n---\n\nRun `dhurandhar export -f json` to export design as JSON data.' },
437
- { file: 'export-html.md', content: '---\ndescription: Export design to HTML\n---\n\nRun `dhurandhar export -f html` to export design as interactive HTML.' },
421
+ { file: 'export-markdown.md', content: '---\ndescription: Export design to Markdown\n---\n\nRun `./dhurandhar export -f markdown` to export design as Markdown document.' },
422
+ { file: 'export-json.md', content: '---\ndescription: Export design to JSON\n---\n\nRun `./dhurandhar export -f json` to export design as JSON data.' },
423
+ { file: 'export-html.md', content: '---\ndescription: Export design to HTML\n---\n\nRun `./dhurandhar export -f html` to export design as interactive HTML.' },
438
424
 
439
425
  // Integrations
440
- { file: 'integrate-github.md', content: '---\ndescription: Create GitHub issues from design\n---\n\nRun `dhurandhar integrate -p github` to create GitHub issues for all features.' },
441
- { file: 'integrate-jira.md', content: '---\ndescription: Create Jira tickets from design\n---\n\nRun `dhurandhar integrate -p jira` to create Jira epics, stories, and tasks.' },
442
- { file: 'integrate-confluence.md', content: '---\ndescription: Create Confluence documentation\n---\n\nRun `dhurandhar integrate -p confluence` to create Confluence pages from design.' },
426
+ { file: 'integrate-github.md', content: '---\ndescription: Create GitHub issues from design\n---\n\nRun `./dhurandhar integrate -p github` to create GitHub issues for all features.' },
427
+ { file: 'integrate-jira.md', content: '---\ndescription: Create Jira tickets from design\n---\n\nRun `./dhurandhar integrate -p jira` to create Jira epics, stories, and tasks.' },
428
+ { file: 'integrate-confluence.md', content: '---\ndescription: Create Confluence documentation\n---\n\nRun `./dhurandhar integrate -p confluence` to create Confluence pages from design.' },
443
429
 
444
430
  // AI Features
445
- { file: 'ai-suggest.md', content: '---\ndescription: Get AI design suggestions\n---\n\nRun `dhurandhar ai suggest` to get AI-powered design improvement suggestions.' },
446
- { file: 'ai-analyze.md', content: '---\ndescription: AI design analysis\n---\n\nRun `dhurandhar ai analyze` to get comprehensive AI analysis of your design.' },
431
+ { file: 'ai-suggest.md', content: '---\ndescription: Get AI design suggestions\n---\n\nRun `./dhurandhar ai suggest` to get AI-powered design improvement suggestions.' },
432
+ { file: 'ai-analyze.md', content: '---\ndescription: AI design analysis\n---\n\nRun `./dhurandhar ai analyze` to get comprehensive AI analysis of your design.' },
447
433
 
448
434
  // Diagrams
449
- { file: 'diagrams.md', content: '---\ndescription: Generate architecture diagrams\n---\n\nRun `dhurandhar diagrams` to generate visual architecture diagrams.' },
435
+ { file: 'diagrams.md', content: '---\ndescription: Generate architecture diagrams\n---\n\nRun `./dhurandhar diagrams` to generate visual architecture diagrams.' },
450
436
 
451
437
  // Review & Audit
452
- { file: 'review.md', content: '---\ndescription: Run cascading review\n---\n\nRun `dhurandhar review` to run a comprehensive design review across all phases.' },
453
- { file: 'audit.md', content: '---\ndescription: Audit design quality\n---\n\nRun `dhurandhar audit` to check for design issues and quality problems.' },
438
+ { file: 'review.md', content: '---\ndescription: Run cascading review\n---\n\nRun `./dhurandhar review` to run a comprehensive design review across all phases.' },
439
+ { file: 'audit.md', content: '---\ndescription: Audit design quality\n---\n\nRun `./dhurandhar audit` to check for design issues and quality problems.' },
454
440
 
455
441
  // Decisions
456
- { file: 'decisions.md', content: '---\ndescription: Manage technical decisions\n---\n\nRun `dhurandhar decisions` to view and manage technical decisions in the registry.' },
442
+ { file: 'decisions.md', content: '---\ndescription: Manage technical decisions\n---\n\nRun `./dhurandhar decisions` to view and manage technical decisions in the registry.' },
457
443
 
458
444
  // Undo
459
- { file: 'undo.md', content: '---\ndescription: Undo last change\n---\n\nRun `dhurandhar undo` to undo the last change (up to 20 versions).' }
445
+ { file: 'undo.md', content: '---\ndescription: Undo last change\n---\n\nRun `./dhurandhar undo` to undo the last change (up to 20 versions).' }
460
446
  ];
461
447
 
462
448
  commands.forEach(cmd => {
@@ -492,3 +478,34 @@ See individual .md files in this directory for each command.
492
478
  clack.log.error(`Error creating directories: ${error.message}`);
493
479
  }
494
480
  }
481
+
482
+ /**
483
+ * Create local dhurandhar executable (like BMAD)
484
+ */
485
+ function createLocalExecutable(cwd) {
486
+ // Create dhurandhar shell script
487
+ const scriptContent = `#!/usr/bin/env bash
488
+ # Local Dhurandhar executable (no global install needed!)
489
+ # This works just like BMAD - local installation only
490
+
491
+ # Get the directory of this script
492
+ SCRIPT_DIR="$( cd "$( dirname "\${BASH_SOURCE[0]}" )" && pwd )"
493
+
494
+ # Use npx to run dhurandhar with the exact version
495
+ npx --yes dhurandhar@latest "$@"
496
+ `;
497
+
498
+ const scriptPath = join(cwd, 'dhurandhar');
499
+ writeFileSync(scriptPath, scriptContent, 'utf-8');
500
+
501
+ // Make it executable
502
+ chmodSync(scriptPath, 0o755);
503
+
504
+ // Create Windows batch file too
505
+ const batContent = `@echo off
506
+ REM Local Dhurandhar executable for Windows
507
+ npx --yes dhurandhar@latest %*
508
+ `;
509
+
510
+ writeFileSync(join(cwd, 'dhurandhar.bat'), batContent, 'utf-8');
511
+ }
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "$schema": "https://json.schemastore.org/package.json",
3
3
  "name": "dhurandhar",
4
- "version": "2.3.1",
4
+ "version": "2.4.1",
5
5
  "description": "The world's first AI-powered dharma-centric design framework. 8 Pandava agents + 21 sub-agents guide you from idea to production code. Features → Requirements → Entities → API → HLD → LLD → Implementation → Blessing. Complete with code generation, enterprise integrations, and mythological accuracy.",
6
6
  "keywords": [
7
7
  "system-design",