#!/usr/bin/env node import { Command } from 'commander'; import { addCommand } from './commands/add'; import { queryCommand } from './commands/query'; import { linkCommand } from './commands/link'; import { showCommand } from './commands/show'; import { listCommand } from './commands/list'; import { updateCommand } from './commands/update'; import { removeCommand } from './commands/remove'; import { graphCommand } from './commands/graph'; import { serveCommand } from './commands/serve'; import { decayCommand } from './commands/decay'; import { childrenCommand } from './commands/children'; import { historyCommand } from './commands/history'; import { diffCommand } from './commands/diff'; import { restoreCommand } from './commands/restore'; import { captureCommand, captureHookCommand, configCommand } from './commands/capture'; import { contextCommand, contextHookCommand } from './commands/context'; import { indexCommand } from './commands/index-cmd'; import { journalCommand, journalAliasCommand, quickCaptureCommand } from './commands/journal'; import { ingestCommand, clipCommand } from './commands/ingest'; import { exportCommand, vizCommand } from './commands/export'; import { importCommand } from './commands/import'; import { backupCommand, restoreDbCommand, listBackupsCommand } from './commands/backup-cmd'; import { graphsCommand, useCommand, initCommand } from './commands/graphs'; import { smartSearchCommand, ssCommand, whatCommand, contextAwareCommand } from './commands/smart'; import { tuiCommand, uiCommand } from './commands/tui'; import { completionsCommand, getNodesCommand, getTagsCommand, getGraphsCommand } from './commands/completions'; import { closeDb } from '../core/db'; import { migrateOldDatabase } from '../core/db'; const program = new Command(); program .name('cortex') .description('Cortex — AI project memory & knowledge graph\n\nStore, link, and search project knowledge as a graph of typed nodes.') .version('1.0.0'); program.addCommand(addCommand); program.addCommand(queryCommand); program.addCommand(linkCommand); program.addCommand(showCommand); program.addCommand(listCommand); program.addCommand(updateCommand); program.addCommand(removeCommand); program.addCommand(graphCommand); program.addCommand(serveCommand); program.addCommand(decayCommand); program.addCommand(childrenCommand); program.addCommand(historyCommand); program.addCommand(diffCommand); program.addCommand(restoreCommand); program.addCommand(captureCommand); program.addCommand(captureHookCommand); program.addCommand(contextCommand); program.addCommand(contextHookCommand); program.addCommand(configCommand); program.addCommand(indexCommand); program.addCommand(journalCommand); program.addCommand(journalAliasCommand); program.addCommand(quickCaptureCommand); program.addCommand(ingestCommand); program.addCommand(clipCommand); program.addCommand(exportCommand); program.addCommand(vizCommand); program.addCommand(importCommand); program.addCommand(backupCommand); program.addCommand(restoreDbCommand); program.addCommand(listBackupsCommand); program.addCommand(graphsCommand); program.addCommand(useCommand); program.addCommand(initCommand); program.addCommand(smartSearchCommand); program.addCommand(ssCommand); program.addCommand(whatCommand); program.addCommand(contextAwareCommand); program.addCommand(tuiCommand); program.addCommand(uiCommand); program.addCommand(completionsCommand); program.addCommand(getNodesCommand); program.addCommand(getTagsCommand); program.addCommand(getGraphsCommand); // Check for old database migration migrateOldDatabase(); program.hook('postAction', () => { closeDb(); }); program.parseAsync(process.argv).catch((err) => { console.error(err); closeDb(); process.exit(1); });