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:

ParameterTypeRequiredDescription
argvstring[]No

Returns:

Promise<void> -

createAgentCommand

Signature:

createAgentCommand(): Command

Returns:

Command -

registerConfigureCommand

Register the configure command

Signature:

registerConfigureCommand(program: Command): void

Parameters:

ParameterTypeRequiredDescription
programCommandYes

createDiscordCommand

Signature:

createDiscordCommand(): Command

Returns:

Command -

registerDoctorCommand

Register the doctor command

Signature:

registerDoctorCommand(program: Command): void

Parameters:

ParameterTypeRequiredDescription
programCommandYes

registerGatewayCommand

Register the gateway command

Signature:

registerGatewayCommand(program: Command): void

Parameters:

ParameterTypeRequiredDescription
programCommandYes

registerHealthCommand

Register the health command

Signature:

registerHealthCommand(program: Command): void

Parameters:

ParameterTypeRequiredDescription
programCommandYes

registerInstallCommand

Register the install command

Signature:

registerInstallCommand(program: Command): void

Parameters:

ParameterTypeRequiredDescription
programCommandYes

registerLogsCommand

Register the logs command

Signature:

registerLogsCommand(program: Command): void

Parameters:

ParameterTypeRequiredDescription
programCommandYes

registerMCPCommand

Register the mcp command

Signature:

registerMCPCommand(program: Command): void

Parameters:

ParameterTypeRequiredDescription
programCommandYes

createMemoryCommand

Signature:

createMemoryCommand(): Command

Returns:

Command -

registerMessageCommand

Register the message command

Signature:

registerMessageCommand(program: Command): void

Parameters:

ParameterTypeRequiredDescription
programCommandYes

registerSessionsCommand

Register the sessions command

Signature:

registerSessionsCommand(program: Command): void

Parameters:

ParameterTypeRequiredDescription
programCommandYes

updateSession

Update session from message

Signature:

updateSession(sender: string, channel: string, message: string, senderName?: string | undefined): Session

Parameters:

ParameterTypeRequiredDescription
senderstringYes
channelstringYes
messagestringYes
senderNamestring | undefinedNo

Returns:

Session -

registerSignalCommand

Register the signal command

Signature:

registerSignalCommand(program: Command): void

Parameters:

ParameterTypeRequiredDescription
programCommandYes

registerStatusCommand

Register the status command

Signature:

registerStatusCommand(program: Command): void

Parameters:

ParameterTypeRequiredDescription
programCommandYes

createTuiCommand

Signature:

createTuiCommand(): Command

Returns:

Command -

registerWizardCommand

Register the wizard command

Signature:

registerWizardCommand(program: Command): void

Parameters:

ParameterTypeRequiredDescription
programCommandYes

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:

ParameterTypeRequiredDescription
configFlowStateBotConfigYes

getDefaultConfig

Get default configuration

Signature:

getDefaultConfig(): FlowStateBotConfig

Returns:

FlowStateBotConfig -

validateConfig

Validate configuration

Signature:

validateConfig(config: FlowStateBotConfig): { valid: boolean; errors: string[]; }

Parameters:

ParameterTypeRequiredDescription
configFlowStateBotConfigYes

Returns:

{ valid: boolean; errors: string[]; } -

writePidFile

Write PID file

Signature:

writePidFile(pid: number): void

Parameters:

ParameterTypeRequiredDescription
pidnumberYes

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:

ParameterTypeRequiredDescription
pidnumberYes

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:

ParameterTypeRequiredDescription
scriptPathstringYes
argsstring[]No

Returns:

number -

setupDaemonHandlers

Setup process handlers for daemon mode

Signature:

setupDaemonHandlers(onStop: () => Promise<void>): void

Parameters:

ParameterTypeRequiredDescription
onStop() => Promise<void>Yes

createGateway

Create and start a gateway server

Signature:

createGateway(config?: FlowStateBotConfig | undefined): Promise<GatewayServer>

Parameters:

ParameterTypeRequiredDescription
configFlowStateBotConfig | undefinedNo

Returns:

Promise<GatewayServer> -

setCommandLaneConcurrency

Set concurrency limit for a lane

Signature:

setCommandLaneConcurrency(lane: string, maxConcurrent: number): void

Parameters:

ParameterTypeRequiredDescription
lanestringYes
maxConcurrentnumberYes

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:

ParameterTypeRequiredDescription
lanestringYes
task() => Promise<T>Yes
opts{ warnAfterMs?: number; onWait?: (waitedMs: number, queueAhead: number) => void; } | undefinedNo

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:

ParameterTypeRequiredDescription
task() => Promise<T>Yes
opts{ warnAfterMs?: number; onWait?: (waitedMs: number, queueAhead: number) => void; } | undefinedNo

Returns:

Promise<T> -

getQueueSize

Get queue size (active + waiting) for a lane

Signature:

getQueueSize(lane?: string): number

Parameters:

ParameterTypeRequiredDescription
lanestringNo

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:

ParameterTypeRequiredDescription
lanestringNo

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:

ParameterTypeRequiredDescription
configAgentConfig | undefinedNo

Returns:

AgentHandler -

runFlowstateCLI

Execute a flowstate CLI command

Signature:

runFlowstateCLI(args: string[], options?: CLICommandOptions): Promise<CLICommandResult>

Parameters:

ParameterTypeRequiredDescription
argsstring[]Yes
optionsCLICommandOptionsNo

Returns:

Promise<CLICommandResult> -

createFlowStateCLI

Create a FlowState CLI wrapper

Signature:

createFlowStateCLI(options?: { cwd?: string; env?: Record<string, string>; } | undefined): FlowStateCLIWrapper

Parameters:

ParameterTypeRequiredDescription
options{ cwd?: string; env?: Record<string, string>; } | undefinedNo

Returns:

FlowStateCLIWrapper -

createLLMClient

Create an LLM client with default configuration

Signature:

createLLMClient(config?: LLMClientConfig | undefined): LLMClient

Parameters:

ParameterTypeRequiredDescription
configLLMClientConfig | undefinedNo

Returns:

LLMClient -

createMCPClient

Create an MCP client with default configuration

Signature:

createMCPClient(config?: MCPClientConfig | undefined): MCPClient

Parameters:

ParameterTypeRequiredDescription
configMCPClientConfig | undefinedNo

Returns:

MCPClient -

mergeHybridResults

Merge vector and keyword search results using weighted combination

Algorithm:

  1. Normalize scores within each result set (0-1)
  2. Combine results by ID, summing weighted scores
  3. Sort by combined score descending
  4. Filter by minScore threshold

Signature:

mergeHybridResults(params: HybridMergeParams): SearchResult[]

Parameters:

ParameterTypeRequiredDescription
paramsHybridMergeParamsYes

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:

ParameterTypeRequiredDescription
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:

ParameterTypeRequiredDescription
configPartial<MemoryManagerConfig> & { workspaceDir: string; }Yes

Returns:

MemoryManager -

ok

Create a successful result

Signature:

ok(value: T): Result<T, Error>

Parameters:

ParameterTypeRequiredDescription
valueTYes

Returns:

Result<T, Error> -

err

Create an error result

Signature:

err(error: E): Result<never, E>

Parameters:

ParameterTypeRequiredDescription
errorEYes

Returns:

Result<never, E> -

loadDotEnv

Load environment variables from .env files

Signature:

loadDotEnv(options?: LoadDotEnvOptions): void

Parameters:

ParameterTypeRequiredDescription
optionsLoadDotEnvOptionsNo

setLogLevel

Set the current log level

Signature:

setLogLevel(level: LogLevel): void

Parameters:

ParameterTypeRequiredDescription
levelLogLevelYes

getLogLevel

Get the current log level

Signature:

getLogLevel(): LogLevel

Returns:

LogLevel -

createDiscordAgentManager

Create a Discord agent manager

Signature:

createDiscordAgentManager(config: DiscordAgentConfig): DiscordAgentManager

Parameters:

ParameterTypeRequiredDescription
configDiscordAgentConfigYes

Returns:

DiscordAgentManager -

createDiscordClient

Create a configured Discord client

Signature:

createDiscordClient(config: DiscordConfig): DiscordClient

Parameters:

ParameterTypeRequiredDescription
configDiscordConfigYes

Returns:

DiscordClient -

createDiscordGateway

Create a Discord gateway

Signature:

createDiscordGateway(config: DiscordGatewayConfig): DiscordGateway

Parameters:

ParameterTypeRequiredDescription
configDiscordGatewayConfigYes

Returns:

DiscordGateway -

createDiscordMonitor

Create a Discord monitor with message and event handlers

Signature:

createDiscordMonitor(options: DiscordMonitorConfig): DiscordMonitor

Parameters:

ParameterTypeRequiredDescription
optionsDiscordMonitorConfigYes

Returns:

DiscordMonitor -

streamDiscordEvents

Generator function for streaming Discord events

Signature:

streamDiscordEvents(client: DiscordClient, config: DiscordConfig): AsyncGenerator<DiscordEvent, any, any>

Parameters:

ParameterTypeRequiredDescription
clientDiscordClientYes
configDiscordConfigYes

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:

ParameterTypeRequiredDescription
methodstringYes
paramsRecord<string, unknown> | undefinedYes
optsSignalClientOptionsYes

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:

ParameterTypeRequiredDescription
baseUrlstringYes
timeoutMsnumberNo

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:

ParameterTypeRequiredDescription
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:

ParameterTypeRequiredDescription
optionsSignalDaemonOptionsYes

Returns:

Promise<SignalDaemon> -

createSignalMonitor

Create and start a Signal monitor

Signature:

createSignalMonitor(options: SignalMonitorOptions): Promise<SignalMonitor>

Parameters:

ParameterTypeRequiredDescription
optionsSignalMonitorOptionsYes

Returns:

Promise<SignalMonitor> -

sendSignalMessage

Send a message via Signal

Signature:

sendSignalMessage(client: SignalClient, options: SendMessageOptions): Promise<{ timestamps: number[]; }>

Parameters:

ParameterTypeRequiredDescription
clientSignalClientYes
optionsSendMessageOptionsYes

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:

ParameterTypeRequiredDescription
clientSignalClientYes
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:

ParameterTypeRequiredDescription
clientSignalClientYes
options{ account: string; recipient: string; stop?: boolean; }Yes

Returns:

Promise<void> -

createEmbeddingProvider

Signature:

createEmbeddingProvider(config: EmbeddingProviderConfig): EmbeddingProvider

Parameters:

ParameterTypeRequiredDescription
configEmbeddingProviderConfigYes

Returns:

EmbeddingProvider -

cosineSimilarity

Cosine similarity between two vectors

Signature:

cosineSimilarity(a: number[], b: number[]): number

Parameters:

ParameterTypeRequiredDescription
anumber[]Yes
bnumber[]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:

ParameterTypeRequiredDescription
contentstringYes
pathstringYes
optionsPartial<ChunkerOptions>No

Returns:

Chunk[] -

estimateTokens

Estimate token count for a string Uses simple character-based approximation

Signature:

estimateTokens(text: string, charsPerToken?: number): number

Parameters:

ParameterTypeRequiredDescription
textstringYes
charsPerTokennumberNo

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:

ParameterTypeRequiredDescription
contentstringYes

Returns:

{ prose: string; codeBlocks: Array<{ lang: string; code: string; placeholder: string; }>; } -

Previous
Classes