UNPKG

@ace-sdk/cli

Version:

ACE CLI - Command-line tool for intelligent pattern learning and playbook management

60 lines 2.58 kB
/** * 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