Bot
Functions
Functions
buildProgram
Build the main CLI program with all commands
Signature:
buildProgram(): Command
Returns:
Command -
runCli
Run the CLI with the given arguments
Signature:
runCli(argv?: string[]): Promise<void>
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
argv | string[] | No |
Returns:
Promise<void> -
createAgentCommand
Signature:
createAgentCommand(): Command
Returns:
Command -
registerConfigureCommand
Register the configure command
Signature:
registerConfigureCommand(program: Command): void
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
program | Command | Yes |
createDiscordCommand
Signature:
createDiscordCommand(): Command
Returns:
Command -
registerDoctorCommand
Register the doctor command
Signature:
registerDoctorCommand(program: Command): void
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
program | Command | Yes |
registerGatewayCommand
Register the gateway command
Signature:
registerGatewayCommand(program: Command): void
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
program | Command | Yes |
registerHealthCommand
Register the health command
Signature:
registerHealthCommand(program: Command): void
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
program | Command | Yes |
registerInstallCommand
Register the install command
Signature:
registerInstallCommand(program: Command): void
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
program | Command | Yes |
registerLogsCommand
Register the logs command
Signature:
registerLogsCommand(program: Command): void
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
program | Command | Yes |
registerMCPCommand
Register the mcp command
Signature:
registerMCPCommand(program: Command): void
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
program | Command | Yes |
createMemoryCommand
Signature:
createMemoryCommand(): Command
Returns:
Command -
registerMessageCommand
Register the message command
Signature:
registerMessageCommand(program: Command): void
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
program | Command | Yes |
registerSessionsCommand
Register the sessions command
Signature:
registerSessionsCommand(program: Command): void
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
program | Command | Yes |
updateSession
Update session from message
Signature:
updateSession(sender: string, channel: string, message: string, senderName?: string | undefined): Session
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
sender | string | Yes | |
channel | string | Yes | |
message | string | Yes | |
senderName | string | undefined | No |
Returns:
Session -
registerSignalCommand
Register the signal command
Signature:
registerSignalCommand(program: Command): void
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
program | Command | Yes |
registerStatusCommand
Register the status command
Signature:
registerStatusCommand(program: Command): void
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
program | Command | Yes |
createTuiCommand
Signature:
createTuiCommand(): Command
Returns:
Command -
registerWizardCommand
Register the wizard command
Signature:
registerWizardCommand(program: Command): void
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
program | Command | Yes |
getConfigDir
Get the configuration directory path
Signature:
getConfigDir(): string
Returns:
string -
getConfigPath
Get the configuration file path
Signature:
getConfigPath(): string
Returns:
string -
ensureConfigDir
Ensure the configuration directory exists
Signature:
ensureConfigDir(): void
loadConfig
Load configuration from file
Signature:
loadConfig(): FlowStateBotConfig
Returns:
FlowStateBotConfig -
saveConfig
Save configuration to file
Signature:
saveConfig(config: FlowStateBotConfig): void
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
config | FlowStateBotConfig | Yes |
getDefaultConfig
Get default configuration
Signature:
getDefaultConfig(): FlowStateBotConfig
Returns:
FlowStateBotConfig -
validateConfig
Validate configuration
Signature:
validateConfig(config: FlowStateBotConfig): { valid: boolean; errors: string[]; }
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
config | FlowStateBotConfig | Yes |
Returns:
{ valid: boolean; errors: string[]; } -
writePidFile
Write PID file
Signature:
writePidFile(pid: number): void
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
pid | number | Yes |
readPidFile
Read PID file
Signature:
readPidFile(): number | null
Returns:
number \| null -
removePidFile
Remove PID file
Signature:
removePidFile(): void
isProcessRunning
Check if a process is running
Signature:
isProcessRunning(pid: number): boolean
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
pid | number | Yes |
Returns:
boolean -
isDaemonRunning
Check if gateway daemon is running
Signature:
isDaemonRunning(): { running: boolean; pid: number | null; }
Returns:
{ running: boolean; pid: number \| null; } -
stopDaemon
Stop the daemon
Signature:
stopDaemon(): Promise<boolean>
Returns:
Promise<boolean> -
getLogPaths
Get log file paths
Signature:
getLogPaths(): { stdout: string; stderr: string; combined: string; }
Returns:
{ stdout: string; stderr: string; combined: string; } -
spawnDaemon
Spawn gateway as daemon (detached process)
Signature:
spawnDaemon(scriptPath: string, args?: string[]): number
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
scriptPath | string | Yes | |
args | string[] | No |
Returns:
number -
setupDaemonHandlers
Setup process handlers for daemon mode
Signature:
setupDaemonHandlers(onStop: () => Promise<void>): void
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
onStop | () => Promise<void> | Yes |
createGateway
Create and start a gateway server
Signature:
createGateway(config?: FlowStateBotConfig | undefined): Promise<GatewayServer>
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
config | FlowStateBotConfig | undefined | No |
Returns:
Promise<GatewayServer> -
setCommandLaneConcurrency
Set concurrency limit for a lane
Signature:
setCommandLaneConcurrency(lane: string, maxConcurrent: number): void
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
lane | string | Yes | |
maxConcurrent | number | Yes |
enqueueCommandInLane
Enqueue a task in a specific lane
Signature:
enqueueCommandInLane(lane: string, task: () => Promise<T>, opts?: { warnAfterMs?: number; onWait?: (waitedMs: number, queueAhead: number) => void; } | undefined): Promise<T>
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
lane | string | Yes | |
task | () => Promise<T> | Yes | |
opts | { warnAfterMs?: number; onWait?: (waitedMs: number, queueAhead: number) => void; } | undefined | No |
Returns:
Promise<T> -
enqueueCommand
Enqueue a task in the main lane (convenience)
Signature:
enqueueCommand(task: () => Promise<T>, opts?: { warnAfterMs?: number; onWait?: (waitedMs: number, queueAhead: number) => void; } | undefined): Promise<T>
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
task | () => Promise<T> | Yes | |
opts | { warnAfterMs?: number; onWait?: (waitedMs: number, queueAhead: number) => void; } | undefined | No |
Returns:
Promise<T> -
getQueueSize
Get queue size (active + waiting) for a lane
Signature:
getQueueSize(lane?: string): number
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
lane | string | No |
Returns:
number -
getTotalQueueSize
Get total queue size across all lanes
Signature:
getTotalQueueSize(): number
Returns:
number -
clearCommandLane
Clear pending tasks in a lane (for shutdown) Returns number of tasks cleared
Signature:
clearCommandLane(lane?: string): number
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
lane | string | No |
Returns:
number -
getLaneStats
Get lane statistics for monitoring
Signature:
getLaneStats(): Map<string, { active: number; queued: number; maxConcurrent: number; }>
Returns:
Map<string, { active: number; queued: number; maxConcurrent: number; }> -
createAgentHandler
Create an agent handler
Signature:
createAgentHandler(config?: AgentConfig | undefined): AgentHandler
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
config | AgentConfig | undefined | No |
Returns:
AgentHandler -
runFlowstateCLI
Execute a flowstate CLI command
Signature:
runFlowstateCLI(args: string[], options?: CLICommandOptions): Promise<CLICommandResult>
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
args | string[] | Yes | |
options | CLICommandOptions | No |
Returns:
Promise<CLICommandResult> -
createFlowStateCLI
Create a FlowState CLI wrapper
Signature:
createFlowStateCLI(options?: { cwd?: string; env?: Record<string, string>; } | undefined): FlowStateCLIWrapper
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
options | { cwd?: string; env?: Record<string, string>; } | undefined | No |
Returns:
FlowStateCLIWrapper -
createLLMClient
Create an LLM client with default configuration
Signature:
createLLMClient(config?: LLMClientConfig | undefined): LLMClient
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
config | LLMClientConfig | undefined | No |
Returns:
LLMClient -
createMCPClient
Create an MCP client with default configuration
Signature:
createMCPClient(config?: MCPClientConfig | undefined): MCPClient
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
config | MCPClientConfig | undefined | No |
Returns:
MCPClient -
mergeHybridResults
Merge vector and keyword search results using weighted combination
Algorithm:
- Normalize scores within each result set (0-1)
- Combine results by ID, summing weighted scores
- Sort by combined score descending
- Filter by minScore threshold
Signature:
mergeHybridResults(params: HybridMergeParams): SearchResult[]
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
params | HybridMergeParams | Yes |
Returns:
SearchResult[] -
reciprocalRankFusion
Reciprocal Rank Fusion (alternative merge strategy) Better for combining heterogeneous ranking signals
Signature:
reciprocalRankFusion(params: { vector: VectorResult[]; keyword: KeywordResult[]; k?: number; maxResults?: number; }): SearchResult[]
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
params | { vector: VectorResult[]; keyword: KeywordResult[]; k?: number; maxResults?: number; } | Yes |
Returns:
SearchResult[] -
createMemoryManager
Create a configured MemoryManager instance
Signature:
createMemoryManager(config: Partial<MemoryManagerConfig> & { workspaceDir: string; }): MemoryManager
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
config | Partial<MemoryManagerConfig> & { workspaceDir: string; } | Yes |
Returns:
MemoryManager -
ok
Create a successful result
Signature:
ok(value: T): Result<T, Error>
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
value | T | Yes |
Returns:
Result<T, Error> -
err
Create an error result
Signature:
err(error: E): Result<never, E>
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
error | E | Yes |
Returns:
Result<never, E> -
loadDotEnv
Load environment variables from .env files
Signature:
loadDotEnv(options?: LoadDotEnvOptions): void
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
options | LoadDotEnvOptions | No |
setLogLevel
Set the current log level
Signature:
setLogLevel(level: LogLevel): void
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
level | LogLevel | Yes |
getLogLevel
Get the current log level
Signature:
getLogLevel(): LogLevel
Returns:
LogLevel -
createDiscordAgentManager
Create a Discord agent manager
Signature:
createDiscordAgentManager(config: DiscordAgentConfig): DiscordAgentManager
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
config | DiscordAgentConfig | Yes |
Returns:
DiscordAgentManager -
createDiscordClient
Create a configured Discord client
Signature:
createDiscordClient(config: DiscordConfig): DiscordClient
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
config | DiscordConfig | Yes |
Returns:
DiscordClient -
createDiscordGateway
Create a Discord gateway
Signature:
createDiscordGateway(config: DiscordGatewayConfig): DiscordGateway
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
config | DiscordGatewayConfig | Yes |
Returns:
DiscordGateway -
createDiscordMonitor
Create a Discord monitor with message and event handlers
Signature:
createDiscordMonitor(options: DiscordMonitorConfig): DiscordMonitor
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
options | DiscordMonitorConfig | Yes |
Returns:
DiscordMonitor -
streamDiscordEvents
Generator function for streaming Discord events
Signature:
streamDiscordEvents(client: DiscordClient, config: DiscordConfig): AsyncGenerator<DiscordEvent, any, any>
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
client | DiscordClient | Yes | |
config | DiscordConfig | Yes |
Returns:
AsyncGenerator<DiscordEvent, any, any> -
signalRpcRequest
Make a Signal RPC request
Signature:
signalRpcRequest(method: string, params: Record<string, unknown> | undefined, opts: SignalClientOptions): Promise<T>
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
method | string | Yes | |
params | Record<string, unknown> | undefined | Yes | |
opts | SignalClientOptions | Yes |
Returns:
Promise<T> -
signalCheck
Check if signal-cli is running
Signature:
signalCheck(baseUrl: string, timeoutMs?: number): Promise<{ ok: boolean; status?: number | null; error?: string | null; }>
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
baseUrl | string | Yes | |
timeoutMs | number | No |
Returns:
Promise<{ ok: boolean; status?: number \| null; error?: string \| null; }> -
streamSignalEvents
Stream Signal events via SSE
Signature:
streamSignalEvents(params: { baseUrl: string; account?: string; abortSignal?: AbortSignal; onEvent: (event: SignalSseEvent) => void; onError?: (error: Error) => void; }): Promise<void>
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
params | { baseUrl: string; account?: string; abortSignal?: AbortSignal; onEvent: (event: SignalSseEvent) => void; onError?: (error: Error) => void; } | Yes |
Returns:
Promise<void> -
spawnSignalDaemon
Spawn a signal-cli daemon and return when ready
Signature:
spawnSignalDaemon(options: SignalDaemonOptions): Promise<SignalDaemon>
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
options | SignalDaemonOptions | Yes |
Returns:
Promise<SignalDaemon> -
createSignalMonitor
Create and start a Signal monitor
Signature:
createSignalMonitor(options: SignalMonitorOptions): Promise<SignalMonitor>
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
options | SignalMonitorOptions | Yes |
Returns:
Promise<SignalMonitor> -
sendSignalMessage
Send a message via Signal
Signature:
sendSignalMessage(client: SignalClient, options: SendMessageOptions): Promise<{ timestamps: number[]; }>
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
client | SignalClient | Yes | |
options | SendMessageOptions | Yes |
Returns:
Promise<{ timestamps: number[]; }> -
sendSignalReaction
Send a reaction via Signal
Signature:
sendSignalReaction(client: SignalClient, options: { account: string; recipient: string; emoji: string; targetAuthor: string; targetTimestamp: number; remove?: boolean; }): Promise<void>
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
client | SignalClient | Yes | |
options | { account: string; recipient: string; emoji: string; targetAuthor: string; targetTimestamp: number; remove?: boolean; } | Yes |
Returns:
Promise<void> -
sendSignalTyping
Send typing indicator
Signature:
sendSignalTyping(client: SignalClient, options: { account: string; recipient: string; stop?: boolean; }): Promise<void>
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
client | SignalClient | Yes | |
options | { account: string; recipient: string; stop?: boolean; } | Yes |
Returns:
Promise<void> -
createEmbeddingProvider
Signature:
createEmbeddingProvider(config: EmbeddingProviderConfig): EmbeddingProvider
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
config | EmbeddingProviderConfig | Yes |
Returns:
EmbeddingProvider -
cosineSimilarity
Cosine similarity between two vectors
Signature:
cosineSimilarity(a: number[], b: number[]): number
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
a | number[] | Yes | |
b | number[] | Yes |
Returns:
number -
chunkMarkdown
Split markdown content into chunks Respects heading boundaries when possible
Signature:
chunkMarkdown(content: string, path: string, options?: Partial<ChunkerOptions>): Chunk[]
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
content | string | Yes | |
path | string | Yes | |
options | Partial<ChunkerOptions> | No |
Returns:
Chunk[] -
estimateTokens
Estimate token count for a string Uses simple character-based approximation
Signature:
estimateTokens(text: string, charsPerToken?: number): number
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
text | string | Yes | |
charsPerToken | number | No |
Returns:
number -
extractCodeBlocks
Split code blocks separately to avoid breaking syntax
Signature:
extractCodeBlocks(content: string): { prose: string; codeBlocks: Array<{ lang: string; code: string; placeholder: string; }>; }
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
content | string | Yes |
Returns:
{ prose: string; codeBlocks: Array<{ lang: string; code: string; placeholder: string; }>; } -