Abstract Class: BaseLogOrchestrator<TRecord, TState>
Makaio Framework / ai-adapters-core/node / BaseLogOrchestrator
Abstract Class: BaseLogOrchestrator<TRecord, TState>
Section titled “Abstract Class: BaseLogOrchestrator<TRecord, TState>”Defined in: ../../../adapters/core/src/log-importer/base-orchestrator.ts:41
Abstract base class for log import orchestrators.
Supports JSONL (byte offset cursors) and JSON (mtime-based) file formats. Concrete implementations provide adapter-specific file parsing.
Extended by
Section titled “Extended by”Type Parameters
Section titled “Type Parameters”TRecord
Section titled “TRecord”TRecord
The adapter’s native log record type
TState
Section titled “TState”TState = unknown
The adapter’s resumable state type (default: unknown)
Constructors
Section titled “Constructors”Constructor
Section titled “Constructor”
protectednew BaseLogOrchestrator<TRecord,TState>(config,importer):BaseLogOrchestrator<TRecord,TState>
Defined in: ../../../adapters/core/src/log-importer/base-orchestrator.ts:64
Parameters
Section titled “Parameters”config
Section titled “config”importer
Section titled “importer”LogImporter<TRecord, TState>
Returns
Section titled “Returns”BaseLogOrchestrator<TRecord, TState>
Properties
Section titled “Properties”config
Section titled “config”
protectedreadonlyconfig:Required<Omit<LogOrchestratorConfig,"directory"|"checkMakaioManaged">> &object
Defined in: ../../../adapters/core/src/log-importer/base-orchestrator.ts:42
Type Declaration
Section titled “Type Declaration”checkMakaioManaged?
Section titled “checkMakaioManaged?”
optionalcheckMakaioManaged?: (sessionId) =>Promise<boolean>
Parameters
Section titled “Parameters”sessionId
Section titled “sessionId”string
Returns
Section titled “Returns”Promise<boolean>
directory?
Section titled “directory?”
optionaldirectory?:string
eventQueue
Section titled “eventQueue”
protectedreadonlyeventQueue:LogImportEventQueue
Defined in: ../../../adapters/core/src/log-importer/base-orchestrator.ts:48
importer
Section titled “importer”
protectedreadonlyimporter:LogImporter<TRecord,TState>
Defined in: ../../../adapters/core/src/log-importer/base-orchestrator.ts:54
Importer instance - subclasses create and manage their own typed instance.
logPrefix
Section titled “logPrefix”
abstractprotectedreadonlylogPrefix:string
Defined in: ../../../adapters/core/src/log-importer/base-orchestrator.ts:51
Log prefix for console output - set by subclass
watcher
Section titled “watcher”
protectedreadonlywatcher:LogImportWatcher
Defined in: ../../../adapters/core/src/log-importer/base-orchestrator.ts:47
Methods
Section titled “Methods”buildCursorSessionContext()
Section titled “buildCursorSessionContext()”
protectedbuildCursorSessionContext(context):object&object
Defined in: ../../../adapters/core/src/log-importer/base-orchestrator.ts:147
Builds the serialized session context for cursor persistence.
Parameters
Section titled “Parameters”context
Section titled “context”LogImportSessionContext<TState>
The import session context to serialize.
Returns
Section titled “Returns”Serialized cursor session context.
dispose()
Section titled “dispose()”dispose():
Promise<void>
Defined in: ../../../adapters/core/src/log-importer/base-orchestrator.ts:232
Returns
Section titled “Returns”Promise<void>
getLogFilePattern()
Section titled “getLogFilePattern()”
abstractprotectedgetLogFilePattern():string
Defined in: ../../../adapters/core/src/log-importer/base-orchestrator.ts:98
Get the glob pattern for log files to watch.
Returns
Section titled “Returns”string
getMaxRecords()
Section titled “getMaxRecords()”
protectedgetMaxRecords():number|undefined
Defined in: ../../../adapters/core/src/log-importer/base-orchestrator.ts:138
Returns the maximum number of records to parse per file. Override in subclasses to limit parsing (e.g., discovery mode).
Returns
Section titled “Returns”number | undefined
Maximum record count, or undefined for no limit.
handleFileChange()
Section titled “handleFileChange()”
protectedhandleFileChange(event):Promise<void>
Defined in: ../../../adapters/core/src/log-importer/base-orchestrator.ts:273
Handle a file-change event: resolve cursor state and route to first-read or incremental-read as appropriate.
Subclasses (e.g., DiscoveryOrchestrator) may override this method to substitute an entirely different dispatch strategy.
Parameters
Section titled “Parameters”File change event from the watcher
Returns
Section titled “Returns”Promise<void>
handleFirstRead()
Section titled “handleFirstRead()”
protectedhandleFirstRead(filePath,records,bytesRead,mtime,isJsonFormat,startOffset,emitLifecycleEvents?):Promise<void>
Defined in: ../../../adapters/core/src/log-importer/base-orchestrator.ts:351
Handle the first read of a log file.
Extracts session context, emits session lifecycle events, processes records, and saves the cursor. Subclasses may override to change behavior (e.g., DiscoveryOrchestrator skips message processing).
Parameters
Section titled “Parameters”filePath
Section titled “filePath”string
Path to the log file
records
Section titled “records”TRecord[]
Records parsed from the file
bytesRead
Section titled “bytesRead”number
Bytes read during this parse
Date
File modification time
isJsonFormat
Section titled “isJsonFormat”boolean
Whether the file uses JSON (mtime-based) format
startOffset
Section titled “startOffset”number
Byte offset this read started from
emitLifecycleEvents?
Section titled “emitLifecycleEvents?”boolean = true
Whether to emit session and started lifecycle events for this pass
Returns
Section titled “Returns”Promise<void>
handleIncrementalRead()
Section titled “handleIncrementalRead()”
protectedhandleIncrementalRead(filePath,records,cursorContext,bytesRead,mtime,isJsonFormat,startOffset):Promise<void>
Defined in: ../../../adapters/core/src/log-importer/base-orchestrator.ts:418
Handle an incremental read of a log file.
Processes new records since the last cursor position. Subclasses may override to skip incremental processing (e.g., DiscoveryOrchestrator).
Parameters
Section titled “Parameters”filePath
Section titled “filePath”string
Path to the log file
records
Section titled “records”TRecord[]
New records since last read
cursorContext
Section titled “cursorContext”object & object
Existing cursor session context
bytesRead
Section titled “bytesRead”number
Bytes read during this parse
Date
File modification time
isJsonFormat
Section titled “isJsonFormat”boolean
Whether the file uses JSON (mtime-based) format
startOffset
Section titled “startOffset”number
Byte offset this read started from
Returns
Section titled “Returns”Promise<void>
isEnabled()
Section titled “isEnabled()”isEnabled():
boolean
Defined in: ../../../adapters/core/src/log-importer/base-orchestrator.ts:173
Returns
Section titled “Returns”boolean
isRunning()
Section titled “isRunning()”isRunning():
boolean
Defined in: ../../../adapters/core/src/log-importer/base-orchestrator.ts:177
Returns
Section titled “Returns”boolean
isSessionSkipped()
Section titled “isSessionSkipped()”
protectedisSessionSkipped(adapterSessionId):Promise<boolean>
Defined in: ../../../adapters/core/src/log-importer/base-orchestrator.ts:514
Determine whether an adapter session should be skipped from import.
Delegates to the managed-session cache so concurrent checks for the same
adapterSessionId share one storage lookup and tracked skips update stats.
Parameters
Section titled “Parameters”adapterSessionId
Section titled “adapterSessionId”string
External adapter session ID being evaluated
Returns
Section titled “Returns”Promise<boolean>
Promise resolving to true when the session is Makaio-managed and should be skipped
maybeUpdateCursor()
Section titled “maybeUpdateCursor()”
protectedmaybeUpdateCursor(filePath,bytesRead,startOffset,mtime,isJsonFormat,sessionContext?):Promise<void>
Defined in: ../../../adapters/core/src/log-importer/base-orchestrator.ts:493
Parameters
Section titled “Parameters”filePath
Section titled “filePath”string
bytesRead
Section titled “bytesRead”number
startOffset
Section titled “startOffset”number
Date
isJsonFormat
Section titled “isJsonFormat”boolean
sessionContext?
Section titled “sessionContext?”object & object
Returns
Section titled “Returns”Promise<void>
parseFile()
Section titled “parseFile()”
abstractprotectedparseFile(filePath,startOffset,maxRecords?):Promise<ParseFileResult<TRecord>>
Defined in: ../../../adapters/core/src/log-importer/base-orchestrator.ts:118
Parse a log file from the given byte offset.
Parameters
Section titled “Parameters”filePath
Section titled “filePath”string
Path to the log file
startOffset
Section titled “startOffset”number
Byte offset to start reading from
maxRecords?
Section titled “maxRecords?”number
Optional maximum number of records to return (for shallow discovery)
Returns
Section titled “Returns”Promise<ParseFileResult<TRecord>>
queueCursorUpdate()
Section titled “queueCursorUpdate()”
protectedqueueCursorUpdate(filePath,bytesRead,startOffset,mtime,isJsonFormat,sessionContext?,precedingEventPromises?):Promise<void>
Defined in: ../../../adapters/core/src/log-importer/base-orchestrator.ts:549
Enqueue a cursor write as a PQueue task so it executes after all previously queued events for the same batch have been emitted.
PQueue runs tasks with concurrency=1 in FIFO order, so placing the cursor
write at the back of the queue after all queueEvent calls guarantees that
the cursor advances only once every preceding event in the batch has been
delivered. This prevents the race where a process exit after queueEvent
but before queue drain would leave events lost yet the cursor advanced.
Parameters
Section titled “Parameters”filePath
Section titled “filePath”string
Path to the log file
bytesRead
Section titled “bytesRead”number
Total bytes read at the new cursor position
startOffset
Section titled “startOffset”number
Byte offset this read started from
Date
File modification time
isJsonFormat
Section titled “isJsonFormat”boolean
Whether the file uses JSON (mtime-based) format
sessionContext?
Section titled “sessionContext?”object & object
Serialized session context for the cursor
precedingEventPromises?
Section titled “precedingEventPromises?”Promise<void>[] = []
Emission promises queued before this cursor write
Returns
Section titled “Returns”Promise<void>
Promise that resolves when the cursor write has completed
queueEvent()
Section titled “queueEvent()”
protectedqueueEvent(event):Promise<void>
Defined in: ../../../adapters/core/src/log-importer/base-orchestrator.ts:527
Queue a normalized event and return its delivery promise.
Parameters
Section titled “Parameters”Normalized event to emit
Returns
Section titled “Returns”Promise<void>
Promise that resolves after delivery or rejects on emit failure
shouldSkipFile()
Section titled “shouldSkipFile()”
protectedshouldSkipFile(_filePath):boolean
Defined in: ../../../adapters/core/src/log-importer/base-orchestrator.ts:108
Determine whether a discovered file should be skipped before processing.
Default implementation never skips. Subclasses may override to exclude files by name (e.g., ephemeral compaction summary files).
Parameters
Section titled “Parameters”_filePath
Section titled “_filePath”string
Absolute path to the candidate file
Returns
Section titled “Returns”boolean
true to skip the file entirely, false to process normally
start()
Section titled “start()”start():
Promise<void>
Defined in: ../../../adapters/core/src/log-importer/base-orchestrator.ts:181
Returns
Section titled “Returns”Promise<void>
stop()
Section titled “stop()”stop():
Promise<void>
Defined in: ../../../adapters/core/src/log-importer/base-orchestrator.ts:210
Returns
Section titled “Returns”Promise<void>
trackFileChange()
Section titled “trackFileChange()”
protectedtrackFileChange(event):void
Defined in: ../../../adapters/core/src/log-importer/base-orchestrator.ts:327
Track a watcher-triggered file import so shutdown can wait for any cursor work that the handler enqueues before draining the shared FIFO queue.
Parameters
Section titled “Parameters”File change event to process
Returns
Section titled “Returns”void
trackImportedSession()
Section titled “trackImportedSession()”
protectedtrackImportedSession(adapterSessionId):void
Defined in: ../../../adapters/core/src/log-importer/base-orchestrator.ts:401
Record that a session has been imported, updating import statistics.
Protected to allow subclasses to update stats when processing additional sessions (e.g., compress child sessions from compacted files).
Parameters
Section titled “Parameters”adapterSessionId
Section titled “adapterSessionId”string
The session ID that was imported
Returns
Section titled “Returns”void
updateCursor()
Section titled “updateCursor()”
protectedupdateCursor(filePath,bytesRead,mtime,sessionContext?):Promise<void>
Defined in: ../../../adapters/core/src/log-importer/base-orchestrator.ts:251
Parameters
Section titled “Parameters”filePath
Section titled “filePath”string
bytesRead
Section titled “bytesRead”number
Date
sessionContext?
Section titled “sessionContext?”object & object
Returns
Section titled “Returns”Promise<void>
usesJsonFormat()
Section titled “usesJsonFormat()”
protectedusesJsonFormat():boolean
Defined in: ../../../adapters/core/src/log-importer/base-orchestrator.ts:164
Check if this orchestrator uses JSON format (mtime-based cursor).
Returns
Section titled “Returns”boolean
True if JSON format, false for JSONL
validateRecords()
Section titled “validateRecords()”
protectedvalidateRecords(records):TRecord[]
Defined in: ../../../adapters/core/src/log-importer/base-orchestrator.ts:129
Validate and filter parsed records. Default: returns records as-is.
Parameters
Section titled “Parameters”records
Section titled “records”TRecord[]
Raw parsed records
Returns
Section titled “Returns”TRecord[]
Validated/filtered records
createDefaultCheckMakaioManaged()
Section titled “createDefaultCheckMakaioManaged()”
staticcreateDefaultCheckMakaioManaged(): (sessionId) =>Promise<boolean>
Defined in: ../../../adapters/core/src/log-importer/base-orchestrator.ts:243
Returns
Section titled “Returns”Function that checks if a session is Makaio-managed.
(sessionId) => Promise<boolean>