UNPKG

alnilam-cli

Version:

Git-native AI career coach that converts multi-year ambitions into weekly execution

147 lines (146 loc) 6 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.summaryCommand = void 0; const commander_1 = require("commander"); const api_js_1 = require("../lib/api.js"); const summaryCommand = new commander_1.Command('summary'); exports.summaryCommand = summaryCommand; summaryCommand .description('Generate and view daily summaries') .option('--json', 'Output as JSON'); // Add subcommand for generating today's summary const generateCommand = new commander_1.Command('generate'); generateCommand .description('Generate daily summary for today or specified date') .option('--date <date>', 'Date in YYYY-MM-DD format (defaults to today)') .option('--force', 'Force regeneration if summary already exists') .option('--json', 'Output as JSON') .action(async (options) => { try { const requestBody = {}; if (options.date) { requestBody.date = options.date; } if (options.force) { requestBody.force = true; } const response = await api_js_1.apiClient.post('/daily_summarizer', requestBody); const result = response.data; if (options.json) { console.log(JSON.stringify(result, null, 2)); } else { if (result.success) { const summary = result.summary; console.log(`📊 Daily Summary for ${summary.date}`); console.log(''); console.log(summary.content); console.log(''); console.log(`📈 Evidence Count: ${summary.evidence_count}`); if (summary.goals_referenced && summary.goals_referenced.length > 0) { console.log(`🎯 Goals Referenced: ${summary.goals_referenced.length}`); } console.log(`✨ ${result.message || 'Summary generated successfully'}`); } else { console.error('❌ Failed to generate summary:', result.error); process.exit(1); } } } catch (error) { console.error('❌ Error generating summary:', error.response?.data?.error || error.message); process.exit(1); } }); // Add subcommand for listing summaries const listCommand = new commander_1.Command('list'); listCommand .description('List recent daily summaries') .option('--limit <number>', 'Number of summaries to show (default: 7)', '7') .option('--json', 'Output as JSON') .action(async (options) => { try { const response = await api_js_1.restClient.get('/summaries', { params: { select: 'date,content,evidence_count,goals_referenced,created_at', order: 'date.desc', limit: parseInt(options.limit) } }); const summaries = response.data; if (options.json) { console.log(JSON.stringify(summaries, null, 2)); } else { if (summaries.length === 0) { console.log('📊 No summaries found. Generate your first one with: alnl summary generate'); return; } console.log(`📊 Recent Daily Summaries (${summaries.length}):`); console.log(''); summaries.forEach((summary, index) => { const date = new Date(summary.date).toLocaleDateString(); console.log(`${index + 1}. ${summary.date} (${date})`); console.log(` ${summary.content}`); console.log(` 📈 Evidence: ${summary.evidence_count}, 🎯 Goals: ${summary.goals_referenced?.length || 0}`); if (index < summaries.length - 1) { console.log(''); } }); } } catch (error) { console.error('❌ Error listing summaries:', error.response?.data?.error || error.message); process.exit(1); } }); // Add subcommand for viewing a specific summary const viewCommand = new commander_1.Command('view'); viewCommand .description('View summary for a specific date') .argument('<date>', 'Date in YYYY-MM-DD format') .option('--json', 'Output as JSON') .action(async (date, options) => { try { const response = await api_js_1.restClient.get('/summaries', { params: { select: '*', date: `eq.${date}`, limit: 1 } }); const summaries = response.data; if (options.json) { console.log(JSON.stringify(summaries[0] || null, null, 2)); } else { if (summaries.length === 0) { console.log(`📊 No summary found for ${date}`); console.log('Generate one with: alnl summary generate --date ' + date); return; } const summary = summaries[0]; const displayDate = new Date(summary.date).toLocaleDateString(); console.log(`📊 Daily Summary for ${summary.date} (${displayDate})`); console.log(''); console.log(summary.content); console.log(''); console.log(`📈 Evidence Count: ${summary.evidence_count}`); if (summary.goals_referenced && summary.goals_referenced.length > 0) { console.log(`🎯 Goals Referenced: ${summary.goals_referenced.length}`); } if (summary.metadata?.evidence_types) { console.log(`📋 Evidence Types: ${summary.metadata.evidence_types.join(', ')}`); } console.log(`🕐 Generated: ${new Date(summary.created_at).toLocaleString()}`); } } catch (error) { console.error('❌ Error viewing summary:', error.response?.data?.error || error.message); process.exit(1); } }); summaryCommand.addCommand(generateCommand); summaryCommand.addCommand(listCommand); summaryCommand.addCommand(viewCommand);