App Framework

Interfaces

Interfaces

CommandContextValue

Context value interface

Properties:

PropertyTypeRequiredDescription
serviceCommandServiceYesThe command service instance
execute<T = void>(commandId: string, args?: unknown) => Promise<CommandResult<T>>YesExecute a command by ID
exists(commandId: string) => booleanYesCheck if a command exists
isEnabled(commandId: string) => booleanYesCheck if a command is enabled
commandsExecutableCommand[]YesGet all executable commands
contextCmdContextYesCurrent command context

CommandProviderProps

Props for CommandProvider

Properties:

PropertyTypeRequiredDescription
initialContextPartial<CmdContext>NoInitial context values
childrenReact.ReactNodeYesChildren to render

CommandContext

Command System Types

Types for the runtime command execution system.

Properties:

PropertyTypeRequiredDescription
activeAppstringNoCurrently active app/plugin ID
activeRoutestringNoCurrent route path
platformstringYesPlatform (win32, darwin, linux, web)
isAuthenticatedbooleanNoWhether user is authenticated
userIdstringNoCurrent user ID
orgIdstringNoCurrent organization ID
workspaceIdstringNoCurrent workspace ID

CommandResult

Result of executing a command

Properties:

PropertyTypeRequiredDescription
successbooleanYesWhether the command executed successfully
resultTNoThe result value if successful
errorCommandErrorNoError if command failed
durationnumberYesTime taken to execute in milliseconds

ExecutableCommand

An executable command (contribution + handler)

Properties:

PropertyTypeRequiredDescription
idstringYesCommand ID
titlestringYesDisplay title
categorystringNoCategory for grouping
iconstringNoIcon name
enabledbooleanYesWhether the command is currently enabled
hasHandlerbooleanYesWhether a handler is registered
pluginIdstringYesThe plugin that contributed this command

RegisteredHandler

Registered command handler with metadata

Properties:

PropertyTypeRequiredDescription
handlerCommandHandler<unknown, unknown>YesThe handler function
pluginIdstringYesPlugin that registered this handler
registeredAtnumberYesWhen this handler was registered

CommandExecutionEvent

Command execution event

Properties:

PropertyTypeRequiredDescription
commandIdstringYesCommand ID that was executed
successbooleanYesWhether execution was successful
durationnumberYesExecution duration in milliseconds
errorstringNoError message if failed
pluginIdstringNoPlugin that provided the command

FlowstateAppProviderProps

Properties:

PropertyTypeRequiredDescription
configFlowstateAppConfigYes
childrenReact.ReactNodeYes

RootRedirectProps

Properties:

PropertyTypeRequiredDescription
defaultPathstringNoDefault path when fully authenticated
serversPathstringNoPath to servers app for server management
onboardingPathstringNoPath to onboarding flow

ServerConfigNavbarProps

Properties:

PropertyTypeRequiredDescription
classNamestringNo

ViteConfigOptions

Options for creating Vite configuration

Properties:

PropertyTypeRequiredDescription
srcDirstringNoSource directory (default: 'src')
pluginsPluginOption[]NoAdditional Vite plugins
aliasRecord<string, string>NoAdditional path aliases
externalstring[]NoExternal dependencies to exclude from bundle
portnumberNoDev server port

DefaultAttribute

Default Categories and Tags for Various Project Types

These defaults are used to seed new organizations/workspaces with a standard set of categories and tags for project management. Supports multiple presets for different project types.

Properties:

PropertyTypeRequiredDescription
namestringYes
titlestringYes
colorstringYes
descriptionstringNo

PresetConfig

Preset configuration containing categories and tags

Properties:

PropertyTypeRequiredDescription
namePresetTypeYes
titlestringYes
descriptionstringYes
categoriesDefaultAttribute[]Yes
tagsDefaultAttribute[]Yes

FlowstateContainerConfig

Properties:

PropertyTypeRequiredDescription
pluginsFlowstatePlugin[]Yes

ReplicationContextState

Properties:

PropertyTypeRequiredDescription
isReplicatingbooleanYes
replicationStatusReplicationStatus[]Yes
forceSync() => Promise<void>Yes
awaitPendingPushes(timeout?: number) => Promise<void>Yes
getReplicationState(collection: string) => RxReplicationState<any, any> | undefinedYes

ReplicationProviderProps

Properties:

PropertyTypeRequiredDescription
databaseRxDatabaseYes
serverConfigServerInfoYes
configReplicationPluginConfigYes
authTokenstringNo
childrenReact.ReactNodeYes

ViewState

View state shape

Properties:

PropertyTypeRequiredDescription
sidebarVisiblebooleanYesWhether the sidebar is visible
footerVisiblebooleanYesWhether the footer/visor bottom panel is visible
settingsOpenbooleanYesWhether the settings modal is open
settingsTabstringYesWhich settings tab is active
panelDockPositionPanelDockPositionYesPanel dock position (bottom or right)
rightPanelVisiblebooleanYesWhether the right panel is visible
rightPanelModeRightPanelModeYesRight panel display mode
rightPanelWidthnumberYesRight panel width in pixels
rightPanelConversationIdstringYesActive conversation ID in right panel

ViewStateContextValue

View state context value

Properties:

PropertyTypeRequiredDescription
toggleSidebar() => voidYesToggle sidebar visibility
setSidebarVisible(visible: boolean) => voidYesSet sidebar visibility
toggleFooter() => voidYesToggle footer/visor visibility
setFooterVisible(visible: boolean) => voidYesSet footer/visor visibility
openSettings(tab?: string) => voidYesOpen settings modal
closeSettings() => voidYesClose settings modal
toggleSettings() => voidYesToggle settings modal
setSettingsTab(tab: string) => voidYesSet active settings tab
togglePanelDockPosition() => voidYesToggle panel dock position between bottom and right
setPanelDockPosition(position: PanelDockPosition) => voidYesSet panel dock position
toggleRightPanel() => voidYesToggle right panel visibility
setRightPanelVisible(visible: boolean) => voidYesSet right panel visibility
setRightPanelMode(mode: RightPanelMode) => voidYesSet right panel mode
setRightPanelWidth(width: number) => voidYesSet right panel width
openConversation(conversationId: string) => voidYesOpen a conversation in the right panel
closeConversation() => voidYesClose the active conversation

ViewStateProviderProps

ViewStateProvider props

Properties:

PropertyTypeRequiredDescription
childrenReact.ReactNodeYes
initialStatePartial<ViewState>NoOverride initial state

ContributionContextValue

Context value interface

Properties:

PropertyTypeRequiredDescription
registryContributionRegistryYesThe contribution registry instance
contextConditionContextYesCurrent condition context for evaluating "when" expressions
setContext(updates: Partial<ConditionContext>) => voidYesUpdate the condition context

ContributionProviderProps

Props for ContributionProvider

Properties:

PropertyTypeRequiredDescription
initialContextConditionContextNoInitial condition context
childrenReact.ReactNodeYesChildren to render

ContributionPointDefinition

Definition of a contribution point Contribution points define extension points where plugins can add functionality

Properties:

PropertyTypeRequiredDescription
idstringYesUnique identifier for this contribution point
descriptionstringYesHuman-readable description
schemaz.ZodType<T, z.ZodTypeDef, T>YesZod schema for validating contributions
process(contribution: T, pluginId: string) => ProcessedContribution<T>NoProcess raw contribution data into validated form

ProcessedContribution

A processed contribution from a plugin manifest

Properties:

PropertyTypeRequiredDescription
pluginIdstringYesThe plugin that contributed this
pointIdstringYesThe contribution point ID
dataTYesThe validated contribution data

ConditionContext

Context for evaluating "when" conditions

Properties:

PropertyTypeRequiredDescription
activeAppstringNoCurrently active app/plugin ID
activeRoutestringNoCurrent route path
platformstringNoPlatform (win32, darwin, linux, web)
textInputFocusbooleanNoWhether a text input is focused
modalOpenbooleanNoWhether a modal is open

ResolvedCommand

Resolved command (with handler attached)

Properties:

PropertyTypeRequiredDescription
idstringYesCommand ID
titlestringYesDisplay title
categorystringNoCategory for grouping
iconstringNoIcon name
enabledbooleanYesWhether command is enabled in current context
pluginIdstringYesThe plugin that contributed this command

ResolvedMenuItem

Resolved menu item (with command details and visibility)

Properties:

PropertyTypeRequiredDescription
commandIdstringYesCommand ID
titlestringYesCommand title
iconstringNoIcon name
visiblebooleanYesWhether item is visible in current context
enabledbooleanYesWhether item is enabled in current context
groupstringNoGroup for ordering
ordernumberYesSort order within group
altstringNoAlternative command when Alt is held
pluginIdstringYesThe plugin that contributed this item

Menu group with items

Properties:

PropertyTypeRequiredDescription
idstringYesGroup ID (e.g., "1_create")
ordernumberYesSort order
itemsResolvedMenuItem[]YesItems in this group

ResolvedKeybinding

Resolved keybinding

Properties:

PropertyTypeRequiredDescription
commandIdstringYesCommand ID to execute
keystringYesKey combination for current platform
rawKeystringYesRaw key (non-Mac)
macKeystringNoMac-specific key
activebooleanYesWhether keybinding is active in current context
pluginIdstringYesThe plugin that contributed this keybinding

ResolvedStatusBarItem

Resolved status bar item (with visibility state)

Properties:

PropertyTypeRequiredDescription
idstringYesUnique item ID
alignment"right" | "left" | "center"YesAlignment in status bar
prioritynumberYesPriority for ordering (higher = further from center)
commandstringNoCommand to execute on click
textstringNoText to display
tooltipstringNoTooltip on hover
iconstringNoIcon name
visiblebooleanYesWhether item is visible in current context
backgroundColorstringNoBackground color
dynamicbooleanYesWhether this is a dynamic item
pluginIdstringYesThe plugin that contributed this item

ResolvedHeaderAction

Resolved header action item (with visibility state)

Properties:

PropertyTypeRequiredDescription
idstringYesUnique item ID
iconstringYesIcon name
tooltipstringYesTooltip on hover
commandstringYesCommand to execute on click
prioritynumberYesPriority for ordering (higher = further right)
visiblebooleanYesWhether item is visible in current context
togglebooleanYesWhether this is a toggle action
toggleStateKeystringNoState key for toggle
pluginIdstringYesThe plugin that contributed this item

ResolvedSettingsTab

Resolved settings tab (with visibility state)

Properties:

PropertyTypeRequiredDescription
idstringYesUnique tab ID
labelstringYesDisplay label
iconstringNoIcon name
prioritynumberYesPriority for ordering (lower = higher in list)
componentstringNoComponent path or ID
groupstringYesGroup for organizing tabs
pluginIdstringYesThe plugin that contributed this tab

ResolvedBottomPanelTab

Resolved bottom panel tab (with visibility state)

Properties:

PropertyTypeRequiredDescription
idstringYesUnique tab ID
labelstringYesDisplay label
iconstringNoIcon name
prioritynumberYesPriority for ordering (lower = further left)
componentstringNoComponent path or ID
badgestringNoBadge count
visiblebooleanYesWhether tab is visible in current context
pluginIdstringYesThe plugin that contributed this tab

ResolvedBottomPanelToolbarDropdownItem

Resolved bottom panel toolbar dropdown item

Properties:

PropertyTypeRequiredDescription
labelstringYesDisplay label
commandstringYesCommand to execute
iconstringNoIcon name
separatorbooleanNoWhether to show separator before this item

ResolvedBottomPanelToolbarItem

Resolved bottom panel toolbar item (with visibility state)

Properties:

PropertyTypeRequiredDescription
idstringYesUnique item ID
tabIdstringYesTab ID this toolbar item belongs to
iconstringYesIcon name
tooltipstringYesTooltip on hover
commandstringYesCommand to execute on click
prioritynumberYesPriority for ordering (lower = further left)
visiblebooleanYesWhether item is visible in current context
dropdownResolvedBottomPanelToolbarDropdownItem[]NoOptional dropdown menu items
pluginIdstringYesThe plugin that contributed this item

ContributionChangeEvent

Event emitted when contributions change

Properties:

PropertyTypeRequiredDescription
pointIdstringYesThe contribution point that changed
type"added" | "removed" | "updated"YesType of change
pluginIdstringYesPlugin that made the change

PaletteControl

Palette control interface (to avoid circular dependencies)

Properties:

PropertyTypeRequiredDescription
open() => voidYes
close() => voidYes

QuickNavControl

QuickNav control interface (to avoid circular dependencies)

Properties:

PropertyTypeRequiredDescription
open() => voidYes
close() => voidYes

Navigation control interface

Properties:

PropertyTypeRequiredDescription
navigate(path: string) => voidYes

ViewControl

View control interface

Properties:

PropertyTypeRequiredDescription
toggleSidebar() => voidYes
toggleFooter() => voidYes
toggleRightPanel() => voidYes
openSettings(tab?: string) => voidYes

CoreCommandOptions

Options for registering core command handlers

Properties:

PropertyTypeRequiredDescription
commandServiceCommandServiceYesCommand service instance
palettePaletteControlYesPalette control functions
quicknavQuickNavControlNoQuickNav control functions (optional)
navigationNavigationControlNoNavigation control (optional)
viewViewControlNoView control functions (optional)
onSettings() => voidNoCallback for settings action
onHelp() => voidNoCallback for help action
onAbout() => voidNoCallback for about action

AppNavigateOptions

Extended navigation options that include org/workspace context switching

Properties:

PropertyTypeRequiredDescription
orgIdstringNoTarget organization ID - if different from current, will switch org context before navigating
workspaceIdstringNoTarget workspace ID - if different from current, will switch workspace context before navigating

AttributeScopeOptions

Scope options for attribute queries with inheritance

Properties:

PropertyTypeRequiredDescription
workspaceIdstringNoWorkspace ID to filter by (uses current workspace if not provided)
projectIdstringNoProject ID to filter by (for project-scoped attributes via metadata)
inheritFromParentbooleanNoEnable scope inheritance where sub-scopes override parent scopes
When true:
  • At project level: shows org + workspace + project attrs (project overrides workspace overrides org)
  • At workspace level: shows org + workspace attrs (workspace overrides org)
  • At org level: shows only org attrs

Override logic: attributes with the same name at a lower scope override higher scope |

UseAuthenticatedReplicationResult

Properties:

PropertyTypeRequiredDescription
userAuthUserYes
isAuthenticatedbooleanYes
isAuthLoadingbooleanYes
isReplicatingbooleanYes
replicationStatusimport("/Users/sthornock/code/epic/epic-flowstate/packages/flowstate-app-framework/src/index").ReplicationStatus[]Yes
canReplicatebooleanYes
sendVerificationCode(email: string) => Promise<void>Yes
login(email: string, code: string) => Promise<AuthUser>Yes
logout() => voidYes
getAuthHeaders() => Record<string, string>Yes
forceSync() => Promise<void>Yes
awaitPendingPushes(timeout?: number) => Promise<void>Yes

EntityChainItem

Represents an entity in the parent chain

Properties:

PropertyTypeRequiredDescription
type"project" | "milestone" | "task"YesThe type of entity
idstringYesThe entity ID

EntityContext

Represents the current entity context extracted from the URL

Properties:

PropertyTypeRequiredDescription
entityType"project" | "milestone" | "task"YesThe type of the most specific entity in the URL, or null if none
entityIdstringYesThe ID of the most specific entity in the URL, or null if none
parentChainEntityChainItem[]YesThe full chain of entities from the URL, ordered from least to most specific

UseLongTermMemoryOptions

Configuration options for useLongTermMemory hook

Properties:

PropertyTypeRequiredDescription
defaultSearchLimitnumberNoDefault limit for search results

UseLongTermMemoryResult

Result returned by useLongTermMemory hook

Properties:

PropertyTypeRequiredDescription
memoriesLongTermMemory[]YesSearch results from the most recent search
totalCountnumberYesTotal count from the most recent search
isLoadingbooleanYesWhether an operation is currently in progress
errorErrorYesError from the most recent operation
search(query: string, options?: Partial<Omit<SearchLongTermMemoryParams, "text">>) => Promise<LongTermMemory[]>YesSearch long-term memories
create(params: Omit<CreateLongTermMemoryParams, "namespace"> & { namespace?: string; }) => Promise<LongTermMemory | null>YesCreate a new long-term memory
forget(params: Omit<ForgetMemoriesParams, "namespace"> & { namespace?: string; }) => Promise<ForgetMemoriesResponse>YesForget (delete) memories based on policy
clearResults() => voidYesClear the current search results

UseMemoryClientOptions

Configuration options for useMemoryClient hook

Properties:

PropertyTypeRequiredDescription
baseUrlstringNoAMS base URL
timeoutnumberNoRequest timeout in milliseconds
debugbooleanNoEnable debug logging
defaultNamespacestringNoDefault namespace for memory operations
contextWindowMaxnumberNoDefault context window max tokens
authTokenstringNoAuthorization token for API requests
Will be sent as Bearer token in Authorization header

UseMemoryClientResult

Result returned by useMemoryClient hook

Properties:

PropertyTypeRequiredDescription
clientAgentMemoryClientYesThe AMS client instance (null if initialization failed)
isReadybooleanYesWhether the client is ready for use (initialized and healthy)
isInitializingbooleanYesWhether the client is still initializing (health check in progress)
errorErrorYesError if client initialization or health check failed
isHealthybooleanYesWhether the AMS server is healthy

UseMemorySessionOptions

Configuration options for useMemorySession hook

Properties:

PropertyTypeRequiredDescription
refreshIntervalnumberNoAuto-refresh interval in milliseconds
Set to 0 or undefined to disable auto-refresh
fetchOnMountbooleanNoWhether to fetch data immediately on mount

UseMemorySessionResult

Result returned by useMemorySession hook

Properties:

PropertyTypeRequiredDescription
memoryAmsMemoryYesThe current memory state (null if not loaded or cleared)
messagesAmsMessage[]YesMessages in the session (empty array if no memory)
messageCountnumberYesNumber of messages in the session
tokenCountnumberYesToken count for the session context window
isLoadingbooleanYesWhether data is currently loading
errorErrorYesError if fetch or operation failed
refresh() => Promise<void>YesRefresh the session data manually
clear() => Promise<boolean>YesClear the session memory from AMS

UseMemorySessionsOptions

Configuration options for useMemorySessions hook

Properties:

PropertyTypeRequiredDescription
fetchOnMountbooleanNoWhether to fetch data immediately on mount

UseMemorySessionsResult

Result returned by useMemorySessions hook

Properties:

PropertyTypeRequiredDescription
sessionsAmsSession[]YesList of sessions in the namespace
totalnumberYesTotal count of sessions (before pagination)
isLoadingbooleanYesWhether data is currently loading
errorErrorYesError if fetch or operation failed
refresh() => Promise<void>YesRefresh the sessions list manually
deleteSession(sessionId: string) => Promise<boolean>YesDelete a specific session by ID

UseOnboardingDetectionOptions

Properties:

PropertyTypeRequiredDescription
hasLocalDatabaseDatabooleanYesWhether the local database has any data

UseOnboardingDetectionResult

Properties:

PropertyTypeRequiredDescription
needsOnboardingbooleanYesWhether onboarding is needed
isLoadingbooleanYesWhether detection is still loading
markOnboardingComplete() => voidYesMark onboarding as complete
resetOnboarding() => voidYesReset onboarding state (for testing/debugging)

UseOrgWorkspaceOptions

Properties:

PropertyTypeRequiredDescription
dbanyNoDatabase instance for querying orgs and workspaces
autoLoadbooleanNoAuto-load org and workspace data on mount (for API compatibility, not used)

UseOrgWorkspaceReturn

Properties:

PropertyTypeRequiredDescription
selectedOrgIdstringYes
selectedWorkspaceIdstringYes
selectedOrgOrgModelYes
selectedWorkspaceWorkspaceModelYes
setSelectedOrgId(orgId: string) => Promise<void>Yes
setSelectedWorkspaceId(workspaceId: string) => Promise<void>Yes
isLoadingbooleanYes
getOrgSelector() => { orgId: string; } | {}Yes
getWorkspaceSelector() => { orgId: string; workspaceId?: string; } | {}Yes

UseSearchAllMemoryOptions

Configuration options for useSearchAllMemory hook

Properties:

PropertyTypeRequiredDescription
defaultLimitnumberNoDefault limit for search results
defaultIncludeWorkingMemorybooleanNoInclude working memory in search by default
defaultIncludeLongTermMemorybooleanNoInclude long-term memory in search by default

UseSearchAllMemoryResult

Result returned by useSearchAllMemory hook

Properties:

PropertyTypeRequiredDescription
resultsUnifiedSearchResult[]YesSearch results from the most recent search
workingMemoryCountnumberYesCount of working memory results
longTermMemoryCountnumberYesCount of long-term memory results
totalCountnumberYesTotal count of all results
isLoadingbooleanYesWhether a search is currently in progress
errorErrorYesError from the most recent search
currentQuerystringYesCurrent search query
search(query: string, options?: { includeWorkingMemory?: boolean; includeLongTermMemory?: boolean; userId?: string; sessionId?: string; limit?: number; }) => Promise<SearchAllMemoryResponse>YesPerform a unified search
clearResults() => voidYesClear the current search results

HostContainerProps

Props for HostContainer component

Properties:

PropertyTypeRequiredDescription
pluginsAppPlugin[]YesPlugins to register and render
servicesRecord<string, any>NoPre-configured services to inject
loadingFallbackReact.ReactNodeNoLoading fallback component
launcherComponentReact.ComponentType<any>NoLauncher component for home route
launcherPathstringNoLauncher route path (default: '/')
disableRoutingbooleanNoIf true, render plugins directly without Routes wrapper (for single plugin with own router)
enablePluginSystembooleanNoWhether to enable the plugin system (command palette, keybindings, etc.)
pluginContextConditionContextNoInitial condition context for plugin "when" expressions
paletteConfigPartial<PaletteConfig>NoCommand palette configuration
showCommandPalettebooleanNoWhether to show command palette UI (default: true when plugin system enabled)
manifestPathsstring[]NoPaths to scan for plugin manifests (flowstate.json files)
watchManifestsbooleanNoEnable hot-reload for manifests in development (default: true)

HostContextValue

Host context value provided to all plugins

Properties:

PropertyTypeRequiredDescription
servicesServiceRegistryYesService registry for dependency injection
eventBusEventBusYesEvent bus for inter-app communication
navigationPartial<NavigationHelpers>YesNavigation helpers
pluginsAppPlugin[]YesAll registered plugins

PluginSystemProviderProps

Props for PluginSystemProvider

Properties:

PropertyTypeRequiredDescription
initialContextConditionContextNoInitial condition context for "when" expressions
paletteConfigPartial<PaletteConfig>NoCommand palette configuration
showPalettebooleanNoWhether to render the command palette (default: true)
quicknavConfigPartial<QuickNavConfig>NoQuickNav configuration
showQuickNavbooleanNoWhether to render the quick navigation modal (default: true)
showSettingsbooleanNoWhether to render the settings modal (default: true)
initialViewStatePartial<ViewState>NoInitial view state overrides
settingsPaneRenderersRecord<string, React.ComponentType<{ tab: ResolvedSettingsTab; }>>NoCustom settings pane renderers by tab ID
navigationFallbackNavigationFallbackNoNavigation fallback for cross-app command execution.
Called when a command exists but has no handler (app not mounted).
Container apps should provide this based on their router (react-router-dom or Next.js router).
childrenReact.ReactNodeYesChildren to render

AppConfig

Configuration for app plugin (HostContainer system)

Properties:

PropertyTypeRequiredDescription
useHostRouterbooleanYesWhether to use host's router or create own BrowserRouter
basePathstringYesBase path for routing

AppProps

Props injected into every plugin component (HostContainer system)

Properties:

PropertyTypeRequiredDescription
configAppConfigNoPlugin configuration
servicesServiceRegistryYesService registry for dependency injection
eventBusEventBusYesEvent bus for inter-app communication
navigationNavigationHelpersYesNavigation helpers

AppPlugin

Plugin definition for FlowState apps (HostContainer system) This is the NEW plugin system that works with HostContainer

Properties:

PropertyTypeRequiredDescription
idstringYesUnique identifier (e.g., 'agents', 'projects')
namestringYesDisplay name (e.g., 'AI Agents', 'Projects')
versionstringYesSemantic version
descriptionstringYesBrief description
iconstring | ComponentTypeYesIcon component from lucide-react or React component
routestringYesBase route (e.g., '/agents', '/projects')
colorstringYesTheme color in hex format
category"business" | "technical"YesApp category
component() => Promise<{ default: ComponentType<AppProps>; }>YesLazy-loaded component function
Must return { default: React.ComponentType<AppProps> }
configAppConfigNoPlugin-specific configuration
onLoad(services: ServiceRegistry) => void | Promise<void>NoCalled when plugin is loaded, receives ServiceRegistry for setup
onUnload() => void | Promise<void>NoCalled when plugin is unloaded, for cleanup
dependenciesstring[]NoPlugin IDs this plugin depends on
permissionsstring[]NoRequired permissions for this plugin
requiresServerbooleanNoWhether this plugin requires a backend server

KeyModifiers

Keybinding System Types

Properties:

PropertyTypeRequiredDescription
ctrlbooleanYes
shiftbooleanYes
altbooleanYes
metabooleanYes

KeyCombo

Parsed key combination

Properties:

PropertyTypeRequiredDescription
keystringYes

KeybindingContribution

Keybinding contribution from manifest

Properties:

PropertyTypeRequiredDescription
commandstringYesThe command to execute
keystringYesThe key combination (e.g., "ctrl+shift+p")
macstringNoMac-specific key combination (e.g., "cmd+shift+p")
whenstringNoWhen condition for context-aware keybindings

ParsedKeybinding

Parsed keybinding for runtime

Properties:

PropertyTypeRequiredDescription
commandIdstringYesOriginal command ID
keyComboKeyComboYesParsed key combo for current platform
keyStringstringYesOriginal key string
whenstringNoWhen condition expression
pluginIdstringYesPlugin that contributed this binding

ResolvedKeybinding

Resolved keybinding with all metadata

Properties:

PropertyTypeRequiredDescription
commandIdstringYesCommand ID
displayKeystringYesDisplay string for the key combo
activebooleanYesWhether this binding is active in current context
keyComboKeyComboYesParsed key combo

KeybindingMatch

Keybinding match result

Properties:

PropertyTypeRequiredDescription
keybindingParsedKeybindingYesThe matched keybinding
commandIdstringYesThe command to execute

KeybindingProviderProps

Props for keybinding provider

Properties:

PropertyTypeRequiredDescription
childrenimport("/Users/sthornock/code/epic/epic-flowstate/node_modules/@types/react/index").ReactNodeYes

UseKeybindingReturn

Return type for useKeybinding hook

Properties:

PropertyTypeRequiredDescription
displayKeystringYesThe display string for the keybinding (e.g., "Ctrl+Shift+P")
hasKeybindingbooleanYesWhether a keybinding is registered for this command

UseLocalKeybindingReturn

Return type for useLocalKeybinding hook

Properties:

PropertyTypeRequiredDescription
activebooleanYesWhether the keybinding is currently active

LoadingOptions

Options when starting a loading operation

Properties:

PropertyTypeRequiredDescription
typeLoadingTypeNoType of loading indicator (default: 'topnav')
messagestringNoMessage to display
blockingbooleanNoWhether this blocks UI interaction (default: true for overlay, false otherwise)
progressnumberNoInitial progress value 0-100
delaynumberNoDelay in ms before showing indicator (default: 200)
minDurationnumberNoMinimum display time in ms (default: 300)

LoadingOperation

Active loading operation

Properties:

PropertyTypeRequiredDescription
idstringYes
typeLoadingTypeYes
stateLoadingOperationStateYes
messagestringNo
progressnumberNo
blockingbooleanYes
startTimenumberYes
visibleTimenumberNo
errorstringNo
delaynumberYes
minDurationnumberYes

GlobalLoadingState

Global loading state

Properties:

PropertyTypeRequiredDescription
operationsMap<string, LoadingOperation>Yes
isLoadingbooleanYes
hasBlockingLoaderbooleanYes
activeOverlayLoadingOperationYes
activeTopNavLoadingOperation[]Yes
activeContentLoadingOperation[]Yes
activeInlineLoadingOperation[]Yes

LoadingStartEvent

Loading event payloads

Properties:

PropertyTypeRequiredDescription
idstringYes
operationLoadingOperationYes

LoadingProgressEvent

Properties:

PropertyTypeRequiredDescription
idstringYes
progressnumberYes

LoadingCompleteEvent

Properties:

PropertyTypeRequiredDescription
idstringYes
durationnumberYes

LoadingErrorEvent

Properties:

PropertyTypeRequiredDescription
idstringYes
errorstringYes

GlobalLoadingConfig

Global loading configuration

Properties:

PropertyTypeRequiredDescription
defaultDelaynumberYesDefault delay before showing indicator (ms)
defaultMinDurationnumberYesDefault minimum display duration (ms)
defaultTypeLoadingTypeYesDefault loading type

UseGlobalLoadingReturn

Return type for useGlobalLoading hook

Properties:

PropertyTypeRequiredDescription
start(id: string, options?: LoadingOptions) => voidYesStart a loading operation
progress(id: string, value: number) => voidYesUpdate progress (0-100)
complete(id: string) => voidYesComplete a loading operation
fail(id: string, error?: string) => voidYesFail a loading operation
isLoadingbooleanYesWhether any loading is active
hasBlockingLoaderbooleanYesWhether a blocking loader is active
activeOverlayLoadingOperationYesActive overlay operation (if any)
activeTopNavLoadingOperation[]YesActive top nav operations
activeContentLoadingOperation[]YesActive content operations
activeInlineLoadingOperation[]YesActive inline operations
operationsLoadingOperation[]YesAll active operations
serviceGlobalLoadingServiceYesService instance for advanced usage

ManifestAdapterOptions

Options for manifest-to-plugin conversion

Properties:

PropertyTypeRequiredDescription
componentLoader(manifest: PluginManifest, directory: string) => () => Promise<{ default: ComponentType<AppProps>; }>NoCustom component loader function
If not provided, uses dynamic import based on manifest.main
iconResolver(iconName: string) => ComponentType | stringNoCustom icon resolver function
If not provided, returns the icon string as-is
onLoadWrapper(manifest: PluginManifest, services: ServiceRegistry) => void | Promise<void>NoCustom onLoad handler to wrap the plugin's onLoad

ManifestBackedPlugin

Extended AppPlugin with manifest reference

Properties:

PropertyTypeRequiredDescription
__manifestPluginManifestYesOriginal manifest for reference
__manifestPathstringYesManifest file path

DiscoveryOptions

Options for manifest discovery

Properties:

PropertyTypeRequiredDescription
pathsstring[]YesDirectories or paths to scan for manifests
watchbooleanNoEnable hot-reload watching (default: true in development)
onManifestFound(manifest: LoadedManifest) => voidNoCallback when a manifest is discovered or changes
onManifestChange(manifest: LoadedManifest, changeType: "add" | "change" | "unlink") => voidNoCallback when a manifest changes (hot-reload)
onError(error: Error, path: string) => voidNoCallback when an error occurs
pollIntervalnumberNoPolling interval for browser-based watching (ms, default: 5000)
validatebooleanNoWhether to validate manifests (default: true)
registerContributionsbooleanNoWhether to automatically register contributions (default: true)

DiscoveryResult

Discovery result

Properties:

PropertyTypeRequiredDescription
manifestsLoadedManifest[]YesSuccessfully loaded manifests
errors{ path: string; error: Error; }[]YesErrors encountered during discovery

RegisteredApp

App definition derived from manifest metadata

Properties:

PropertyTypeRequiredDescription
idstringYesPlugin ID
namestringYesHuman-readable name
descriptionstringYesBrief description
iconstringYesIcon name from lucide-react
colorstringYesTheme color
routestringYesRoute path
category"business" | "technical"YesCategory
requiresServerbooleanYesWhether requires server
ordernumberYesSort order (lower = higher priority)

CommandContribution

Command contribution from a plugin manifest

Properties:

PropertyTypeRequiredDescription
idstringYesUnique command identifier (e.g., projects.create)
titlestringYesDisplay title for the command
categorystringNoCategory for grouping in command palette
iconstringNoIcon name from lucide-react
enablementstringNoWhen expression for enabling the command

Menu item within a menu contribution

Properties:

PropertyTypeRequiredDescription
commandstringYesCommand ID to execute
whenstringNoWhen expression for visibility
groupstringNoGroup for ordering (e.g., 1_navigation, 2_actions)
altstringNoAlternative command when Alt key is pressed

Menu contribution from a plugin manifest

Properties:

PropertyTypeRequiredDescription
idstringYesUnique menu contribution identifier
locationMenuLocationYesMenu location identifier
itemsMenuItem[]YesMenu items at this location

KeybindingContribution

Keybinding contribution from a plugin manifest

Properties:

PropertyTypeRequiredDescription
commandstringYesCommand ID to execute
keystringYesKey combination (e.g., ctrl+shift+n)
macstringNoMac-specific key combination (e.g., cmd+shift+n)
whenstringNoWhen expression for activation context

StatusBarItemContribution

Status bar item contribution from a plugin manifest Similar to VS Code's status bar items

Properties:

PropertyTypeRequiredDescription
idstringYesUnique identifier for this status bar item
alignmentStatusBarAlignmentYesAlignment in status bar (left or right)
prioritynumberNoPriority for ordering (higher = further from center)
commandstringNoCommand to execute on click (optional)
textstringNoStatic text to display (can include icons via $(icon-name) syntax)
tooltipstringNoTooltip text on hover
iconstringNoIcon name from lucide-react
whenstringNoWhen expression for visibility
backgroundColorstringNoBackground color (supports theme colors like 'statusBar.errorBackground')
dynamicbooleanNoWhether this is a dynamic item that will be updated via API

HeaderActionItemContribution

Header action item contribution from a plugin manifest Allows plugins to add action buttons to the shell header (right side) Similar to VS Code's header actions

Properties:

PropertyTypeRequiredDescription
idstringYesUnique identifier for this header action
iconstringYesIcon name from lucide-react
tooltipstringYesTooltip text on hover
commandstringYesCommand to execute on click
prioritynumberNoPriority for ordering (higher = further right)
whenstringNoWhen expression for visibility
togglebooleanNoWhether this action has a toggle state
toggleStateKeystringNoState key for toggle (used with ViewStateContext)

SettingsTabContribution

Settings tab contribution from a plugin manifest Allows plugins to add tabs to the settings modal

Properties:

PropertyTypeRequiredDescription
idstringYesUnique identifier for this settings tab
labelstringYesDisplay label for the tab
iconstringNoIcon name from lucide-react
prioritynumberNoPriority for ordering (lower = higher in list)
componentstringNoComponent path or ID for the settings pane content
groupstringNoGroup for organizing tabs (e.g., 'general', 'extensions', 'advanced')

BottomPanelTabContribution

Bottom panel tab contribution from a plugin manifest Allows plugins to add tabs to the bottom panel (visor)

Properties:

PropertyTypeRequiredDescription
idstringYesUnique identifier for this panel tab
labelstringYesDisplay label for the tab
iconstringNoIcon name from lucide-react
prioritynumberNoPriority for ordering (lower = further left)
componentstringNoComponent path or ID for the panel content
badgestringNoBadge count to show on tab (e.g., error count)

BottomPanelToolbarItemContribution

Bottom panel toolbar item contribution from a plugin manifest Allows plugins to add toolbar buttons to specific bottom panel tabs

Properties:

PropertyTypeRequiredDescription
idstringYesUnique identifier for this toolbar item
tabIdstringYesTab ID this toolbar item belongs to
iconstringYesIcon name from lucide-react
tooltipstringYesTooltip text on hover
commandstringYesCommand to execute on click
prioritynumberNoPriority for ordering (lower = further left)
whenstringNoWhen expression for visibility
dropdownBottomPanelToolbarDropdownItem[]NoOptional dropdown menu items

BottomPanelToolbarDropdownItem

Dropdown item for toolbar buttons with menus

Properties:

PropertyTypeRequiredDescription
labelstringYesDisplay label
commandstringYesCommand to execute
iconstringNoIcon name from lucide-react
separatorbooleanNoSeparator before this item

Navigation item contribution for QuickNav Allows plugins to register searchable entities in the global quick navigation

Properties:

PropertyTypeRequiredDescription
entityTypestringYesEntity type identifier (e.g., 'task', 'project', 'custom-entity')
labelstringYesHuman-readable label for the entity type (e.g., 'Task', 'Project')
iconstringNoIcon name from lucide-react
routePatternstringYesRoute pattern with :id placeholder (e.g., '/tasks/:id')
collectionstringNoRxDB collection name to query for this entity type
titleFieldstringNoField to use as display title (default: 'title')
searchFieldsstring[]NoFields to include in full-text search (default: ['title'])
projectIdFieldstringNoField for parent project ID (for path building)
milestoneIdFieldstringNoField for parent milestone ID (for path building)

PluginContributions

All contribution points a plugin can provide

Properties:

PropertyTypeRequiredDescription
commandsCommandContribution[]NoCommands contributed by this plugin
menusMenuContribution[]NoMenu contributions
keybindingsKeybindingContribution[]NoKeyboard shortcuts
navigationItemsNavigationItemContribution[]NoNavigation items for QuickNav global search
statusBarItemsStatusBarItemContribution[]NoStatus bar items
headerActionsHeaderActionItemContribution[]NoHeader action items (right side of shell header)
settingsTabsSettingsTabContribution[]NoSettings modal tabs
bottomPanelTabsBottomPanelTabContribution[]NoBottom panel tabs (visor)
bottomPanelToolbarItemsBottomPanelToolbarItemContribution[]NoBottom panel toolbar items (per-tab toolbar buttons)
syncProviders{ id?: string; name?: string; description?: string; icon?: string; supportsOAuth?: boolean; oauthConfig?: { authorizationUrl?: string; tokenUrl?: string; scopes?: string[]; clientIdEnvVar?: string; }; supportedDirections?: ("push" | "pull" | "bidirectional")[]; providerModule?: string; providerExport?: string; }[]NoSync providers for external data sources

PluginManifest

Complete plugin manifest (flowstate.json)

Properties:

PropertyTypeRequiredDescription
$schemastringNoJSON Schema reference for IDE support
idstringYesUnique plugin identifier (lowercase, alphanumeric with hyphens)
displayNamestringYesHuman-readable plugin name
descriptionstringNoBrief description of the plugin
versionstringYesSemantic version (e.g., 1.0.0)
publisherstringNoPublisher or author name
mainstringYesPath to the main entry point module
browserstringNoPath to the browser-specific entry point
iconstringNoIcon name from lucide-react or path to icon file
colorstringNoTheme color in hex format (e.g., #EC4899)
categoryPluginCategoryNoPlugin category for organization
routestringNoBase route path (e.g., /apps/projects)
basePathstringNoBase path for plugin routing (e.g., /projects)
activationEventsActivationEvent[]NoEvents that trigger plugin activation. Default: eager loading
dependenciesstring[]NoPlugin IDs this plugin depends on
permissionsPluginPermission[]NoRequired permissions for this plugin
requiresServerbooleanNoWhether this plugin requires a backend server
ordernumberNoSort order for sidebar/launcher display (lower = higher priority, default: 100)
contributesPluginContributionsNoContribution points for extending FlowState

ManifestValidationResult

Validation result for manifest validation

Properties:

PropertyTypeRequiredDescription
validbooleanYesWhether the manifest is valid
errorsManifestValidationError[]YesValidation errors if any
warningsManifestValidationWarning[]YesValidation warnings

ManifestValidationError

Validation error details

Properties:

PropertyTypeRequiredDescription
pathstringYesPath to the invalid field (e.g., "contributes.commands[0].id")
messagestringYesError message
codestringYesError code for programmatic handling

ManifestValidationWarning

Validation warning details

Properties:

PropertyTypeRequiredDescription
pathstringYesPath to the field with warning
messagestringYesWarning message
codestringYesWarning code

LoadedManifest

Loaded manifest with metadata

Properties:

PropertyTypeRequiredDescription
manifestPluginManifestYesThe parsed manifest
pathstringYesAbsolute path to the manifest file
directorystringYesDirectory containing the manifest

UseManifestDiscoveryOptions

Hook options

Properties:

PropertyTypeRequiredDescription
pathsstring[]YesPaths to scan for manifests
watchbooleanNoEnable hot-reload watching (default: true in development)
validatebooleanNoWhether to validate manifests (default: true)
registerContributionsbooleanNoWhether to auto-register contributions (default: true)
enabledbooleanNoWhether to enable discovery (default: true)

UseManifestDiscoveryReturn

Hook return value

Properties:

PropertyTypeRequiredDescription
manifestsLoadedManifest[]YesDiscovered manifests
loadingbooleanYesWhether discovery is in progress
errors{ path: string; error: Error; }[]YesDiscovery errors
refresh() => Promise<void>YesRe-discover manifests
getManifest(pluginId: string) => LoadedManifest | undefinedYesGet a specific manifest by plugin ID

Menu item contribution from manifest

Properties:

PropertyTypeRequiredDescription
commandstringYesCommand ID to execute
whenstringNoWhen expression for visibility
groupstringNoGroup for ordering (e.g., "1_navigation")
altstringNoAlternative command when Alt is held

Context menu anchor position

Properties:

PropertyTypeRequiredDescription
xnumberYesX coordinate
ynumberYesY coordinate

ContextMenuState

Context menu state

Properties:

PropertyTypeRequiredDescription
isOpenbooleanYesWhether the menu is open
anchorMenuAnchorYesAnchor position
contextTypestringNoContext type (e.g., "task", "project")
contextDataRecord<string, unknown>NoContext data

UseContextMenuReturn

Return type for useContextMenu hook

Properties:

PropertyTypeRequiredDescription
stateContextMenuStateYesCurrent menu state
open(anchor: MenuAnchor, contextType?: string, contextData?: Record<string, unknown>) => voidYesOpen menu at position
close() => voidYesClose menu
onContextMenu(e: React.MouseEvent, contextType?: string, contextData?: Record<string, unknown>) => voidYesHandler for onContextMenu event

Props for menu components

Properties:

PropertyTypeRequiredDescription
locationMenuLocationYesMenu location to render
contextConditionContextNoCurrent condition context
classNamestringNoCustom class name
horizontalbooleanNoWhether to show as horizontal
onItemClick(commandId: string) => voidNoOn item click callback

ContextMenuProps

Props for context menu component

Properties:

PropertyTypeRequiredDescription
contextTypestringYesContext type for menu items
anchorMenuAnchorYesAnchor position
onClose() => voidYesClose handler
contextDataRecord<string, unknown>NoContext data

Navigation helpers interface

Properties:

PropertyTypeRequiredDescription
navigateTo(path: string, options?: { replace?: boolean; }) => voidYesNavigate to a path
goBack() => voidYesGo back in history
generatePath(pluginId: string, subPath?: string) => stringYesGenerate path for plugin with optional subpath
currentPathstringYesCurrent pathname

ContextSwitchers

Context switching callbacks

Properties:

PropertyTypeRequiredDescription
selectOrg(orgId: string) => Promise<void>Yes
selectWorkspace(workspaceId: string) => Promise<void>Yes
getCurrentOrgId() => string | nullYes
getCurrentWorkspaceId() => string | nullYes

EntityRouteConfig

Entity route configuration registered by plugins

Properties:

PropertyTypeRequiredDescription
entityTypeNavigableEntityTypeYesEntity type this route handles
pluginIdstringYesPlugin/app ID that owns this route
patternstringYesRoute pattern with :id placeholder (e.g., '/tasks/:id')
basePathstringYesBase path for the plugin (e.g., '/apps/projects')

Navigation options for cross-org/workspace navigation

Properties:

PropertyTypeRequiredDescription
orgIdstringNoTarget organization ID - switch context after navigation
workspaceIdstringNoTarget workspace ID - switch context after navigation
replacebooleanNoReplace current history entry instead of pushing
stateRecord<string, unknown>NoAdditional state to pass to navigation

Navigation event payload

Properties:

PropertyTypeRequiredDescription
type"entity" | "route" | "app" | "back" | "forward"YesType of navigation
pathstringYesTarget path after resolution
entity{ type: NavigableEntityType; id: string; }NoEntity information if type is 'entity'
appIdstringNoApp/plugin ID if type is 'app'
optionsNavigationOptionsNoNavigation options
timestampnumberYesTimestamp of the event

Navigation context event - emitted after navigation completes

Properties:

PropertyTypeRequiredDescription
orgIdstringNoOrganization ID to switch to
workspaceIdstringNoWorkspace ID to switch to
previousOrgIdstringNoPrevious organization ID
previousWorkspaceIdstringNoPrevious workspace ID

UseNavigationReturn

Navigation hook return type

Properties:

PropertyTypeRequiredDescription
toEntity(entityId: string, options?: NavigationOptions) => Promise<void>YesNavigate to an entity by ID (auto-detects type from prefix)
toEntityByType(entityType: NavigableEntityType, entityId: string, options?: NavigationOptions) => Promise<void>YesNavigate to an entity by type and ID
toRoute(path: string, options?: NavigationOptions) => Promise<void>YesNavigate to a route path
toApp(pluginId: string, subPath?: string, options?: NavigationOptions) => Promise<void>YesNavigate to an app by plugin ID
back() => voidYesGo back in browser history
forward() => voidYesGo forward in browser history
currentPathstringYesCurrent pathname
on<T = unknown>(event: string, handler: (data?: T) => void | Promise<void>) => () => voidYesSubscribe to navigation events
once<T = unknown>(event: string, handler: (data?: T) => void | Promise<void>) => () => voidYesSubscribe to navigation event once
serviceNavigationServiceYesNavigation service instance (for advanced usage)

ObservabilityConfig

Configuration for ObservabilityManager initialization

Properties:

PropertyTypeRequiredDescription
urlstringYes
apiKeystringYes
projectIdstringYes
environmentstringNo
releasestringNo
userIdstringNo
captureErrorsbooleanNo
captureConsolebooleanNo
captureReactErrorsbooleanNo
captureGlobalErrorsbooleanNo
captureUnhandledRejectionsbooleanNo

BugReportData

Bug report data passed to onReportBug callback

Properties:

PropertyTypeRequiredDescription
titlestringYes
descriptionstringYes
errorErrorNo
errorInfoErrorInfoNo

ErrorBoundaryProps

Props for ErrorBoundary component

Properties:

PropertyTypeRequiredDescription
childrenReactNodeYes
fallbackReactNode | ((error: Error, reset: () => void) => ReactNode)No
onError(error: Error, errorInfo: ErrorInfo) => voidNo
onReportBug(data: BugReportData) => voidNo
boundaryNamestringNo
captureErrorsbooleanNo
isolatebooleanNo

ErrorBoundaryState

State for ErrorBoundary component

Properties:

PropertyTypeRequiredDescription
hasErrorbooleanYes
errorErrorYes
errorInfoErrorInfoNo

ErrorFallbackProps

Props for DefaultErrorFallback component

Properties:

PropertyTypeRequiredDescription
errorErrorYes
errorInfoErrorInfoNo
reset() => voidYes
onReportBug(data: BugReportData) => voidNo
boundaryNamestringNo
containerClassNamestringNo

ConsoleStorage

Internal console storage

Properties:

PropertyTypeRequiredDescription
log(...args: any[]) => voidYes
debug(...args: any[]) => voidYes
info(...args: any[]) => voidYes
warn(...args: any[]) => voidYes
error(...args: any[]) => voidYes

PaletteProviderProps

Props for PaletteProvider

Properties:

PropertyTypeRequiredDescription
configPartial<PaletteConfig>NoConfiguration options
childrenReact.ReactNodeYesChildren to render

RecentCommand

Recent command entry

Properties:

PropertyTypeRequiredDescription
commandIdstringYesCommand ID
timestampnumberYesLast executed timestamp
countnumberYesExecution count

PaletteState

State of the command palette

Properties:

PropertyTypeRequiredDescription
isOpenbooleanYesWhether the palette is open
querystringYesCurrent search query
selectedIndexnumberYesSelected item index
resultsPaletteItem[]YesFiltered/search results

PaletteItem

An item in the command palette

Properties:

PropertyTypeRequiredDescription
type"category" | "command" | "recent"YesItem type
commandExecutableCommandNoCommand data (for command/recent types)
categorystringNoCategory name (for category type)
labelstringYesDisplay label
descriptionstringNoOptional description
iconstringNoIcon name
keybindingstringNoKeyboard shortcut
selectablebooleanYesWhether this item is selectable
scorenumberNoSearch score (higher is better match)

UsePaletteReturn

Return type for usePalette hook

Properties:

PropertyTypeRequiredDescription
statePaletteStateYesCurrent state
open() => voidYesOpen the palette
close() => voidYesClose the palette
toggle() => voidYesToggle the palette
setQuery(query: string) => voidYesUpdate search query
selectNext() => voidYesSelect next item
selectPrevious() => voidYesSelect previous item
executeSelected() => Promise<void>YesExecute selected item
executeItem(item: PaletteItem) => Promise<void>YesExecute specific item

PaletteItemProps

Props for PaletteItem component

Properties:

PropertyTypeRequiredDescription
itemPaletteItemYesThe item to render
isSelectedbooleanYesWhether this item is selected
onClick() => voidYesCalled when item is clicked
onHover() => voidYesCalled when item is hovered

PaletteConfig

Configuration for the command palette

Properties:

PropertyTypeRequiredDescription
maxRecentCommandsnumberYesMaximum number of recent commands to show
openShortcutstringYesKeyboard shortcut to open palette
openShortcutMacstringYesMac keyboard shortcut
placeholderstringYesPlaceholder text for search input
showCategoriesbooleanYesWhether to show category headers
showKeybindingsbooleanYesWhether to show keybindings

FlowstateRuntime

Properties:

PropertyTypeRequiredDescription
pluginsMap<string, FlowstatePlugin>Yes
contextsMap<string, React.Context<any>>Yes
componentsMap<string, React.ComponentType<any>>Yes
hooksMap<string, Function>Yes
servicesMap<string, any>Yes

ComponentRegistry

HookRegistry

ServiceRegistry

FlowstatePlugin

Properties:

PropertyTypeRequiredDescription
namestringYes
versionstringYes
dependenciesstring[]No

PluginConfig

AuthContextValue

Properties:

PropertyTypeRequiredDescription
currentUserUserModelYes
currentUserIdstringYes
usersUserModel[]Yes
isLoadingbooleanYes

AuthProviderProps

Properties:

PropertyTypeRequiredDescription
childrenReact.ReactNodeYes

ReplicationServerConfig

Properties:

PropertyTypeRequiredDescription
urlstringYesURL of the rxdb-server (e.g., 'https://api.example.com')
domainIdstringYesDomain ID for multi-tenant isolation

AuthPluginConfig

Properties:

PropertyTypeRequiredDescription
registerOnboardingbooleanNoWhether to register onboarding steps (default: true)
replicationServerReplicationServerConfigNoServer configuration for replication authentication

ComponentRegistry

ComponentContextValue

Properties:

PropertyTypeRequiredDescription
componentsComponentRegistryYes
overridesComponentRegistryYes

ComponentProviderProps

Properties:

PropertyTypeRequiredDescription
childrenReact.ReactNodeYes
componentsComponentRegistryYes
overridesComponentRegistryNo

ComponentPluginConfig

Properties:

PropertyTypeRequiredDescription
defaultsComponentRegistryYes
overridesComponentRegistryNo

DatabaseContextValue

Properties:

PropertyTypeRequiredDescription
dbRxDatabaseYes
isReadybooleanYes
replicationStateReplicationStateYes
serverInfoServerInfoYes

DatabaseAdapter

DatabaseProviderProps

Properties:

PropertyTypeRequiredDescription
childrenReact.ReactNodeYes
adapter"memory" | "indexeddb" | DatabaseAdapterYes
databaseNamestringNo
serverInfoServerInfoNo

DatabasePluginConfig

Properties:

PropertyTypeRequiredDescription
adapter"memory" | "indexeddb" | DatabaseAdapterYes
databaseNamestringNo

FlowstateAuthContextValue

Properties:

PropertyTypeRequiredDescription
userAuthUserYesCurrently authenticated user (from server)
isAuthenticatedbooleanYesWhether the user is authenticated with the server
isLoadingbooleanYesWhether auth state is being loaded from storage
sendVerificationCode(email: string) => Promise<void>YesSend a verification code to the email
login(email: string, code: string) => Promise<AuthUser>YesLogin with email and verification code
logout() => voidYesLogout and clear authentication
getAuthHeaders() => Record<string, string>YesGet auth headers for API requests
authServiceFlowstateAuthServiceYesThe underlying auth service (for advanced use)

FlowstateAuthProviderProps

Properties:

PropertyTypeRequiredDescription
childrenReact.ReactNodeYes
configFlowstateAuthServiceConfigYesConfiguration for the auth service
onTokenRefreshTokenRefreshCallbackNoCallback when tokens are refreshed.
Use this to sync auth tokens to external systems (e.g., ServerConfigService).

GlobalLoadingPluginConfig

Properties:

PropertyTypeRequiredDescription
topNavHeightnumberNoHeight of top nav loader in pixels
topNavOffsetstring | numberNoTop position offset for top nav loader
showOverlaybooleanNoWhether to show overlay component
showTopNavbooleanNoWhether to show top nav loader

LoaderPluginConfig

Properties:

PropertyTypeRequiredDescription
instrumentRuntimebooleanNoWhether to automatically instrument runtime plugin loading (default: true)

OrgWorkspaceContextValue

Properties:

PropertyTypeRequiredDescription
currentOrgOrgModelYes
currentOrgIdstringYes
currentWorkspaceWorkspaceModelYes
currentWorkspaceIdstringYes
orgsOrgModel[]Yes
workspacesWorkspaceModel[]Yes
isLoadingbooleanYes
hasAttemptedRestorebooleanYes
hasAttemptedWorkspaceRestorebooleanYes

OrgWorkspaceProviderProps

Properties:

PropertyTypeRequiredDescription
childrenReact.ReactNodeYes
mode"global" | "local"No
allowLocalCreatebooleanNo

OrgWorkspacePluginConfig

Properties:

PropertyTypeRequiredDescription
mode"global" | "local"No
allowLocalCreatebooleanNo
registerOnboardingbooleanNoWhether to register onboarding steps (default: true)

AuthErrorInfo

Auth error info passed to onAuthError callback

Properties:

PropertyTypeRequiredDescription
status401 | 403Yes
collectionstringYes

TokenRefreshResult

Result of a token refresh attempt

Properties:

PropertyTypeRequiredDescription
successbooleanYes
tokenstringNo
errorErrorNo

ReplicationPluginConfig

Configuration options for the ReplicationPlugin

Properties:

PropertyTypeRequiredDescription
collectionsstring[]Yes
batchSizenumberNo
periodicSyncIntervalnumberNo
enableLiveReplicationbooleanNo
retryAttemptsnumberNo
getAuthHeaders() => Record<string, string>No
onAuthError(error: AuthErrorInfo) => voidNo
refreshToken() => Promise<string>No
onTokenRefreshed(token: string) => voidNo
onTokenRefreshFailed(error: Error) => voidNo

ReplicationStatus

Status information for a replicated collection

Properties:

PropertyTypeRequiredDescription
collectionstringYes
activebooleanYes
errorErrorYes

ServerInfo

Properties:

PropertyTypeRequiredDescription
namestringYes
urlstringYes
domainIdstringYes

ServerConfigContextValue

Properties:

PropertyTypeRequiredDescription
mode"offline" | "online"Yes
currentServerServerInfoYes
serversServerInfo[]Yes
authTokenstringYes

ServerConfigProviderProps

Properties:

PropertyTypeRequiredDescription
childrenReact.ReactNodeYes
initialMode"offline" | "online"Yes
initialServersServerInfo[]Yes
initialServerServerInfoNo

ServerConfigPluginConfig

Properties:

PropertyTypeRequiredDescription
mode"offline" | "online"Yes
serversServerInfo[]No
currentServerstringNo
allowAddServerbooleanNo

StandaloneDatabasePluginConfig

Properties:

PropertyTypeRequiredDescription
databaseNamestringNo
collectionsstring[]NoCollection names to load. Core collections (orgs, users, workspaces) are always included.

ThemePluginConfig

Configuration options for ThemePlugin

Properties:

PropertyTypeRequiredDescription
defaultModeThemeModeNoDefault theme mode

QuickNavProviderProps

Props for QuickNavProvider

Properties:

PropertyTypeRequiredDescription
configPartial<QuickNavConfig>NoConfiguration options
childrenReact.ReactNodeYesChildren to render

PathSegment

Path segment for building hierarchical breadcrumbs

Properties:

PropertyTypeRequiredDescription
typestringYesEntity type of this segment
labelstringYesDisplay label
idstringYesEntity ID

QuickNavItem

A navigable item in the QuickNav results

Properties:

PropertyTypeRequiredDescription
type"item"YesType discriminator for union
idstringYesUnique identifier for this item
entityTypestringYesEntity type
titlestringYesDisplay title
descriptionstringNoOptional description/subtitle
pathPathSegment[]YesHierarchical path segments (Org > Workspace > Project > ...)
pathStringstringYesFull path as string for display
iconstringNoIcon name from lucide-react or react-icons
orgIdstringNoOrganization ID for navigation context
workspaceIdstringNoWorkspace ID for navigation context
projectIdstringNoProject ID (if applicable)
milestoneIdstringNoMilestone ID (if applicable)
pluginIdstringNoPlugin ID that owns this entity
routestringNoRoute to navigate to
scorenumberNoSearch relevance score (higher = more relevant)
isRecentbooleanNoWhether this is a recent item
selectablebooleanYesWhether this item is selectable

QuickNavCategory

Category header in results list

Properties:

PropertyTypeRequiredDescription
type"category"YesCategory type identifier
labelstringYesDisplay label
iconstringNoOptional icon
selectablefalseYesNot selectable

QuickNavState

QuickNav modal state

Properties:

PropertyTypeRequiredDescription
isOpenbooleanYesWhether the modal is open
querystringYesCurrent search query
selectedIndexnumberYesCurrently selected index in results
resultsQuickNavListItem[]YesSearch results
isLoadingbooleanYesLoading state
errorstringNoError message if search failed

QuickNavConfig

QuickNav configuration options

Properties:

PropertyTypeRequiredDescription
maxRecentItemsnumberYesMaximum number of recent items to show
maxResultsnumberYesMaximum number of search results
openShortcutstringYesKeyboard shortcut to open (default: cmd+shift+g)
placeholderstringYesPlaceholder text for search input
showCategoriesbooleanYesWhether to show category headers
searchDebounceMsnumberYesDebounce delay for search (ms)
enabledEntityTypesstring[]YesEntity types to include in search

QuickNavActions

QuickNav context actions

Properties:

PropertyTypeRequiredDescription
open() => voidYesOpen the QuickNav modal
close() => voidYesClose the QuickNav modal
toggle() => voidYesToggle the QuickNav modal
setQuery(query: string) => voidYesUpdate search query
setSelectedIndex(index: number) => voidYesSet selected index
navigateToSelected() => voidYesNavigate to selected item
navigateTo(item: QuickNavItem) => voidYesNavigate to specific item
selectPrevious() => voidYesMove selection up
selectNext() => voidYesMove selection down

QuickNavContextValue

QuickNav context value

Properties:

PropertyTypeRequiredDescription
stateQuickNavStateYesCurrent state
actionsQuickNavActionsYesAvailable actions
configQuickNavConfigYesConfiguration

FlexSearchResult

Search result from FlexSearch

Properties:

PropertyTypeRequiredDescription
idstringYesDocument ID
scorenumberYesSearch score

EntityPathData

Entity data for path building

Properties:

PropertyTypeRequiredDescription
orgsMap<string, { id: string; name: string; }>Yes
workspacesMap<string, { id: string; name: string; orgId: string; }>Yes
projectsMap<string, { id: string; title: string; orgId: string; workspaceId: string; }>Yes
milestonesMap<string, { id: string; title: string; projectId: string; }>Yes

UseQuickNavSearchOptions

Options for useQuickNavSearch hook

Properties:

PropertyTypeRequiredDescription
debounceMsnumberNoDebounce delay in ms (default: 150)
maxResultsnumberNoMaximum results to return (default: 50)
enabledEntityTypesstring[]NoEntity types to include in search

UseQuickNavSearchReturn

Return type for useQuickNavSearch hook

Properties:

PropertyTypeRequiredDescription
resultsQuickNavItem[]YesCurrent search results
isLoadingbooleanYesLoading state
errorstringYesError message if search failed
search(query: string) => voidYesPerform a search
clear() => voidYesClear results

ServerConfig

Properties:

PropertyTypeRequiredDescription
urlstringYes
domainIdstringYes

ServerAuthData

Properties:

PropertyTypeRequiredDescription
authTokenstringYes
lastOrgstringYes
lastWorkspacestringYes

ServersData

SeedOptions

Properties:

PropertyTypeRequiredDescription
orgIdstringYesOrganization ID (required)
workspaceIdstringYesWorkspace ID (required)
userIdstringYesUser ID for ownership (required)
entityTypesstring[]NoEntity types to create attributes for (default: ['tasks'])
includeCategoriesbooleanNoInclude category attributes (default: true)
includeTagsbooleanNoInclude tag attributes (default: true)
projectIdstringNoProject ID for project-scoped attributes (optional)
presetPresetTypeNoPreset type to use (default: 'software-development')

SeedResult

Properties:

PropertyTypeRequiredDescription
creatednumberYesNumber of attributes created
skippednumberYesNumber of existing attributes (skipped)
seededbooleanYesWhether seeding was performed
presetPresetTypeNoPreset that was used

AttributeFormData

Properties:

PropertyTypeRequiredDescription
namestringYes
titlestringYes
descriptionstringNo
colorstringYes
entityTypestringYes
type"tag" | "category" | "meta"Yes
sortOrdernumberNo
metadataRecord<string, any>No

AttributeValidationErrors

Properties:

PropertyTypeRequiredDescription
namestringNo
titlestringNo
descriptionstringNo
colorstringNo
entityTypestringNo
typestringNo

AttributeResult

Properties:

PropertyTypeRequiredDescription
attributeAttributeModelYes
errorsAttributeValidationErrorsYes

AttributeFilters

Properties:

PropertyTypeRequiredDescription
entityTypestringNo
typestringNo
archivedbooleanNo
userIdstringNo
searchstringNo

ValidationResult

Properties:

PropertyTypeRequiredDescription
isValidbooleanYes
errorsAttributeValidationErrorsYes

MigrationResult

Properties:

PropertyTypeRequiredDescription
migratednumberYes
errors{ id: string; error: string; }[]Yes

UniqueScope

Properties:

PropertyTypeRequiredDescription
namestringYes
entityTypestringYes
typestringYes
orgIdstringYes
userIdstringNo

AuthTokenRefresherOptions

Options for creating an auth token refresher

Properties:

PropertyTypeRequiredDescription
debugbooleanNoEnable debug logging

RefreshResult

Result of a token refresh attempt

Properties:

PropertyTypeRequiredDescription
successbooleanYes
tokenstringNo
errorErrorNo

AuthTokens

Properties:

PropertyTypeRequiredDescription
accessTokenstringYes
refreshTokenstringYes
expiresAtnumberYes

AuthUser

Properties:

PropertyTypeRequiredDescription
idstringYes
emailstringYes
namestringNo
domainIdstringYes
orgIdstringYes

FlowstateAuthServiceConfig

Properties:

PropertyTypeRequiredDescription
serverUrlstringYes
domainIdstringYes
storageStorageNo

AuthStateChangeCallback

TokenRefreshCallback

CreateSyncConfigInput

Input data for creating a new sync configuration

Properties:

PropertyTypeRequiredDescription
orgIdstringYesOrganization ID
workspaceIdstringYesWorkspace ID
userIdstringYesUser ID who owns this config
providerIdstringYesProvider type identifier (e.g., 'github', 'jira')
namestringYesUser-friendly name for this sync configuration
descriptionstringNoOptional description
targetProjectIdstringNoTarget project ID for synced items
targetMilestoneIdstringNoTarget milestone ID for synced items
directionSyncDirectionTypeYesDirection of synchronization
pollingIntervalMsnumberYesPolling interval in milliseconds (minimum 60000)
enabledbooleanYesWhether this sync configuration is enabled
credentialsRecord<string, unknown>YesProvider-specific credentials
providerConfigRecord<string, unknown>YesProvider-specific configuration options
fieldMappingsSyncFieldMapping[]YesField mappings between FlowState and external provider

UpdateSyncConfigInput

Input data for updating a sync configuration

Properties:

PropertyTypeRequiredDescription
namestringNoUser-friendly name
descriptionstringNoOptional description
targetProjectIdstringNoTarget project ID
targetMilestoneIdstringNoTarget milestone ID
directionSyncDirectionTypeNoDirection of synchronization
pollingIntervalMsnumberNoPolling interval in milliseconds
enabledbooleanNoWhether this sync configuration is enabled
credentialsRecord<string, unknown>NoProvider-specific credentials
providerConfigRecord<string, unknown>NoProvider-specific configuration options
fieldMappingsSyncFieldMapping[]NoField mappings

SyncStatusUpdate

Sync status update input

Properties:

PropertyTypeRequiredDescription
lastSyncAtstringNoTimestamp of last sync
lastSyncErrorstringNoError message from last sync (null to clear)
lastSyncItemCountnumberNoNumber of items synced

DeserializedSyncConfig

Deserialized sync config with parsed JSON fields

Properties:

PropertyTypeRequiredDescription
credentialsRecord<string, unknown>YesParsed credentials object
providerConfigRecord<string, unknown>YesParsed provider config object
fieldMappingsSyncFieldMapping[]YesParsed field mappings array

OAuthConfig

OAuth configuration for providers that support OAuth authentication

Properties:

PropertyTypeRequiredDescription
authorizationUrlstringYesOAuth authorization URL
tokenUrlstringYesOAuth token exchange URL
scopesstring[]YesRequired OAuth scopes
clientIdEnvVarstringYesEnvironment variable name for the client ID

OAuthTokenResult

Result from OAuth token operations (callback handling or refresh)

Properties:

PropertyTypeRequiredDescription
accessTokenstringYesThe access token for API requests
refreshTokenstringNoOptional refresh token for obtaining new access tokens
expiresAtstringNoOptional expiration timestamp (ISO 8601 string)

SyncProviderMetadata

Metadata describing a sync provider's capabilities and configuration

Properties:

PropertyTypeRequiredDescription
idstringYesUnique provider identifier (e.g., 'github', 'monday', 'custom-api')
namestringYesDisplay name for the provider
descriptionstringYesDescription of what the provider syncs
iconstringYesIcon name from lucide-react
supportsOAuthbooleanYesWhether the provider uses OAuth for authentication
oauthConfigOAuthConfigNoOAuth configuration (required if supportsOAuth is true)
supportedDirectionsSyncDirectionType[]YesSupported sync directions
defaultFieldMappingsSyncFieldMapping[]YesDefault field mappings for this provider
configSchemaRecord<string, unknown>NoOptional JSON Schema for provider-specific configuration

SyncProvider

Interface that all sync providers must implement.

Provides a contract for:

  • Provider metadata and capabilities
  • Sync operations (initialize, sync, test connection)
  • State management
  • Optional OAuth flow handling
  • Optional event subscription

Properties:

PropertyTypeRequiredDescription
metadataSyncProviderMetadataYesProvider metadata describing capabilities and configuration

Examples:

class GitHubSyncProvider implements SyncProvider {
  readonly metadata: SyncProviderMetadata = {
    id: 'github',
    name: 'GitHub',
    description: 'Sync issues with GitHub repositories',
    icon: 'github',
    supportsOAuth: true,
    oauthConfig: { ... },
    supportedDirections: [SyncDirection.BIDIRECTIONAL],
    defaultFieldMappings: [...],
  };

  async sync(config: SyncProviderConfig): Promise<SyncResult> {
    // Implement sync logic
  }

  // ... implement other required methods
}

SyncFieldMapping

Mapping configuration for a single field between FlowState and external provider

Properties:

PropertyTypeRequiredDescription
flowstateFieldstringYesField name in FlowState entity
externalFieldstringYesField name in external provider entity
transform"custom" | "direct"YesTransform type: 'direct' for 1:1 mapping, 'custom' for custom transformer
transformerNamestringNoName of custom transformer function (required when transform is 'custom')
defaultValueunknownNoDefault value to use when source field is missing or null

SyncProviderConfig

Configuration for a sync provider instance

Properties:

PropertyTypeRequiredDescription
idstringYesUnique identifier for this configuration
providerIdstringYesProvider type identifier (e.g., 'github', 'jira', 'asana')
namestringYesUser-friendly name for this sync configuration
workspaceIdstringYesWorkspace ID this configuration belongs to
orgIdstringYesOrganization ID this configuration belongs to
userIdstringYesUser ID who created/owns this configuration
targetProjectIdstringNoTarget project ID for synced items (optional)
targetMilestoneIdstringNoTarget milestone ID for synced items (optional)
directionSyncDirectionTypeYesDirection of synchronization
pollingIntervalMsnumberYesPolling interval in milliseconds
enabledbooleanYesWhether this sync configuration is enabled
credentialsRecord<string, unknown>YesProvider-specific credentials (tokens, API keys, etc.)
providerConfigRecord<string, unknown>YesProvider-specific configuration options
fieldMappingsSyncFieldMapping[]YesField mappings between FlowState and external provider
lastSyncAtstringNoTimestamp of last successful sync (ISO 8601 string)
lastSyncErrorstringNoError message from last sync attempt, if any
createdAtstringYesConfiguration creation timestamp (ISO 8601 string)
updatedAtstringYesConfiguration last update timestamp (ISO 8601 string)

SyncItemResult

Result of syncing a single item

Properties:

PropertyTypeRequiredDescription
externalIdstringYesExternal provider's ID for the item
flowstateIdstringNoFlowState ID for the item (if created/updated)
operation"updated" | "created" | "deleted" | "skipped" | "conflict"YesOperation performed on this item
errorstringNoError message if operation failed

SyncResult

Result of a complete sync operation

Properties:

PropertyTypeRequiredDescription
configIdstringYesConfiguration ID that was synced
providerIdstringYesProvider ID that was synced
timestampstringYesTimestamp when sync completed (ISO 8601 string)
statusSyncStatusTypeYesFinal status of the sync operation
creatednumberYesNumber of items created
updatednumberYesNumber of items updated
deletednumberYesNumber of items deleted
pushednumberYesNumber of items pushed to external provider
conflictsnumberYesNumber of conflicts detected
errorsstring[]YesArray of error messages
durationMsnumberYesDuration of sync operation in milliseconds
itemsSyncItemResult[]NoDetailed results for individual items (optional)

SyncState

Current state of a sync configuration

Properties:

PropertyTypeRequiredDescription
statusSyncStatusTypeYesCurrent sync status
lastSyncAtstringYesTimestamp of last successful sync (ISO 8601 string or null)
progress{ current: number; total: number; entity?: string; }YesProgress information for ongoing sync (or null if not syncing)
lastResultSyncResultYesResult of the last sync operation (or null if never synced)
errorstringYesCurrent error message (or null if no error)

SyncEvent

Sync event payload

Properties:

PropertyTypeRequiredDescription
typeSyncEventTypeYesType of sync event
configIdstringYesConfiguration ID for the sync
providerIdstringYesProvider ID for the sync
timestampstringYesTimestamp when event occurred (ISO 8601 string)
dataunknownNoAdditional event-specific data

OrgThemeLoaderConfig

Configuration options for OrgThemeLoader

Properties:

PropertyTypeRequiredDescription
useMockbooleanNoWhether to use mock in-memory storage.
When true (default), uses in-memory Map for storage.
When false, requires database to be provided.
databaseRxDatabaseNoRxDB database instance for persistence.
Required when useMock is false.
The database must have an 'orgthemes' collection.

ThemeColors

Theme color palette using OKLCH color format OKLCH provides perceptually uniform color space for better accessibility

Properties:

PropertyTypeRequiredDescription
backgroundstringYesMain background color
foregroundstringYesMain foreground/text color
primarystringYesPrimary brand color
primaryForegroundstringYesText color for primary backgrounds
secondarystringYesSecondary/supporting color
secondaryForegroundstringYesText color for secondary backgrounds
accentstringYesAccent color for highlights
accentForegroundstringYesText color for accent backgrounds
mutedstringYesMuted/subdued background color
mutedForegroundstringYesText color for muted backgrounds
destructivestringYesDestructive/danger color (errors, delete actions)
destructiveForegroundstringYesText color for destructive backgrounds
borderstringYesBorder color
ringstringYesFocus ring color

ThemeBranding

Branding configuration for white-labeling the application

Properties:

PropertyTypeRequiredDescription
appNamestringYesApplication name displayed in UI
logoBase64stringNoOptional logo as base64 data URL
faviconBase64stringNoOptional favicon as base64 data URL

Theme

Complete theme definition with light and dark mode colors

Properties:

PropertyTypeRequiredDescription
idstringYesUnique theme identifier
namestringYesHuman-readable theme name
orgIdstringNoOptional organization ID for org-scoped themes
colors{ light: ThemeColors; dark: ThemeColors; }YesColor palettes for light and dark modes
brandingThemeBrandingYesBranding configuration
createdAtnumberYesCreation timestamp
updatedAtnumberYesLast update timestamp

ThemeState

Runtime theme state managed by ThemeService

Properties:

PropertyTypeRequiredDescription
currentThemeThemeYesCurrently active theme
modeThemeModeYesSelected mode preference
resolvedMode"light" | "dark"YesResolved mode (never 'system', always 'light' or 'dark')
isLoadingbooleanYesWhether theme is currently loading

ThemeConfig

Configuration options for ThemePlugin

Properties:

PropertyTypeRequiredDescription
defaultModeThemeModeYesDefault theme mode preference
persistToLocalStoragebooleanYesWhether to persist theme preference to localStorage
persistToDatabasebooleanYesWhether to persist theme to database
localStorageKeystringYeslocalStorage key for persisting theme preference

ThemeChangeEvent

Payload for THEME_CHANGE event

Properties:

PropertyTypeRequiredDescription
previousThemeThemeYesPrevious theme (null if none)
newThemeThemeYesNew active theme

ModeChangeEvent

Payload for MODE_CHANGE event

Properties:

PropertyTypeRequiredDescription
previousModeThemeModeYesPrevious mode
newModeThemeModeYesNew mode
resolvedMode"light" | "dark"YesResolved mode

ThemeBrandingChangeEvent

Payload for BRANDING_CHANGE event

Properties:

PropertyTypeRequiredDescription
brandingThemeBrandingYesUpdated branding configuration

UseThemeReturn

Return type for useTheme hook

Properties:

PropertyTypeRequiredDescription
themeThemeYesCurrent theme object
modeThemeModeYesCurrent mode setting (light, dark, or system)
resolvedMode"light" | "dark"YesResolved mode (always light or dark, never system)
isLoadingbooleanYesWhether theme is currently loading
serviceThemeServiceYesThemeService instance for advanced usage
setMode(mode: ThemeMode) => voidYesSet the theme mode
setTheme(theme: Theme) => voidYesSet the entire theme
setBranding(branding: Partial<ThemeBranding>) => voidYesUpdate branding configuration
toggleMode() => voidYesToggle between light and dark modes

AttributeFormData

Properties:

PropertyTypeRequiredDescription
namestringYes
titlestringYes
descriptionstringNo
colorstringYes
entityTypestringYes
type"tag" | "category" | "meta"Yes
sortOrdernumberNo
metadataRecord<string, any>No

AttributeValidationErrors

Properties:

PropertyTypeRequiredDescription
namestringNo
titlestringNo
descriptionstringNo
colorstringNo
entityTypestringNo
typestringNo
sortOrderstringNo
metadatastringNo

AttributeResult

Properties:

PropertyTypeRequiredDescription
attributeAttributeModelYes
errorsAttributeValidationErrorsYes

AttributeOperationResult

Properties:

PropertyTypeRequiredDescription
successbooleanYes
errorsAttributeValidationErrorsYes

AttributeFilters

Properties:

PropertyTypeRequiredDescription
entityTypestringNo
type"tag" | "category" | "meta"No
archivedbooleanNo
userIdstringNo
searchstringNo
hasMetadatabooleanNo
popularityThresholdnumberNo

AttributeWithUsage

Properties:

PropertyTypeRequiredDescription
usageCountnumberYes
entityUsage{ [entityType: string]: number; }Yes

AttributeWithStatistics

Properties:

PropertyTypeRequiredDescription
usageCountnumberYes
popularityRanknumberYes
lastUsedstringNo
createdByNamestringNo
entityBreakdown{ [key: string]: number; tasks: number; projects: number; milestones: number; }Yes

AttributeSelectOption

Properties:

PropertyTypeRequiredDescription
valuestringYes
labelstringYes
namestringYes
colorstringYes
type"tag" | "category" | "meta"Yes
entityTypestringYes
isNewbooleanNo
isUserSpecificbooleanNo
popularitynumberNo

CategorySelectOption

Properties:

PropertyTypeRequiredDescription
valuestringYes
labelstringYes
colorstringYes
isNewbooleanNo

TagSelectOption

Properties:

PropertyTypeRequiredDescription
valuestringYes
labelstringYes
colorstringYes
isNewbooleanNo

AttributeServiceInterface

UniqueScope

Properties:

PropertyTypeRequiredDescription
namestringYes
entityTypestringYes
typestringYes
orgIdstringYes
userIdstringNo

UseAttributesReturn

Properties:

PropertyTypeRequiredDescription
attributesAttributeModel[]Yes
categoriesAttributeModel[]Yes
tagsAttributeModel[]Yes
isLoadingbooleanYes
errorstringYes
refetch() => voidYes
searchAttributes(query: string) => AttributeModel[]Yes
getAttributesByType(type: "tag" | "category" | "meta") => AttributeModel[]Yes
getAttributeById(id: string) => AttributeModel | undefinedYes
incrementPopularity(id: string) => Promise<void>Yes

UseCategoriesReturn

Properties:

PropertyTypeRequiredDescription
categoriesAttributeModel[]Yes
isLoadingbooleanYes
errorstringYes
refetch() => voidYes

UseTagsReturn

Properties:

PropertyTypeRequiredDescription
tagsAttributeModel[]Yes
isLoadingbooleanYes
errorstringYes
refetch() => voidYes
search(query: string) => AttributeModel[]Yes

UseCategoriesAndTagsReturn

Properties:

PropertyTypeRequiredDescription
categoriesAttributeModel[]Yes
tagsAttributeModel[]Yes
isLoadingbooleanYes
errorstringYes
getCategoryById(id: string) => AttributeModel | undefinedYes
getTagById(id: string) => AttributeModel | undefinedYes
getCategoriesOptions() => CategorySelectOption[]Yes
getTagsOptions() => TagSelectOption[]Yes
refetch() => voidYes

AttributeFieldProps

Properties:

PropertyTypeRequiredDescription
entityTypestringYes
attributeType"tag" | "category" | "meta"Yes
valuestring | string[]No
onChange(value: string | string[] | null) => voidNo
multiplebooleanNo
allowCreatebooleanNo
includeUserSpecificbooleanNo
includeSystemWidebooleanNo
idstringNo
labelstringNo
placeholderstringNo
helperTextstringNo
classNamestringNo
disabledbooleanNo
requiredbooleanNo
errorstringNo
maxSelectionsnumberNo
popularityBoostbooleanNo
hideArchivedbooleanNo
sortBy"name" | "custom" | "created" | "title" | "popularity"No

CategoryFieldProps

Properties:

PropertyTypeRequiredDescription
valuestringNo
onChange(categoryId: string | null) => voidYes
placeholderstringNo
disabledbooleanNo
allowCreatebooleanNo
errorstringNo
requiredbooleanNo

TagFieldProps

Properties:

PropertyTypeRequiredDescription
valuestring[]No
onChange(tagIds: string[]) => voidYes
placeholderstringNo
maxTagsnumberNo
allowCreatebooleanNo
disabledbooleanNo
errorstringNo
requiredbooleanNo

AttributeManagerProps

Properties:

PropertyTypeRequiredDescription
entityTypestringNo
attributeType"tag" | "category" | "meta"No
allowCrossEntitybooleanNo
orgIdstringYes
userIdstringNo
onAttributeSelect(attribute: AttributeModel) => voidNo
showUserSpecificbooleanNo
showSystemWidebooleanNo
enableBulkOperationsbooleanNo

AttributeFormProps

Properties:

PropertyTypeRequiredDescription
initialDataPartial<AttributeModel>No
entityTypestringYes
attributeType"tag" | "category" | "meta"Yes
onSubmit(data: AttributeModel) => Promise<void>Yes
onCancel() => voidYes
isLoadingbooleanNo
allowTypeChangebooleanNo
allowEntityTypeChangebooleanNo

AttributeFilterProps

Properties:

PropertyTypeRequiredDescription
valueAttributeFiltersYes
onChange(filters: AttributeFilters) => voidYes
availableEntityTypesstring[]No
showUserSpecificTogglebooleanNo
showArchivedTogglebooleanNo
showClearButtonbooleanNo

CategoryTagFilter

Properties:

PropertyTypeRequiredDescription
categoryIdstringNo
tagIdsstring[]No

CategoryTagFilterProps

Properties:

PropertyTypeRequiredDescription
valueCategoryTagFilterYes
onChange(filter: CategoryTagFilter) => voidYes
showClearButtonbooleanNo

AttributeStatistics

Properties:

PropertyTypeRequiredDescription
idstringYes
namestringYes
titlestringYes
colorstringYes
type"tag" | "category" | "meta"Yes
entityTypestringYes
usageCountnumberYes
popularityRanknumberYes
entityBreakdown{ [key: string]: number; tasks: number; projects: number; milestones: number; clients: number; opportunities: number; goals: number; }Yes
userSpecificbooleanYes
createdAtstringYes
lastUsedstringNo

AttributeUsageReport

Properties:

PropertyTypeRequiredDescription
attributesAttributeStatistics[]Yes
summary{ totalAttributes: number; totalUsage: number; mostPopularAttribute: AttributeStatistics | null; leastUsedAttributes: AttributeStatistics[]; userSpecificCount: number; systemWideCount: number; typeBreakdown: { category: number; tag: number; meta: number; }; entityBreakdown: { [entityType: string]: number; }; }Yes
dateRange{ start: string; end: string; }Yes

BulkAttributeOperation

Properties:

PropertyTypeRequiredDescription
action"delete" | "archive" | "restore" | "update" | "changeType" | "changeEntity"Yes
attributeIdsstring[]Yes
updateDataPartial<AttributeFormData>No
targetType"tag" | "category" | "meta"No
targetEntityTypestringNo

BulkOperationResult

Properties:

PropertyTypeRequiredDescription
successfulstring[]Yes
failed{ id: string; error: string; }[]Yes
summary{ total: number; successful: number; failed: number; }Yes

AttributeMigrationOptions

Properties:

PropertyTypeRequiredDescription
dryRunbooleanNo
batchSizenumberNo
preserveIdsbooleanNo
handleDuplicates"skip" | "merge" | "rename"No
logProgressbooleanNo

AttributeMigrationResult

Properties:

PropertyTypeRequiredDescription
categories{ migrated: number; errors: Array<{ id: string; error: string; }>; }Yes
tags{ migrated: number; errors: Array<{ id: string; error: string; }>; }Yes
summary{ totalProcessed: number; totalMigrated: number; totalErrors: number; startTime: string; endTime: string; duration: number; }Yes
entityMappings{ [oldId: string]: string; }Yes

EntityAttributeAssociation

Properties:

PropertyTypeRequiredDescription
entityIdstringYes
entityTypestringYes
attributeIdsstring[]Yes
categoryIdstringNo
tagIdsstring[]No

ValidationResult

Properties:

PropertyTypeRequiredDescription
isValidbooleanYes
errorsAttributeValidationErrorsYes
warningsstring[]No

ColorOption

Properties:

PropertyTypeRequiredDescription
idstringYes
namestringYes
valuestringYes
orgIdstringYes
ordernumberYes
isDefaultbooleanNo
attributeType"tag" | "category" | "meta" | "all"No

OrganizationColorPalette

Properties:

PropertyTypeRequiredDescription
orgIdstringYes
colorsColorOption[]Yes
updatedAtstringYes
updatedBystringYes
defaultTagColorstringYes
defaultCategoryColorstringYes
defaultMetaColorstringYes

AttributeSearchOptions

Properties:

PropertyTypeRequiredDescription
querystringYes
entityTypesstring[]No
attributeTypes("tag" | "category" | "meta")[]No
includeArchivedbooleanNo
userSpecificOnlybooleanNo
systemWideOnlybooleanNo
fuzzybooleanNo
limitnumberNo
offsetnumberNo

AttributeSearchResult

Properties:

PropertyTypeRequiredDescription
attributesAttributeModel[]Yes
totalnumberYes
hasMorebooleanYes
searchTimenumberYes
querystringYes
suggestionsstring[]No

AttributeEndpoints

Properties:

PropertyTypeRequiredDescription
liststringYes
createstringYes
update(id: string) => stringYes
delete(id: string) => stringYes
archive(id: string) => stringYes
restore(id: string) => stringYes
searchstringYes
bulkOperationstringYes
usage(id: string) => stringYes
statisticsstringYes

AttributeSystemConfig

Properties:

PropertyTypeRequiredDescription
maxAttributesPerEntitynumberYes
maxNameLengthnumberYes
maxTitleLengthnumberYes
maxDescriptionLengthnumberYes
allowUserSpecificAttributesbooleanYes
allowCrossEntityAttributesbooleanYes
enablePopularityTrackingbooleanYes
defaultColors{ category: string; tag: string; meta: string; }Yes
validation{ requireDescription: boolean; allowDuplicateTitles: boolean; enforceNamingConvention: boolean; }Yes

FlowstateAppConfig

Configuration for a Flowstate App

Properties:

PropertyTypeRequiredDescription
showNavigationbooleanNoShow navigation (sidebar + header) when true. Default: true
showSidebarbooleanNoShow sidebar. Default: true
showHeaderbooleanNoShow header. Default: true
basePathstringNoBase path for routing (e.g., "/todo-test" when embedded). Default: "/"
useHostRouterbooleanNoUse MemoryRouter instead of BrowserRouter (for Next.js embedding). Default: false
theme"light" | "dark"NoTheme preference. Default: "light"
classNamestringNoAdditional CSS classes for root container
auth{ provider: React.ComponentType<{ children: ReactNode; }>; useAuth: () => any; }NoInjected authentication service
db{ provider: React.ComponentType<{ children: ReactNode; }>; useDB: () => any; }NoInjected database service

FlowstateAppProps

Props for Flowstate App root component

Properties:

PropertyTypeRequiredDescription
configFlowstateAppConfigNoApp configuration
childrenReactNodeNoChildren to render

FlowstateAppLayoutProps

Props for FlowstateAppLayout component

Properties:

PropertyTypeRequiredDescription
sidebarReactNodeNoSidebar component to render
headerReactNodeNoHeader component to render
footerReactNodeNoFooter/StatusBar component to render
childrenReactNodeYesMain content

LoadingItem

Individual loading item

Properties:

PropertyTypeRequiredDescription
idstringYes
labelstringYes
stateLoadingItemStateYes
progressnumberNo
categorystringNo
errorstringNo
startTimenumberNo

LoaderState

Overall loader state

Properties:

PropertyTypeRequiredDescription
itemsMap<string, LoadingItem>Yes
isLoadingbooleanYes
allCompletebooleanYes

LoaderConfig

Loader configuration

Properties:

PropertyTypeRequiredDescription
minDisplayTimenumberYes
successPauseDurationnumberYes
staggerDelaynumberNo

CalendarEvent

Project calendar event extending FullCalendar's EventInput interface Maintains compatibility while adding project-specific properties

Properties:

PropertyTypeRequiredDescription
eventTypeEventTypeYes
projectIdstringYes
milestoneIdstringNo
taskIdstringNo
statusCalendarEventStatusYes
priority"low" | "medium" | "high" | "critical"No
progressnumberNo
timeBudgetHoursnumberNo
timeSpentHoursnumberNo
estimatedHoursnumberNo
parentEventIdstringNo
dependentEventIdsstring[]No
recurrencePatternRecurrencePatternNo
isRecurringInstancebooleanNo
recurrenceInstanceDatestringNo
statusColorstringNo
priorityColorstringNo
showProgressbooleanNo
isEditablebooleanNo
isDeletablebooleanNo
extendedProps{ originalData?: ProjectModel | TaskModel | MilestoneModel; showTimeTracking?: boolean; showDependencies?: boolean; tags?: string[]; notes?: string; assignedUsers?: string[]; isOverdue?: boolean; daysUntilDue?: number; completionPercentage?: number; }No

CalendarFilters

Filter options for calendar events

Properties:

PropertyTypeRequiredDescription
projectIdsstring[]No
milestoneIdsstring[]No
eventTypesEventType[]No
statusesCalendarEventStatus[]No
priorities("low" | "medium" | "high" | "critical")[]No
assignedUserIdsstring[]No
createdByUserIdsstring[]No
startDatestringNo
endDatestringNo
showOverdueOnlybooleanNo
showUpcomingOnlybooleanNo
daysAheadnumberNo
minProgressnumberNo
maxProgressnumberNo
hasTimeBudgetbooleanNo
isOverBudgetbooleanNo
showRecurringOnlybooleanNo
hideCompletedRecurringbooleanNo
tagsstring[]No
hasNotesbooleanNo
hasDependenciesbooleanNo

CalendarViewState

Current state of the calendar view

Properties:

PropertyTypeRequiredDescription
currentViewCalendarViewModeYes
currentDatestringYes
scopeCalendarScopeYes
scopeIdstringNo
filtersCalendarFiltersYes
showWeekendsbooleanYes
showTimeGridbooleanYes
showAllDayEventsbooleanYes
showProgressbooleanYes
showTimeTrackingbooleanYes
showDependenciesbooleanYes
showRecurrenceIndicatorbooleanYes
selectedEventIdsstring[]Yes
draggedEventIdstringNo
isCreatingEventbooleanYes
isEditingEventbooleanYes
isLoadingbooleanYes
errorstringNo
lastRefreshstringNo

TimelineItem

Timeline item for project timeline views

Properties:

PropertyTypeRequiredDescription
idstringYes
titlestringYes
typeEventTypeYes
startDatestringYes
endDatestringNo
durationnumberNo
projectIdstringYes
milestoneIdstringNo
parentIdstringNo
levelnumberYes
statusCalendarEventStatusYes
progressnumberYes
dependenciesstring[]Yes
criticalPathbooleanYes
colorstringYes
backgroundColorstringYes
textColorstringNo
assignedUsersstring[]Yes
timeBudgetHoursnumberNo
timeSpentHoursnumberNo
priority"low" | "medium" | "high" | "critical"No
isExpandedbooleanNo
hasChildrenbooleanNo
childrenTimelineItem[]No

TimelineViewConfig

Timeline view configuration

Properties:

PropertyTypeRequiredDescription
timeScale"day" | "week" | "month" | "quarter"Yes
startDatestringYes
endDatestringYes
showCriticalPathbooleanYes
showDependenciesbooleanYes
showProgressbooleanYes
showMilestonesbooleanYes
groupBy"project" | "milestone" | "status" | "user" | "none"Yes
expandAllGroupsbooleanYes
allowReorderingbooleanYes
allowResizingbooleanYes
allowDependencyEditingbooleanYes

CalendarEventSelection

Calendar event selection information

Properties:

PropertyTypeRequiredDescription
eventIdstringYes
eventCalendarEventYes
startDatestringYes
endDatestringNo
allDaybooleanYes

CalendarDateSelection

Calendar date selection information

Properties:

PropertyTypeRequiredDescription
startDatestringYes
endDatestringNo
allDaybooleanYes
suggestedEventTypeEventTypeNo
suggestedProjectIdstringNo
suggestedMilestoneIdstringNo

CalendarEventUpdate

Event modification data

Properties:

PropertyTypeRequiredDescription
eventIdstringYes
changesPartial<CalendarEvent>Yes
updateType"move" | "resize" | "edit" | "status-change"Yes
originalEventCalendarEventYes

CalendarEventCreate

Event creation data

Properties:

PropertyTypeRequiredDescription
titlestringYes
eventTypeEventTypeYes
projectIdstringYes
milestoneIdstringNo
startDatestringYes
endDatestringNo
allDaybooleanYes
descriptionstringNo
priority"low" | "medium" | "high" | "critical"No
timeBudgetHoursnumberNo
assignedUserIdsstring[]No
recurrencePatternRecurrencePatternNo

CalendarStatistics

Calendar view statistics

Properties:

PropertyTypeRequiredDescription
totalEventsnumberYes
eventsByTypeRecord<EventType, number>Yes
eventsByStatusRecord<CalendarEventStatus, number>Yes
eventsByPriorityRecord<"low" | "medium" | "high" | "critical", number>Yes
averageProgressnumberYes
completedEventsnumberYes
overdueEventsnumberYes
totalBudgetedHoursnumberYes
totalSpentHoursnumberYes
averageTimePerEventnumberYes
overBudgetEventsnumberYes
earliestEventDatestringYes
latestEventDatestringYes
eventsInCurrentViewnumberYes
recurringEventCountnumberYes
nextRecurringEventsCalendarEvent[]Yes

CalendarPerformanceMetrics

Performance metrics for calendar rendering

Properties:

PropertyTypeRequiredDescription
eventsLoadednumberYes
renderTimenumberYes
filterTimenumberYes
lastUpdateTimestampstringYes
memoryUsagenumberNo

CalendarPreferences

User preferences for calendar display

Properties:

PropertyTypeRequiredDescription
defaultViewCalendarViewModeYes
defaultScopeCalendarScopeYes
firstDayOfWeek0 | 2 | 1 | 3 | 5 | 4 | 6Yes
showWeekNumbersbooleanYes
show24HourTimebooleanYes
showEventTooltipsbooleanYes
showProgressBarsbooleanYes
showTimeTrackingbooleanYes
colorScheme"light" | "dark" | "auto"Yes
eventColorMode"project" | "status" | "custom" | "priority"Yes
showOverdueWarningsbooleanYes
showUpcomingDeadlinesbooleanYes
deadlineWarningDaysnumberYes
defaultFiltersCalendarFiltersYes
saveFilterStatebooleanYes
enableDragAndDropbooleanYes
enableEventResizebooleanYes
enableQuickEventCreationbooleanYes
confirmEventDeletionbooleanYes
maxEventsToLoadnumberYes
enableLazyLoadingbooleanYes
cacheEventDatabooleanYes

CalendarColorMapping

Color mapping for different event aspects

Properties:

PropertyTypeRequiredDescription
statusRecord<CalendarEventStatus, string>Yes
priorityRecord<"low" | "medium" | "high" | "critical", string>Yes
eventTypeRecord<EventType, string>Yes
projectRecord<string, string>Yes

CalendarContext

Calendar context information

Properties:

PropertyTypeRequiredDescription
userIdstringYes
orgIdstringYes
canCreateEventsbooleanYes
canEditEventsbooleanYes
canDeleteEventsbooleanYes
canManageRecurrencebooleanYes
availableProjectsProjectModel[]Yes
availableMilestonesMilestoneModel[]Yes
preferencesCalendarPreferencesYes
colorMappingCalendarColorMappingYes
features{ timeTracking: boolean; recurrence: boolean; dependencies: boolean; ganttView: boolean; timelineView: boolean; }Yes

CalendarHookReturn

Calendar hook return type for state management

Properties:

PropertyTypeRequiredDescription
viewStateCalendarViewStateYes
eventsCalendarEvent[]Yes
statisticsCalendarStatisticsYes
performanceCalendarPerformanceMetricsYes
setView(view: CalendarViewMode) => voidYes
setDate(date: string) => voidYes
setFilters(filters: Partial<CalendarFilters>) => voidYes
setScope(scope: CalendarScope, scopeId?: string) => voidYes
createEvent(eventData: CalendarEventCreate) => Promise<CalendarEvent>Yes
updateEvent(eventId: string, changes: Partial<CalendarEvent>) => Promise<CalendarEvent>Yes
deleteEvent(eventId: string) => Promise<void>Yes
selectEvent(eventId: string) => voidYes
selectDate(selection: CalendarDateSelection) => voidYes
clearSelection() => voidYes
refreshEvents() => Promise<void>Yes
exportEvents(format: "ical" | "csv" | "json") => Promise<Blob>Yes
importEvents(file: File) => Promise<CalendarEvent[]>Yes

ConnectionStatus

RAG Admin Status Types

Type definitions for the RAG sync admin API response. Used by useRAGAdminStatus hook and dashboard components.

Properties:

PropertyTypeRequiredDescription
connectedbooleanYes
urlstringYes
latencyMsnumberNo

RxDBConnectionStatus

RxDB connection with replication status

Properties:

PropertyTypeRequiredDescription
replicatingbooleanYes
collections{ name: string; state: "active" | "paused" | "error"; documentCount: number; }[]Yes

OllamaConnectionStatus

Ollama connection with model info. Uses connected from base ConnectionStatus to indicate availability.

Properties:

PropertyTypeRequiredDescription
modelstringYes

RAGErrorEntry

Error entry from the sync pipeline

Properties:

PropertyTypeRequiredDescription
documentIdstringYes
errorstringYes
timestampstringYes
attemptsnumberYes

RAGPipelineStatus

Pipeline processing metrics

Properties:

PropertyTypeRequiredDescription
queueDepthnumberYes
activeProcessingnumberYes
maxConcurrencynumberYes
totalProcessednumberYes
totalSkippednumberYes
totalErrorsnumberYes
totalRetriesnumberYes
processedByCollectionRecord<string, number>Yes
skippedByCollectionRecord<string, number>Yes
recentErrorsRAGErrorEntry[]Yes

RAGVectorStoreStatus

Vector store statistics

Properties:

PropertyTypeRequiredDescription
totalDocumentsnumberYes
byCollectionRecord<string, number>Yes
indexesRecord<string, string>Yes

RAGServiceStatus

Service health info

Properties:

PropertyTypeRequiredDescription
uptimenumberYes
startedAtstringYes
versionstringYes

RAGConnectionsStatus

Connection status for all services

Properties:

PropertyTypeRequiredDescription
surrealdbConnectionStatusYes
rxdbRxDBConnectionStatusYes
redisConnectionStatusYes
ollamaOllamaConnectionStatusYes

RAGAdminStatus

Complete admin status response from /api/rag-sync/admin/status

Properties:

PropertyTypeRequiredDescription
serviceRAGServiceStatusYes
connectionsRAGConnectionsStatusYes
pipelineRAGPipelineStatusYes
vectorStoreRAGVectorStoreStatusYes

ServerConfig

Server Configuration Type Definitions

This file contains TypeScript interfaces for server configuration management in FlowState applications. These types provide a unified schema for managing RxDB server connections across all apps in the framework.

Properties:

PropertyTypeRequiredDescription
idstringYesUnique identifier for this server configuration.
Generated automatically when the server config is created.
namestringYesHuman-readable display name for the server.
urlstringYesRxDB server URL endpoint.
databaseNamestringYesIndexedDB database name for this server's local storage.

Each server should have a unique database name to ensure data isolation. The database name is used for local IndexedDB storage and should be distinct across different server configurations. | | authToken | string | No | Bearer token for server authentication.

Used in the Authorization header for all requests to the RxDB server. Format: "Bearer {authToken}" Optional until user logs in. | | domainId | string | Yes | Domain identifier for multi-tenancy support.

Used in the X-Domain-ID header for requests to the RxDB server. Enables multiple domains/tenants to share the same server infrastructure. | | userId | string | No | User identifier for query filtering and data ownership.

Used to filter documents and establish data ownership within the application. Required for user-scoped operations and permissions. Optional until user logs in. | | orgId | string | No | Organization identifier for data scoping.

Used to scope data to a specific organization/tenant within the system. Essential for multi-organization deployments. Optional until user logs in. | | isActive | boolean | Yes | Whether this server is currently the active/selected server.

Only one server should be active at a time. The active server is used for all database operations and data synchronization. | | lastConnected | string | No | ISO 8601 timestamp of the last successful connection to this server.

Updated automatically when a connection test succeeds or when the server is set as active. Useful for monitoring server availability. | | createdAt | string | Yes | ISO 8601 timestamp of when this server configuration was created.

Set automatically during server config creation and never modified. | | updatedAt | string | No | ISO 8601 timestamp of when this server configuration was last updated.

Updated automatically whenever the server config is modified. Optional as it's only set after the first update. | | replicationEnabled | boolean | No | Whether replication is enabled for this server.

When true, the local database will replicate with the server automatically. When false, the database operates in local-only mode. | | replicationServerUrl | string | No | Optional replication server URL if different from the main server URL.

Some deployments use separate endpoints for replication traffic. If not specified, the main url field is used for replication. |

UseServerConfig

Return type for useServerConfig hook.

Provides comprehensive server configuration management including CRUD operations, connection testing, and configuration import/export capabilities.

Properties:

PropertyTypeRequiredDescription
serversServerConfig[]YesArray of all configured servers.

Includes both active and inactive server configurations. Updated in real-time as servers are added, modified, or deleted. | | activeServer | ServerConfig | Yes | Currently active server configuration.

Null if no server is active. Only one server can be active at a time. The active server is used for all database operations. | | addServer | (config: Omit<ServerConfig, "id" \| "createdAt">) => Promise<void> | Yes | Add a new server configuration.

Creates a new server config with a generated ID and timestamps. If this is the first server, it's automatically set as active. | | updateServer | (id: string, updates: Partial<ServerConfig>) => Promise<void> | Yes | Update an existing server configuration.

Partial updates are supported - only provided fields will be updated. The updatedAt timestamp is set automatically. | | deleteServer | (id: string) => Promise<void> | Yes | Delete a server configuration.

Permanently removes the server configuration from storage. If deleting the active server, a new server should be set as active. | | setActiveServer | (id: string) => Promise<void> | Yes | Set a server as the active server.

Only one server can be active at a time. Setting a new active server will deactivate the previously active server. Updates the lastConnected timestamp for the newly active server. | | testConnection | (config: ServerConfig) => Promise<boolean> | Yes | Test connection to a server.

Attempts to connect to the server and verify authentication. Typically makes a health check request to the server endpoint. Times out after 5 seconds by default. | | exportConfigs | () => Promise<string> | Yes | Export all server configurations as JSON.

Useful for backup, migration, or sharing configurations. Returns a JSON string containing all server configs. | | importConfigs | (json: string, options?: ImportOptions) => Promise<ImportResult> | Yes | Import server configurations from JSON.

Validates and imports server configurations from a JSON string. Can merge with existing configs or replace them entirely. | | isLoading | boolean | Yes | Loading state indicator.

True when any async operation is in progress (loading, adding, updating, etc.). Useful for showing loading spinners or disabling UI during operations. | | error | string | Yes | Error message from the last failed operation.

Null if no error or if the last operation succeeded. Contains a human-readable error message for display. |

Examples:

const {
  servers,
  activeServer,
  addServer,
  updateServer,
  deleteServer,
  setActiveServer,
  testConnection,
  exportConfigs,
  importConfigs,
  isLoading,
  error
} = useServerConfig();

// Add a new server
await addServer({
  name: 'Development',
  url: 'http://localhost:7002',
  databaseName: 'flowstate-dev',
  authToken: 'dev-token',
  domainId: 'dev',
  userId: 'user-1',
  orgId: 'org-1',
  isActive: false
});

// Test connection
const isConnected = await testConnection(server);

// Export configurations
const json = await exportConfigs();

ImportOptions

Options for importing server configurations.

Properties:

PropertyTypeRequiredDescription
mergebooleanNoWhether to merge with existing configurations or replace them.
  • When true, imported configs are added to existing ones (duplicates updated)

  • When false, existing configs are removed before import | | preserveIds | boolean | No | Whether to preserve server IDs from the import.

  • When true, uses IDs from the imported configs (may cause conflicts)

  • When false, generates new IDs for all imported configs | | autoActivate | boolean | No | Whether to activate the first imported server if no server is currently active. | | validateConnections | boolean | No | Whether to validate connections before importing.

When true, tests each server connection before import. Only servers with successful connections are imported. |

ImportResult

Result of an import operation.

Properties:

PropertyTypeRequiredDescription
importednumberYesNumber of servers successfully imported.
failednumberYesNumber of servers that failed to import.
errors{ serverName: string; error: string; }[]YesArray of error messages for failed imports.
skippednumberYesWhether any servers were skipped due to validation failures.

ExportedConfigs

Exported configuration format.

Wraps server configurations with metadata for versioning and validation.

Properties:

PropertyTypeRequiredDescription
versionstringYesSchema version for import/export format.

Used to handle breaking changes in the config format over time. | | exportedAt | string | Yes | ISO 8601 timestamp of when the export was created. | | servers | ServerConfig[] | Yes | Array of server configurations. | | metadata | { [key: string]: any; exportedBy?: string; description?: string; } | No | Optional metadata about the export. |

ServerValidationResult

Validation result for server configuration.

Properties:

PropertyTypeRequiredDescription
isValidbooleanYesWhether the configuration is valid.
errorsPartial<Record<keyof ServerConfig, string>>YesValidation error messages keyed by field name.
warningsstring[]NoWarning messages (non-blocking issues).

ServerHealthCheck

Server health check result.

Properties:

PropertyTypeRequiredDescription
isHealthybooleanYesWhether the server is reachable and responding.
statusCodenumberNoHTTP response status code.
responseTimenumberNoResponse time in milliseconds.
serverVersionstringNoServer version information if available.
errorstringNoError message if health check failed.
checkedAtstringYesISO 8601 timestamp of when the health check was performed.

RecurrencePattern

Properties:

PropertyTypeRequiredDescription
idstringYes
frequencyRecurrenceFrequencyYes
intervalnumberYes
startDatestringYes
endDatestringNo
countnumberNo
byWeekDayWeekDay[]No
byMonthDaynumber[]No
byMonthnumber[]No
byYearDaynumber[]No
monthlyTypeMonthlyRecurrenceTypeNo
rrulestringYes
timezonestringYes
createdAtstringYes
updatedAtstringYes

RecurrenceInstance

Properties:

PropertyTypeRequiredDescription
idstringYes
taskIdstringYes
recurrenceIdstringYes
instanceDatestringYes
status"completed" | "scheduled" | "modified" | "cancelled"Yes
originalTaskIdstringNo
modifiedFieldsPartial<TaskRecurrenceFields>No
createdAtstringYes
updatedAtstringYes

TaskRecurrenceFields

Properties:

PropertyTypeRequiredDescription
namestringYes
titlestringYes
descriptionstringYes
dueAtstringNo
status"To Do" | "In Progress" | "Complete" | "On Hold" | "Blocked"Yes
timeBudgetHoursnumberNo

RecurringTaskModel

Properties:

PropertyTypeRequiredDescription
isRecurringbooleanYes
recurrencePatternRecurrencePatternNo
parentTaskIdstringNo
isTemplatebooleanYes
originalInstanceDatestringNo

RecurrenceStatistics

Properties:

PropertyTypeRequiredDescription
totalInstancesnumberYes
completedInstancesnumberYes
upcomingInstancesnumberYes
overdueInstancesnumberYes
completionRatenumberYes
nextDueDatestringNo
lastCompletedDatestringNo

CreateRecurrencePatternData

Properties:

PropertyTypeRequiredDescription
frequencyRecurrenceFrequencyYes
intervalnumberYes
startDatestringYes
endDatestringNo
countnumberNo
byWeekDayWeekDay[]No
byMonthDaynumber[]No
byMonthnumber[]No
byYearDaynumber[]No
monthlyTypeMonthlyRecurrenceTypeNo
timezonestringYes

UpdateRecurrencePatternData

Properties:

PropertyTypeRequiredDescription
frequencyRecurrenceFrequencyNo
intervalnumberNo
endDatestringNo
countnumberNo
byWeekDayWeekDay[]No
byMonthDaynumber[]No
byMonthnumber[]No
byYearDaynumber[]No
monthlyTypeMonthlyRecurrenceTypeNo

RecurrenceValidationResult

Properties:

PropertyTypeRequiredDescription
isValidbooleanYes
errorsstring[]Yes
warningsstring[]Yes

GenerateInstancesOptions

Properties:

PropertyTypeRequiredDescription
startDatestringYes
endDatestringYes
maxInstancesnumberNo
includeCompletedbooleanNo

RecurrenceFormData

Properties:

PropertyTypeRequiredDescription
frequencyRecurrenceFrequencyYes
intervalnumberYes
startDatestringYes
endType"date" | "never" | "count"Yes
endDatestringNo
countnumberNo
weekDaysWeekDay[]No
monthDaysnumber[]No
monthsnumber[]No
yearDaysnumber[]No
monthlyTypeMonthlyRecurrenceTypeNo

RecurrencePreview

Properties:

PropertyTypeRequiredDescription
nextFiveInstancesstring[]Yes
totalInstancesInYearnumberYes
estimatedEndDatestringNo

CalendarRecurrenceInstance

Properties:

PropertyTypeRequiredDescription
idstringYes
instanceDatestringYes
originalTaskIdstringYes
isRecurringInstancebooleanYes
recurrenceIdstringYes
status"completed" | "scheduled" | "modified" | "cancelled"Yes
modifiedFieldsPartial<TaskRecurrenceFields>No
calendarEventCalendarEventYes

RecurrenceDisplayOptions

Properties:

PropertyTypeRequiredDescription
startDatestringYesDate range to generate instances for
endDatestringYes
maxInstancesnumberNoMaximum number of instances to generate
includeCompletedbooleanNoWhether to include completed instances
showRecurrenceIndicatorbooleanNoWhether to show recurring indicators
timezonestringNoTimezone for display calculations

EditRecurrenceOptions

Properties:

PropertyTypeRequiredDescription
editScope"all" | "this" | "future"YesWhether to edit only this instance or all future instances
instanceDatestringYesThe specific instance date being edited
modifiedFieldsPartial<TaskRecurrenceFields>YesModified task fields

RecurrenceCalendarData

Properties:

PropertyTypeRequiredDescription
instancesCalendarRecurrenceInstance[]YesGenerated calendar instances
statistics{ totalInstances: number; completedInstances: number; upcomingInstances: number; overdueInstances: number; }YesStatistics about the recurrence
nextOccurrence{ date: string; daysUntil: number; }NoNext occurrence information

ProjectValidationErrors

Properties:

PropertyTypeRequiredDescription
titlestringNo
descriptionstringNo
goalIdstringNo

ProjectUpdateData

Properties:

PropertyTypeRequiredDescription
titlestringYes
descriptionstringYes
goalIdstringNo

AttributeListItemProps

Properties:

PropertyTypeRequiredDescription
attributeAttributeModelYes
onEdit(attribute: AttributeModel) => voidNo
onDelete(attribute: AttributeModel) => voidNo
onArchive(attribute: AttributeModel) => voidNo
showActionsbooleanNo
compactbooleanNo

PresetInfo

Preset info for display in the selector

Properties:

PropertyTypeRequiredDescription
namePresetTypeYes
titlestringYes
descriptionstringYes
categoryCountnumberYes
tagCountnumberYes

AttributeManagerPanelProps

Properties:

PropertyTypeRequiredDescription
attributesAttributeModel[]YesAll attributes to display
loadingbooleanNoLoading state
errorstringNoError message
onCreate(type: AttributeTab) => voidNoCalled when user wants to create a new attribute
onEdit(attribute: AttributeModel) => voidNoCalled when user wants to edit an attribute
onDelete(attribute: AttributeModel) => voidNoCalled when user wants to delete an attribute
onArchive(attribute: AttributeModel) => voidNoCalled when user wants to archive an attribute
onSeedDefaults(preset: PresetType) => voidNoCalled when user wants to seed default attributes with a specific preset
onSeedFromPresets(presets: PresetType[]) => voidNoCalled when user wants to seed from multiple presets
showSeedButtonbooleanNoWhether to show the seed defaults button
titlestringNoCustom title
compactbooleanNoWhether to show compact items

LoginFormProps

Properties:

PropertyTypeRequiredDescription
onSuccess() => voidNoCallback when login is successful
onError(error: Error) => voidNoCallback when an error occurs
classNamestringNoCustom class name for the form container
showTitlebooleanNoWhether to show a title
titlestringNoCustom title text

DateDisplayProps

Properties:

PropertyTypeRequiredDescription
datestring | DateYesUTC ISO string or Date object to display
formatDateDisplayFormatNoFormat style for the date display
customFormatstringNoCustom date-fns format string (overrides format prop)
timezonestringNoOverride timezone (uses user preference by default)
fallbackstringNoFallback text when date is invalid or null
classNamestringNoCSS classes to apply to the display element
showTimezonebooleanNoShow timezone abbreviation/name

RelativeTimeDisplayProps

Properties:

PropertyTypeRequiredDescription
datestring | DateYesUTC ISO string or Date object to display
timezonestringNoOverride timezone (uses user preference by default)
fallbackstringNoFallback text when date is invalid or null
classNamestringNoCSS classes to apply to the display element
showTooltipbooleanNoShow full date/time on hover
updateIntervalnumberNoAuto-update interval in milliseconds (default: 60000 = 1 minute)
disableAutoUpdatebooleanNoDisable auto-updating for performance
addSuffixbooleanNoInclude 'ago' suffix (default: true)
includeSecondsbooleanNoUse more precise units (seconds) for very recent dates

FloatingAction

Properties:

PropertyTypeRequiredDescription
idstringYes
labelstringYes
iconReact.ReactNodeYes
onClick() => voidYes
color"brand" | "blue" | "green" | "purple" | "red" | "orange"No
disabledbooleanNo

CollectionSelectOption

Properties:

PropertyTypeRequiredDescription
valuestringYes
labelstringYes
dataanyNo
isCreatedbooleanNo

CollectionSelectProps

Properties:

PropertyTypeRequiredDescription
idstringNo
labelstringNo
placeholderstringNo
classNamestringNo
disabledbooleanNo
requiredbooleanNo
errorstringNo
helperTextstringNo
isMultibooleanNo
isClearablebooleanNo
isCreatablebooleanNo
isSearchablebooleanNo
collectionNamestringYes
selectoranyNo
sortanyNo
labelFieldstringNo
valueFieldstringNo
searchFieldsstring[]No
valuestring | string[] | CollectionSelectOption | CollectionSelectOption[]No
onChange(value: OnChangeValue<CollectionSelectOption, boolean>, actionMeta: ActionMeta<CollectionSelectOption>) => voidNo
onCreateOption(inputValue: string) => Promise<CollectionSelectOption | null>No
createOptionPromptstringNo
onCreateModalOpen(inputValue: string) => voidNo
dynamicSelector(searchText: string) => anyNo
dependsOnstringNo
dependsOnValueanyNo
skipOrgFilteringbooleanNo
skipUserFilteringbooleanNo
noOptionsMessagestringNo
loadingMessagestringNo
colorMode"light" | "dark"No

RichTextConfig

TypeScript interfaces for field components Follows existing field component patterns while adding rich text editor support

Properties:

PropertyTypeRequiredDescription
enabledbooleanNoEnable/disable rich text editing - falls back to textarea if false
toolbar(string | Record<string, any>)[][]NoQuill toolbar configuration - string array or nested array with objects for complex buttons
modulesanyNoQuill modules configuration
formatsstring[]NoAllowed formats for the editor
theme"snow" | "bubble"NoEditor theme - 'snow' (default) or 'bubble'
maxLengthnumberNoMaximum character length for content
placeholderstringNoPlaceholder text for empty editor
spellCheckbooleanNoEnable/disable spell check
readOnlybooleanNoRead-only mode
classNamestringNoCustom CSS classes for the editor

RichTextEditorProps

Props interface for RichTextEditor component Based on existing field component patterns

Properties:

PropertyTypeRequiredDescription
idstringYesUnique identifier for the field
labelstringNoDisplay label for the field
valuestringYesCurrent value (markdown format for storage)
onChange(value: string) => voidYesChange handler - receives markdown string
errorstringNoError message to display
helperTextstringNoHelper text to display below the field
configRichTextConfigNoRich text editor configuration
disabledbooleanNoDisable the editor
classNamestringNoAdditional CSS classes
extrastringNoExtra styles or classes (following existing field pattern)
statestringNoField state for styling (following existing field pattern)
placeholderstringNoPlaceholder text (overrides config.placeholder)
variantstringNoVariant styling (following existing field pattern)

RichTextConfigValidation

Configuration validation result

Properties:

PropertyTypeRequiredDescription
isValidbooleanYes
errorsstring[]Yes
warningsstring[]Yes
sanitizedConfigRichTextConfigYes

RichTextFieldConfig

Type for field configuration in ClassForm that includes rich text options Extends the existing FieldConfig pattern

Properties:

PropertyTypeRequiredDescription
richTextEditorRichTextConfigNoRich text editor configuration

LoadingSpinnerProps

Properties:

PropertyTypeRequiredDescription
sizenumber | "sm" | "md" | "lg" | "xl"NoSize variant: 'sm' (32px), 'md' (64px), 'lg' (96px), 'xl' (128px), or custom number
messagestringNoOptional message to display below the spinner
classNamestringNoAdditional className for custom styling
centeredbooleanNoWhether to center the spinner in its container
fullScreenbooleanNoWhether to take full viewport height when centered

LongTermMemoryListProps

Props for LongTermMemoryList component

Properties:

PropertyTypeRequiredDescription
memoriesLongTermMemory[]YesList of memories to display
isLoadingbooleanNoWhether data is loading
onEdit(memory: LongTermMemory) => voidNoHandler for editing a memory
onDelete(memory: LongTermMemory) => voidNoHandler for deleting a memory
onSelect(memory: LongTermMemory) => voidNoHandler for selecting a memory
searchQuerystringNoSearch query (used for highlighting)
emptyMessagestringNoEmpty state message
colorMode"light" | "dark"NoColor mode
showUserColumnbooleanNoShow user column

MemoryAnalyticsData

Memory analytics data structure

Properties:

PropertyTypeRequiredDescription
totalSessionsnumberYesTotal number of sessions
totalMessagesnumberYesTotal number of messages across all sessions
totalLongTermMemoriesnumberYesTotal number of long-term memories
totalTokensnumberNoTotal token usage (if available)
avgMessagesPerSessionnumberNoAverage messages per session
avgTokensPerSessionnumberNoAverage tokens per session
activeSessions24hnumberNoSessions active in last 24 hours
activeSessions7dnumberNoSessions active in last 7 days
topTopics{ topic: string; count: number; }[]NoTop topics across all memories
activityByDay{ date: string; sessions: number; messages: number; }[]NoActivity by day (last 7 days)
memoryTypeDistribution{ type: string; count: number; }[]NoMemory type distribution

MemoryAnalyticsProps

Props for MemoryAnalytics component

Properties:

PropertyTypeRequiredDescription
dataMemoryAnalyticsDataYesAnalytics data to display
isLoadingbooleanNoWhether data is loading
errorErrorNoError message
onRefresh() => voidNoHandler for refresh
orgNamestringNoOrganization name for display

MemoryControlsProps

Props for MemoryControls component

Properties:

PropertyTypeRequiredDescription
isEnabledbooleanYesWhether memory is enabled
messageCountnumberYesNumber of messages in memory
lastUpdatedstringNoLast update timestamp (ISO string)
isLoadingbooleanNoWhether memory is loading
hasErrorbooleanNoWhether there's an error
errorMessagestringNoError message
onClear() => Promise<void>YesHandler for clearing memory
onOpenManager() => voidNoHandler for opening memory manager (optional)
colorMode"light" | "dark"NoColor mode for styling
classNamestringNoOptional className

MemorySearchPanelProps

Props for MemorySearchPanel component

Properties:

PropertyTypeRequiredDescription
resultsUnifiedSearchResult[]YesSearch results to display
isLoadingbooleanNoWhether search is in progress
errorErrorNoError message to display
workingMemoryCountnumberNoCount of working memory results
longTermMemoryCountnumberNoCount of long-term memory results
currentQuerystringNoCurrent search query
onSearch(query: string, options: SearchOptions) => voidYesHandler for search submission
onClear() => voidNoHandler for clearing results
onResultSelect(result: UnifiedSearchResult) => voidNoHandler for selecting a result
debounceMsnumberNoDebounce delay in ms (0 to disable)
placeholderstringNoPlaceholder text for search input
emptyMessagestringNoEmpty state message
showFiltersbooleanNoWhether to show filter options

SearchOptions

Search filter options

Properties:

PropertyTypeRequiredDescription
includeWorkingMemorybooleanYes
includeLongTermMemorybooleanYes

MemorySessionDetailProps

Props for MemorySessionDetail component

Properties:

PropertyTypeRequiredDescription
sessionIdstringYesSession ID
memoryAmsMemoryYesMemory data
isLoadingbooleanNoWhether data is loading
onBack() => voidNoHandler for going back
onDelete() => voidNoHandler for deleting
onRefresh() => voidNoHandler for refreshing
showActionsbooleanNoWhether actions are enabled
colorMode"light" | "dark"NoColor mode

MemorySessionListProps

Props for MemorySessionList component

Properties:

PropertyTypeRequiredDescription
sessionsAmsSession[]YesList of sessions
isLoadingbooleanNoWhether data is loading
onSelectSession(session: AmsSession) => voidNoHandler for selecting a session
onDeleteSession(sessionId: string) => voidNoHandler for deleting a session
selectedSessionIdstringNoCurrently selected session ID
showUserColumnbooleanNoShow user column
emptyMessagestringNoEmpty state message
colorMode"light" | "dark"NoColor mode

MemoryStatusIndicatorProps

Props for MemoryStatusIndicator component

Properties:

PropertyTypeRequiredDescription
isEnabledbooleanYesWhether memory is enabled
messageCountnumberYesNumber of messages in memory
isLoadingbooleanNoWhether memory is loading
hasErrorbooleanNoWhether there's an error
errorMessagestringNoError message for tooltip
onClick() => voidNoClick handler
colorMode"light" | "dark"NoColor mode for styling
classNamestringNoOptional className

ColorScheme

Color schemes for organizations and their children

Each org gets a base color family. Workspaces, projects, and milestones under that org use accent variations of the same color family for easy visual grouping.

Properties:

PropertyTypeRequiredDescription
bgstringYes
bgDarkstringYes
textstringYes
textDarkstringYes
borderstringYes
borderDarkstringYes

OrgColorFamily

A complete color family for an organization and its children. All use the same base color but with different intensities/accents.

Properties:

PropertyTypeRequiredDescription
orgColorSchemeYesPrimary color for the org badge (most prominent)
workspaceColorSchemeYesSlightly lighter shade for workspace
projectColorSchemeYesMedium accent for project
milestoneColorSchemeYesSubtle accent for milestone

ColorSchemeSelectorProps

Properties:

PropertyTypeRequiredDescription
valuenumberNoCurrently selected color scheme index (0-7, or undefined for auto)
onChange(index: number | undefined) => voidYesCallback when color scheme is selected
labelstringNoOptional label
classNamestringNoOptional className for the container

OrgDetailPageProps

Properties:

PropertyTypeRequiredDescription
dbanyYesDatabase instance for querying data
orgIdstringYesOrganization ID to display
userIdstringYesCurrent user ID
onBack() => voidNoCallback to navigate back
onWorkspaceCreated(workspace: WorkspaceModel) => voidNoCallback when workspace is created
onWorkspaceUpdated(workspace: WorkspaceModel) => voidNoCallback when workspace is updated
onWorkspaceDeleted(workspaceId: string) => voidNoCallback when workspace is deleted
classNamestringNoCustom className

OrgsPageProps

Properties:

PropertyTypeRequiredDescription
dbanyYesDatabase instance for querying orgs
userIdstringYesCurrent user ID
onOrgCreated(org: OrgModel) => voidNoCallback when org is created
onOrgUpdated(org: OrgModel) => voidNoCallback when org is updated
onOrgDeleted(orgId: string) => voidNoCallback when org is deleted
onOrgClick(orgId: string) => voidNoCallback when org is clicked to view details
classNamestringNoCustom className

OrgWorkspaceSelectorProps

Properties:

PropertyTypeRequiredDescription
onOrgChange(org: OrgModel | null) => voidNoCallback when org is selected
onWorkspaceChange(workspace: WorkspaceModel | null) => voidNoCallback when workspace is selected
showCreateButtonsbooleanNoShow create buttons
onCreateOrg() => voidNoCallback when create org is clicked
onCreateWorkspace() => voidNoCallback when create workspace is clicked
showManageButtonsbooleanNoShow manage buttons
onManageOrg() => voidNoCallback when manage org is clicked
onManageWorkspace() => voidNoCallback when manage workspace is clicked
compactbooleanNoCompact mode (inline layout) - deprecated, use orientation instead
orientation"vertical" | "horizontal"NoLayout orientation - 'vertical' stacks selectors, 'horizontal' places them inline
colorMode"light" | "dark"NoColor mode for background contrast - 'dark' for dark backgrounds, 'light' for light backgrounds
classNamestringNoCustom className

WorkspacesPageProps

Properties:

PropertyTypeRequiredDescription
dbanyYesDatabase instance for querying workspaces
userIdstringYesCurrent user ID
onWorkspaceCreated(workspace: WorkspaceModel) => voidNoCallback when workspace is created
onWorkspaceUpdated(workspace: WorkspaceModel) => voidNoCallback when workspace is updated
onWorkspaceDeleted(workspaceId: string) => voidNoCallback when workspace is deleted
classNamestringNoCustom className

RAGAdminDashboardProps

Properties:

PropertyTypeRequiredDescription
colorMode"light" | "dark"No

RAGPipelineStatusCardProps

Properties:

PropertyTypeRequiredDescription
pipelinePipelineStatusTypeYes
colorMode"light" | "dark"No

RAGRecentErrorsProps

Properties:

PropertyTypeRequiredDescription
errorsRAGErrorEntry[]Yes
colorMode"light" | "dark"No

RAGServiceHealthProps

Properties:

PropertyTypeRequiredDescription
connectionsRAGConnectionsStatusYes
colorMode"light" | "dark"No

CollectionStatus

Properties:

PropertyTypeRequiredDescription
namestringYes
state"active" | "error" | "paused"Yes
documentCountnumberYes

RAGSyncCollectionsProps

Properties:

PropertyTypeRequiredDescription
collectionsCollectionStatus[]Yes
colorMode"light" | "dark"No

RAGVectorStoreStatsProps

Properties:

PropertyTypeRequiredDescription
vectorStoreRAGVectorStoreStatusYes
colorMode"light" | "dark"No

ConnectionStatusIndicatorProps

Props for the ConnectionStatusIndicator component

Properties:

PropertyTypeRequiredDescription
status"error" | "connected" | "disconnected" | "connecting"YesCurrent connection status
  • 'connected': Successfully connected to server
  • 'disconnected': Not connected to server
  • 'connecting': Currently attempting to connect
  • 'error': Connection error occurred | | serverName | string | No | Optional server name to display in the label | | lastConnected | string | No | Optional ISO 8601 timestamp of last successful connection Used in tooltip to show connection history | | showLabel | boolean | No | Whether to show a text label alongside the indicator | | className | string | No | Additional CSS classes to apply to the badge |

ServerConfigDialogProps

Props for ServerConfigDialog component.

This component follows a fully controlled pattern - all state management is delegated to the parent component through callbacks.

Properties:

PropertyTypeRequiredDescription
openbooleanYesWhether the dialog is currently open.
onClose() => voidYesCallback invoked when the dialog should close.
Called when user clicks Cancel, closes via X button, or on successful save.
serverServerConfigNoExisting server configuration to edit.
When undefined, the dialog operates in "add new server" mode.
defaultValuesPartial<Omit<ServerConfig, "id" | "isActive" | "createdAt">>NoDefault values for new server configurations.
Only used when server prop is undefined (add mode).
onSave(config: Omit<ServerConfig, "id" | "createdAt">) => Promise<void>YesCallback invoked when user submits the form.
Should handle creating or updating the server configuration.
onTest(config: ServerConfig) => Promise<boolean>NoOptional callback to test server connection.
When provided, a "Test Connection" button will be shown.
isLoadingbooleanNoLoading state indicator (typically true during save or test operations).
When true, form inputs and action buttons are disabled.
errorstringNoError message to display to the user.
Null or undefined means no error to display.

ServerSelectorProps

Props for the ServerSelector component.

This component is fully controlled - it receives all data and callbacks from its parent component and does not manage its own state.

Properties:

PropertyTypeRequiredDescription
serversServerConfig[]YesArray of all configured server configurations.

Each server in the array represents a potential connection endpoint. The active server will be highlighted in the UI. | | activeServer | ServerConfig | Yes | Currently active/selected server configuration.

When null, no server is selected and a placeholder is shown. Only one server should be active at a time. | | onServerChange | (serverId: string) => void | Yes | Callback invoked when user selects a different server. | | onManageServers | () => void | No | Optional callback invoked when "Manage Servers" button is clicked.

If not provided, the "Manage Servers" button will not be displayed. Typically used to navigate to a server management page or open a dialog. | | isConnected | boolean | No | Whether currently connected to the active server.

When true:

  • A green "Connected" badge is displayed
  • Server switching is disabled (prevents connection interruption) | | isLoading | boolean | No | Whether server data is currently being loaded.

When true:

  • Select dropdown is disabled
  • "Loading..." placeholder is shown
  • Manage button is disabled | | className | string | No | Optional CSS class name for additional styling.

Applied to the root container div element. | | showLastConnected | boolean | No | Whether to show the last connected timestamp for servers.

When true, displays a relative timestamp (e.g., "2 hours ago") for each server's last successful connection. | | showConnectionStatus | boolean | No | Whether to show a connection status indicator.

When true, displays a colored dot next to the server name:

  • Green: Active and connected
  • Yellow: Active but not connected
  • Gray: Inactive |

ServerIndicatorProps

Props for the ServerIndicator component

Properties:

PropertyTypeRequiredDescription
currentServerServerProfileYesThe currently connected server profile, or null if offline or no server selected
isOfflinebooleanYesWhether the app is in offline mode (local-only storage)
onClick() => voidYesCallback when the indicator is clicked (typically opens a server switcher menu)
classNamestringNoAdditional CSS classes to apply to the button

ServerSwitcherMenuProps

Props for the ServerSwitcherMenu component

Properties:

PropertyTypeRequiredDescription
serversServerProfile[]YesList of available server profiles
currentServerIdstringYesID of the currently selected server, or null if offline
isOfflinebooleanYesWhether currently in offline mode
onSelectServer(serverId: string | null) => voidYesCallback when a server is selected (null for offline mode)
onAddServer() => voidYesCallback when Add Server action is triggered
onManageServers() => voidYesCallback when Manage Servers action is triggered
classNamestringNoOptional additional class name

SettingsModalProps

Properties:

PropertyTypeRequiredDescription
isOpenbooleanYesWhether the modal is open
onClose() => voidYesCallback when modal should close
initialTabstringNoInitial tab to show
paneRenderersRecord<string, React.ComponentType<{ tab: ResolvedSettingsTab; }>>NoCustom pane renderers by tab ID

BottomPanelProps

Properties:

PropertyTypeRequiredDescription
defaultTabstringNoDefault tab to show
minHeightnumberNoMinimum height in pixels
maxHeightnumberNoMaximum height in pixels
defaultHeightnumberNoDefault height in pixels
panelRenderersRecord<string, React.ComponentType<{ tab: ResolvedBottomPanelTab; }>>NoCustom panel content renderers by tab ID
colorMode"light" | "dark"NoColor mode for styling
headerHeightstringNoHeight of the shell header in CSS units (for maximize calculation)
onDimensionsChange(dimensions: { height: number; visible: boolean; }) => voidNoCallback when panel dimensions change (for shell layout adjustment)

HeaderProps

Properties:

PropertyTypeRequiredDescription
titlestringNoTitle displayed in the header
standalonebooleanNoWhether running in standalone mode (shows server config)
colorMode"light" | "dark"NoColor mode for styling
leftContentReact.ReactNodeNoCustom content for the left side (after title)
rightContentReact.ReactNodeNoCustom content for the right side (before HeaderActions)
logoReact.ReactNodeNoCustom logo or branding element (replaces title)
showHeaderActionsbooleanNoWhether to show HeaderActions (default: true)
showMobileMenuButtonbooleanNoWhether to show mobile menu button (for sidebar toggle)
onMobileMenuClick() => voidNoCallback when mobile menu button is clicked
classNamestringNoAdditional className for the header container
heightstring | numberNoHeight of the header (default: auto)

HeaderActionsProps

Properties:

PropertyTypeRequiredDescription
classNamestringNoOptional className for container
colorMode"light" | "dark"NoColor mode for styling

RightSidePanelProps

Properties:

PropertyTypeRequiredDescription
childrenReact.ReactNodeYesPanel content
titlestringNoPanel title displayed in header
subtitlestringNoPanel subtitle displayed below title
minWidthnumberNoMinimum width in pixels
maxWidthnumberNoMaximum width in pixels
colorMode"light" | "dark"NoColor mode for styling
headerHeightstringNoHeight of the shell header in CSS units
onDimensionsChange(dimensions: { width: number; mode: string; visible: boolean; }) => voidNoCallback when panel dimensions change (for shell layout adjustment)
onClose() => voidNoCallback when close button is clicked

Individual sidebar link configuration

Properties:

PropertyTypeRequiredDescription
pathstringYesRoute path
labelstringYesDisplay label
iconstringYesIcon name from lucide-react (e.g., 'layout-dashboard')
colorstringNoOptional accent color for the icon
prioritynumberNoPriority for ordering (lower = higher in list)

Properties:

PropertyTypeRequiredDescription
titlestringNoTitle displayed at top of sidebar
linksSidebarLink[]NoArray of navigation links
standalonebooleanNoWhether running in standalone mode (shows additional links)
colorMode"light" | "dark"NoColor mode for styling
basePathstringNoBase path for constructing full paths
logoReact.ReactNodeNoCustom logo or branding element
footerReact.ReactNodeNoFooter content at bottom of sidebar
collapsedbooleanNoWhether sidebar is collapsed (icon-only mode) - controlled externally
onCollapsedChange(collapsed: boolean) => voidNoCallback when collapse state changes
expandedWidthnumberNoWidth when expanded (default: 256px / w-64)
collapsedWidthnumberNoWidth when collapsed (default: 64px / w-16)
classNamestringNoAdditional className for the sidebar container
isActive(path: string) => booleanNoCheck if path is active (defaults to location.pathname.includes)

ViewStateWrapperProps

Properties:

PropertyTypeRequiredDescription
childrenReact.ReactNodeYes
initialStatePartial<ViewState>NoOverride initial view state
paneRenderersRecord<string, React.ComponentType<{ tab: ResolvedSettingsTab; }>>NoCustom pane renderers for settings modal

StatusBarProps

Properties:

PropertyTypeRequiredDescription
onExecuteCommand(commandId: string) => voidNoHandler for executing commands when status bar items are clicked
classNamestringNoAdditional class names
leftItemsReact.ReactNodeNoLeft-aligned items to render (in addition to contributed items)
centerItemsReact.ReactNodeNoCenter-aligned items to render (in addition to contributed items)
rightItemsReact.ReactNodeNoRight-aligned items to render (in addition to contributed items)
dynamicRenderersRecord<string, (item: any) => React.ReactNode>NoDynamic item renderers by item ID

StatusBarItemProps

Properties:

PropertyTypeRequiredDescription
itemResolvedStatusBarItemYesThe resolved status bar item data
onExecuteCommand(commandId: string) => voidNoHandler for executing commands
childrenReact.ReactNodeNoCustom content to render (for dynamic items)

TerminalContextBreadcrumbProps

Properties:

PropertyTypeRequiredDescription
orgIdstringNoOrganization ID
workspaceIdstringNoWorkspace ID
projectIdstringNoProject ID
milestoneIdstringNoMilestone ID
taskIdstringNoTask ID
colorMode"light" | "dark"NoColor mode for styling
maxLabelLengthnumberNoMaximum characters for each breadcrumb label

TerminalSession

Properties:

PropertyTypeRequiredDescription
idstringYesUnique session ID
displayNamestringYesDisplay name for the session
connectionStatusTerminalConnectionStatusYesConnection status
isActivebooleanNoWhether this session is currently active/selected
orgIdstringNoOrganization ID for session context
workspaceIdstringNoWorkspace ID for session context
projectIdstringNoProject ID for session context (optional)
milestoneIdstringNoMilestone ID for session context (optional)
taskIdstringNoTask ID for session context (optional)
serverUrlstringNoShell server WebSocket URL

TerminalSessionItemProps

Properties:

PropertyTypeRequiredDescription
sessionTerminalSessionYesSession data
isSelectedbooleanYesWhether this session is selected
onClick(sessionId: string) => voidYesClick handler
onRename(sessionId: string, newName: string) => voidYesRename handler
onClose(sessionId: string) => voidYesClose handler
onDelete(sessionId: string, deleteFromDatabase: boolean) => voidNoDelete handler (sessionId, deleteFromDatabase)
onEdit(sessionId: string) => voidNoEdit handler - opens session edit form
colorMode"light" | "dark"NoColor mode for styling

TerminalSessionListProps

Properties:

PropertyTypeRequiredDescription
sessionsTerminalSession[]YesList of terminal sessions
selectedSessionIdstringYesCurrently selected session ID
onSelectSession(sessionId: string) => voidYesSession select handler
onCreateSession() => voidYesCreate new session handler
onRenameSession(sessionId: string, newName: string) => voidYesRename session handler
onCloseSession(sessionId: string) => voidYesClose session handler
onDeleteSession(sessionId: string, deleteFromDatabase: boolean) => voidNoDelete session handler (sessionId, deleteFromDatabase)
onEditSession(sessionId: string) => voidNoEdit session handler - opens edit form
widthnumberNoWidth of the session list in pixels
colorMode"light" | "dark"NoColor mode for styling
collapsedbooleanNoWhether the list is collapsed
onToggleCollapse() => voidNoCollapse toggle handler
isLoadingbooleanNoWhether server sessions are loading

TerminalTabProps

Properties:

PropertyTypeRequiredDescription
tabResolvedBottomPanelTabYesBottom panel tab data
colorMode"light" | "dark"NoColor mode for styling
renderTerminal(sessionId: string) => React.ReactNodeNoTerminal content renderer - renders the actual terminal for a session
renderCreateForm(props: { onCancel: () => void; }) => React.ReactNodeNoOptional custom form renderer for creating new sessions
renderEditForm(props: { sessionId: string; onCancel: () => void; }) => React.ReactNodeNoOptional custom form renderer for editing sessions
renderThemePicker() => React.ReactNodeNoOptional renderer for theme picker in the toolbar area
sessionsTerminalSession[]NoExternal sessions (if managed externally)
selectedSessionIdstringNoSelected session ID (if managed externally)
isCreatingbooleanNoWhether currently showing create form
isEditingbooleanNoWhether currently showing edit form
editingSessionIdstringNoSession ID being edited
isLoadingServerSessionsbooleanNoWhether server sessions are loading
onSelectSession(sessionId: string) => voidNoSession select handler (if managed externally)
onCreateSession() => voidNoCreate session handler - called when + is clicked (shows form if renderCreateForm provided)
onRenameSession(sessionId: string, newName: string) => voidNoRename session handler (if managed externally)
onCloseSession(sessionId: string) => voidNoClose session handler (if managed externally)
onDeleteSession(sessionId: string, deleteFromDatabase: boolean) => voidNoDelete session handler (if managed externally)
onEditSession(sessionId: string) => voidNoEdit session handler (if managed externally)
onCancelCreate() => voidNoCancel create session handler
onCancelEdit() => voidNoCancel edit session handler
sessionListWidthnumberNoSession list width
showSessionListbooleanNoWhether to show session list

TerminalThemePresetInfo

Properties:

PropertyTypeRequiredDescription
idstringYes
namestringYes
descriptionstringYes
theme{ background?: string; foreground?: string; cyan?: string; cursor?: string; }Yes

TerminalThemePickerProps

Properties:

PropertyTypeRequiredDescription
presetsreadonly TerminalThemePresetInfo[]Yes
activeThemeIdstringYes
onSelectTheme(id: string) => voidYes
colorMode"light" | "dark"No

UserSelectorProps

Properties:

PropertyTypeRequiredDescription
onUserChange(user: UserModel | null) => voidNoCallback when user is selected
orientation"vertical" | "horizontal"NoLayout orientation - 'vertical' stacks selectors, 'horizontal' places them inline
colorMode"light" | "dark"NoColor mode for background contrast - 'dark' for dark backgrounds, 'light' for light backgrounds
classNamestringNoCustom className

UsersPageProps

Properties:

PropertyTypeRequiredDescription
dbanyYesDatabase instance for querying users
onUserCreated(user: UserModel) => voidNoCallback when user is created
onUserUpdated(user: UserModel) => voidNoCallback when user is updated
onUserDeleted(userId: string) => voidNoCallback when user is deleted
classNamestringNoCustom className

UseRAGAdminStatusOptions

Options for useRAGAdminStatus hook

Properties:

PropertyTypeRequiredDescription
intervalnumberNoPolling interval in ms. 0 or null disables polling. Default: 15000
enabledbooleanNoWhether to fetch immediately on mount. Default: true

UseRAGAdminStatusReturn

Return value from useRAGAdminStatus hook

Properties:

PropertyTypeRequiredDescription
dataRAGAdminStatusYesCurrent status data, null if not yet loaded
errorErrorYesError from last fetch attempt
isLoadingbooleanYesTrue during initial load
isStalebooleanYesTrue when last fetch failed but we have prior data
lastUpdatedDateYesTimestamp of last successful fetch
refresh() => voidYesManually trigger a refresh

ContentLoaderProps

Properties:

PropertyTypeRequiredDescription
operationsLoadingOperation[]YesActive content loading operations
classNamestringNoOptional custom className for styling
minHeightstring | numberNoMinimum height when showing loader

GlobalInlineLoaderProps

Properties:

PropertyTypeRequiredDescription
operationIdstringNoSpecific operation ID to display (optional - shows any inline if not specified)
operationsLoadingOperation[]YesActive inline loading operations
size"sm" | "md"NoSize of the spinner
showMessagebooleanNoShow message text
classNamestringNoOptional custom className for styling

GlobalLoadingProviderProps

Properties:

PropertyTypeRequiredDescription
childrenReact.ReactNodeYes
topNavHeightnumberNoHeight of top nav loader in pixels
topNavOffsetstring | numberNoTop position offset for top nav loader
showOverlaybooleanNoWhether to render the overlay component
showTopNavbooleanNoWhether to render the top nav loader

LoadingOverlayProps

Properties:

PropertyTypeRequiredDescription
operationLoadingOperationYesActive overlay operation

SuspenseLoadingFallbackProps

Properties:

PropertyTypeRequiredDescription
messagestringNoMessage to display during loading
type"overlay" | "content" | "topnav"NoLoading type to use (default: 'content')

TopNavLoaderProps

Properties:

PropertyTypeRequiredDescription
operationsLoadingOperation[]YesActive top nav operations
heightnumberNoHeight of the loader bar in pixels
topstring | numberNoPosition from top (for header offset)

Properties:

PropertyTypeRequiredDescription
itemResolvedMenuItemYesThe resolved menu item data
onClick(commandId: string) => voidYesClick handler
classNamestringNoCustom class name

Properties:

PropertyTypeRequiredDescription
classNamestringNoCustom class name

DockerContainerInfo

Docker container info

Properties:

PropertyTypeRequiredDescription
idstringYes
namestringYes
statusDockerContainerStatusYes
imagestringYes

MemoryUsage

Footer Plugin Types

Shared types for footer system plugins.

Properties:

PropertyTypeRequiredDescription
totalnumberYes
freenumberYes
usednumberYes
usedPercentnumberYes

CpuUsage

CPU usage information (from Electron IPC)

Properties:

PropertyTypeRequiredDescription
percentnumberYes
coresnumberYes
modelstringYes

DiskUsage

Disk usage information (from Electron IPC)

Properties:

PropertyTypeRequiredDescription
totalnumberYes
freenumberYes
usednumberYes
usedPercentnumberYes

SystemResources

Combined system resources

Properties:

PropertyTypeRequiredDescription
memoryMemoryUsageYes
cpuCpuUsageYes
diskDiskUsageYes

UpdateCheckResult

Update check result

Properties:

PropertyTypeRequiredDescription
availablebooleanYes
versionstringYes

StorageEstimate

Browser storage estimate

Properties:

PropertyTypeRequiredDescription
quotanumberNo
usagenumberNo

UseReplicationResult

Result type for the useReplication hook

Properties:

PropertyTypeRequiredDescription
startSync() => Promise<void>YesStart the sync process
retrySync() => Promise<void>YesRetry a failed sync
syncProgressnumberYesCurrent sync progress (0-100)
syncStatusSyncStatusYesCurrent sync status
syncErrorstringYesError message if sync failed

OnboardingContainerProps

Props for the OnboardingContainer component

Properties:

PropertyTypeRequiredDescription
childrenReact.ReactNodeYesContent to render inside the container
currentStepnumberNoCurrent step index (0-based)
totalStepsnumberNoTotal number of steps
onStartOver() => voidNoCallback when "Start over" is clicked
showStartOverbooleanNoWhether to show the Start over link (default: true)
classNamestringNoAdditional CSS classes

OnboardingFlowProps

Properties:

PropertyTypeRequiredDescription
classNamestringNoCustom className for the container
showStartOverbooleanNoWhether to show the Start over link (default: true)

OnboardingStep

Represents a single step in the onboarding flow

Properties:

PropertyTypeRequiredDescription
idstringYesUnique identifier for the step
titlestringYesDisplay title for the step
descriptionstringNoOptional description shown in the step
componentReact.ComponentType<OnboardingStepProps>YesReact component to render for this step
validate() => Promise<boolean> | booleanNoOptional validation function to check if step can proceed
dependenciesstring[]NoOptional dependencies - IDs of steps that must be completed first
onComplete(data: any) => Promise<void> | voidNoOptional callback when step is completed
skipIfCompletebooleanNoOptional flag to skip this step if already completed
registeredBystringYesPlugin that registered this step
pathOnboardingModeNoOptional path this step belongs to (server or offline) - undefined means shown on all paths

OnboardingStepProps

Props passed to each onboarding step component

Properties:

PropertyTypeRequiredDescription
onNext(data?: any) => voidYesMove to the next step
onBack() => voidYesGo back to the previous step
onSkip() => voidNoSkip the current step
stepDataRecord<string, any>YesData from previous steps
currentStepOnboardingStepYesCurrent step information
totalStepsnumberYesTotal number of steps
currentStepIndexnumberYesCurrent step index (0-based)

OnboardingCapablePlugin

Interface for plugins that can contribute onboarding steps

OnboardingState

State for the onboarding flow

Properties:

PropertyTypeRequiredDescription
isActivebooleanYesWhether onboarding is active
currentStepIndexnumberYesCurrent step index
completedStepsstring[]YesCompleted step IDs
stepDataRecord<string, any>YesData collected from each step
isCompletedbooleanYesWhether onboarding has been completed
errorstringNoError state if any

OnboardingPluginConfig

Configuration options for the OnboardingPlugin

Properties:

PropertyTypeRequiredDescription
autoStartbooleanNoWhether to show onboarding on first launch (default: true)
allowSkipbooleanNoWhether to allow skipping steps (default: false)
customStepsOnboardingStep[]NoCustom steps to add (in addition to plugin-registered steps)
onComplete(data: Record<string, any>) => voidNoCallback when onboarding is completed
onSkip() => voidNoCallback when onboarding is skipped
storageKeystringNoLocalStorage key for persisting onboarding state
theme"light" | "dark" | "auto"NoTheme variant for the onboarding UI

OnboardingContextValue

Context value provided by OnboardingContext

Properties:

PropertyTypeRequiredDescription
stateOnboardingStateYesCurrent onboarding state
stepsOnboardingStep[]YesAll registered onboarding steps (in order)
startOnboarding() => voidYesStart the onboarding flow
completeStep(data?: any) => Promise<void>YesComplete current step and move to next
goBack() => voidYesGo back to previous step
skipStep() => voidYesSkip current step (if allowed)
resetOnboarding() => voidYesReset onboarding state
completeOnboarding() => voidYesManually complete onboarding
isStepCompleted(stepId: string) => booleanYesCheck if a specific step is completed
getStepData(stepId: string) => anyYesGet data from a specific step

OnboardingPath

Represents an onboarding path (server or offline)

Properties:

PropertyTypeRequiredDescription
typeOnboardingModeYesThe type of onboarding path
stepsOnboardingStep[]YesSteps specific to this path

ServerProfile

Server profile configuration

Properties:

PropertyTypeRequiredDescription
idstringYesUnique identifier for this server config
urlstringYesServer URL
domainIdstringYesDomain ID for multi-tenant isolation
dbNamestringYesIndexedDB database name for this server
labelstringNoOptional display label
authTokenstringNoAuth token for this server
lastOrgIdstringNoLast selected org
lastWorkspaceIdstringNoLast selected workspace

PathAwareOnboardingState

Extended onboarding state with path awareness

Properties:

PropertyTypeRequiredDescription
selectedPathOnboardingModeYesSelected onboarding path
syncStatusSyncStatusYesSync status for server path
syncProgressnumberYesSync progress (0-100)
syncErrorstringNoSync error message if any
serverProfilePartial<ServerProfile>NoSelected server profile during onboarding

PathAwareOnboardingContextValue

Extended context value with path-aware methods

Properties:

PropertyTypeRequiredDescription
setPath(path: OnboardingMode) => voidYesSet the onboarding path (server or offline)
setSyncStatus(status: SyncStatus, progress?: number, error?: string) => voidYesUpdate sync status
setServerProfile(profile: Partial<ServerProfile>) => voidYesSet server profile data
startOver() => voidYesRestart onboarding from mode selection

CustomApiConfigFieldsProps

Properties:

PropertyTypeRequiredDescription
providerConfigPartial<CustomApiProviderConfig>Yes
credentialsRecord<string, string>Yes
onProviderConfigChange(config: Partial<CustomApiProviderConfig>) => voidYes
onCredentialsChange(credentials: Record<string, string>) => voidYes

SyncConfigCardProps

Properties:

PropertyTypeRequiredDescription
configSyncProviderConfigYes
onEdit() => voidYes
onDelete() => voidYes
onToggle() => voidYes

SyncConfigFormProps

Properties:

PropertyTypeRequiredDescription
configSyncProviderConfigYes
providersSyncProviderMetadata[]Yes
workspaceIdstringYes
onSubmit(data: Omit<SyncProviderConfig, "id" | "createdAt" | "updatedAt"> | Partial<SyncProviderConfig>) => voidYes
onCancel() => voidYes

SyncHistoryEntry

Properties:

PropertyTypeRequiredDescription
idstringYes
configIdstringYes
configNamestringYes
resultSyncResultYes

SyncHistoryLogProps

Properties:

PropertyTypeRequiredDescription
entriesSyncHistoryEntry[]Yes
maxEntriesnumberNo

SyncOAuthCallbackPageProps

Properties:

PropertyTypeRequiredDescription
onSuccess(workspaceId: string, providerId: string) => voidNoCallback when OAuth completes successfully
onError(error: string) => voidNoCallback when OAuth fails
successRedirectUrlstringNoURL to redirect to after success (default: /sync)
errorRedirectUrlstringNoURL to redirect to on error (default: /sync)

SyncSettingsTabProps

Properties:

PropertyTypeRequiredDescription
workspaceIdstringYes
orgIdstringYes
userIdstringYes
dbanyYes

SyncStatusDisplayProps

Properties:

PropertyTypeRequiredDescription
stateSyncStateYes
isRunningbooleanYes
onStart() => voidYes
onStop() => voidYes
onSyncNow() => voidYes

UseSyncConfigOptions

Options for the useSyncConfig hook

Properties:

PropertyTypeRequiredDescription
workspaceIdstringYesWorkspace ID to filter configs by
dbRxDatabaseYesRxDB database instance
providerIdstringNoOptional provider ID to filter by
enabledOnlybooleanNoWhether to only fetch enabled configs

UseSyncConfigResult

Return type for the useSyncConfig hook

Properties:

PropertyTypeRequiredDescription
configsDeserializedSyncConfig[]YesArray of deserialized sync configurations
isLoadingbooleanYesWhether data is currently loading
errorstringYesError message if any operation failed
create(input: Omit<CreateSyncConfigInput, "workspaceId">) => Promise<DeserializedSyncConfig | null>YesCreate a new sync configuration
update(id: string, updates: UpdateSyncConfigInput) => Promise<DeserializedSyncConfig | null>YesUpdate an existing sync configuration
remove(id: string) => Promise<boolean>YesDelete (archive) a sync configuration
refresh() => Promise<void>YesManually refresh the configs list
getById(id: string) => Promise<DeserializedSyncConfig | null>YesGet a single config by ID
toggleEnabled(id: string) => Promise<DeserializedSyncConfig | null>YesToggle enabled state of a config

UseSyncHistoryOptions

Properties:

PropertyTypeRequiredDescription
workspaceIdstringYes

UseSyncHistoryResult

Properties:

PropertyTypeRequiredDescription
entriesSyncHistoryEntry[]Yes
addEntry(configId: string, configName: string, result: SyncResult) => voidYes
clearHistory() => voidYes
getEntriesForConfig(configId: string) => SyncHistoryEntry[]Yes

CreateOAuthConfigFromEnvOptions

Options for creating OAuth config from environment variables

Properties:

PropertyTypeRequiredDescription
envPrefixstringNoPrefix for environment variable names (e.g., 'VITE_' for Vite)
defaultRedirectUristringNoDefault redirect URI if not specified in env
defaultScopesstring[]NoDefault scopes if not specified in env
additionalParamsRecord<string, string>NoAdditional parameters to include in authorization URL

OAuthEnvVarNames

Standard environment variable names for OAuth configuration

Properties:

PropertyTypeRequiredDescription
clientIdstringYes
redirectUristringYes
authorizationEndpointstringYes
tokenEndpointstringYes
tokenProxyEndpointstringYes
scopesstringYes

OAuthProviderConfig

OAuth Types

Core type definitions for the generic OAuth provider system. These types support multiple OAuth providers with a unified interface.

Properties:

PropertyTypeRequiredDescription
providerIdstringYesUnique identifier for this OAuth provider (e.g., 'ynab', 'github', 'google')
clientIdstringYesOAuth client ID
redirectUristringYesOAuth redirect URI
authorizationEndpointstringYesOAuth authorization endpoint URL
tokenEndpointstringYesOAuth token endpoint URL
tokenProxyEndpointstringYesServer-side proxy endpoint for secure token exchange
scopesstring[]YesOAuth scopes to request
additionalParamsRecord<string, string>NoAdditional parameters to include in authorization URL

OAuthTokens

OAuth tokens returned from token exchange or refresh

Properties:

PropertyTypeRequiredDescription
accessTokenstringYesOAuth access token
refreshTokenstringNoOAuth refresh token (may not be provided by all providers)
expiresAtnumberNoToken expiration timestamp in milliseconds
tokenTypestringYesToken type (typically 'Bearer')

OAuthStoredData

Complete OAuth data stored for a provider connection

Properties:

PropertyTypeRequiredDescription
providerIdstringYesProvider ID this data belongs to
tokensOAuthTokensYesOAuth tokens
connectedAtstringYesTimestamp when connection was established (ISO 8601)
lastRefreshAtstringNoTimestamp of last token refresh (ISO 8601)
metadataRecord<string, unknown>NoProvider-specific metadata

OAuthCallbackResult

Result of handling an OAuth callback

Properties:

PropertyTypeRequiredDescription
successbooleanYesWhether the OAuth flow completed successfully
workspaceIdstringNoWorkspace ID if successful
providerIdstringNoProvider ID if successful
errorstringNoError message if unsuccessful

OAuthConnectionState

Current state of an OAuth connection

Properties:

PropertyTypeRequiredDescription
isConnectedbooleanYesWhether the provider is connected
isLoadingbooleanYesWhether a connection operation is in progress
connectedAtstringNoTimestamp when connection was established
errorstringYesError message if any

OAuthStateData

OAuth state data stored in session storage for CSRF protection

Properties:

PropertyTypeRequiredDescription
statestringYesRandom state string for CSRF protection
workspaceIdstringYesWorkspace ID initiating the flow
providerIdstringYesProvider ID for this flow
createdAtnumberYesTimestamp when state was created

UseOAuthConnectionOptions

Options for the useOAuthConnection hook

Properties:

PropertyTypeRequiredDescription
workspaceIdstringYesWorkspace ID for the OAuth connection
providerIdstringYesOAuth provider ID
configOverridesPartial<OAuthProviderConfig>NoOptional config overrides
autoCheckbooleanNoWhether to automatically check connection on mount

UseOAuthConnectionResult

Result type for the useOAuthConnection hook

Properties:

PropertyTypeRequiredDescription
connect() => voidYesStart the OAuth connection flow
disconnect() => voidYesDisconnect (clear tokens)
getAccessToken() => Promise<string | null>YesGet a valid access token (with auto-refresh)
refresh() => Promise<boolean>YesManually refresh the access token
checkConnection() => voidYesManually check connection status

TimezoneOption

Type definitions for timezone utilities

Properties:

PropertyTypeRequiredDescription
labelstringYes
valuestringYes

TimezoneConfig

Properties:

PropertyTypeRequiredDescription
userTimezonestringYes
detectedTimezonestringYes
fallbackTimezone"UTC"Yes
formatOptions{ dateOnly: string; dateTime: string; timeOnly: string; }Yes

BrandingSettingsProps

Properties:

PropertyTypeRequiredDescription
tabResolvedSettingsTabYes

DocsSettingsProps

Properties:

PropertyTypeRequiredDescription
tabResolvedSettingsTabYes

ExtensionsSettingsProps

Properties:

PropertyTypeRequiredDescription
tabResolvedSettingsTabYes

GeneralSettingsProps

Properties:

PropertyTypeRequiredDescription
tabResolvedSettingsTabYes

LoadingTestSettingsProps

Properties:

PropertyTypeRequiredDescription
tabResolvedSettingsTabYes

ToolsMcpSettingsProps

Properties:

PropertyTypeRequiredDescription
tabResolvedSettingsTabYes

ApiEndpointConfig

API endpoint configuration

Properties:

PropertyTypeRequiredDescription
urlstringYesEndpoint URL (can include {id} placeholder)
methodHttpMethodYesHTTP method
headersRecord<string, string>NoRequest headers
bodyTemplatestringNoRequest body template (JSON with placeholders)
responsePathstringNoPath to data in response (dot notation, e.g., 'data.items')
idPathstringNoPath to ID in response item

CustomApiProviderConfig

Custom API provider configuration

Properties:

PropertyTypeRequiredDescription
baseUrlstringYesBase URL for all endpoints
authTypeCustomApiAuthTypeYesAuthentication type
authHeaderNamestringNoAuth header name (for api-key)
authHeaderPrefixstringNoAuth header prefix (e.g., 'Bearer', 'Token')
listEndpointApiEndpointConfigYesList items endpoint
getEndpointApiEndpointConfigNoGet single item endpoint
createEndpointApiEndpointConfigNoCreate item endpoint
updateEndpointApiEndpointConfigNoUpdate item endpoint
deleteEndpointApiEndpointConfigNoDelete item endpoint
pagination{ type: "offset" | "cursor" | "page"; pageParam: string; limitParam: string; defaultLimit: number; }NoPagination config
rateLimitnumberNoRate limiting (requests per second)

GitHubUser

GitHub User representation

Properties:

PropertyTypeRequiredDescription
idnumberYesUnique ID of the user
loginstringYesGitHub username (login)
namestringNoDisplay name
avatar_urlstringYesUser's avatar URL
html_urlstringYesURL to user's GitHub profile

GitHubLabel

GitHub Label representation

Properties:

PropertyTypeRequiredDescription
idnumberYesUnique ID of the label
node_idstringYesNode ID for GraphQL
namestringYesLabel name
descriptionstringNoLabel description
colorstringYesLabel color (hex without #)
defaultbooleanNoWhether this is a default label

GitHubMilestone

GitHub Milestone representation

Properties:

PropertyTypeRequiredDescription
idnumberYesUnique ID of the milestone
node_idstringYesNode ID for GraphQL
numbernumberYesMilestone number
titlestringYesMilestone title
descriptionstringNoMilestone description
state"open" | "closed"YesMilestone state
html_urlstringYesURL to the milestone
due_onstringNoDue date (ISO 8601)
created_atstringYesCreation timestamp (ISO 8601)
updated_atstringYesUpdate timestamp (ISO 8601)
closed_atstringNoClose timestamp (ISO 8601)

GitHubIssue

GitHub Issue representation

Properties:

PropertyTypeRequiredDescription
idnumberYesUnique ID of the issue
node_idstringYesNode ID for GraphQL API
numbernumberYesIssue number within the repository
titlestringYesIssue title
bodystringYesIssue body/description (markdown)
state"open" | "closed"YesIssue state
state_reason"completed" | "not_planned" | "reopened"NoReason for closure (if closed)
html_urlstringYesURL to the issue on GitHub
userGitHubUserYesUser who created the issue
labelsGitHubLabel[]YesLabels attached to the issue
assigneesGitHubUser[]YesUsers assigned to the issue
milestoneGitHubMilestoneYesMilestone the issue belongs to
created_atstringYesCreation timestamp (ISO 8601)
updated_atstringYesLast update timestamp (ISO 8601)
closed_atstringYesClose timestamp (ISO 8601)

GitHubRepository

GitHub Repository representation

Properties:

PropertyTypeRequiredDescription
idnumberYesUnique ID of the repository
node_idstringYesNode ID for GraphQL
namestringYesRepository name
full_namestringYesFull name (owner/repo)
descriptionstringYesRepository description
privatebooleanYesWhether the repo is private
html_urlstringYesURL to the repository on GitHub
ownerGitHubUserYesOwner of the repository
default_branchstringYesDefault branch name
has_issuesbooleanYesWhether issues are enabled
open_issues_countnumberYesNumber of open issues
created_atstringYesCreation timestamp (ISO 8601)
updated_atstringYesLast update timestamp (ISO 8601)
pushed_atstringYesLast push timestamp (ISO 8601)

GitHubProviderConfig

GitHub-specific provider configuration options

Properties:

PropertyTypeRequiredDescription
repositorystringYesRepository to sync in "owner/repo" format
issueState"all" | "open" | "closed"NoFilter issues by state (defaults to 'all')
labelsstringNoFilter issues by labels (comma-separated)
milestoneNumbernumberNoFilter issues by milestone number
syncAssigneesbooleanNoWhether to sync assignees to FlowState task assignees
syncLabelsbooleanNoWhether to sync labels to FlowState task tags

ListIssuesOptions

Options for listing GitHub issues

Properties:

PropertyTypeRequiredDescription
state"all" | "open" | "closed"NoFilter by state
labelsstringNoFilter by labels (comma-separated)
milestonenumber | "*" | "none"NoFilter by milestone number
sort"updated" | "created" | "comments"NoSort field
direction"asc" | "desc"NoSort direction
sincestringNoFilter issues updated after this date (ISO 8601)
per_pagenumberNoResults per page (max 100)
pagenumberNoPage number

CreateIssueData

Data for creating a GitHub issue

Properties:

PropertyTypeRequiredDescription
titlestringYesIssue title
bodystringNoIssue body/description
assigneesstring[]NoAssignee usernames
labelsstring[]NoLabel names
milestonenumberNoMilestone number

UpdateIssueData

Data for updating a GitHub issue

Properties:

PropertyTypeRequiredDescription
titlestringNoIssue title
bodystringNoIssue body/description
state"open" | "closed"NoIssue state
state_reason"completed" | "not_planned" | "reopened"NoState reason for closure
assigneesstring[]NoAssignee usernames
labelsstring[]NoLabel names
milestonenumberNoMilestone number (or null to remove)
Previous
API Reference
Next
Types