@iservu-inc/adf-cli 0.13.0 → 0.14.0

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.
Files changed (70) hide show
  1. package/.context/memory/architecture.md +40 -0
  2. package/.context/memory/glossary.md +19 -0
  3. package/.project/docs/VERSIONING-GUIDE.md +127 -0
  4. package/AGENTS.md +53 -0
  5. package/CHANGELOG.md +47 -0
  6. package/bin/adf.js +10 -0
  7. package/conductor/archive/context_synthesis_20260112/metadata.json +8 -0
  8. package/conductor/archive/context_synthesis_20260112/plan.md +40 -0
  9. package/conductor/archive/context_synthesis_20260112/spec.md +43 -0
  10. package/conductor/archive/verify_opencode_20260111/metadata.json +8 -0
  11. package/conductor/archive/verify_opencode_20260111/plan.md +34 -0
  12. package/conductor/archive/verify_opencode_20260111/spec.md +25 -0
  13. package/conductor/code_styleguides/javascript.md +51 -0
  14. package/conductor/product-guidelines.md +26 -0
  15. package/conductor/product.md +25 -0
  16. package/conductor/setup_state.json +1 -0
  17. package/conductor/tech-stack.md +28 -0
  18. package/conductor/tracks/bootstrap_agents_20260111/metadata.json +8 -0
  19. package/conductor/tracks/bootstrap_agents_20260111/plan.md +17 -0
  20. package/conductor/tracks/bootstrap_agents_20260111/spec.md +27 -0
  21. package/conductor/tracks.md +9 -0
  22. package/conductor/workflow.md +333 -0
  23. package/lib/analysis/ai-gap-analyzer.js +66 -0
  24. package/lib/analysis/dynamic-question-generator.js +55 -0
  25. package/lib/analysis/heuristic-gap-analyzer.js +45 -0
  26. package/lib/analysis/synthesis-engine.js +142 -0
  27. package/lib/commands/deploy.js +28 -2
  28. package/lib/commands/tools.js +38 -0
  29. package/lib/generators/codex-cli-generator.js +41 -0
  30. package/lib/generators/index.js +33 -0
  31. package/lib/generators/kiro-generator.js +49 -0
  32. package/lib/generators/opencode-generator.js +332 -313
  33. package/lib/generators/trae-generator.js +34 -0
  34. package/lib/templates/scripts/analyze-framework-updates.js +361 -0
  35. package/lib/templates/scripts/build.js +608 -0
  36. package/lib/templates/scripts/check-framework-updates.js +118 -0
  37. package/lib/templates/scripts/config-helpers.js +1 -1
  38. package/lib/templates/scripts/deploy.js +13 -28
  39. package/lib/templates/scripts/init.js +110 -220
  40. package/lib/templates/scripts/postinstall.js +13 -0
  41. package/lib/templates/scripts/update-frameworks.js +28 -0
  42. package/lib/templates/scripts/validate-env.js +428 -0
  43. package/lib/templates/scripts/validate-mcp.js +471 -0
  44. package/lib/templates/scripts/validate.js +482 -0
  45. package/lib/templates/shared/agents/analyst.md +1 -1
  46. package/lib/templates/shared/agents/architect.md +13 -17
  47. package/lib/templates/shared/agents/dev.md +2 -2
  48. package/lib/templates/shared/agents/pm.md +1 -1
  49. package/lib/templates/shared/agents/qa.md +1 -1
  50. package/lib/templates/shared/agents/sm.md +2 -2
  51. package/lib/templates/shared/templates/README.md +2 -2
  52. package/lib/templates/shared/templates/openspec-proposal.md +2 -2
  53. package/lib/templates/shared/templates/prd-template.md +1 -1
  54. package/lib/templates/shared/templates/story-template.md +1 -1
  55. package/lib/utils/context-extractor.js +157 -0
  56. package/lib/utils/framework-detector.js +54 -0
  57. package/lib/utils/tool-feature-registry.js +102 -0
  58. package/package.json +1 -1
  59. package/tests/ai-gap-analyzer.test.js +38 -0
  60. package/tests/codex-cli-generator.test.js +29 -0
  61. package/tests/context-extractor.test.js +70 -0
  62. package/tests/deploy-integration.test.js +36 -0
  63. package/tests/deploy.test.js +57 -0
  64. package/tests/dynamic-question-generator.test.js +29 -0
  65. package/tests/framework-detector.test.js +55 -0
  66. package/tests/heuristic-gap-analyzer.test.js +46 -0
  67. package/tests/kiro-trae-generators.test.js +43 -0
  68. package/tests/opencode-generator.test.js +113 -0
  69. package/tests/synthesis-engine.test.js +52 -0
  70. package/tests/tool-feature-registry.test.js +23 -0
@@ -11,7 +11,10 @@ const {
11
11
  generateAntigravity,
12
12
  generateOpenCode,
13
13
  generateGeminiCLI,
14
- generateDeepAgent
14
+ generateDeepAgent,
15
+ generateKiro,
16
+ generateTrae,
17
+ generateCodexCLI
15
18
  } = require('../generators');
16
19
  const ContextManager = require('../utils/context-manager');
17
20
 
@@ -23,12 +26,15 @@ const TOOLS = {
23
26
  'vscode-insider': { name: 'VS Code Insider', configFile: '.vscode-insider/settings.json' },
24
27
  zed: { name: 'Zed Editor', configFile: '.zed/settings.json' },
25
28
  antigravity: { name: 'Google Antigravity', configFile: '.antigravity/agents.yaml' },
29
+ kiro: { name: 'Kiro', configFile: '.kiro/' },
30
+ trae: { name: 'Trae', configFile: '.trae/config.json' },
26
31
 
27
32
  // CLI Tools
28
33
  'claude-code': { name: 'Claude Code', configFile: '.framework/agents/' },
29
34
  'opencode': { name: 'OpenCode CLI', configFile: '.opencode.json' },
30
35
  'gemini-cli': { name: 'Gemini CLI', configFile: 'GEMINI.md' },
31
36
  'deepagent': { name: 'DeepAgent (Abacus.ai)', configFile: '.deepagent/agents/' },
37
+ 'codex-cli': { name: 'Codex CLI', configFile: '.codex/config.toml' },
32
38
 
33
39
  // Generic
34
40
  generic: { name: 'Generic AI Tools', configFile: '.framework/agents/' }
@@ -202,7 +208,7 @@ async function deployToTool(tool, options = {}) {
202
208
  generatedFiles = await generateOpenCode(sessionPath, cwd, framework);
203
209
  if (!options.silent && !spinner) {
204
210
  console.log(chalk.green('✓ Generated OpenCode CLI configurations'));
205
- console.log(chalk.gray(` - .opencode.json (project config, agents, MCP servers)`));
211
+ console.log(chalk.gray(` - opencode.json (project config, agents, MCP servers)`));
206
212
  }
207
213
  } else if (tool === 'gemini-cli') {
208
214
  generatedFiles = await generateGeminiCLI(sessionPath, cwd, framework);
@@ -217,6 +223,26 @@ async function deployToTool(tool, options = {}) {
217
223
  console.log(chalk.gray(` - .deepagent/agents/ (agent markdown files)`));
218
224
  console.log(chalk.gray(` - .deepagent/README.md (project overview)`));
219
225
  }
226
+ } else if (tool === 'kiro') {
227
+ generatedFiles = await generateKiro(sessionPath, cwd, framework);
228
+ if (!options.silent && !spinner) {
229
+ console.log(chalk.green('✓ Generated Kiro configurations'));
230
+ console.log(chalk.gray(` - .kiro/product.md`));
231
+ console.log(chalk.gray(` - .kiro/technical.md`));
232
+ }
233
+ } else if (tool === 'trae') {
234
+ generatedFiles = await generateTrae(sessionPath, cwd, framework);
235
+ if (!options.silent && !spinner) {
236
+ console.log(chalk.green('✓ Generated Trae configurations'));
237
+ console.log(chalk.gray(` - .trae/config.json`));
238
+ }
239
+ } else if (tool === 'codex-cli') {
240
+ generatedFiles = await generateCodexCLI(sessionPath, cwd, framework);
241
+ if (!options.silent && !spinner) {
242
+ console.log(chalk.green('✓ Generated Codex CLI configurations'));
243
+ console.log(chalk.gray(` - .codex/config.toml`));
244
+ console.log(chalk.gray(` - .codex/instructions.md`));
245
+ }
220
246
  }
221
247
  } catch (error) {
222
248
  console.warn(chalk.yellow(`\n⚠️ Warning: Could not generate ${TOOLS[tool]?.name || tool} configurations: ${error.message}`));
@@ -0,0 +1,38 @@
1
+ const chalk = require('chalk');
2
+ const ToolFeatureRegistry = require('../utils/tool-feature-registry');
3
+
4
+ /**
5
+ * Tools Audit Command
6
+ * Displays a report of supported tools and their features.
7
+ */
8
+ async function audit() {
9
+ const report = ToolFeatureRegistry.audit();
10
+
11
+ console.log(chalk.cyan.bold('\n🛠️ ADF Tool Support Audit\n'));
12
+ console.log(chalk.gray(`Total Tools: ${report.totalCount}`));
13
+ console.log(chalk.gray(`Timestamp: ${new Date(report.timestamp).toLocaleString()}\n`));
14
+
15
+ console.log(chalk.white.bold('ID'.padEnd(15)) + chalk.white.bold('Name'.padEnd(20)) + chalk.white.bold('Status'));
16
+ console.log(chalk.gray('─'.repeat(50)));
17
+
18
+ for (const [id, tool] of Object.entries(report.tools)) {
19
+ let statusColor = chalk.green;
20
+ if (tool.status === 'partial') statusColor = chalk.yellow;
21
+ if (tool.status === 'deprecated') statusColor = chalk.red;
22
+
23
+ console.log(
24
+ chalk.cyan(id.padEnd(15)) +
25
+ chalk.white(tool.name.padEnd(20)) +
26
+ statusColor(tool.status)
27
+ );
28
+
29
+ if (tool.features && tool.features.length > 0) {
30
+ console.log(chalk.gray(` Features: ${tool.features.join(', ')}`));
31
+ }
32
+ console.log('');
33
+ }
34
+
35
+ console.log(chalk.yellow('💡 Use "adf deploy <tool>" to configure any of these targets.\n'));
36
+ }
37
+
38
+ module.exports = audit;
@@ -0,0 +1,41 @@
1
+ const ToolConfigGenerator = require('./tool-config-generator');
2
+ const path = require('path');
3
+ const fs = require('fs-extra');
4
+
5
+ /**
6
+ * Generator for Codex CLI
7
+ */
8
+ class CodexCLIGenerator extends ToolConfigGenerator {
9
+ async generate() {
10
+ await this.initialize();
11
+ await this.ensureDir('.codex');
12
+
13
+ const projectContext = await this.getProjectContext();
14
+
15
+ const config = `# Codex CLI Configuration
16
+ # AgentDevFramework
17
+
18
+ [framework]
19
+ name = "AgentDevFramework"
20
+ version = "1.0.0"
21
+ project = "${projectContext.name}"
22
+
23
+ [project_structure]
24
+ framework = ".adf/"
25
+ docs = "docs/"
26
+ specs = "specs/"
27
+ `;
28
+
29
+ await this.writeToProject('.codex/config.toml', config);
30
+
31
+ const instructions = `# Codex Instructions - ${projectContext.name}
32
+ Follow AgentDevFramework standards for all development.
33
+ Always prioritize TDD and high code coverage.
34
+ `;
35
+ await this.writeToProject('.codex/instructions.md', instructions);
36
+
37
+ return { config: '.codex/config.toml' };
38
+ }
39
+ }
40
+
41
+ module.exports = CodexCLIGenerator;
@@ -12,6 +12,9 @@ const AntigravityGenerator = require('./antigravity-generator');
12
12
  const OpenCodeGenerator = require('./opencode-generator');
13
13
  const GeminiCLIGenerator = require('./gemini-cli-generator');
14
14
  const DeepAgentGenerator = require('./deepagent-generator');
15
+ const KiroGenerator = require('./kiro-generator');
16
+ const TraeGenerator = require('./trae-generator');
17
+ const CodexCLIGenerator = require('./codex-cli-generator');
15
18
  const ToolConfigGenerator = require('./tool-config-generator');
16
19
 
17
20
  /**
@@ -129,6 +132,30 @@ async function generateDeepAgent(sessionPath, projectPath, framework) {
129
132
  return await generator.generate();
130
133
  }
131
134
 
135
+ /**
136
+ * Generate Kiro configurations
137
+ */
138
+ async function generateKiro(sessionPath, projectPath, framework) {
139
+ const generator = new KiroGenerator(sessionPath, projectPath, framework);
140
+ return await generator.generate();
141
+ }
142
+
143
+ /**
144
+ * Generate Trae configurations
145
+ */
146
+ async function generateTrae(sessionPath, projectPath, framework) {
147
+ const generator = new TraeGenerator(sessionPath, projectPath, framework);
148
+ return await generator.generate();
149
+ }
150
+
151
+ /**
152
+ * Generate Codex CLI configurations
153
+ */
154
+ async function generateCodexCLI(sessionPath, projectPath, framework) {
155
+ const generator = new CodexCLIGenerator(sessionPath, projectPath, framework);
156
+ return await generator.generate();
157
+ }
158
+
132
159
  module.exports = {
133
160
  generateAll,
134
161
  generateAgentsMd,
@@ -140,6 +167,9 @@ module.exports = {
140
167
  generateOpenCode,
141
168
  generateGeminiCLI,
142
169
  generateDeepAgent,
170
+ generateKiro,
171
+ generateTrae,
172
+ generateCodexCLI,
143
173
  AgentsMdGenerator,
144
174
  WindsurfGenerator,
145
175
  CursorGenerator,
@@ -149,5 +179,8 @@ module.exports = {
149
179
  OpenCodeGenerator,
150
180
  GeminiCLIGenerator,
151
181
  DeepAgentGenerator,
182
+ KiroGenerator,
183
+ TraeGenerator,
184
+ CodexCLIGenerator,
152
185
  ToolConfigGenerator
153
186
  };
@@ -0,0 +1,49 @@
1
+ const ToolConfigGenerator = require('./tool-config-generator');
2
+ const path = require('path');
3
+ const fs = require('fs-extra');
4
+
5
+ /**
6
+ * Generator for Kiro (AI Code Editor)
7
+ */
8
+ class KiroGenerator extends ToolConfigGenerator {
9
+ async generate() {
10
+ await this.initialize();
11
+ await this.ensureDir('.kiro');
12
+
13
+ const projectContext = await this.getProjectContext();
14
+ const frameworkContext = await this.getFrameworkContext();
15
+
16
+ // Generate product.md
17
+ const productContent = `# Kiro Product Configuration - ${projectContext.name}
18
+
19
+ ## Project Overview
20
+ ${projectContext.overview || 'AI-assisted development project.'}
21
+
22
+ ## Key Requirements
23
+ ${frameworkContext.keyPoints || 'Follow ADF standards.'}
24
+
25
+ ## Session Context
26
+ - Framework: ${this.framework}
27
+ - Session ID: ${this.getSessionId()}
28
+ `;
29
+ await this.writeToProject('.kiro/product.md', productContent);
30
+
31
+ // Generate technical.md
32
+ const technicalContent = `# Kiro Technical Configuration - ${projectContext.name}
33
+
34
+ ## Tech Stack
35
+ - Build: ${projectContext.buildCommand}
36
+ - Test: ${projectContext.testCommand}
37
+ - Lint: ${projectContext.lintCommand}
38
+
39
+ ## Structure
40
+ - Source: ${projectContext.sourceDir}
41
+ - Tests: ${projectContext.testDir}
42
+ `;
43
+ await this.writeToProject('.kiro/technical.md', technicalContent);
44
+
45
+ return { config: '.kiro/' };
46
+ }
47
+ }
48
+
49
+ module.exports = KiroGenerator;