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 +53 -0
- package/cli/commands/setup.js +76 -59
- package/package.json +1 -1
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
|
package/cli/commands/setup.js
CHANGED
|
@@ -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
|
-
|
|
54
|
-
|
|
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(' -
|
|
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
|
|
377
|
+
## No Installation Needed!
|
|
391
378
|
|
|
392
|
-
|
|
379
|
+
Dhurandhar works locally (just like BMAD). Use the \`./dhurandhar\` script in your project directory.
|
|
393
380
|
|
|
394
|
-
|
|
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**
|
|
415
|
-
{ file: 'next.md', content: '---\ndescription: Move to next phase\n---\n\n**
|
|
416
|
-
{ file: 'back.md', content: '---\ndescription: Go back to previous phase\n---\n\n**
|
|
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
|
|
420
|
-
{ file: 'bhishma.md', content: '---\ndescription: Phase 2 - Requirements with Bhishma (Grandfather)\n---\n\nRun
|
|
421
|
-
{ file: 'sahadeva.md', content: '---\ndescription: Phase 3 - Entities with Sahadeva (Wisdom)\n---\n\nRun
|
|
422
|
-
{ file: 'nakula.md', content: '---\ndescription: Phase 4 - APIs with Nakula (Handsome)\n---\n\nRun
|
|
423
|
-
{ file: 'bheema.md', content: '---\ndescription: Phase 5 & 7 - HLD & Implementation with Bheema (Strength)\n---\n\nRun
|
|
424
|
-
{ file: 'arjuna.md', content: '---\ndescription: Phase 6 - LLD with Arjuna (Warrior)\n---\n\nRun
|
|
425
|
-
{ file: 'draupadi.md', content: '---\ndescription: Phase 8 - Blessing with Draupadi (Queen)\n---\n\nRun
|
|
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
|
|
429
|
-
{ file: 'codegen-backend.md', content: '---\ndescription: Generate NestJS backend only\n---\n\nRun
|
|
430
|
-
{ file: 'codegen-frontend.md', content: '---\ndescription: Generate React frontend only\n---\n\nRun
|
|
431
|
-
{ file: 'codegen-tests.md', content: '---\ndescription: Generate Jest tests only\n---\n\nRun
|
|
432
|
-
{ file: 'codegen-infra.md', content: '---\ndescription: Generate infrastructure code\n---\n\nRun
|
|
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
|
|
436
|
-
{ file: 'export-json.md', content: '---\ndescription: Export design to JSON\n---\n\nRun
|
|
437
|
-
{ file: 'export-html.md', content: '---\ndescription: Export design to HTML\n---\n\nRun
|
|
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
|
|
441
|
-
{ file: 'integrate-jira.md', content: '---\ndescription: Create Jira tickets from design\n---\n\nRun
|
|
442
|
-
{ file: 'integrate-confluence.md', content: '---\ndescription: Create Confluence documentation\n---\n\nRun
|
|
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
|
|
446
|
-
{ file: 'ai-analyze.md', content: '---\ndescription: AI design analysis\n---\n\nRun
|
|
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
|
|
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
|
|
453
|
-
{ file: 'audit.md', content: '---\ndescription: Audit design quality\n---\n\nRun
|
|
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
|
|
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
|
|
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.
|
|
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",
|