tasq/node_modules/@claude-flow/hooks/bin/statusline.js

78 lines
2.4 KiB
JavaScript

#!/usr/bin/env node
/**
* Statusline CLI
*
* Generate statusline output for Claude Code integration.
*
* Usage:
* statusline Output formatted statusline
* statusline --json Output JSON data
* statusline --compact Output compact JSON
*/
import { fileURLToPath } from 'url';
import { dirname } from 'path';
import { StatuslineGenerator, parseStatuslineData } from '../dist/statusline/index.js';
const __filename = fileURLToPath(import.meta.url);
const __dirname = dirname(__filename);
// Parse command line arguments
const args = process.argv.slice(2);
const jsonMode = args.includes('--json');
const compactMode = args.includes('--compact');
const helpMode = args.includes('--help') || args.includes('-h');
async function main() {
if (helpMode) {
console.log(`
Statusline - V3 Hooks System Status Generator
Usage:
statusline Output formatted statusline (default)
statusline --json Output JSON data
statusline --compact Output compact JSON (single line)
statusline --help Show this help
Environment Variables:
CLAUDE_FLOW_STATUSLINE_REFRESH Refresh interval in ms
CLAUDE_FLOW_SHOW_HOOKS_METRICS Show hooks metrics (true/false)
CLAUDE_FLOW_SHOW_SWARM_ACTIVITY Show swarm activity (true/false)
CLAUDE_FLOW_SHOW_PERFORMANCE Show performance targets (true/false)
Examples:
statusline # Display formatted status
statusline --json | jq # Parse JSON output
statusline --compact # Single line JSON for scripting
`);
process.exit(0);
}
// Create generator with environment-based config
const generator = new StatuslineGenerator({
enabled: true,
refreshOnHook: true,
showHooksMetrics: process.env.CLAUDE_FLOW_SHOW_HOOKS_METRICS !== 'false',
showSwarmActivity: process.env.CLAUDE_FLOW_SHOW_SWARM_ACTIVITY !== 'false',
showPerformance: process.env.CLAUDE_FLOW_SHOW_PERFORMANCE !== 'false',
});
// Try to read from metrics database or files
// In real implementation, this would read from SQLite
// For now, use default data
if (compactMode) {
console.log(generator.generateCompactJSON());
} else if (jsonMode) {
console.log(generator.generateJSON());
} else {
console.log(generator.generateStatusline());
}
}
main().catch((error) => {
console.error('Statusline error:', error.message);
process.exit(1);
});