alnilam-cli
Version:
Git-native AI career coach that converts multi-year ambitions into weekly execution
147 lines (146 loc) • 6 kB
JavaScript
;
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);