@iservu-inc/adf-cli 0.11.0 → 0.12.9
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/.adf/feature-audit.md +208 -0
- package/.adf/final-summary.md +347 -0
- package/.adf/implementation-plan.md +244 -0
- package/.adf/implementation-progress.md +203 -0
- package/.adf/learning/answer-history.json +995 -0
- package/.adf/learning/config.json +25 -0
- package/.adf/learning/learned-rules.json +59 -0
- package/.adf/learning/patterns.json +277 -0
- package/.adf/learning/skip-history.json +1451 -0
- package/.adf/learning/stats.json +9 -0
- package/.claude/settings.local.json +12 -5
- package/CHANGELOG.md +110 -0
- package/CLAUDE.md +479 -0
- package/bin/adf.js +339 -1
- package/lib/ai/ai-client.js +161 -44
- package/lib/ai/ai-config.js +249 -105
- package/lib/commands/deploy.js +73 -6
- package/lib/generators/agents-md-generator.js +431 -161
- package/lib/generators/antigravity-generator.js +140 -0
- package/lib/generators/deepagent-generator.js +144 -0
- package/lib/generators/gemini-cli-generator.js +241 -0
- package/lib/generators/index.js +55 -0
- package/lib/generators/opencode-generator.js +153 -0
- package/lib/generators/zed-generator.js +252 -0
- package/lib/templates/shared/agents/architect.md +24 -24
- package/lib/templates/shared/agents/dev.md +25 -20
- package/lib/templates/shared/agents/pm.md +14 -4
- package/lib/templates/shared/agents/sm.md +18 -14
- package/lib/templates/shared/templates/openspec-delta.md +16 -0
- package/lib/templates/shared/templates/openspec-proposal.md +18 -0
- package/lib/templates/shared/templates/openspec-tasks.md +21 -0
- package/lib/utils/context-manager.js +484 -0
- package/package.json +6 -1
- package/tests/agents-md-generator.test.js +47 -10
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
const fs = require('fs-extra');
|
|
2
|
+
const path = require('path');
|
|
3
|
+
const ToolConfigGenerator = require('./tool-config-generator');
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Generator for Google Antigravity configurations
|
|
7
|
+
* Creates .antigravity/agents.yaml that mounts AGENTS.md
|
|
8
|
+
* Provides file system access to .context/ directory
|
|
9
|
+
*/
|
|
10
|
+
class AntigravityGenerator extends ToolConfigGenerator {
|
|
11
|
+
/**
|
|
12
|
+
* Generate Antigravity configurations
|
|
13
|
+
* @returns {Object} Generated file paths
|
|
14
|
+
*/
|
|
15
|
+
async generate() {
|
|
16
|
+
await this.initialize();
|
|
17
|
+
|
|
18
|
+
const antigravityDir = path.join(this.projectPath, '.antigravity');
|
|
19
|
+
await fs.ensureDir(antigravityDir);
|
|
20
|
+
|
|
21
|
+
const generated = {
|
|
22
|
+
agents: null
|
|
23
|
+
};
|
|
24
|
+
|
|
25
|
+
// Generate agents.yaml
|
|
26
|
+
generated.agents = await this.generateAgentsYaml(antigravityDir);
|
|
27
|
+
|
|
28
|
+
return generated;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* Generate .antigravity/agents.yaml
|
|
33
|
+
*/
|
|
34
|
+
async generateAgentsYaml(antigravityDir) {
|
|
35
|
+
const agentsPath = path.join(antigravityDir, 'agents.yaml');
|
|
36
|
+
|
|
37
|
+
const agentName = this.getAgentName();
|
|
38
|
+
const model = this.getModelForFramework();
|
|
39
|
+
|
|
40
|
+
// Generate YAML content
|
|
41
|
+
const yamlContent = `# Antigravity Agent Configuration
|
|
42
|
+
# Generated by ADF CLI v${this.getADFVersion()}
|
|
43
|
+
# Framework: ${this.getFrameworkName()}
|
|
44
|
+
|
|
45
|
+
agents:
|
|
46
|
+
- name: "${agentName}"
|
|
47
|
+
model: "${model}"
|
|
48
|
+
capabilities:
|
|
49
|
+
- file_system:
|
|
50
|
+
read_only:
|
|
51
|
+
- "AGENTS.md"
|
|
52
|
+
- ".context"
|
|
53
|
+
- ".adf/sessions"
|
|
54
|
+
exclude:
|
|
55
|
+
- ".adf/.env"
|
|
56
|
+
- "node_modules"
|
|
57
|
+
- ".git"
|
|
58
|
+
system_prompt: |
|
|
59
|
+
You are ${agentName}, an expert AI coding assistant.
|
|
60
|
+
|
|
61
|
+
CRITICAL INSTRUCTIONS:
|
|
62
|
+
1. Read "AGENTS.md" IMMEDIATELY upon startup to understand project rules and structure
|
|
63
|
+
2. Consult ".context/memory/architecture.md" for system design decisions
|
|
64
|
+
3. Follow all operational rules defined in AGENTS.md (they are NON-NEGOTIABLE)
|
|
65
|
+
4. Never output secrets from .env files or expose API keys
|
|
66
|
+
5. All code changes must pass the test suite defined in AGENTS.md
|
|
67
|
+
|
|
68
|
+
WORKFLOW:
|
|
69
|
+
- Before any code change, read AGENTS.md and .context/memory/architecture.md
|
|
70
|
+
- Follow the build & test commands specified in AGENTS.md
|
|
71
|
+
- Adhere to the project structure and workflow directives
|
|
72
|
+
- Ask clarifying questions if requirements are unclear
|
|
73
|
+
|
|
74
|
+
PROJECT CONTEXT:
|
|
75
|
+
- Framework: ${this.getFrameworkName()}
|
|
76
|
+
- Session: ${this.getSessionId()}
|
|
77
|
+
- Complete requirements: .adf/sessions/${this.getSessionId()}/outputs/
|
|
78
|
+
|
|
79
|
+
Remember: AGENTS.md is your single source of truth. Read it first, follow it always.
|
|
80
|
+
`;
|
|
81
|
+
|
|
82
|
+
await fs.writeFile(agentsPath, yamlContent, 'utf-8');
|
|
83
|
+
return agentsPath;
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
/**
|
|
87
|
+
* Get agent name based on framework
|
|
88
|
+
*/
|
|
89
|
+
getAgentName() {
|
|
90
|
+
const projectName = this.getProjectName();
|
|
91
|
+
|
|
92
|
+
const roleMap = {
|
|
93
|
+
'rapid': 'Developer',
|
|
94
|
+
'balanced': 'Project Architect',
|
|
95
|
+
'comprehensive': 'Solutions Architect'
|
|
96
|
+
};
|
|
97
|
+
|
|
98
|
+
const role = roleMap[this.framework] || 'Developer';
|
|
99
|
+
return `${projectName} ${role}`;
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
/**
|
|
103
|
+
* Get appropriate model for framework complexity
|
|
104
|
+
*/
|
|
105
|
+
getModelForFramework() {
|
|
106
|
+
const modelMap = {
|
|
107
|
+
'rapid': 'gemini-2.0-flash-exp',
|
|
108
|
+
'balanced': 'gemini-2.0-flash-thinking-exp',
|
|
109
|
+
'comprehensive': 'gemini-exp-1206'
|
|
110
|
+
};
|
|
111
|
+
|
|
112
|
+
return modelMap[this.framework] || 'gemini-2.0-flash-exp';
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
/**
|
|
116
|
+
* Get framework display name
|
|
117
|
+
*/
|
|
118
|
+
getFrameworkName() {
|
|
119
|
+
const names = {
|
|
120
|
+
'rapid': 'Rapid Development (PRP)',
|
|
121
|
+
'balanced': 'Balanced (Specification-Driven)',
|
|
122
|
+
'comprehensive': 'BMAD Comprehensive (Enterprise)'
|
|
123
|
+
};
|
|
124
|
+
return names[this.framework] || this.framework;
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
/**
|
|
128
|
+
* Get ADF CLI version
|
|
129
|
+
*/
|
|
130
|
+
getADFVersion() {
|
|
131
|
+
try {
|
|
132
|
+
const packageJson = require('../../package.json');
|
|
133
|
+
return packageJson.version;
|
|
134
|
+
} catch (error) {
|
|
135
|
+
return '0.11.0';
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
module.exports = AntigravityGenerator;
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
const fs = require('fs-extra');
|
|
2
|
+
const path = require('path');
|
|
3
|
+
const ToolConfigGenerator = require('./tool-config-generator');
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Generator for Abacus.ai DeepAgent configurations
|
|
7
|
+
* Creates agent markdown files in .deepagent/agents/ directory
|
|
8
|
+
* Similar to Claude Code but for DeepAgent CLI
|
|
9
|
+
*/
|
|
10
|
+
class DeepAgentGenerator extends ToolConfigGenerator {
|
|
11
|
+
/**
|
|
12
|
+
* Generate DeepAgent configuration
|
|
13
|
+
* @returns {Object} Generated file paths
|
|
14
|
+
*/
|
|
15
|
+
async generate() {
|
|
16
|
+
await this.initialize();
|
|
17
|
+
|
|
18
|
+
const deepagentDir = path.join(this.projectPath, '.deepagent');
|
|
19
|
+
const agentsDir = path.join(deepagentDir, 'agents');
|
|
20
|
+
|
|
21
|
+
await fs.ensureDir(agentsDir);
|
|
22
|
+
|
|
23
|
+
// Copy agent files from session
|
|
24
|
+
const agentFiles = await this.deployAgentFiles(agentsDir);
|
|
25
|
+
|
|
26
|
+
// Create README with project context
|
|
27
|
+
const readmePath = await this.generateReadme(deepagentDir);
|
|
28
|
+
|
|
29
|
+
return {
|
|
30
|
+
agents: agentFiles,
|
|
31
|
+
readme: readmePath
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* Generate README.md with project context
|
|
37
|
+
*/
|
|
38
|
+
async generateReadme(deepagentDir) {
|
|
39
|
+
const readmePath = path.join(deepagentDir, 'README.md');
|
|
40
|
+
const projectContext = await this.getProjectContext();
|
|
41
|
+
|
|
42
|
+
const content = `# DeepAgent Configuration
|
|
43
|
+
|
|
44
|
+
> Generated by ADF CLI v${this.getADFVersion()}
|
|
45
|
+
> Framework: ${this.getFrameworkName()}
|
|
46
|
+
|
|
47
|
+
## Project Overview
|
|
48
|
+
|
|
49
|
+
**${projectContext.name || 'Project'}**
|
|
50
|
+
|
|
51
|
+
${projectContext.overview || 'AI-assisted development project'}
|
|
52
|
+
|
|
53
|
+
## Agent Files
|
|
54
|
+
|
|
55
|
+
This directory contains agent definitions for DeepAgent CLI:
|
|
56
|
+
|
|
57
|
+
${this.getAgentList()}
|
|
58
|
+
|
|
59
|
+
## Workflow Level
|
|
60
|
+
|
|
61
|
+
**${this.framework.toUpperCase()}**: ${this.getWorkflowDescription()}
|
|
62
|
+
|
|
63
|
+
## Quick Commands
|
|
64
|
+
|
|
65
|
+
\`\`\`bash
|
|
66
|
+
# Build
|
|
67
|
+
${projectContext.buildCommand || 'npm run build'}
|
|
68
|
+
|
|
69
|
+
# Test
|
|
70
|
+
${projectContext.testCommand || 'npm test'}
|
|
71
|
+
|
|
72
|
+
# Lint
|
|
73
|
+
${projectContext.lintCommand || 'npm run lint'}
|
|
74
|
+
\`\`\`
|
|
75
|
+
|
|
76
|
+
## Requirements Location
|
|
77
|
+
|
|
78
|
+
Complete requirements and documentation:
|
|
79
|
+
- \`.adf/sessions/${this.getSessionId()}/outputs/\`
|
|
80
|
+
|
|
81
|
+
## Usage
|
|
82
|
+
|
|
83
|
+
DeepAgent will automatically load agents from this directory.
|
|
84
|
+
Each agent file contains role-specific instructions and context.
|
|
85
|
+
|
|
86
|
+
---
|
|
87
|
+
|
|
88
|
+
*Generated by AgentDevFramework (ADF CLI)*
|
|
89
|
+
`;
|
|
90
|
+
|
|
91
|
+
await fs.writeFile(readmePath, content, 'utf-8');
|
|
92
|
+
return readmePath;
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
/**
|
|
96
|
+
* Get list of agents based on framework
|
|
97
|
+
*/
|
|
98
|
+
getAgentList() {
|
|
99
|
+
const agentLists = {
|
|
100
|
+
'rapid': '- `dev.md` - Developer agent\n- `qa.md` - QA engineer agent',
|
|
101
|
+
'balanced': '- `analyst.md` - Business analyst agent\n- `pm.md` - Product manager agent\n- `dev.md` - Developer agent\n- `qa.md` - QA engineer agent',
|
|
102
|
+
'comprehensive': '- `analyst.md` - Business analyst agent\n- `pm.md` - Product manager agent\n- `architect.md` - Solutions architect agent\n- `sm.md` - Scrum master agent\n- `dev.md` - Developer agent\n- `qa.md` - QA engineer agent'
|
|
103
|
+
};
|
|
104
|
+
return agentLists[this.framework] || agentLists['balanced'];
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
/**
|
|
108
|
+
* Get workflow description
|
|
109
|
+
*/
|
|
110
|
+
getWorkflowDescription() {
|
|
111
|
+
const descriptions = {
|
|
112
|
+
'rapid': 'Fast iteration with core features (PRP)',
|
|
113
|
+
'balanced': 'Specification-driven development (Spec-Kit)',
|
|
114
|
+
'comprehensive': 'Enterprise-grade with full BMAD documentation'
|
|
115
|
+
};
|
|
116
|
+
return descriptions[this.framework] || 'Standard development workflow';
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
/**
|
|
120
|
+
* Get framework display name
|
|
121
|
+
*/
|
|
122
|
+
getFrameworkName() {
|
|
123
|
+
const names = {
|
|
124
|
+
'rapid': 'Rapid Development (PRP)',
|
|
125
|
+
'balanced': 'Balanced (Specification-Driven)',
|
|
126
|
+
'comprehensive': 'BMAD Comprehensive (Enterprise)'
|
|
127
|
+
};
|
|
128
|
+
return names[this.framework] || this.framework;
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
/**
|
|
132
|
+
* Get ADF CLI version
|
|
133
|
+
*/
|
|
134
|
+
getADFVersion() {
|
|
135
|
+
try {
|
|
136
|
+
const packageJson = require('../../package.json');
|
|
137
|
+
return packageJson.version;
|
|
138
|
+
} catch (error) {
|
|
139
|
+
return '0.12.0';
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
module.exports = DeepAgentGenerator;
|
|
@@ -0,0 +1,241 @@
|
|
|
1
|
+
const fs = require('fs-extra');
|
|
2
|
+
const path = require('path');
|
|
3
|
+
const ToolConfigGenerator = require('./tool-config-generator');
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Generator for Gemini CLI configurations
|
|
7
|
+
* Creates GEMINI.md with project-specific context
|
|
8
|
+
*/
|
|
9
|
+
class GeminiCLIGenerator extends ToolConfigGenerator {
|
|
10
|
+
/**
|
|
11
|
+
* Generate Gemini CLI configuration
|
|
12
|
+
* @returns {Object} Generated file path
|
|
13
|
+
*/
|
|
14
|
+
async generate() {
|
|
15
|
+
await this.initialize();
|
|
16
|
+
|
|
17
|
+
const geminiMdPath = path.join(this.projectPath, 'GEMINI.md');
|
|
18
|
+
|
|
19
|
+
// Generate GEMINI.md content
|
|
20
|
+
const content = await this.generateGeminiMd();
|
|
21
|
+
|
|
22
|
+
await fs.writeFile(geminiMdPath, content, 'utf-8');
|
|
23
|
+
|
|
24
|
+
return { config: geminiMdPath };
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* Generate GEMINI.md markdown content
|
|
29
|
+
*/
|
|
30
|
+
async generateGeminiMd() {
|
|
31
|
+
const projectContext = await this.getProjectContext();
|
|
32
|
+
const frameworkContext = await this.getFrameworkContext();
|
|
33
|
+
const outputSummary = await this.getOutputSummary();
|
|
34
|
+
|
|
35
|
+
return `# GEMINI.md - Project Context for Gemini CLI
|
|
36
|
+
|
|
37
|
+
> Generated by ADF CLI v${this.getADFVersion()}
|
|
38
|
+
> Framework: **${this.getFrameworkName()}**
|
|
39
|
+
> Session: ${this.getSessionId()}
|
|
40
|
+
|
|
41
|
+
---
|
|
42
|
+
|
|
43
|
+
## 🎯 Project Overview
|
|
44
|
+
|
|
45
|
+
**${projectContext.name || 'Project'}**
|
|
46
|
+
|
|
47
|
+
${projectContext.overview || 'AI-assisted development project using AgentDevFramework.'}
|
|
48
|
+
|
|
49
|
+
## 📋 Role & Responsibilities
|
|
50
|
+
|
|
51
|
+
You are **${this.getAgentRole()}** for this project. Your responsibilities include:
|
|
52
|
+
|
|
53
|
+
- Understanding and implementing requirements from session outputs
|
|
54
|
+
- Following the ${this.framework} workflow methodology
|
|
55
|
+
- Maintaining code quality and test coverage
|
|
56
|
+
- Adhering to project structure and conventions
|
|
57
|
+
|
|
58
|
+
## 🚀 Quick Reference
|
|
59
|
+
|
|
60
|
+
### Build & Test Commands
|
|
61
|
+
|
|
62
|
+
\`\`\`bash
|
|
63
|
+
# Build
|
|
64
|
+
${projectContext.buildCommand || 'npm run build'}
|
|
65
|
+
|
|
66
|
+
# Test
|
|
67
|
+
${projectContext.testCommand || 'npm test'}
|
|
68
|
+
|
|
69
|
+
# Lint
|
|
70
|
+
${projectContext.lintCommand || 'npm run lint'}
|
|
71
|
+
\`\`\`
|
|
72
|
+
|
|
73
|
+
### Key Directories
|
|
74
|
+
|
|
75
|
+
- **Requirements**: \`.adf/sessions/${this.getSessionId()}/outputs/\`
|
|
76
|
+
- **Source**: \`${projectContext.sourceDir || 'src/'}\`
|
|
77
|
+
- **Tests**: \`${projectContext.testDir || 'tests/'}\`
|
|
78
|
+
- **Docs**: \`${projectContext.docsDir || 'docs/'}\`
|
|
79
|
+
|
|
80
|
+
## 📚 Documentation Structure
|
|
81
|
+
|
|
82
|
+
${this.getDocumentationStructure()}
|
|
83
|
+
|
|
84
|
+
## 🎨 Workflow Level: ${this.framework.toUpperCase()}
|
|
85
|
+
|
|
86
|
+
${this.getWorkflowDescription()}
|
|
87
|
+
|
|
88
|
+
## ⚡ Key Requirements
|
|
89
|
+
|
|
90
|
+
${frameworkContext.keyPoints || this.getDefaultRequirements()}
|
|
91
|
+
|
|
92
|
+
## 🔧 Development Guidelines
|
|
93
|
+
|
|
94
|
+
### Code Quality Standards
|
|
95
|
+
|
|
96
|
+
1. **Testing**: All features must have corresponding tests
|
|
97
|
+
2. **Documentation**: Public APIs must be documented
|
|
98
|
+
3. **Type Safety**: Use TypeScript/JSDoc where applicable
|
|
99
|
+
4. **Error Handling**: Gracefully handle edge cases
|
|
100
|
+
5. **Security**: Never commit secrets or API keys
|
|
101
|
+
|
|
102
|
+
### Commit Convention
|
|
103
|
+
|
|
104
|
+
Follow Conventional Commits:
|
|
105
|
+
- \`feat:\` - New features
|
|
106
|
+
- \`fix:\` - Bug fixes
|
|
107
|
+
- \`docs:\` - Documentation changes
|
|
108
|
+
- \`refactor:\` - Code refactoring
|
|
109
|
+
- \`test:\` - Test additions/changes
|
|
110
|
+
- \`chore:\` - Build/tooling changes
|
|
111
|
+
|
|
112
|
+
### Code Review Checklist
|
|
113
|
+
|
|
114
|
+
- [ ] Tests pass (\`${projectContext.testCommand || 'npm test'}\`)
|
|
115
|
+
- [ ] Lint passes (\`${projectContext.lintCommand || 'npm run lint'}\`)
|
|
116
|
+
- [ ] Documentation updated
|
|
117
|
+
- [ ] No sensitive data in code
|
|
118
|
+
- [ ] Follows project structure
|
|
119
|
+
|
|
120
|
+
## 🛡️ Security Considerations
|
|
121
|
+
|
|
122
|
+
- API keys stored in \`.adf/.env\` (gitignored)
|
|
123
|
+
- Never log sensitive information
|
|
124
|
+
- Validate all user inputs
|
|
125
|
+
- Follow OWASP security guidelines
|
|
126
|
+
|
|
127
|
+
## 📖 Additional Context
|
|
128
|
+
|
|
129
|
+
For complete requirements and detailed specifications:
|
|
130
|
+
- Session outputs: \`.adf/sessions/${this.getSessionId()}/outputs/\`
|
|
131
|
+
- Framework shared resources: \`.adf/shared/\`
|
|
132
|
+
${outputSummary ? `\n${outputSummary}` : ''}
|
|
133
|
+
|
|
134
|
+
## 💡 Tips for Working with This Project
|
|
135
|
+
|
|
136
|
+
1. **Read the requirements first** - Check session outputs before making changes
|
|
137
|
+
2. **Follow the workflow level** - ${this.framework} has specific methodologies
|
|
138
|
+
3. **Test thoroughly** - This project values quality over speed
|
|
139
|
+
4. **Ask clarifying questions** - Better to ask than assume
|
|
140
|
+
5. **Document as you go** - Future you will thank present you
|
|
141
|
+
|
|
142
|
+
---
|
|
143
|
+
|
|
144
|
+
*This file is automatically generated and deployed by ADF CLI.*
|
|
145
|
+
*Manual modifications are preserved but may be overwritten on next deployment.*
|
|
146
|
+
`;
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
/**
|
|
150
|
+
* Get agent role based on framework
|
|
151
|
+
*/
|
|
152
|
+
getAgentRole() {
|
|
153
|
+
const roles = {
|
|
154
|
+
'rapid': 'Rapid Development Engineer',
|
|
155
|
+
'balanced': 'Senior Software Engineer',
|
|
156
|
+
'comprehensive': 'Principal Solutions Architect'
|
|
157
|
+
};
|
|
158
|
+
return roles[this.framework] || 'AI Coding Assistant';
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
/**
|
|
162
|
+
* Get workflow description
|
|
163
|
+
*/
|
|
164
|
+
getWorkflowDescription() {
|
|
165
|
+
const descriptions = {
|
|
166
|
+
'rapid': `**Rapid Development (PRP)** - Fast iteration with core features
|
|
167
|
+
- Quick prototyping and MVP development
|
|
168
|
+
- ~20 core questions during requirements gathering
|
|
169
|
+
- Focus on getting something working quickly
|
|
170
|
+
- Agents: Developer, QA`,
|
|
171
|
+
|
|
172
|
+
'balanced': `**Balanced (Spec-Kit)** - Specification-driven development
|
|
173
|
+
- Standard project approach with detailed specs
|
|
174
|
+
- ~30+ questions for comprehensive requirements
|
|
175
|
+
- Balance between speed and thoroughness
|
|
176
|
+
- Agents: Analyst, PM, Developer, QA`,
|
|
177
|
+
|
|
178
|
+
'comprehensive': `**BMAD Comprehensive** - Enterprise-grade development
|
|
179
|
+
- Full Business Model & Architecture Documentation
|
|
180
|
+
- ~40+ questions for complete understanding
|
|
181
|
+
- Detailed planning and architectural decisions
|
|
182
|
+
- Agents: Analyst, PM, Architect, SM, Developer, QA`
|
|
183
|
+
};
|
|
184
|
+
return descriptions[this.framework] || 'Standard development workflow';
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
/**
|
|
188
|
+
* Get documentation structure based on workflow
|
|
189
|
+
*/
|
|
190
|
+
getDocumentationStructure() {
|
|
191
|
+
if (this.framework === 'rapid') {
|
|
192
|
+
return '- **PRP Document**: \`outputs/prp.md\` - Complete project requirements';
|
|
193
|
+
} else if (this.framework === 'balanced') {
|
|
194
|
+
return `- **Constitution**: \`outputs/constitution.md\` - Core principles
|
|
195
|
+
- **Specification**: \`outputs/specification.md\` - Technical specs
|
|
196
|
+
- **Plan**: \`outputs/plan.md\` - Development plan
|
|
197
|
+
- **Tasks**: \`outputs/tasks.md\` - Implementation tasks`;
|
|
198
|
+
} else {
|
|
199
|
+
return `- **PRD**: \`outputs/prd.md\` - Product Requirements Document
|
|
200
|
+
- **Architecture**: \`outputs/architecture.md\` - System design
|
|
201
|
+
- **Stories**: \`outputs/stories.md\` - User stories and epics`;
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
/**
|
|
206
|
+
* Get default requirements
|
|
207
|
+
*/
|
|
208
|
+
getDefaultRequirements() {
|
|
209
|
+
return `- Follow the ${this.framework} workflow methodology
|
|
210
|
+
- Maintain high code quality and test coverage
|
|
211
|
+
- Document all public APIs and complex logic
|
|
212
|
+
- Follow project structure and naming conventions
|
|
213
|
+
- Write meaningful commit messages`;
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
/**
|
|
217
|
+
* Get framework display name
|
|
218
|
+
*/
|
|
219
|
+
getFrameworkName() {
|
|
220
|
+
const names = {
|
|
221
|
+
'rapid': 'Rapid Development (PRP)',
|
|
222
|
+
'balanced': 'Balanced (Specification-Driven)',
|
|
223
|
+
'comprehensive': 'BMAD Comprehensive (Enterprise)'
|
|
224
|
+
};
|
|
225
|
+
return names[this.framework] || this.framework;
|
|
226
|
+
}
|
|
227
|
+
|
|
228
|
+
/**
|
|
229
|
+
* Get ADF CLI version
|
|
230
|
+
*/
|
|
231
|
+
getADFVersion() {
|
|
232
|
+
try {
|
|
233
|
+
const packageJson = require('../../package.json');
|
|
234
|
+
return packageJson.version;
|
|
235
|
+
} catch (error) {
|
|
236
|
+
return '0.12.0';
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
|
|
241
|
+
module.exports = GeminiCLIGenerator;
|
package/lib/generators/index.js
CHANGED
|
@@ -7,6 +7,11 @@ const AgentsMdGenerator = require('./agents-md-generator');
|
|
|
7
7
|
const WindsurfGenerator = require('./windsurf-generator');
|
|
8
8
|
const CursorGenerator = require('./cursor-generator');
|
|
9
9
|
const VSCodeGenerator = require('./vscode-generator');
|
|
10
|
+
const ZedGenerator = require('./zed-generator');
|
|
11
|
+
const AntigravityGenerator = require('./antigravity-generator');
|
|
12
|
+
const OpenCodeGenerator = require('./opencode-generator');
|
|
13
|
+
const GeminiCLIGenerator = require('./gemini-cli-generator');
|
|
14
|
+
const DeepAgentGenerator = require('./deepagent-generator');
|
|
10
15
|
const ToolConfigGenerator = require('./tool-config-generator');
|
|
11
16
|
|
|
12
17
|
/**
|
|
@@ -84,15 +89,65 @@ async function generateVSCode(sessionPath, projectPath, framework) {
|
|
|
84
89
|
return await generator.generate();
|
|
85
90
|
}
|
|
86
91
|
|
|
92
|
+
/**
|
|
93
|
+
* Generate Zed Editor configurations
|
|
94
|
+
*/
|
|
95
|
+
async function generateZed(sessionPath, projectPath, framework) {
|
|
96
|
+
const generator = new ZedGenerator(sessionPath, projectPath, framework);
|
|
97
|
+
return await generator.generate();
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
/**
|
|
101
|
+
* Generate Google Antigravity configurations
|
|
102
|
+
*/
|
|
103
|
+
async function generateAntigravity(sessionPath, projectPath, framework) {
|
|
104
|
+
const generator = new AntigravityGenerator(sessionPath, projectPath, framework);
|
|
105
|
+
return await generator.generate();
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
/**
|
|
109
|
+
* Generate OpenCode CLI configurations
|
|
110
|
+
*/
|
|
111
|
+
async function generateOpenCode(sessionPath, projectPath, framework) {
|
|
112
|
+
const generator = new OpenCodeGenerator(sessionPath, projectPath, framework);
|
|
113
|
+
return await generator.generate();
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
/**
|
|
117
|
+
* Generate Gemini CLI configurations
|
|
118
|
+
*/
|
|
119
|
+
async function generateGeminiCLI(sessionPath, projectPath, framework) {
|
|
120
|
+
const generator = new GeminiCLIGenerator(sessionPath, projectPath, framework);
|
|
121
|
+
return await generator.generate();
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
/**
|
|
125
|
+
* Generate DeepAgent (Abacus.ai) configurations
|
|
126
|
+
*/
|
|
127
|
+
async function generateDeepAgent(sessionPath, projectPath, framework) {
|
|
128
|
+
const generator = new DeepAgentGenerator(sessionPath, projectPath, framework);
|
|
129
|
+
return await generator.generate();
|
|
130
|
+
}
|
|
131
|
+
|
|
87
132
|
module.exports = {
|
|
88
133
|
generateAll,
|
|
89
134
|
generateAgentsMd,
|
|
90
135
|
generateWindsurf,
|
|
91
136
|
generateCursor,
|
|
92
137
|
generateVSCode,
|
|
138
|
+
generateZed,
|
|
139
|
+
generateAntigravity,
|
|
140
|
+
generateOpenCode,
|
|
141
|
+
generateGeminiCLI,
|
|
142
|
+
generateDeepAgent,
|
|
93
143
|
AgentsMdGenerator,
|
|
94
144
|
WindsurfGenerator,
|
|
95
145
|
CursorGenerator,
|
|
96
146
|
VSCodeGenerator,
|
|
147
|
+
ZedGenerator,
|
|
148
|
+
AntigravityGenerator,
|
|
149
|
+
OpenCodeGenerator,
|
|
150
|
+
GeminiCLIGenerator,
|
|
151
|
+
DeepAgentGenerator,
|
|
97
152
|
ToolConfigGenerator
|
|
98
153
|
};
|