@@ -86,9 +86,13 @@ import {
8686
8787// Lazy: MessageSelector.tsx pulls React/ink; only needed for message filtering at query time
8888/* eslint-disable @typescript-eslint/no-require-imports */
89- const messageSelector =
90- ( ) : typeof import ( 'src/components/MessageSelector.js' ) =>
91- require ( 'src/components/MessageSelector.js' )
89+ const messageSelector = ( ) : typeof import ( 'src/components/MessageSelector.js' ) | null => {
90+ try {
91+ return require ( 'src/components/MessageSelector.js' )
92+ } catch {
93+ return null
94+ }
95+ }
9296
9397import {
9498 localCommandOutputToSDKAssistantMessage ,
@@ -466,12 +470,13 @@ export class QueryEngine {
466470 }
467471
468472 // Filter messages that should be acknowledged after transcript
473+ const _selector = messageSelector ( )
469474 const replayableMessages = messagesFromUserInput . filter (
470475 msg =>
471476 ( msg . type === 'user' &&
472477 ! msg . isMeta && // Skip synthetic caveat messages
473478 ! msg . toolUseResult && // Skip tool results (they'll be acked from query)
474- messageSelector ( ) . selectableUserMessagesFilter ( msg ) ) || // Skip non-user-authored messages (task notifications, etc.)
479+ ( _selector ? .selectableUserMessagesFilter ( msg ) ?? true ) ) || // Skip non-user-authored messages (task notifications, etc.)
475480 ( msg . type === 'system' && msg . subtype === 'compact_boundary' ) , // Always ack compact boundaries
476481 )
477482 const messagesToAck = replayUserMessages ? replayableMessages : [ ]
@@ -643,8 +648,10 @@ export class QueryEngine {
643648 }
644649
645650 if ( fileHistoryEnabled ( ) && persistSession ) {
651+ const _sel = messageSelector ( )
652+ const _filter = _sel ?. selectableUserMessagesFilter ?? ( ( _msg : unknown ) => true )
646653 messagesFromUserInput
647- . filter ( messageSelector ( ) . selectableUserMessagesFilter )
654+ . filter ( _filter )
648655 . forEach ( message => {
649656 void fileHistoryMakeSnapshot (
650657 ( updater : ( prev : FileHistoryState ) => FileHistoryState ) => {
0 commit comments