aios-core
Version:
Synkra AIOS: AI-Orchestrated System for Full Stack Development - Core Framework
150 lines (129 loc) • 4.39 kB
JavaScript
/**
* AIOS CLI Entry Point
*
* Main entry point for the AIOS CLI with Commander.js integration.
* Registers all subcommands including workers, agents, etc.
*
* @module cli
* @version 1.0.0
* @story 2.7 - Discovery CLI Search
*/
const { Command } = require('commander');
const path = require('path');
const fs = require('fs');
// Import command modules
const { createWorkersCommand } = require('./commands/workers');
const { createManifestCommand } = require('./commands/manifest');
const { createQaCommand } = require('./commands/qa');
const { createMcpCommand } = require('./commands/mcp');
const { createMigrateCommand } = require('./commands/migrate');
const { createGenerateCommand } = require('./commands/generate');
const { createMetricsCommand } = require('./commands/metrics');
const { createConfigCommand } = require('./commands/config');
const { createProCommand } = require('./commands/pro');
// Read package.json for version
const packageJsonPath = path.join(__dirname, '..', '..', 'package.json');
let packageVersion = '0.0.0';
try {
const packageJson = JSON.parse(fs.readFileSync(packageJsonPath, 'utf8'));
packageVersion = packageJson.version;
} catch (error) {
// Fallback version if package.json not found
}
/**
* Create the main CLI program
* @returns {Command} Commander program instance
*/
function createProgram() {
const program = new Command();
program
.name('aios')
.version(packageVersion)
.description('AIOS-FullStack: AI-Orchestrated System for Full Stack Development')
.addHelpText('after', `
Commands:
workers Manage and discover workers
manifest Manage manifest files (validate, regenerate)
qa Quality Gate Manager (run, status)
metrics Quality Gate Metrics (record, show, seed, cleanup)
config Manage layered configuration (show, diff, migrate, validate)
pro AIOS Pro license management (activate, status, deactivate, features)
mcp Manage global MCP configuration
migrate Migrate from v2.0 to v4.0.4 structure
generate Generate documents from templates (prd, adr, pmdr, etc.)
install Install AIOS in current project
init <name> Create new AIOS project
info Show system information
doctor Run system diagnostics
For command help:
$ aios <command> --help
Examples:
$ aios workers search "json transformation"
$ aios workers list --category=data
$ aios manifest validate
$ aios manifest regenerate
$ aios qa run
$ aios qa status
$ aios mcp setup --with-defaults
$ aios mcp link
$ aios mcp status
$ aios metrics show
$ aios metrics record --layer 1 --passed
$ aios metrics seed --days 30
$ aios migrate --dry-run
$ aios migrate --from=2.0 --to=2.1
$ aios generate pmdr --title "Feature X Decision"
$ aios generate adr --save
$ aios generate list
$ aios config show
$ aios config show --debug
$ aios config diff --levels L1,L2
$ aios config migrate --dry-run
$ aios config validate
$ aios config init-local
$ aios pro activate --key PRO-XXXX-XXXX-XXXX-XXXX
$ aios pro status
$ aios pro deactivate
$ aios pro features
$ aios pro validate
$ aios install
$ aios doctor
`);
// Add workers command
program.addCommand(createWorkersCommand());
// Add manifest command (Story 2.13)
program.addCommand(createManifestCommand());
// Add qa command (Story 2.10)
program.addCommand(createQaCommand());
// Add mcp command (Story 2.11)
program.addCommand(createMcpCommand());
// Add migrate command (Story 2.14)
program.addCommand(createMigrateCommand());
// Add generate command (Story 3.9)
program.addCommand(createGenerateCommand());
// Add metrics command (Story 3.11a)
program.addCommand(createMetricsCommand());
// Add config command (Story PRO-4)
program.addCommand(createConfigCommand());
// Add pro command (Story PRO-6)
program.addCommand(createProCommand());
return program;
}
/**
* Run the CLI
* @param {string[]} args - Command line arguments
* @returns {Promise<void>}
*/
async function run(args = process.argv) {
const program = createProgram();
try {
await program.parseAsync(args);
} catch (error) {
console.error(`Error: ${error.message}`);
process.exit(1);
}
}
module.exports = {
createProgram,
run,
};