@@ -138,6 +138,9 @@ export const Memories: React.FC = () => {
138138 const [ memoryError , setMemoryError ] = useState < string | null > ( null ) ;
139139 const [ expandedEpisodic , setExpandedEpisodic ] = useState < Record < string , boolean > > ( { } ) ;
140140 const [ expandedSemantic , setExpandedSemantic ] = useState < Record < string , boolean > > ( { } ) ;
141+ const [ expandedProcedural , setExpandedProcedural ] = useState < Record < string , boolean > > ( { } ) ;
142+ const [ expandedResource , setExpandedResource ] = useState < Record < string , boolean > > ( { } ) ;
143+ const [ expandedKnowledge , setExpandedKnowledge ] = useState < Record < string , boolean > > ( { } ) ;
141144 const [ fieldsByType , setFieldsByType ] = useState < Record < MemoryTypeFilter , string [ ] > > ( DEFAULT_FIELDS ) ;
142145 const prevUserIdRef = useRef < string | null > ( null ) ;
143146
@@ -237,6 +240,9 @@ export const Memories: React.FC = () => {
237240 setMemoryTab ( 'episodic' ) ;
238241 setExpandedEpisodic ( { } ) ;
239242 setExpandedSemantic ( { } ) ;
243+ setExpandedProcedural ( { } ) ;
244+ setExpandedResource ( { } ) ;
245+ setExpandedKnowledge ( { } ) ;
240246 setMemoryTypeFilter ( 'all' ) ;
241247 setSearchField ( 'null' ) ;
242248 setSearchMethod ( 'bm25' ) ;
@@ -254,6 +260,18 @@ export const Memories: React.FC = () => {
254260 setExpandedSemantic ( ( prev ) => ( { ...prev , [ id ] : ! prev [ id ] } ) ) ;
255261 } ;
256262
263+ const toggleProcedural = ( id : string ) => {
264+ setExpandedProcedural ( ( prev ) => ( { ...prev , [ id ] : ! prev [ id ] } ) ) ;
265+ } ;
266+
267+ const toggleResource = ( id : string ) => {
268+ setExpandedResource ( ( prev ) => ( { ...prev , [ id ] : ! prev [ id ] } ) ) ;
269+ } ;
270+
271+ const toggleKnowledge = ( id : string ) => {
272+ setExpandedKnowledge ( ( prev ) => ( { ...prev , [ id ] : ! prev [ id ] } ) ) ;
273+ } ;
274+
257275 // Keep search_field sensible when filters change
258276 useEffect ( ( ) => {
259277 if ( memoryTypeFilter === 'all' ) {
@@ -429,13 +447,34 @@ export const Memories: React.FC = () => {
429447 </ span >
430448 { item . created_at && < span > { formatDate ( item . created_at ) } </ span > }
431449 </ div >
432- < div className = "font-semibold text-base" > { item . summary || 'No summary' } </ div >
450+ < div className = "flex items-start justify-between gap-2" >
451+ < div className = "font-semibold text-base" > { item . summary || 'No summary' } </ div >
452+ { item . steps && item . steps . length > 0 && (
453+ < button
454+ type = "button"
455+ onClick = { ( ) => toggleProcedural ( item . id ) }
456+ className = "flex items-center text-xs text-muted-foreground hover:text-foreground transition-colors"
457+ >
458+ { expandedProcedural [ item . id ] ? (
459+ < >
460+ Hide details < ChevronUp className = "ml-1 h-4 w-4" />
461+ </ >
462+ ) : (
463+ < >
464+ Show details < ChevronDown className = "ml-1 h-4 w-4" />
465+ </ >
466+ ) }
467+ </ button >
468+ ) }
469+ </ div >
433470 { item . steps && item . steps . length > 0 ? (
434- < ul className = "list-decimal space-y-1 pl-5 text-sm text-muted-foreground" >
435- { item . steps . map ( ( step , idx ) => (
436- < li key = { `${ item . id } -step-${ idx } ` } > { step } </ li >
437- ) ) }
438- </ ul >
471+ expandedProcedural [ item . id ] ? (
472+ < ul className = "list-decimal space-y-1 pl-5 text-sm text-muted-foreground" >
473+ { item . steps . map ( ( step , idx ) => (
474+ < li key = { `${ item . id } -step-${ idx } ` } > { step } </ li >
475+ ) ) }
476+ </ ul >
477+ ) : null
439478 ) : (
440479 < p className = "text-sm text-muted-foreground" > No steps recorded.</ p >
441480 ) }
@@ -463,10 +502,35 @@ export const Memories: React.FC = () => {
463502 { item . created_at && < span > { formatDate ( item . created_at ) } </ span > }
464503 </ div >
465504 < div className = "font-semibold text-base" > { item . title || 'Untitled' } </ div >
466- < p className = "text-sm text-muted-foreground" > { item . summary || 'No summary provided.' } </ p >
467- < p className = "text-sm text-muted-foreground whitespace-pre-wrap" >
468- { item . content || 'No content stored.' }
469- </ p >
505+ < div className = "flex items-start justify-between gap-2" >
506+ < p className = "text-sm text-muted-foreground" > { item . summary || 'No summary provided.' } </ p >
507+ { item . content && (
508+ < button
509+ type = "button"
510+ onClick = { ( ) => toggleResource ( item . id ) }
511+ className = "flex items-center text-xs text-muted-foreground hover:text-foreground transition-colors"
512+ >
513+ { expandedResource [ item . id ] ? (
514+ < >
515+ Hide details < ChevronUp className = "ml-1 h-4 w-4" />
516+ </ >
517+ ) : (
518+ < >
519+ Show details < ChevronDown className = "ml-1 h-4 w-4" />
520+ </ >
521+ ) }
522+ </ button >
523+ ) }
524+ </ div >
525+ { item . content ? (
526+ expandedResource [ item . id ] ? (
527+ < p className = "text-sm text-muted-foreground whitespace-pre-wrap" >
528+ { item . content }
529+ </ p >
530+ ) : null
531+ ) : (
532+ < p className = "text-sm text-muted-foreground" > No content stored.</ p >
533+ ) }
470534 </ CardContent >
471535 </ Card >
472536 ) ) }
@@ -490,11 +554,30 @@ export const Memories: React.FC = () => {
490554 </ span >
491555 { item . created_at && < span > { formatDate ( item . created_at ) } </ span > }
492556 </ div >
493- < div className = "font-semibold text-base" > { item . caption || 'No caption' } </ div >
557+ < div className = "flex items-start justify-between gap-2" >
558+ < div className = "font-semibold text-base" > { item . caption || 'No caption' } </ div >
559+ { item . secret_value && (
560+ < button
561+ type = "button"
562+ onClick = { ( ) => toggleKnowledge ( item . id ) }
563+ className = "flex items-center text-xs text-muted-foreground hover:text-foreground transition-colors"
564+ >
565+ { expandedKnowledge [ item . id ] ? (
566+ < >
567+ Hide details < ChevronUp className = "ml-1 h-4 w-4" />
568+ </ >
569+ ) : (
570+ < >
571+ Show details < ChevronDown className = "ml-1 h-4 w-4" />
572+ </ >
573+ ) }
574+ </ button >
575+ ) }
576+ </ div >
494577 < p className = "text-sm text-muted-foreground" >
495578 Source: { item . source || 'Unknown' } | Sensitivity: { item . sensitivity || 'Unspecified' }
496579 </ p >
497- { item . secret_value && (
580+ { item . secret_value && expandedKnowledge [ item . id ] && (
498581 < div className = "rounded bg-muted px-3 py-2 text-sm font-mono break-all" >
499582 { item . secret_value }
500583 </ div >
@@ -715,4 +798,3 @@ export const Memories: React.FC = () => {
715798 ) ;
716799} ;
717800
718-
0 commit comments