@zik000/archai 0.1.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.
- package/README.md +378 -0
- package/dist/bin/cli.d.ts +3 -0
- package/dist/bin/cli.d.ts.map +1 -0
- package/dist/bin/cli.js +28 -0
- package/dist/bin/cli.js.map +1 -0
- package/dist/commands/doctor.d.ts +2 -0
- package/dist/commands/doctor.d.ts.map +1 -0
- package/dist/commands/doctor.js +128 -0
- package/dist/commands/doctor.js.map +1 -0
- package/dist/commands/generate.d.ts +7 -0
- package/dist/commands/generate.d.ts.map +1 -0
- package/dist/commands/generate.js +165 -0
- package/dist/commands/generate.js.map +1 -0
- package/dist/commands/init.d.ts +7 -0
- package/dist/commands/init.d.ts.map +1 -0
- package/dist/commands/init.js +160 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/generator/claude-cli.d.ts +19 -0
- package/dist/generator/claude-cli.d.ts.map +1 -0
- package/dist/generator/claude-cli.js +168 -0
- package/dist/generator/claude-cli.js.map +1 -0
- package/dist/generator/prompt-builder.d.ts +18 -0
- package/dist/generator/prompt-builder.d.ts.map +1 -0
- package/dist/generator/prompt-builder.js +122 -0
- package/dist/generator/prompt-builder.js.map +1 -0
- package/dist/index.d.ts +13 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +15 -0
- package/dist/index.js.map +1 -0
- package/dist/scaffold/copy-core-agents.d.ts +2 -0
- package/dist/scaffold/copy-core-agents.d.ts.map +1 -0
- package/dist/scaffold/copy-core-agents.js +74 -0
- package/dist/scaffold/copy-core-agents.js.map +1 -0
- package/dist/scaffold/create-config.d.ts +12 -0
- package/dist/scaffold/create-config.d.ts.map +1 -0
- package/dist/scaffold/create-config.js +154 -0
- package/dist/scaffold/create-config.js.map +1 -0
- package/dist/scaffold/create-project-description.d.ts +12 -0
- package/dist/scaffold/create-project-description.d.ts.map +1 -0
- package/dist/scaffold/create-project-description.js +104 -0
- package/dist/scaffold/create-project-description.js.map +1 -0
- package/dist/scaffold/create-structure.d.ts +2 -0
- package/dist/scaffold/create-structure.d.ts.map +1 -0
- package/dist/scaffold/create-structure.js +146 -0
- package/dist/scaffold/create-structure.js.map +1 -0
- package/dist/utils/detect-project.d.ts +11 -0
- package/dist/utils/detect-project.d.ts.map +1 -0
- package/dist/utils/detect-project.js +124 -0
- package/dist/utils/detect-project.js.map +1 -0
- package/dist/utils/logger.d.ts +10 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +30 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/validate-config.d.ts +23 -0
- package/dist/utils/validate-config.d.ts.map +1 -0
- package/dist/utils/validate-config.js +109 -0
- package/dist/utils/validate-config.js.map +1 -0
- package/package.json +59 -0
- package/templates/ARCHAI_README.md +326 -0
- package/templates/PROMPTS.md +480 -0
- package/templates/core-agents/cleanup-agent.md +132 -0
- package/templates/core-agents/code-reviewer.md +191 -0
- package/templates/core-agents/deep-analyst.md +170 -0
- package/templates/core-agents/finalization-agent.md +175 -0
- package/templates/core-agents/implementation-agent.md +173 -0
- package/templates/core-agents/iteration-controller.md +320 -0
- package/templates/core-agents/plan-validator.md +125 -0
- package/templates/core-agents/task-orchestrator.md +191 -0
- package/templates/core-agents/tdd-designer.md +205 -0
- package/templates/specialist-meta.md +275 -0
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
import chalk from 'chalk';
|
|
2
|
+
import ora from 'ora';
|
|
3
|
+
import fs from 'fs-extra';
|
|
4
|
+
import inquirer from 'inquirer';
|
|
5
|
+
import { logger } from '../utils/logger.js';
|
|
6
|
+
import { validateConfig } from '../utils/validate-config.js';
|
|
7
|
+
import { buildGenerationPrompt } from '../generator/prompt-builder.js';
|
|
8
|
+
import { runClaudeCli, checkClaudeCliAvailable } from '../generator/claude-cli.js';
|
|
9
|
+
export async function generate(options) {
|
|
10
|
+
logger.banner();
|
|
11
|
+
// Check prerequisites
|
|
12
|
+
const configExists = await fs.pathExists('archai.config.md');
|
|
13
|
+
if (!configExists) {
|
|
14
|
+
logger.error('archai.config.md not found.');
|
|
15
|
+
logger.info('Run "archai init" first to set up the project.');
|
|
16
|
+
return;
|
|
17
|
+
}
|
|
18
|
+
const descriptionExists = await fs.pathExists('.knowledge/context/project-description.md');
|
|
19
|
+
if (!descriptionExists) {
|
|
20
|
+
logger.error('.knowledge/context/project-description.md not found.');
|
|
21
|
+
logger.info('Run "archai init" first to set up the project.');
|
|
22
|
+
return;
|
|
23
|
+
}
|
|
24
|
+
// Check Claude CLI availability
|
|
25
|
+
if (!checkClaudeCliAvailable()) {
|
|
26
|
+
logger.error('Claude Code CLI not found.');
|
|
27
|
+
console.log('');
|
|
28
|
+
console.log(chalk.white('To install Claude Code CLI:'));
|
|
29
|
+
console.log(chalk.cyan(' 1. Visit https://claude.ai/code'));
|
|
30
|
+
console.log(chalk.cyan(' 2. Download and install the CLI'));
|
|
31
|
+
console.log(chalk.cyan(' 3. Run "claude" to authenticate'));
|
|
32
|
+
console.log('');
|
|
33
|
+
return;
|
|
34
|
+
}
|
|
35
|
+
// Validate config
|
|
36
|
+
const spinner = ora('Validating configuration...').start();
|
|
37
|
+
const validation = await validateConfig();
|
|
38
|
+
if (!validation.valid) {
|
|
39
|
+
spinner.fail('Configuration has errors');
|
|
40
|
+
validation.errors.forEach(err => logger.error(` ${err}`));
|
|
41
|
+
return;
|
|
42
|
+
}
|
|
43
|
+
spinner.succeed('Configuration valid');
|
|
44
|
+
// Check if project description has been filled in
|
|
45
|
+
const description = await fs.readFile('.knowledge/context/project-description.md', 'utf-8');
|
|
46
|
+
if (description.includes('[Project Name]') || description.includes('[What does this project do')) {
|
|
47
|
+
logger.warn('Project description appears to have placeholder text.');
|
|
48
|
+
logger.info('Fill in .knowledge/context/project-description.md for better specialist generation.');
|
|
49
|
+
console.log('');
|
|
50
|
+
}
|
|
51
|
+
// Check for specialists to generate
|
|
52
|
+
if (!validation.config.specialists || validation.config.specialists.length === 0) {
|
|
53
|
+
logger.warn('No specialists defined in configuration.');
|
|
54
|
+
console.log('');
|
|
55
|
+
console.log(chalk.white('Add specialists to archai.config.md under "## Specialists to Generate":'));
|
|
56
|
+
console.log(chalk.gray(`
|
|
57
|
+
### 1. frontend
|
|
58
|
+
**Focus:** React components and UI
|
|
59
|
+
**Key Concerns:**
|
|
60
|
+
- Component patterns
|
|
61
|
+
- State management
|
|
62
|
+
|
|
63
|
+
### 2. backend
|
|
64
|
+
**Focus:** API and server logic
|
|
65
|
+
**Key Concerns:**
|
|
66
|
+
- REST endpoints
|
|
67
|
+
- Database queries
|
|
68
|
+
`));
|
|
69
|
+
return;
|
|
70
|
+
}
|
|
71
|
+
console.log('');
|
|
72
|
+
logger.section('Specialists to Generate');
|
|
73
|
+
console.log('');
|
|
74
|
+
validation.config.specialists.forEach((s) => {
|
|
75
|
+
console.log(chalk.white(` • ${s.name}-specialist`));
|
|
76
|
+
console.log(chalk.gray(` Focus: ${s.focus}`));
|
|
77
|
+
if (s.key_concerns?.length > 0) {
|
|
78
|
+
console.log(chalk.gray(` Concerns: ${s.key_concerns.join(', ')}`));
|
|
79
|
+
}
|
|
80
|
+
});
|
|
81
|
+
console.log('');
|
|
82
|
+
if (options.dryRun) {
|
|
83
|
+
logger.info('Dry run mode - showing prompt preview');
|
|
84
|
+
console.log('');
|
|
85
|
+
logger.section('Generation Prompt Preview');
|
|
86
|
+
console.log('');
|
|
87
|
+
const prompt = await buildGenerationPrompt(validation.config, validation.config.specialists[0]);
|
|
88
|
+
console.log(chalk.gray(prompt.substring(0, 1000) + '\n... [truncated]'));
|
|
89
|
+
return;
|
|
90
|
+
}
|
|
91
|
+
// Confirm before generation
|
|
92
|
+
if (!options.yes) {
|
|
93
|
+
console.log(chalk.yellow('⚠ This will use Claude Code CLI to generate specialist agents.'));
|
|
94
|
+
console.log(chalk.yellow(' Each specialist takes ~30-60 seconds to generate.'));
|
|
95
|
+
console.log('');
|
|
96
|
+
const { proceed } = await inquirer.prompt([{
|
|
97
|
+
type: 'confirm',
|
|
98
|
+
name: 'proceed',
|
|
99
|
+
message: 'Proceed with generation?',
|
|
100
|
+
default: true
|
|
101
|
+
}]);
|
|
102
|
+
if (!proceed) {
|
|
103
|
+
logger.info('Generation cancelled.');
|
|
104
|
+
return;
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
// Generate specialists using Claude Code CLI
|
|
108
|
+
console.log('');
|
|
109
|
+
logger.section('Generating Specialists');
|
|
110
|
+
console.log('');
|
|
111
|
+
let successCount = 0;
|
|
112
|
+
let failCount = 0;
|
|
113
|
+
for (const specialist of validation.config.specialists) {
|
|
114
|
+
const specSpinner = ora({
|
|
115
|
+
text: `Generating ${specialist.name}-specialist...`,
|
|
116
|
+
color: 'cyan'
|
|
117
|
+
}).start();
|
|
118
|
+
try {
|
|
119
|
+
const prompt = await buildGenerationPrompt(validation.config, specialist);
|
|
120
|
+
const result = await runClaudeCli(prompt);
|
|
121
|
+
// Validate the result looks like an agent definition
|
|
122
|
+
if (!result.includes('---') || !result.includes('name:')) {
|
|
123
|
+
throw new Error('Generated content does not appear to be a valid agent definition');
|
|
124
|
+
}
|
|
125
|
+
// Write the generated specialist
|
|
126
|
+
const outputPath = `.claude/agents/${specialist.name}-specialist.md`;
|
|
127
|
+
await fs.writeFile(outputPath, result);
|
|
128
|
+
specSpinner.succeed(`Generated ${specialist.name}-specialist → ${outputPath}`);
|
|
129
|
+
successCount++;
|
|
130
|
+
}
|
|
131
|
+
catch (error) {
|
|
132
|
+
specSpinner.fail(`Failed to generate ${specialist.name}-specialist`);
|
|
133
|
+
const errorMsg = error instanceof Error ? error.message : 'Unknown error';
|
|
134
|
+
console.log(chalk.red(` Error: ${errorMsg}`));
|
|
135
|
+
failCount++;
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
// Summary
|
|
139
|
+
console.log('');
|
|
140
|
+
logger.divider();
|
|
141
|
+
console.log('');
|
|
142
|
+
if (failCount === 0) {
|
|
143
|
+
logger.success(`All ${successCount} specialists generated successfully!`);
|
|
144
|
+
}
|
|
145
|
+
else if (successCount > 0) {
|
|
146
|
+
logger.warn(`Generated ${successCount} specialists, ${failCount} failed.`);
|
|
147
|
+
}
|
|
148
|
+
else {
|
|
149
|
+
logger.error('All specialist generations failed.');
|
|
150
|
+
console.log('');
|
|
151
|
+
console.log(chalk.white('Troubleshooting:'));
|
|
152
|
+
console.log(chalk.gray(' 1. Ensure Claude Code CLI is authenticated: run "claude" first'));
|
|
153
|
+
console.log(chalk.gray(' 2. Check your internet connection'));
|
|
154
|
+
console.log(chalk.gray(' 3. Try running with --dry-run to see the prompt'));
|
|
155
|
+
return;
|
|
156
|
+
}
|
|
157
|
+
console.log('');
|
|
158
|
+
console.log(chalk.white('Your agent system is ready! To start working:'));
|
|
159
|
+
console.log(chalk.cyan(' → Open Claude Code in this directory'));
|
|
160
|
+
console.log(chalk.cyan(' → Use: "Use iteration-controller for: [your task]"'));
|
|
161
|
+
console.log('');
|
|
162
|
+
console.log(chalk.gray('Run "archai doctor" to verify your setup.'));
|
|
163
|
+
console.log('');
|
|
164
|
+
}
|
|
165
|
+
//# sourceMappingURL=generate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generate.js","sourceRoot":"","sources":["../../src/commands/generate.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAUA,UAAU,WAAW;IACnB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAiCD,wBAAsB,IAAI,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAyI9D"}
|
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
import inquirer from 'inquirer';
|
|
2
|
+
import chalk from 'chalk';
|
|
3
|
+
import ora from 'ora';
|
|
4
|
+
import { scaffoldProject } from '../scaffold/create-structure.js';
|
|
5
|
+
import { copyCoreAgents } from '../scaffold/copy-core-agents.js';
|
|
6
|
+
import { createConfigTemplate } from '../scaffold/create-config.js';
|
|
7
|
+
import { createProjectDescription } from '../scaffold/create-project-description.js';
|
|
8
|
+
import { detectProject } from '../utils/detect-project.js';
|
|
9
|
+
import { logger } from '../utils/logger.js';
|
|
10
|
+
const PROJECT_TYPES = [
|
|
11
|
+
{ name: 'Web Application (frontend/backend/fullstack)', value: 'web' },
|
|
12
|
+
{ name: 'Mobile Application', value: 'mobile' },
|
|
13
|
+
{ name: 'CLI Tool / Library', value: 'cli' },
|
|
14
|
+
{ name: 'Game', value: 'game' },
|
|
15
|
+
{ name: 'Data Science / ML', value: 'ml' },
|
|
16
|
+
{ name: 'DevOps / Infrastructure', value: 'devops' },
|
|
17
|
+
{ name: 'Other', value: 'other' },
|
|
18
|
+
];
|
|
19
|
+
const PACKAGE_MANAGERS = [
|
|
20
|
+
{ name: 'npm', value: 'npm' },
|
|
21
|
+
{ name: 'pnpm', value: 'pnpm' },
|
|
22
|
+
{ name: 'yarn', value: 'yarn' },
|
|
23
|
+
{ name: 'bun', value: 'bun' },
|
|
24
|
+
{ name: 'pip (Python)', value: 'pip' },
|
|
25
|
+
{ name: 'cargo (Rust)', value: 'cargo' },
|
|
26
|
+
{ name: 'go mod (Go)', value: 'go' },
|
|
27
|
+
{ name: 'Other / None', value: 'other' },
|
|
28
|
+
];
|
|
29
|
+
export async function init(options) {
|
|
30
|
+
logger.banner();
|
|
31
|
+
// Check for existing setup
|
|
32
|
+
const hasExisting = await checkExistingSetup();
|
|
33
|
+
if (hasExisting && !options.force) {
|
|
34
|
+
logger.warn('archai is already initialized in this directory.');
|
|
35
|
+
logger.info('Use --force to overwrite existing configuration.');
|
|
36
|
+
return;
|
|
37
|
+
}
|
|
38
|
+
// Detect project info
|
|
39
|
+
const spinner = ora('Detecting project information...').start();
|
|
40
|
+
const detected = await detectProject();
|
|
41
|
+
spinner.succeed('Project detected');
|
|
42
|
+
if (detected.languages.length > 0) {
|
|
43
|
+
logger.info(`Found: ${detected.languages.join(', ')}`);
|
|
44
|
+
}
|
|
45
|
+
let answers;
|
|
46
|
+
if (options.skipWizard) {
|
|
47
|
+
// Only use detected values, don't assume defaults
|
|
48
|
+
// This allows TODO placeholders to appear for undetected fields
|
|
49
|
+
answers = {
|
|
50
|
+
projectName: detected.name || 'my-project',
|
|
51
|
+
projectType: detected.languages.length > 0 ? 'web' : '', // Only assume web if we detected languages
|
|
52
|
+
languages: detected.languages.join(', ') || '',
|
|
53
|
+
frameworks: detected.frameworks?.join(', ') || '',
|
|
54
|
+
testFramework: detected.testFramework || '',
|
|
55
|
+
isMonorepo: detected.isMonorepo,
|
|
56
|
+
packageManager: detected.packageManager || '',
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
else {
|
|
60
|
+
// Interactive wizard
|
|
61
|
+
console.log('');
|
|
62
|
+
logger.section('Project Setup');
|
|
63
|
+
console.log(chalk.gray(' (Press Enter to skip questions you\'re unsure about)'));
|
|
64
|
+
console.log('');
|
|
65
|
+
answers = await inquirer.prompt([
|
|
66
|
+
{
|
|
67
|
+
type: 'input',
|
|
68
|
+
name: 'projectName',
|
|
69
|
+
message: '1. Project name:',
|
|
70
|
+
default: detected.name || 'my-project',
|
|
71
|
+
},
|
|
72
|
+
{
|
|
73
|
+
type: 'list',
|
|
74
|
+
name: 'projectType',
|
|
75
|
+
message: '2. What type of project is this?',
|
|
76
|
+
choices: [...PROJECT_TYPES, { name: 'Skip (decide later)', value: '' }],
|
|
77
|
+
},
|
|
78
|
+
{
|
|
79
|
+
type: 'input',
|
|
80
|
+
name: 'languages',
|
|
81
|
+
message: '3. Primary programming language(s):',
|
|
82
|
+
default: detected.languages.join(', ') || '',
|
|
83
|
+
},
|
|
84
|
+
{
|
|
85
|
+
type: 'input',
|
|
86
|
+
name: 'frameworks',
|
|
87
|
+
message: '4. Main frameworks/libraries (skip if unsure):',
|
|
88
|
+
default: detected.frameworks?.join(', ') || '',
|
|
89
|
+
},
|
|
90
|
+
{
|
|
91
|
+
type: 'input',
|
|
92
|
+
name: 'testFramework',
|
|
93
|
+
message: '5. Testing framework (skip if unsure):',
|
|
94
|
+
default: detected.testFramework || '',
|
|
95
|
+
},
|
|
96
|
+
{
|
|
97
|
+
type: 'confirm',
|
|
98
|
+
name: 'isMonorepo',
|
|
99
|
+
message: '6. Do you use a monorepo structure?',
|
|
100
|
+
default: detected.isMonorepo,
|
|
101
|
+
},
|
|
102
|
+
{
|
|
103
|
+
type: 'list',
|
|
104
|
+
name: 'packageManager',
|
|
105
|
+
message: '7. What\'s your package manager / build tool?',
|
|
106
|
+
choices: [...PACKAGE_MANAGERS, { name: 'Skip (decide later)', value: '' }],
|
|
107
|
+
default: detected.packageManager || 'npm',
|
|
108
|
+
},
|
|
109
|
+
]);
|
|
110
|
+
}
|
|
111
|
+
console.log('');
|
|
112
|
+
logger.section('Creating Agent System');
|
|
113
|
+
console.log('');
|
|
114
|
+
// Create folder structure
|
|
115
|
+
const structureSpinner = ora('Creating folder structure...').start();
|
|
116
|
+
await scaffoldProject();
|
|
117
|
+
structureSpinner.succeed('Created folder structure');
|
|
118
|
+
// Copy core agents
|
|
119
|
+
const agentsSpinner = ora('Installing core agents (9 agents)...').start();
|
|
120
|
+
await copyCoreAgents();
|
|
121
|
+
agentsSpinner.succeed('Installed core agents');
|
|
122
|
+
// Create config template
|
|
123
|
+
const configSpinner = ora('Creating configuration template...').start();
|
|
124
|
+
await createConfigTemplate(answers);
|
|
125
|
+
configSpinner.succeed('Created archai.config.md');
|
|
126
|
+
// Create project description template
|
|
127
|
+
const descSpinner = ora('Creating project description template...').start();
|
|
128
|
+
await createProjectDescription(answers);
|
|
129
|
+
descSpinner.succeed('Created project-description.md');
|
|
130
|
+
// Final output
|
|
131
|
+
console.log('');
|
|
132
|
+
logger.divider();
|
|
133
|
+
console.log('');
|
|
134
|
+
logger.success('archai initialized successfully!');
|
|
135
|
+
console.log('');
|
|
136
|
+
logger.section('Next Steps');
|
|
137
|
+
console.log('');
|
|
138
|
+
console.log(chalk.white('1. Fill in the project description:'));
|
|
139
|
+
console.log(chalk.cyan(' → .knowledge/context/project-description.md'));
|
|
140
|
+
console.log('');
|
|
141
|
+
console.log(chalk.white('2. Complete the configuration:'));
|
|
142
|
+
console.log(chalk.cyan(' → archai.config.md'));
|
|
143
|
+
console.log('');
|
|
144
|
+
console.log(chalk.white('3. Generate specialist agents:'));
|
|
145
|
+
console.log(chalk.cyan(' → archai generate'));
|
|
146
|
+
console.log('');
|
|
147
|
+
console.log(chalk.gray(' (This will use Claude Code to create project-specific specialists)'));
|
|
148
|
+
console.log('');
|
|
149
|
+
console.log(chalk.white('4. Read the usage guide:'));
|
|
150
|
+
console.log(chalk.cyan(' → ARCHAI_README.md'));
|
|
151
|
+
console.log('');
|
|
152
|
+
console.log(chalk.white('5. See prompt examples:'));
|
|
153
|
+
console.log(chalk.cyan(' → PROMPTS.md'));
|
|
154
|
+
console.log('');
|
|
155
|
+
}
|
|
156
|
+
async function checkExistingSetup() {
|
|
157
|
+
const fs = await import('fs-extra');
|
|
158
|
+
return fs.pathExists('.claude/agents');
|
|
159
|
+
}
|
|
160
|
+
//# sourceMappingURL=init.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Run Claude Code CLI with a prompt and return the output.
|
|
3
|
+
* Uses the -p flag for non-interactive mode.
|
|
4
|
+
*/
|
|
5
|
+
export declare function runClaudeCli(prompt: string): Promise<string>;
|
|
6
|
+
/**
|
|
7
|
+
* Run Claude CLI with a prompt file (alternative approach).
|
|
8
|
+
* Useful when the prompt is very long.
|
|
9
|
+
*/
|
|
10
|
+
export declare function runClaudeCliWithFile(promptFile: string): Promise<string>;
|
|
11
|
+
/**
|
|
12
|
+
* Check if Claude Code CLI is installed and authenticated.
|
|
13
|
+
*/
|
|
14
|
+
export declare function checkClaudeCliAvailable(): boolean;
|
|
15
|
+
/**
|
|
16
|
+
* Get Claude Code CLI version.
|
|
17
|
+
*/
|
|
18
|
+
export declare function getClaudeVersion(): string | null;
|
|
19
|
+
//# sourceMappingURL=claude-cli.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"claude-cli.d.ts","sourceRoot":"","sources":["../../src/generator/claude-cli.ts"],"names":[],"mappings":"AAKA;;;GAGG;AACH,wBAAsB,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAgDlE;AAED;;;GAGG;AACH,wBAAsB,oBAAoB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CA4B9E;AAqED;;GAEG;AACH,wBAAgB,uBAAuB,IAAI,OAAO,CAWjD;AAED;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,MAAM,GAAG,IAAI,CAchD"}
|
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
import { spawnSync } from 'child_process';
|
|
2
|
+
import fs from 'fs-extra';
|
|
3
|
+
import path from 'path';
|
|
4
|
+
import os from 'os';
|
|
5
|
+
/**
|
|
6
|
+
* Run Claude Code CLI with a prompt and return the output.
|
|
7
|
+
* Uses the -p flag for non-interactive mode.
|
|
8
|
+
*/
|
|
9
|
+
export async function runClaudeCli(prompt) {
|
|
10
|
+
// Check if Claude CLI is available
|
|
11
|
+
if (!checkClaudeCliAvailable()) {
|
|
12
|
+
throw new Error('Claude Code CLI not found. Please install it from https://claude.ai/code and authenticate.');
|
|
13
|
+
}
|
|
14
|
+
// Write prompt to a temporary file to avoid shell escaping issues
|
|
15
|
+
const tempDir = os.tmpdir();
|
|
16
|
+
const promptFile = path.join(tempDir, `archai-prompt-${Date.now()}.txt`);
|
|
17
|
+
try {
|
|
18
|
+
await fs.writeFile(promptFile, prompt);
|
|
19
|
+
// Run Claude with -p flag for non-interactive prompt mode
|
|
20
|
+
// Read prompt from file to avoid escaping issues
|
|
21
|
+
const promptContent = await fs.readFile(promptFile, 'utf-8');
|
|
22
|
+
const result = spawnSync('claude', [
|
|
23
|
+
'-p', promptContent,
|
|
24
|
+
'--output-format', 'text'
|
|
25
|
+
], {
|
|
26
|
+
encoding: 'utf-8',
|
|
27
|
+
maxBuffer: 1024 * 1024 * 50, // 50MB buffer for large outputs
|
|
28
|
+
timeout: 300000, // 5 minute timeout for complex generation
|
|
29
|
+
windowsHide: true,
|
|
30
|
+
});
|
|
31
|
+
if (result.error) {
|
|
32
|
+
throw new Error(`Claude CLI error: ${result.error.message}`);
|
|
33
|
+
}
|
|
34
|
+
if (result.status !== 0) {
|
|
35
|
+
const errorMsg = result.stderr || 'Unknown error';
|
|
36
|
+
throw new Error(`Claude CLI exited with code ${result.status}: ${errorMsg}`);
|
|
37
|
+
}
|
|
38
|
+
const output = result.stdout || '';
|
|
39
|
+
if (!output.trim()) {
|
|
40
|
+
throw new Error('Claude CLI returned empty output');
|
|
41
|
+
}
|
|
42
|
+
return extractAgentDefinition(output);
|
|
43
|
+
}
|
|
44
|
+
finally {
|
|
45
|
+
// Clean up temp file
|
|
46
|
+
await fs.remove(promptFile).catch(() => { });
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Run Claude CLI with a prompt file (alternative approach).
|
|
51
|
+
* Useful when the prompt is very long.
|
|
52
|
+
*/
|
|
53
|
+
export async function runClaudeCliWithFile(promptFile) {
|
|
54
|
+
if (!checkClaudeCliAvailable()) {
|
|
55
|
+
throw new Error('Claude Code CLI not found. Please install it from https://claude.ai/code and authenticate.');
|
|
56
|
+
}
|
|
57
|
+
const prompt = await fs.readFile(promptFile, 'utf-8');
|
|
58
|
+
const result = spawnSync('claude', [
|
|
59
|
+
'-p', prompt,
|
|
60
|
+
'--output-format', 'text'
|
|
61
|
+
], {
|
|
62
|
+
encoding: 'utf-8',
|
|
63
|
+
maxBuffer: 1024 * 1024 * 50,
|
|
64
|
+
timeout: 300000,
|
|
65
|
+
windowsHide: true,
|
|
66
|
+
});
|
|
67
|
+
if (result.error) {
|
|
68
|
+
throw new Error(`Claude CLI error: ${result.error.message}`);
|
|
69
|
+
}
|
|
70
|
+
if (result.status !== 0) {
|
|
71
|
+
throw new Error(`Claude CLI exited with code ${result.status}: ${result.stderr}`);
|
|
72
|
+
}
|
|
73
|
+
return extractAgentDefinition(result.stdout || '');
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Extract the agent definition markdown from Claude's response.
|
|
77
|
+
* Claude might include explanation text before/after the actual definition.
|
|
78
|
+
*
|
|
79
|
+
* Agent definitions have this format:
|
|
80
|
+
* ---
|
|
81
|
+
* name: xxx
|
|
82
|
+
* description: xxx
|
|
83
|
+
* tools: xxx
|
|
84
|
+
* model: xxx
|
|
85
|
+
* ---
|
|
86
|
+
*
|
|
87
|
+
* Content here...
|
|
88
|
+
*/
|
|
89
|
+
function extractAgentDefinition(response) {
|
|
90
|
+
// Look for the markdown code block containing the agent definition
|
|
91
|
+
const codeBlockMatch = response.match(/```markdown\n([\s\S]*?)```/);
|
|
92
|
+
if (codeBlockMatch) {
|
|
93
|
+
return codeBlockMatch[1].trim();
|
|
94
|
+
}
|
|
95
|
+
// Try with just ``` (no language specified)
|
|
96
|
+
const genericBlockMatch = response.match(/```\n(---\nname:[\s\S]*?)```/);
|
|
97
|
+
if (genericBlockMatch) {
|
|
98
|
+
return genericBlockMatch[1].trim();
|
|
99
|
+
}
|
|
100
|
+
// Look for frontmatter pattern: starts with ---, has name:, and includes closing ---
|
|
101
|
+
// Then capture everything after the closing --- too (the actual content)
|
|
102
|
+
const fullDefinitionMatch = response.match(/---\nname:[^\n]*\n[\s\S]*?---\n([\s\S]*)/);
|
|
103
|
+
if (fullDefinitionMatch) {
|
|
104
|
+
// Reconstruct the full definition by finding where it starts
|
|
105
|
+
const startIdx = response.indexOf('---\nname:');
|
|
106
|
+
if (startIdx !== -1) {
|
|
107
|
+
// Take from the start of frontmatter to the end
|
|
108
|
+
let definition = response.slice(startIdx);
|
|
109
|
+
// If there's trailing explanation text, try to remove it
|
|
110
|
+
// Look for common ending patterns like "This specialist..." or "I've created..."
|
|
111
|
+
const trailingMatch = definition.match(/\n\n(?:This specialist|I've created|I hope|Let me know|Feel free|---\n\n)/);
|
|
112
|
+
if (trailingMatch && trailingMatch.index) {
|
|
113
|
+
definition = definition.slice(0, trailingMatch.index);
|
|
114
|
+
}
|
|
115
|
+
return definition.trim();
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
// Simpler approach: find ---\nname: and take everything after it
|
|
119
|
+
const simpleMatch = response.match(/---\nname:[\s\S]*/);
|
|
120
|
+
if (simpleMatch) {
|
|
121
|
+
let definition = simpleMatch[0];
|
|
122
|
+
// Remove trailing explanation text
|
|
123
|
+
const trailingMatch = definition.match(/\n\n(?:This specialist|I've created|I hope|Let me know|Feel free)/);
|
|
124
|
+
if (trailingMatch && trailingMatch.index) {
|
|
125
|
+
definition = definition.slice(0, trailingMatch.index);
|
|
126
|
+
}
|
|
127
|
+
return definition.trim();
|
|
128
|
+
}
|
|
129
|
+
// If nothing found, return the whole response
|
|
130
|
+
// (Claude might have just output the definition directly)
|
|
131
|
+
return response.trim();
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* Check if Claude Code CLI is installed and authenticated.
|
|
135
|
+
*/
|
|
136
|
+
export function checkClaudeCliAvailable() {
|
|
137
|
+
try {
|
|
138
|
+
const result = spawnSync('claude', ['--version'], {
|
|
139
|
+
encoding: 'utf-8',
|
|
140
|
+
timeout: 5000,
|
|
141
|
+
windowsHide: true,
|
|
142
|
+
});
|
|
143
|
+
return result.status === 0;
|
|
144
|
+
}
|
|
145
|
+
catch {
|
|
146
|
+
return false;
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* Get Claude Code CLI version.
|
|
151
|
+
*/
|
|
152
|
+
export function getClaudeVersion() {
|
|
153
|
+
try {
|
|
154
|
+
const result = spawnSync('claude', ['--version'], {
|
|
155
|
+
encoding: 'utf-8',
|
|
156
|
+
timeout: 5000,
|
|
157
|
+
windowsHide: true,
|
|
158
|
+
});
|
|
159
|
+
if (result.status === 0) {
|
|
160
|
+
return result.stdout.trim();
|
|
161
|
+
}
|
|
162
|
+
return null;
|
|
163
|
+
}
|
|
164
|
+
catch {
|
|
165
|
+
return null;
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
//# sourceMappingURL=claude-cli.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"claude-cli.js","sourceRoot":"","sources":["../../src/generator/claude-cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
interface Specialist {
|
|
2
|
+
name: string;
|
|
3
|
+
focus: string;
|
|
4
|
+
key_concerns: string[];
|
|
5
|
+
}
|
|
6
|
+
interface Config {
|
|
7
|
+
projectName: string;
|
|
8
|
+
projectType: string;
|
|
9
|
+
languages: string;
|
|
10
|
+
frameworks: string;
|
|
11
|
+
testing: string;
|
|
12
|
+
packageManager: string;
|
|
13
|
+
specialists: Specialist[];
|
|
14
|
+
rawContent: string;
|
|
15
|
+
}
|
|
16
|
+
export declare function buildGenerationPrompt(config: Config, specialist?: Specialist): Promise<string>;
|
|
17
|
+
export {};
|
|
18
|
+
//# sourceMappingURL=prompt-builder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prompt-builder.d.ts","sourceRoot":"","sources":["../../src/generator/prompt-builder.ts"],"names":[],"mappings":"AAEA,UAAU,UAAU;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,MAAM,EAAE,CAAC;CACxB;AAED,UAAU,MAAM;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,EAAE,UAAU,EAAE,CAAC;IAC1B,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,wBAAsB,qBAAqB,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,CA+BpG"}
|