@iservu-inc/adf-cli 0.1.5 → 0.1.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/CHANGELOG.md +138 -0
- package/README.md +50 -11
- package/lib/commands/init.js +3 -1
- package/package.json +1 -1
- package/test-scenarios.sh +134 -0
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
All notable changes to `@iservu-inc/adf-cli` will be documented in this file.
|
|
4
|
+
|
|
5
|
+
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|
6
|
+
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
|
+
|
|
8
|
+
## [Unreleased]
|
|
9
|
+
|
|
10
|
+
## [0.1.6] - 2025-10-02
|
|
11
|
+
|
|
12
|
+
### Fixed
|
|
13
|
+
- Fixed step numbering in init success message
|
|
14
|
+
- Steps now number correctly (1, 2, 3) when deployment is completed
|
|
15
|
+
- Steps number correctly (1, 2, 3, 4) when deployment is skipped
|
|
16
|
+
- Eliminated confusing jump from step 2 to step 4
|
|
17
|
+
|
|
18
|
+
### Documentation
|
|
19
|
+
- Updated README.md with comprehensive usage examples
|
|
20
|
+
- Added context.json structure documentation
|
|
21
|
+
- Added documentation about local file paths feature
|
|
22
|
+
- Added detailed "What Gets Installed" section with complete directory structure
|
|
23
|
+
|
|
24
|
+
## [0.1.5] - 2025-10-02
|
|
25
|
+
|
|
26
|
+
### Added
|
|
27
|
+
- New question in init workflow: "Do you have local documentation files to include?"
|
|
28
|
+
- Allows users to specify local file paths (e.g., `./docs/`, `./README.md`)
|
|
29
|
+
- Added `documentationFiles` array to context.json structure
|
|
30
|
+
- Complements existing `documentationUrls` field
|
|
31
|
+
|
|
32
|
+
### Changed
|
|
33
|
+
- Init workflow now collects both remote URLs and local file paths for documentation
|
|
34
|
+
- Enhanced context.json to track local documentation references
|
|
35
|
+
|
|
36
|
+
## [0.1.4] - 2025-10-02
|
|
37
|
+
|
|
38
|
+
### Fixed
|
|
39
|
+
- Fixed context.json to use actual CLI version instead of hardcoded "0.1.01"
|
|
40
|
+
- Now dynamically reads version from package.json
|
|
41
|
+
- context.json correctly reflects which version of CLI was used to initialize
|
|
42
|
+
|
|
43
|
+
### Changed
|
|
44
|
+
- Updated `project-detector.js` to import package.json for version tracking
|
|
45
|
+
|
|
46
|
+
## [0.1.3] - 2025-10-02
|
|
47
|
+
|
|
48
|
+
### Fixed
|
|
49
|
+
- Fixed critical `ReferenceError` in init command
|
|
50
|
+
- `deployNow` variable was referenced outside its scope
|
|
51
|
+
- Caused initialization to crash after displaying success message
|
|
52
|
+
- Properly scoped variable to fix error
|
|
53
|
+
|
|
54
|
+
### Changed
|
|
55
|
+
- Improved variable scoping in init.js for better reliability
|
|
56
|
+
|
|
57
|
+
## [0.1.2] - 2025-10-02
|
|
58
|
+
|
|
59
|
+
### Documentation
|
|
60
|
+
- Updated README.md with correct package name throughout
|
|
61
|
+
- Fixed all installation command references to use `@iservu-inc/adf-cli`
|
|
62
|
+
- Updated 8 instances of package name in documentation
|
|
63
|
+
|
|
64
|
+
## [0.1.1] - 2025-10-02
|
|
65
|
+
|
|
66
|
+
### Fixed
|
|
67
|
+
- Fixed update command to check correct package name on npm registry
|
|
68
|
+
- Was checking `@iservu/adf-cli` instead of `@iservu-inc/adf-cli`
|
|
69
|
+
- Updated npm registry URLs in update.js
|
|
70
|
+
|
|
71
|
+
## [0.1.0] - 2025-10-02
|
|
72
|
+
|
|
73
|
+
### Added
|
|
74
|
+
- Initial release of AgentDevFramework CLI tool
|
|
75
|
+
- Three workflow levels:
|
|
76
|
+
- Level 1: Rapid Development (PRP) - 5-15 min planning
|
|
77
|
+
- Level 2: Specification-Driven (Balanced) - 30-60 min planning
|
|
78
|
+
- Level 3: BMAD Comprehensive - 1-2+ hour planning
|
|
79
|
+
- Interactive `adf init` command with intelligent workflow recommendations
|
|
80
|
+
- Support for multiple development tools:
|
|
81
|
+
- Windsurf, Cursor, VS Code, VS Code Insider
|
|
82
|
+
- Kiro, Trae, Claude Code, Gemini CLI, Codex CLI
|
|
83
|
+
- `adf deploy` command for deploying to development tools
|
|
84
|
+
- `adf update` command for checking and installing CLI updates
|
|
85
|
+
- Automatic project type detection (new vs existing)
|
|
86
|
+
- Documentation URL collection during initialization
|
|
87
|
+
- Agent deployment based on workflow level:
|
|
88
|
+
- Rapid: dev, qa
|
|
89
|
+
- Balanced: analyst, pm, dev, qa
|
|
90
|
+
- Comprehensive: analyst, pm, architect, sm, dev, qa
|
|
91
|
+
- Template copying and configuration generation
|
|
92
|
+
- Environment template creation (.env.template)
|
|
93
|
+
- Framework memory and constitution files
|
|
94
|
+
- MCP configuration support
|
|
95
|
+
|
|
96
|
+
### Commands
|
|
97
|
+
- `adf init [--rapid|--balanced|--comprehensive] [--tool <tool>]` - Initialize framework
|
|
98
|
+
- `adf deploy [tool] [--list]` - Deploy to development tool
|
|
99
|
+
- `adf update [--check]` - Update CLI to latest version
|
|
100
|
+
- `adf --version` - Show CLI version
|
|
101
|
+
- `adf --help` - Show help information
|
|
102
|
+
|
|
103
|
+
### Project Structure
|
|
104
|
+
Creates isolated `.adf/` directory with:
|
|
105
|
+
- context.json - Workflow configuration
|
|
106
|
+
- scripts/ - Helper scripts
|
|
107
|
+
- shared/ - Templates, agents, MCP configs, memory files
|
|
108
|
+
|
|
109
|
+
Deploys to `.framework/` directory with:
|
|
110
|
+
- agents/ - Deployed agent definition files
|
|
111
|
+
|
|
112
|
+
Creates tool-specific configuration files:
|
|
113
|
+
- .windsurfrules, .cursorrules, .vscode/settings.json, etc.
|
|
114
|
+
|
|
115
|
+
## Package Naming History
|
|
116
|
+
|
|
117
|
+
### Scope Change
|
|
118
|
+
- Original name: `@iservu/adf-cli` (failed to publish - scope mismatch)
|
|
119
|
+
- Updated to: `@iservu-inc/adf-cli` (matches npm username `iservu-inc`)
|
|
120
|
+
- First successful publish: v0.1.0
|
|
121
|
+
|
|
122
|
+
---
|
|
123
|
+
|
|
124
|
+
## Links
|
|
125
|
+
|
|
126
|
+
- [npm Package](https://www.npmjs.com/package/@iservu-inc/adf-cli)
|
|
127
|
+
- [GitHub Repository](https://github.com/iServU/adf-cli)
|
|
128
|
+
- [Issue Tracker](https://github.com/iServU/adf-cli/issues)
|
|
129
|
+
|
|
130
|
+
## Release Notes Format
|
|
131
|
+
|
|
132
|
+
### Types of Changes
|
|
133
|
+
- **Added** for new features
|
|
134
|
+
- **Changed** for changes in existing functionality
|
|
135
|
+
- **Deprecated** for soon-to-be removed features
|
|
136
|
+
- **Removed** for now removed features
|
|
137
|
+
- **Fixed** for any bug fixes
|
|
138
|
+
- **Security** for vulnerability fixes
|
package/README.md
CHANGED
|
@@ -26,6 +26,13 @@ Initialize AgentDevFramework in your current project:
|
|
|
26
26
|
adf init
|
|
27
27
|
```
|
|
28
28
|
|
|
29
|
+
The interactive init process will:
|
|
30
|
+
1. Detect if this is a new or existing project
|
|
31
|
+
2. Ask questions to recommend the best workflow level
|
|
32
|
+
3. Optionally collect documentation URLs (e.g., API docs, design docs)
|
|
33
|
+
4. Optionally collect local documentation file paths (e.g., `./docs/`, `./README.md`)
|
|
34
|
+
5. Offer to deploy to your preferred development tool
|
|
35
|
+
|
|
29
36
|
#### Workflow Selection Options
|
|
30
37
|
|
|
31
38
|
Skip interactive questions and specify workflow directly:
|
|
@@ -109,22 +116,48 @@ When you run `adf init`, the following structure is created in your project:
|
|
|
109
116
|
```
|
|
110
117
|
your-project/
|
|
111
118
|
├── .adf/ # Framework files (isolated)
|
|
112
|
-
│ ├──
|
|
113
|
-
│
|
|
114
|
-
│
|
|
115
|
-
│
|
|
116
|
-
│
|
|
117
|
-
│
|
|
118
|
-
│
|
|
119
|
-
|
|
120
|
-
│
|
|
121
|
-
│ └── context.json # Your workflow configuration
|
|
119
|
+
│ ├── context.json # Your workflow configuration
|
|
120
|
+
│ ├── scripts/ # Helper scripts
|
|
121
|
+
│ └── shared/ # Templates, agents, and resources
|
|
122
|
+
│ ├── agents/ # Agent definition files
|
|
123
|
+
│ ├── templates/ # PRP, BMAD, Spec-Kit templates
|
|
124
|
+
│ ├── mcp/ # MCP configurations
|
|
125
|
+
│ └── memory/ # Framework memory/constitution
|
|
126
|
+
├── .framework/ # Deployment directory
|
|
127
|
+
│ └── agents/ # Deployed agent files for your tool
|
|
122
128
|
├── .env.template # Environment variables template
|
|
129
|
+
├── .[tool]rules # Tool-specific config (e.g., .windsurfrules)
|
|
123
130
|
└── [your existing files] # Completely untouched!
|
|
124
131
|
```
|
|
125
132
|
|
|
126
133
|
**Important:** Your `package.json` and existing project files remain completely untouched.
|
|
127
134
|
|
|
135
|
+
### context.json Structure
|
|
136
|
+
|
|
137
|
+
The `.adf/context.json` file contains your workflow configuration:
|
|
138
|
+
|
|
139
|
+
```json
|
|
140
|
+
{
|
|
141
|
+
"version": "0.1.6",
|
|
142
|
+
"workflow": "rapid",
|
|
143
|
+
"projectType": "existing",
|
|
144
|
+
"documentationUrls": [
|
|
145
|
+
"https://api.example.com/docs"
|
|
146
|
+
],
|
|
147
|
+
"documentationFiles": [
|
|
148
|
+
"./docs/",
|
|
149
|
+
"./README.md"
|
|
150
|
+
],
|
|
151
|
+
"createdAt": "2025-10-02T...",
|
|
152
|
+
"agents": ["dev", "qa"],
|
|
153
|
+
"templates": {
|
|
154
|
+
"prp": ["prp_story.md", "prp_task.md"],
|
|
155
|
+
"bmad": false,
|
|
156
|
+
"specKit": false
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
```
|
|
160
|
+
|
|
128
161
|
## Workflow Levels
|
|
129
162
|
|
|
130
163
|
### Level 1: Rapid Development (PRP)
|
|
@@ -211,7 +244,13 @@ When we release updates to the framework:
|
|
|
211
244
|
|
|
212
245
|
## Version History
|
|
213
246
|
|
|
214
|
-
|
|
247
|
+
See [CHANGELOG.md](./CHANGELOG.md) for detailed version history.
|
|
248
|
+
|
|
249
|
+
**Latest:** v0.1.6
|
|
250
|
+
- Fixed step numbering in init success message
|
|
251
|
+
- Added local documentation files collection
|
|
252
|
+
- Dynamic version tracking in context.json
|
|
253
|
+
- Improved error handling
|
|
215
254
|
|
|
216
255
|
## Troubleshooting
|
|
217
256
|
|
package/lib/commands/init.js
CHANGED
|
@@ -183,8 +183,10 @@ async function init(options) {
|
|
|
183
183
|
console.log(chalk.gray(' 2. Copy .env.template to .env and configure'));
|
|
184
184
|
if (!deployNow) {
|
|
185
185
|
console.log(chalk.gray(' 3. Run "adf deploy <tool>" to deploy to your editor'));
|
|
186
|
+
console.log(chalk.gray(' 4. Check documentation: .adf/shared/templates/\n'));
|
|
187
|
+
} else {
|
|
188
|
+
console.log(chalk.gray(' 3. Check documentation: .adf/shared/templates/\n'));
|
|
186
189
|
}
|
|
187
|
-
console.log(chalk.gray(' 4. Check documentation: .adf/shared/templates/\n'));
|
|
188
190
|
|
|
189
191
|
console.log(chalk.blue(`Workflow: ${workflow === 'rapid' ? 'Level 1 (Rapid)' : workflow === 'balanced' ? 'Level 2 (Balanced)' : 'Level 3 (Comprehensive)'}`));
|
|
190
192
|
console.log(chalk.gray('Run "adf deploy --list" to see available tools\n'));
|
package/package.json
CHANGED
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
|
|
3
|
+
# Comprehensive Test Script for @iservu-inc/adf-cli
|
|
4
|
+
# Tests all major scenarios and validates outputs
|
|
5
|
+
|
|
6
|
+
set -e # Exit on error
|
|
7
|
+
|
|
8
|
+
echo "=================================="
|
|
9
|
+
echo "ADF CLI Comprehensive Test Suite"
|
|
10
|
+
echo "=================================="
|
|
11
|
+
echo ""
|
|
12
|
+
|
|
13
|
+
# Colors
|
|
14
|
+
GREEN='\033[0;32m'
|
|
15
|
+
RED='\033[0;31m'
|
|
16
|
+
YELLOW='\033[1;33m'
|
|
17
|
+
NC='\033[0m' # No Color
|
|
18
|
+
|
|
19
|
+
TEST_BASE_DIR="D:/Documents/GitHub/adf-cli-tests"
|
|
20
|
+
PASS_COUNT=0
|
|
21
|
+
FAIL_COUNT=0
|
|
22
|
+
|
|
23
|
+
# Cleanup function
|
|
24
|
+
cleanup() {
|
|
25
|
+
rm -rf "$TEST_BASE_DIR"
|
|
26
|
+
mkdir -p "$TEST_BASE_DIR"
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
# Test result function
|
|
30
|
+
test_result() {
|
|
31
|
+
if [ $1 -eq 0 ]; then
|
|
32
|
+
echo -e "${GREEN}✓ PASS${NC}: $2"
|
|
33
|
+
((PASS_COUNT++))
|
|
34
|
+
else
|
|
35
|
+
echo -e "${RED}✗ FAIL${NC}: $2"
|
|
36
|
+
((FAIL_COUNT++))
|
|
37
|
+
fi
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
# Setup
|
|
41
|
+
cleanup
|
|
42
|
+
|
|
43
|
+
echo "=== Test 1: Rapid Workflow with Tool ===="
|
|
44
|
+
cd "$TEST_BASE_DIR"
|
|
45
|
+
mkdir test-rapid && cd test-rapid
|
|
46
|
+
echo "# Test" > README.md
|
|
47
|
+
printf "n\nn\n" | adf init --rapid --tool windsurf > /dev/null 2>&1
|
|
48
|
+
test_result $? "Rapid workflow initialization"
|
|
49
|
+
[ -f ".adf/context.json" ] && test_result 0 "context.json created" || test_result 1 "context.json missing"
|
|
50
|
+
[ -f ".env.template" ] && test_result 0 ".env.template created" || test_result 1 ".env.template missing"
|
|
51
|
+
[ -f ".windsurfrules" ] && test_result 0 ".windsurfrules created" || test_result 1 ".windsurfrules missing"
|
|
52
|
+
[ -f ".framework/agents/dev.md" ] && test_result 0 "dev agent deployed" || test_result 1 "dev agent missing"
|
|
53
|
+
[ -f ".framework/agents/qa.md" ] && test_result 0 "qa agent deployed" || test_result 1 "qa agent missing"
|
|
54
|
+
WORKFLOW=$(cat .adf/context.json | grep -o '"workflow": "[^"]*"' | cut -d'"' -f4)
|
|
55
|
+
[ "$WORKFLOW" = "rapid" ] && test_result 0 "Workflow is rapid" || test_result 1 "Workflow incorrect: $WORKFLOW"
|
|
56
|
+
echo ""
|
|
57
|
+
|
|
58
|
+
echo "=== Test 2: Balanced Workflow ===="
|
|
59
|
+
cd "$TEST_BASE_DIR"
|
|
60
|
+
mkdir test-balanced && cd test-balanced
|
|
61
|
+
echo "# Test" > README.md
|
|
62
|
+
printf "n\nn\n" | adf init --balanced --tool cursor > /dev/null 2>&1
|
|
63
|
+
test_result $? "Balanced workflow initialization"
|
|
64
|
+
[ -f ".cursorrules" ] && test_result 0 ".cursorrules created" || test_result 1 ".cursorrules missing"
|
|
65
|
+
[ -f ".framework/agents/analyst.md" ] && test_result 0 "analyst agent deployed" || test_result 1 "analyst agent missing"
|
|
66
|
+
[ -f ".framework/agents/pm.md" ] && test_result 0 "pm agent deployed" || test_result 1 "pm agent missing"
|
|
67
|
+
WORKFLOW=$(cat .adf/context.json | grep -o '"workflow": "[^"]*"' | cut -d'"' -f4)
|
|
68
|
+
[ "$WORKFLOW" = "balanced" ] && test_result 0 "Workflow is balanced" || test_result 1 "Workflow incorrect: $WORKFLOW"
|
|
69
|
+
echo ""
|
|
70
|
+
|
|
71
|
+
echo "=== Test 3: Comprehensive Workflow ===="
|
|
72
|
+
cd "$TEST_BASE_DIR"
|
|
73
|
+
mkdir test-comprehensive && cd test-comprehensive
|
|
74
|
+
echo "# Test" > README.md
|
|
75
|
+
printf "n\nn\n" | adf init --comprehensive --tool vscode > /dev/null 2>&1
|
|
76
|
+
test_result $? "Comprehensive workflow initialization"
|
|
77
|
+
[ -d ".vscode" ] && test_result 0 ".vscode directory created" || test_result 1 ".vscode missing"
|
|
78
|
+
[ -f ".framework/agents/architect.md" ] && test_result 0 "architect agent deployed" || test_result 1 "architect agent missing"
|
|
79
|
+
[ -f ".framework/agents/sm.md" ] && test_result 0 "sm agent deployed" || test_result 1 "sm agent missing"
|
|
80
|
+
WORKFLOW=$(cat .adf/context.json | grep -o '"workflow": "[^"]*"' | cut -d'"' -f4)
|
|
81
|
+
[ "$WORKFLOW" = "comprehensive" ] && test_result 0 "Workflow is comprehensive" || test_result 1 "Workflow incorrect: $WORKFLOW"
|
|
82
|
+
echo ""
|
|
83
|
+
|
|
84
|
+
echo "=== Test 4: Deploy Command ===="
|
|
85
|
+
cd "$TEST_BASE_DIR/test-rapid"
|
|
86
|
+
adf deploy cursor > /dev/null 2>&1
|
|
87
|
+
test_result $? "Deploy to cursor"
|
|
88
|
+
[ -f ".cursorrules" ] && test_result 0 "cursor config created" || test_result 1 "cursor config missing"
|
|
89
|
+
echo ""
|
|
90
|
+
|
|
91
|
+
echo "=== Test 5: Deploy List ===="
|
|
92
|
+
OUTPUT=$(adf deploy --list 2>&1)
|
|
93
|
+
echo "$OUTPUT" | grep -q "windsurf" && test_result 0 "windsurf in deploy list" || test_result 1 "windsurf not found"
|
|
94
|
+
echo "$OUTPUT" | grep -q "cursor" && test_result 0 "cursor in deploy list" || test_result 1 "cursor not found"
|
|
95
|
+
echo "$OUTPUT" | grep -q "claude-code" && test_result 0 "claude-code in deploy list" || test_result 1 "claude-code not found"
|
|
96
|
+
echo ""
|
|
97
|
+
|
|
98
|
+
echo "=== Test 6: Version Check ===="
|
|
99
|
+
VERSION=$(adf --version 2>&1)
|
|
100
|
+
test_result $? "Version command works"
|
|
101
|
+
echo "Current version: $VERSION"
|
|
102
|
+
echo ""
|
|
103
|
+
|
|
104
|
+
echo "=== Test 7: Update Check ===="
|
|
105
|
+
adf update --check > /dev/null 2>&1
|
|
106
|
+
test_result $? "Update check command"
|
|
107
|
+
echo ""
|
|
108
|
+
|
|
109
|
+
echo "=== Test 8: Context.json Structure ===="
|
|
110
|
+
cd "$TEST_BASE_DIR/test-rapid"
|
|
111
|
+
cat .adf/context.json | grep -q '"version"' && test_result 0 "version field exists" || test_result 1 "version field missing"
|
|
112
|
+
cat .adf/context.json | grep -q '"workflow"' && test_result 0 "workflow field exists" || test_result 1 "workflow field missing"
|
|
113
|
+
cat .adf/context.json | grep -q '"documentationUrls"' && test_result 0 "documentationUrls field exists" || test_result 1 "documentationUrls field missing"
|
|
114
|
+
cat .adf/context.json | grep -q '"documentationFiles"' && test_result 0 "documentationFiles field exists" || test_result 1 "documentationFiles field missing"
|
|
115
|
+
cat .adf/context.json | grep -q '"agents"' && test_result 0 "agents field exists" || test_result 1 "agents field missing"
|
|
116
|
+
echo ""
|
|
117
|
+
|
|
118
|
+
echo "==================================="
|
|
119
|
+
echo "Test Summary"
|
|
120
|
+
echo "==================================="
|
|
121
|
+
echo -e "${GREEN}Passed:${NC} $PASS_COUNT"
|
|
122
|
+
echo -e "${RED}Failed:${NC} $FAIL_COUNT"
|
|
123
|
+
echo ""
|
|
124
|
+
|
|
125
|
+
# Cleanup
|
|
126
|
+
cleanup
|
|
127
|
+
|
|
128
|
+
if [ $FAIL_COUNT -eq 0 ]; then
|
|
129
|
+
echo -e "${GREEN}All tests passed!${NC}"
|
|
130
|
+
exit 0
|
|
131
|
+
else
|
|
132
|
+
echo -e "${RED}Some tests failed${NC}"
|
|
133
|
+
exit 1
|
|
134
|
+
fi
|