@ace-sdk/cli
Version:
ACE CLI - Command-line tool for intelligent pattern learning and playbook management
60 lines • 2.58 kB
JavaScript
/**
* Top patterns command
*/
import { globalOptions } from '../cli.js';
import { createContext } from '../types/config.js';
import { ACEServerClient } from '../services/server-client.js';
import { formatSearchResults } from '../formatters/search-formatter.js';
import { Logger } from '../services/logger.js';
import chalk from 'chalk';
/**
* Show top-rated patterns
*/
export async function topCommand(options) {
const logger = new Logger(globalOptions);
const spinner = logger.spinner('Fetching top patterns...');
try {
const context = await createContext({ org: globalOptions.org, project: globalOptions.project });
const client = new ACEServerClient(context, logger);
// Fetch server config for defaults
const serverConfig = await client.getConfig();
const runtimeSettings = serverConfig?.runtime_settings || {};
// NOTE: search_top_k is a top-level server config field (tune command), not in runtime_settings
// Don't fallback to 10 - let server use adaptive default when not specified
const effectiveLimit = options.limit ?? serverConfig?.search_top_k;
const effectiveMinHelpful = options.minHelpful ?? runtimeSettings.patternMinHelpful;
logger.debug(`Top patterns: limit=${effectiveLimit ?? 'adaptive'}, min_helpful=${effectiveMinHelpful ?? 'default'}`);
const patterns = await client.getTopPatterns({
section: options.section,
limit: effectiveLimit,
min_helpful: effectiveMinHelpful
});
spinner?.succeed(`Found ${patterns.length} top patterns`);
if (logger.isJson()) {
logger.output({ patterns });
}
else {
if (!patterns || patterns.length === 0) {
logger.info(chalk.yellow('\n⚠️ No patterns found\n'));
return;
}
const limitLabel = effectiveLimit != null ? `Top ${effectiveLimit}` : 'Top';
logger.info(chalk.bold(`\n⭐ ${limitLabel} Patterns\n`));
formatSearchResults(patterns, {
showRank: true,
verbose: logger.isVerbose()
});
}
}
catch (error) {
spinner?.fail('Failed to fetch top patterns');
if (logger.isJson()) {
logger.error(error instanceof Error ? error.message : String(error));
}
else {
logger.error(chalk.red(`\nError: ${error instanceof Error ? error.message : String(error)}\n`));
}
process.exit(1);
}
}
//# sourceMappingURL=top.js.map