jay-code
Version:
Streamlined AI CLI orchestration engine with mathematical rigor and enterprise-grade reliability
153 lines (126 loc) • 4.49 kB
text/typescript
// init/directory-structure.ts - Directory structure creation
export async function createDirectoryStructure(): Promise<void> {
const fs = await import('fs/promises');
const path = await import('path');
// Define directory structure
const directories = [
'.claude',
'.claude/commands',
'.claude/commands/swarm',
'.claude/commands/sparc',
'.claude/logs',
'.claude/memory',
'.claude/configs',
'memory',
'memory/agents',
'memory/sessions',
'coordination',
'coordination/memory_bank',
'coordination/subtasks',
'coordination/orchestration',
'reports',
];
// Create directories
for (const dir of directories) {
try {
await fs.mkdir(dir, { recursive: true });
console.log(` ✅ Created ${dir}/ directory`);
} catch (error: unknown) {
if ((error as any).code !== 'EEXIST') {
throw error;
}
}
}
// Create README files for key directories
const readmeFiles = {
'memory/agents/README.md': createAgentsReadme(),
'memory/sessions/README.md': createSessionsReadme(),
'coordination/README.md': createCoordinationReadme(),
'reports/README.md': createReportsReadme(),
};
for (const [filePath, content] of Object.entries(readmeFiles)) {
await fs.writeFile(filePath, content);
console.log(` ✅ Created ${filePath}`);
}
// Create initial persistence database
const initialData = {
agents: [],
tasks: [],
swarms: [],
lastUpdated: Date.now(),
version: '1.0.71',
};
await fs.writeFile('memory/jay-code-data.json', JSON.stringify(initialData, null, 2));
console.log(' ✅ Created memory/jay-code-data.json (persistence database)');
}
function createAgentsReadme(): string {
return `
This directory stores persistent information about AI agents created and managed by Jay-Code.
- Each agent gets its own JSON file named by agent ID
- Agent files contain configuration, state, and memory
- Shared agent data is stored in agent-registry.json
Agents are automatically managed by the Jay-Code orchestration system. You can:
- View agent status with \`jay-code agent list\`
- Create new agents with \`jay-code agent spawn <type>\`
- Configure agents with \`jay-code agent configure <id>\`
- \`agent-registry.json\`: Central agent registry
- \`agent-<id>.json\`: Individual agent data files
- \`templates/\`: Agent configuration templates
`;
}
function createSessionsReadme(): string {
return `
This directory stores information about Jay-Code orchestration sessions.
- Each session gets its own subdirectory
- Session data includes tasks, coordination state, and results
- Session logs are automatically rotated
Sessions are managed automatically during orchestration:
- Start sessions with \`jay-code start\`
- Monitor sessions with \`jay-code status\`
- Review session history with \`jay-code session list\`
- \`session-<id>/\`: Individual session directories
- \`active-sessions.json\`: Currently active sessions
- \`session-history.json\`: Historical session data
`;
}
function createCoordinationReadme(): string {
return `
This directory manages task coordination and orchestration data.
- \`memory_bank/\`: Shared memory for agent coordination
- \`subtasks/\`: Task breakdown and assignment data
- \`orchestration/\`: High-level orchestration patterns
Coordination data is used for:
- Multi-agent task distribution
- Progress tracking and monitoring
- Resource allocation and balancing
- Error recovery and failover
Access coordination data through the Jay-Code API or CLI commands.
`;
}
function createReportsReadme(): string {
return `
This directory stores output reports from swarm operations and orchestration tasks.
- Swarm reports are stored by operation ID
- Reports include execution logs, results, and metrics
- Multiple output formats supported (JSON, SQLite, CSV, HTML)
## Usage
Reports are generated automatically by swarm operations:
- View recent reports with \`jay-code swarm list\`
- Check specific reports with \`jay-code swarm status <id>\`
- Export reports in different formats using \`--output\` flags
## File Types
- \`*.json\`: Structured operation data
- \`*.sqlite\`: Database format for complex queries
- \`*.csv\`: Tabular data for analysis
- \`*.html\`: Human-readable reports
`;
}