@@ -195,7 +195,7 @@ program
195195// SEARCH
196196// ──────────────────────────────────────────
197197program
198- . command ( 'search < query> ' )
198+ . command ( 'search [ query] ' )
199199 . description ( 'Full-text search across all memories' )
200200 . option ( '--project <id>' , 'Scope to project' )
201201 . option ( '--type <type>' , 'Filter by type' )
@@ -204,6 +204,11 @@ program
204204 . action ( async ( query , opts ) => {
205205 if ( ! ( await ensureDaemon ( ) ) ) return ;
206206
207+ if ( ! query || query . trim ( ) . length === 0 ) {
208+ fmt . error ( 'Please provide a search query. Usage: cortex search "your query"' ) ;
209+ return ;
210+ }
211+
207212 const body : Record < string , unknown > = { query } ;
208213 if ( opts . project ) body . project_id = opts . project ;
209214 if ( opts . type ) body . type = opts . type ;
@@ -457,12 +462,16 @@ program
457462 const projects = await api . listProjects ( ) ;
458463 const exportData : any = { exported_at : new Date ( ) . toISOString ( ) , projects : [ ] } ;
459464
460- const projectList = opts . project
461- ? projects . data . filter ( ( p : any ) => p . id === opts . project )
462- : projects . data ;
465+ let projectList ;
466+ if ( opts . project ) {
467+ const resolvedId = await resolveProjectId ( opts . project ) ;
468+ projectList = projects . data . filter ( ( p : any ) => p . id === resolvedId || p . name . toLowerCase ( ) === opts . project . toLowerCase ( ) ) ;
469+ } else {
470+ projectList = projects . data ;
471+ }
463472
464473 for ( const p of projectList ) {
465- const memories = await api . listMemories ( { project_id : p . id , limit : '500 ' } ) ;
474+ const memories = await api . listMemories ( { project_id : p . id , limit : '200 ' } ) ;
466475 exportData . projects . push ( {
467476 ...p ,
468477 memories : memories . data ,
@@ -752,12 +761,28 @@ program
752761 . description ( 'Delete all memories (with backup)' )
753762 . option ( '--force' , 'Skip confirmation' )
754763 . option ( '--no-backup' , 'Skip backup' )
764+ . option ( '--dry-run' , 'Preview what would be deleted without deleting' )
755765 . option ( '--json' , 'Output as JSON' )
756766 . action ( async ( project , opts ) => {
757767 if ( ! ( await ensureDaemon ( ) ) ) return ;
758768
759769 const projectId = await resolveProjectId ( project ) ;
760770
771+ if ( opts . dryRun ) {
772+ const projects = await api . listProjects ( ) ;
773+ const projectList = projectId
774+ ? projects . data . filter ( ( p : any ) => p . id === projectId )
775+ : projects . data ;
776+ let total = 0 ;
777+ for ( const p of projectList ) {
778+ const memories = await api . listMemories ( { project_id : p . id , limit : '200' } ) ;
779+ fmt . info ( ` ${ p . name } : ${ memories . data . length } memories would be deleted` ) ;
780+ total += memories . data . length ;
781+ }
782+ fmt . info ( `\nDry run: ${ total } memories across ${ projectList . length } projects would be deleted.` ) ;
783+ return ;
784+ }
785+
761786 // Export backup first unless --no-backup
762787 if ( opts . backup !== false ) {
763788 const projects = await api . listProjects ( ) ;
@@ -767,7 +792,7 @@ program
767792 : projects . data ;
768793
769794 for ( const p of projectList ) {
770- const memories = await api . listMemories ( { project_id : p . id , limit : '500 ' } ) ;
795+ const memories = await api . listMemories ( { project_id : p . id , limit : '200 ' } ) ;
771796 exportData . projects . push ( { ...p , memories : memories . data } ) ;
772797 }
773798
@@ -808,7 +833,7 @@ program
808833 const projects = await api . listProjects ( ) ;
809834 let total = 0 ;
810835 for ( const p of projects . data ) {
811- const memories = await api . listMemories ( { project_id : p . id , limit : '500 ' } ) ;
836+ const memories = await api . listMemories ( { project_id : p . id , limit : '200 ' } ) ;
812837 for ( const m of memories . data ) {
813838 await api . deleteMemory ( m . id ) ;
814839 }
0 commit comments