App Framework
Interfaces
Interfaces
CommandContextValue
Context value interface
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
service | CommandService | Yes | The command service instance |
execute | <T = void>(commandId: string, args?: unknown) => Promise<CommandResult<T>> | Yes | Execute a command by ID |
exists | (commandId: string) => boolean | Yes | Check if a command exists |
isEnabled | (commandId: string) => boolean | Yes | Check if a command is enabled |
commands | ExecutableCommand[] | Yes | Get all executable commands |
context | CmdContext | Yes | Current command context |
CommandProviderProps
Props for CommandProvider
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
initialContext | Partial<CmdContext> | No | Initial context values |
children | React.ReactNode | Yes | Children to render |
CommandContext
Command System Types
Types for the runtime command execution system.
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
activeApp | string | No | Currently active app/plugin ID |
activeRoute | string | No | Current route path |
platform | string | Yes | Platform (win32, darwin, linux, web) |
isAuthenticated | boolean | No | Whether user is authenticated |
userId | string | No | Current user ID |
orgId | string | No | Current organization ID |
workspaceId | string | No | Current workspace ID |
CommandResult
Result of executing a command
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
success | boolean | Yes | Whether the command executed successfully |
result | T | No | The result value if successful |
error | CommandError | No | Error if command failed |
duration | number | Yes | Time taken to execute in milliseconds |
ExecutableCommand
An executable command (contribution + handler)
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
id | string | Yes | Command ID |
title | string | Yes | Display title |
category | string | No | Category for grouping |
icon | string | No | Icon name |
enabled | boolean | Yes | Whether the command is currently enabled |
hasHandler | boolean | Yes | Whether a handler is registered |
pluginId | string | Yes | The plugin that contributed this command |
RegisteredHandler
Registered command handler with metadata
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
handler | CommandHandler<unknown, unknown> | Yes | The handler function |
pluginId | string | Yes | Plugin that registered this handler |
registeredAt | number | Yes | When this handler was registered |
CommandExecutionEvent
Command execution event
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
commandId | string | Yes | Command ID that was executed |
success | boolean | Yes | Whether execution was successful |
duration | number | Yes | Execution duration in milliseconds |
error | string | No | Error message if failed |
pluginId | string | No | Plugin that provided the command |
FlowstateAppProviderProps
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
config | FlowstateAppConfig | Yes | |
children | React.ReactNode | Yes |
RootRedirectProps
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
defaultPath | string | No | Default path when fully authenticated |
serversPath | string | No | Path to servers app for server management |
onboardingPath | string | No | Path to onboarding flow |
ServerConfigNavbarProps
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
className | string | No |
ViteConfigOptions
Options for creating Vite configuration
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
srcDir | string | No | Source directory (default: 'src') |
plugins | PluginOption[] | No | Additional Vite plugins |
alias | Record<string, string> | No | Additional path aliases |
external | string[] | No | External dependencies to exclude from bundle |
port | number | No | Dev 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:
| Property | Type | Required | Description |
|---|---|---|---|
name | string | Yes | |
title | string | Yes | |
color | string | Yes | |
description | string | No |
PresetConfig
Preset configuration containing categories and tags
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
name | PresetType | Yes | |
title | string | Yes | |
description | string | Yes | |
categories | DefaultAttribute[] | Yes | |
tags | DefaultAttribute[] | Yes |
FlowstateContainerConfig
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
plugins | FlowstatePlugin[] | Yes |
ReplicationContextState
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
isReplicating | boolean | Yes | |
replicationStatus | ReplicationStatus[] | Yes | |
forceSync | () => Promise<void> | Yes | |
awaitPendingPushes | (timeout?: number) => Promise<void> | Yes | |
getReplicationState | (collection: string) => RxReplicationState<any, any> | undefined | Yes |
ReplicationProviderProps
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
database | RxDatabase | Yes | |
serverConfig | ServerInfo | Yes | |
config | ReplicationPluginConfig | Yes | |
authToken | string | No | |
children | React.ReactNode | Yes |
ViewState
View state shape
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
sidebarVisible | boolean | Yes | Whether the sidebar is visible |
footerVisible | boolean | Yes | Whether the footer/visor bottom panel is visible |
settingsOpen | boolean | Yes | Whether the settings modal is open |
settingsTab | string | Yes | Which settings tab is active |
panelDockPosition | PanelDockPosition | Yes | Panel dock position (bottom or right) |
rightPanelVisible | boolean | Yes | Whether the right panel is visible |
rightPanelMode | RightPanelMode | Yes | Right panel display mode |
rightPanelWidth | number | Yes | Right panel width in pixels |
rightPanelConversationId | string | Yes | Active conversation ID in right panel |
ViewStateContextValue
View state context value
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
toggleSidebar | () => void | Yes | Toggle sidebar visibility |
setSidebarVisible | (visible: boolean) => void | Yes | Set sidebar visibility |
toggleFooter | () => void | Yes | Toggle footer/visor visibility |
setFooterVisible | (visible: boolean) => void | Yes | Set footer/visor visibility |
openSettings | (tab?: string) => void | Yes | Open settings modal |
closeSettings | () => void | Yes | Close settings modal |
toggleSettings | () => void | Yes | Toggle settings modal |
setSettingsTab | (tab: string) => void | Yes | Set active settings tab |
togglePanelDockPosition | () => void | Yes | Toggle panel dock position between bottom and right |
setPanelDockPosition | (position: PanelDockPosition) => void | Yes | Set panel dock position |
toggleRightPanel | () => void | Yes | Toggle right panel visibility |
setRightPanelVisible | (visible: boolean) => void | Yes | Set right panel visibility |
setRightPanelMode | (mode: RightPanelMode) => void | Yes | Set right panel mode |
setRightPanelWidth | (width: number) => void | Yes | Set right panel width |
openConversation | (conversationId: string) => void | Yes | Open a conversation in the right panel |
closeConversation | () => void | Yes | Close the active conversation |
ViewStateProviderProps
ViewStateProvider props
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
children | React.ReactNode | Yes | |
initialState | Partial<ViewState> | No | Override initial state |
ContributionContextValue
Context value interface
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
registry | ContributionRegistry | Yes | The contribution registry instance |
context | ConditionContext | Yes | Current condition context for evaluating "when" expressions |
setContext | (updates: Partial<ConditionContext>) => void | Yes | Update the condition context |
ContributionProviderProps
Props for ContributionProvider
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
initialContext | ConditionContext | No | Initial condition context |
children | React.ReactNode | Yes | Children to render |
ContributionPointDefinition
Definition of a contribution point Contribution points define extension points where plugins can add functionality
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
id | string | Yes | Unique identifier for this contribution point |
description | string | Yes | Human-readable description |
schema | z.ZodType<T, z.ZodTypeDef, T> | Yes | Zod schema for validating contributions |
process | (contribution: T, pluginId: string) => ProcessedContribution<T> | No | Process raw contribution data into validated form |
ProcessedContribution
A processed contribution from a plugin manifest
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
pluginId | string | Yes | The plugin that contributed this |
pointId | string | Yes | The contribution point ID |
data | T | Yes | The validated contribution data |
ConditionContext
Context for evaluating "when" conditions
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
activeApp | string | No | Currently active app/plugin ID |
activeRoute | string | No | Current route path |
platform | string | No | Platform (win32, darwin, linux, web) |
textInputFocus | boolean | No | Whether a text input is focused |
modalOpen | boolean | No | Whether a modal is open |
ResolvedCommand
Resolved command (with handler attached)
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
id | string | Yes | Command ID |
title | string | Yes | Display title |
category | string | No | Category for grouping |
icon | string | No | Icon name |
enabled | boolean | Yes | Whether command is enabled in current context |
pluginId | string | Yes | The plugin that contributed this command |
ResolvedMenuItem
Resolved menu item (with command details and visibility)
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
commandId | string | Yes | Command ID |
title | string | Yes | Command title |
icon | string | No | Icon name |
visible | boolean | Yes | Whether item is visible in current context |
enabled | boolean | Yes | Whether item is enabled in current context |
group | string | No | Group for ordering |
order | number | Yes | Sort order within group |
alt | string | No | Alternative command when Alt is held |
pluginId | string | Yes | The plugin that contributed this item |
MenuGroup
Menu group with items
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
id | string | Yes | Group ID (e.g., "1_create") |
order | number | Yes | Sort order |
items | ResolvedMenuItem[] | Yes | Items in this group |
ResolvedKeybinding
Resolved keybinding
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
commandId | string | Yes | Command ID to execute |
key | string | Yes | Key combination for current platform |
rawKey | string | Yes | Raw key (non-Mac) |
macKey | string | No | Mac-specific key |
active | boolean | Yes | Whether keybinding is active in current context |
pluginId | string | Yes | The plugin that contributed this keybinding |
ResolvedStatusBarItem
Resolved status bar item (with visibility state)
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
id | string | Yes | Unique item ID |
alignment | "right" | "left" | "center" | Yes | Alignment in status bar |
priority | number | Yes | Priority for ordering (higher = further from center) |
command | string | No | Command to execute on click |
text | string | No | Text to display |
tooltip | string | No | Tooltip on hover |
icon | string | No | Icon name |
visible | boolean | Yes | Whether item is visible in current context |
backgroundColor | string | No | Background color |
dynamic | boolean | Yes | Whether this is a dynamic item |
pluginId | string | Yes | The plugin that contributed this item |
ResolvedHeaderAction
Resolved header action item (with visibility state)
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
id | string | Yes | Unique item ID |
icon | string | Yes | Icon name |
tooltip | string | Yes | Tooltip on hover |
command | string | Yes | Command to execute on click |
priority | number | Yes | Priority for ordering (higher = further right) |
visible | boolean | Yes | Whether item is visible in current context |
toggle | boolean | Yes | Whether this is a toggle action |
toggleStateKey | string | No | State key for toggle |
pluginId | string | Yes | The plugin that contributed this item |
ResolvedSettingsTab
Resolved settings tab (with visibility state)
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
id | string | Yes | Unique tab ID |
label | string | Yes | Display label |
icon | string | No | Icon name |
priority | number | Yes | Priority for ordering (lower = higher in list) |
component | string | No | Component path or ID |
group | string | Yes | Group for organizing tabs |
pluginId | string | Yes | The plugin that contributed this tab |
ResolvedBottomPanelTab
Resolved bottom panel tab (with visibility state)
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
id | string | Yes | Unique tab ID |
label | string | Yes | Display label |
icon | string | No | Icon name |
priority | number | Yes | Priority for ordering (lower = further left) |
component | string | No | Component path or ID |
badge | string | No | Badge count |
visible | boolean | Yes | Whether tab is visible in current context |
pluginId | string | Yes | The plugin that contributed this tab |
ResolvedBottomPanelToolbarDropdownItem
Resolved bottom panel toolbar dropdown item
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
label | string | Yes | Display label |
command | string | Yes | Command to execute |
icon | string | No | Icon name |
separator | boolean | No | Whether to show separator before this item |
ResolvedBottomPanelToolbarItem
Resolved bottom panel toolbar item (with visibility state)
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
id | string | Yes | Unique item ID |
tabId | string | Yes | Tab ID this toolbar item belongs to |
icon | string | Yes | Icon name |
tooltip | string | Yes | Tooltip on hover |
command | string | Yes | Command to execute on click |
priority | number | Yes | Priority for ordering (lower = further left) |
visible | boolean | Yes | Whether item is visible in current context |
dropdown | ResolvedBottomPanelToolbarDropdownItem[] | No | Optional dropdown menu items |
pluginId | string | Yes | The plugin that contributed this item |
ContributionChangeEvent
Event emitted when contributions change
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
pointId | string | Yes | The contribution point that changed |
type | "added" | "removed" | "updated" | Yes | Type of change |
pluginId | string | Yes | Plugin that made the change |
PaletteControl
Palette control interface (to avoid circular dependencies)
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
open | () => void | Yes | |
close | () => void | Yes |
QuickNavControl
QuickNav control interface (to avoid circular dependencies)
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
open | () => void | Yes | |
close | () => void | Yes |
NavigationControl
Navigation control interface
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
navigate | (path: string) => void | Yes |
ViewControl
View control interface
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
toggleSidebar | () => void | Yes | |
toggleFooter | () => void | Yes | |
toggleRightPanel | () => void | Yes | |
openSettings | (tab?: string) => void | Yes |
CoreCommandOptions
Options for registering core command handlers
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
commandService | CommandService | Yes | Command service instance |
palette | PaletteControl | Yes | Palette control functions |
quicknav | QuickNavControl | No | QuickNav control functions (optional) |
navigation | NavigationControl | No | Navigation control (optional) |
view | ViewControl | No | View control functions (optional) |
onSettings | () => void | No | Callback for settings action |
onHelp | () => void | No | Callback for help action |
onAbout | () => void | No | Callback for about action |
AppNavigateOptions
Extended navigation options that include org/workspace context switching
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
orgId | string | No | Target organization ID - if different from current, will switch org context before navigating |
workspaceId | string | No | Target workspace ID - if different from current, will switch workspace context before navigating |
AttributeScopeOptions
Scope options for attribute queries with inheritance
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
workspaceId | string | No | Workspace ID to filter by (uses current workspace if not provided) |
projectId | string | No | Project ID to filter by (for project-scoped attributes via metadata) |
inheritFromParent | boolean | No | Enable 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:
| Property | Type | Required | Description |
|---|---|---|---|
user | AuthUser | Yes | |
isAuthenticated | boolean | Yes | |
isAuthLoading | boolean | Yes | |
isReplicating | boolean | Yes | |
replicationStatus | import("/Users/sthornock/code/epic/epic-flowstate/packages/flowstate-app-framework/src/index").ReplicationStatus[] | Yes | |
canReplicate | boolean | Yes | |
sendVerificationCode | (email: string) => Promise<void> | Yes | |
login | (email: string, code: string) => Promise<AuthUser> | Yes | |
logout | () => void | Yes | |
getAuthHeaders | () => Record<string, string> | Yes | |
forceSync | () => Promise<void> | Yes | |
awaitPendingPushes | (timeout?: number) => Promise<void> | Yes |
EntityChainItem
Represents an entity in the parent chain
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
type | "project" | "milestone" | "task" | Yes | The type of entity |
id | string | Yes | The entity ID |
EntityContext
Represents the current entity context extracted from the URL
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
entityType | "project" | "milestone" | "task" | Yes | The type of the most specific entity in the URL, or null if none |
entityId | string | Yes | The ID of the most specific entity in the URL, or null if none |
parentChain | EntityChainItem[] | Yes | The full chain of entities from the URL, ordered from least to most specific |
UseLongTermMemoryOptions
Configuration options for useLongTermMemory hook
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
defaultSearchLimit | number | No | Default limit for search results |
UseLongTermMemoryResult
Result returned by useLongTermMemory hook
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
memories | LongTermMemory[] | Yes | Search results from the most recent search |
totalCount | number | Yes | Total count from the most recent search |
isLoading | boolean | Yes | Whether an operation is currently in progress |
error | Error | Yes | Error from the most recent operation |
search | (query: string, options?: Partial<Omit<SearchLongTermMemoryParams, "text">>) => Promise<LongTermMemory[]> | Yes | Search long-term memories |
create | (params: Omit<CreateLongTermMemoryParams, "namespace"> & { namespace?: string; }) => Promise<LongTermMemory | null> | Yes | Create a new long-term memory |
forget | (params: Omit<ForgetMemoriesParams, "namespace"> & { namespace?: string; }) => Promise<ForgetMemoriesResponse> | Yes | Forget (delete) memories based on policy |
clearResults | () => void | Yes | Clear the current search results |
UseMemoryClientOptions
Configuration options for useMemoryClient hook
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
baseUrl | string | No | AMS base URL |
timeout | number | No | Request timeout in milliseconds |
debug | boolean | No | Enable debug logging |
defaultNamespace | string | No | Default namespace for memory operations |
contextWindowMax | number | No | Default context window max tokens |
authToken | string | No | Authorization token for API requests |
| Will be sent as Bearer token in Authorization header |
UseMemoryClientResult
Result returned by useMemoryClient hook
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
client | AgentMemoryClient | Yes | The AMS client instance (null if initialization failed) |
isReady | boolean | Yes | Whether the client is ready for use (initialized and healthy) |
isInitializing | boolean | Yes | Whether the client is still initializing (health check in progress) |
error | Error | Yes | Error if client initialization or health check failed |
isHealthy | boolean | Yes | Whether the AMS server is healthy |
UseMemorySessionOptions
Configuration options for useMemorySession hook
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
refreshInterval | number | No | Auto-refresh interval in milliseconds |
| Set to 0 or undefined to disable auto-refresh | |||
fetchOnMount | boolean | No | Whether to fetch data immediately on mount |
UseMemorySessionResult
Result returned by useMemorySession hook
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
memory | AmsMemory | Yes | The current memory state (null if not loaded or cleared) |
messages | AmsMessage[] | Yes | Messages in the session (empty array if no memory) |
messageCount | number | Yes | Number of messages in the session |
tokenCount | number | Yes | Token count for the session context window |
isLoading | boolean | Yes | Whether data is currently loading |
error | Error | Yes | Error if fetch or operation failed |
refresh | () => Promise<void> | Yes | Refresh the session data manually |
clear | () => Promise<boolean> | Yes | Clear the session memory from AMS |
UseMemorySessionsOptions
Configuration options for useMemorySessions hook
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
fetchOnMount | boolean | No | Whether to fetch data immediately on mount |
UseMemorySessionsResult
Result returned by useMemorySessions hook
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
sessions | AmsSession[] | Yes | List of sessions in the namespace |
total | number | Yes | Total count of sessions (before pagination) |
isLoading | boolean | Yes | Whether data is currently loading |
error | Error | Yes | Error if fetch or operation failed |
refresh | () => Promise<void> | Yes | Refresh the sessions list manually |
deleteSession | (sessionId: string) => Promise<boolean> | Yes | Delete a specific session by ID |
UseOnboardingDetectionOptions
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
hasLocalDatabaseData | boolean | Yes | Whether the local database has any data |
UseOnboardingDetectionResult
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
needsOnboarding | boolean | Yes | Whether onboarding is needed |
isLoading | boolean | Yes | Whether detection is still loading |
markOnboardingComplete | () => void | Yes | Mark onboarding as complete |
resetOnboarding | () => void | Yes | Reset onboarding state (for testing/debugging) |
UseOrgWorkspaceOptions
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
db | any | No | Database instance for querying orgs and workspaces |
autoLoad | boolean | No | Auto-load org and workspace data on mount (for API compatibility, not used) |
UseOrgWorkspaceReturn
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
selectedOrgId | string | Yes | |
selectedWorkspaceId | string | Yes | |
selectedOrg | OrgModel | Yes | |
selectedWorkspace | WorkspaceModel | Yes | |
setSelectedOrgId | (orgId: string) => Promise<void> | Yes | |
setSelectedWorkspaceId | (workspaceId: string) => Promise<void> | Yes | |
isLoading | boolean | Yes | |
getOrgSelector | () => { orgId: string; } | {} | Yes | |
getWorkspaceSelector | () => { orgId: string; workspaceId?: string; } | {} | Yes |
UseSearchAllMemoryOptions
Configuration options for useSearchAllMemory hook
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
defaultLimit | number | No | Default limit for search results |
defaultIncludeWorkingMemory | boolean | No | Include working memory in search by default |
defaultIncludeLongTermMemory | boolean | No | Include long-term memory in search by default |
UseSearchAllMemoryResult
Result returned by useSearchAllMemory hook
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
results | UnifiedSearchResult[] | Yes | Search results from the most recent search |
workingMemoryCount | number | Yes | Count of working memory results |
longTermMemoryCount | number | Yes | Count of long-term memory results |
totalCount | number | Yes | Total count of all results |
isLoading | boolean | Yes | Whether a search is currently in progress |
error | Error | Yes | Error from the most recent search |
currentQuery | string | Yes | Current search query |
search | (query: string, options?: { includeWorkingMemory?: boolean; includeLongTermMemory?: boolean; userId?: string; sessionId?: string; limit?: number; }) => Promise<SearchAllMemoryResponse> | Yes | Perform a unified search |
clearResults | () => void | Yes | Clear the current search results |
HostContainerProps
Props for HostContainer component
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
plugins | AppPlugin[] | Yes | Plugins to register and render |
services | Record<string, any> | No | Pre-configured services to inject |
loadingFallback | React.ReactNode | No | Loading fallback component |
launcherComponent | React.ComponentType<any> | No | Launcher component for home route |
launcherPath | string | No | Launcher route path (default: '/') |
disableRouting | boolean | No | If true, render plugins directly without Routes wrapper (for single plugin with own router) |
enablePluginSystem | boolean | No | Whether to enable the plugin system (command palette, keybindings, etc.) |
pluginContext | ConditionContext | No | Initial condition context for plugin "when" expressions |
paletteConfig | Partial<PaletteConfig> | No | Command palette configuration |
showCommandPalette | boolean | No | Whether to show command palette UI (default: true when plugin system enabled) |
manifestPaths | string[] | No | Paths to scan for plugin manifests (flowstate.json files) |
watchManifests | boolean | No | Enable hot-reload for manifests in development (default: true) |
HostContextValue
Host context value provided to all plugins
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
services | ServiceRegistry | Yes | Service registry for dependency injection |
eventBus | EventBus | Yes | Event bus for inter-app communication |
navigation | Partial<NavigationHelpers> | Yes | Navigation helpers |
plugins | AppPlugin[] | Yes | All registered plugins |
PluginSystemProviderProps
Props for PluginSystemProvider
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
initialContext | ConditionContext | No | Initial condition context for "when" expressions |
paletteConfig | Partial<PaletteConfig> | No | Command palette configuration |
showPalette | boolean | No | Whether to render the command palette (default: true) |
quicknavConfig | Partial<QuickNavConfig> | No | QuickNav configuration |
showQuickNav | boolean | No | Whether to render the quick navigation modal (default: true) |
showSettings | boolean | No | Whether to render the settings modal (default: true) |
initialViewState | Partial<ViewState> | No | Initial view state overrides |
settingsPaneRenderers | Record<string, React.ComponentType<{ tab: ResolvedSettingsTab; }>> | No | Custom settings pane renderers by tab ID |
navigationFallback | NavigationFallback | No | Navigation 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). | |||
children | React.ReactNode | Yes | Children to render |
AppConfig
Configuration for app plugin (HostContainer system)
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
useHostRouter | boolean | Yes | Whether to use host's router or create own BrowserRouter |
basePath | string | Yes | Base path for routing |
AppProps
Props injected into every plugin component (HostContainer system)
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
config | AppConfig | No | Plugin configuration |
services | ServiceRegistry | Yes | Service registry for dependency injection |
eventBus | EventBus | Yes | Event bus for inter-app communication |
navigation | NavigationHelpers | Yes | Navigation helpers |
AppPlugin
Plugin definition for FlowState apps (HostContainer system) This is the NEW plugin system that works with HostContainer
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
id | string | Yes | Unique identifier (e.g., 'agents', 'projects') |
name | string | Yes | Display name (e.g., 'AI Agents', 'Projects') |
version | string | Yes | Semantic version |
description | string | Yes | Brief description |
icon | string | ComponentType | Yes | Icon component from lucide-react or React component |
route | string | Yes | Base route (e.g., '/agents', '/projects') |
color | string | Yes | Theme color in hex format |
category | "business" | "technical" | Yes | App category |
component | () => Promise<{ default: ComponentType<AppProps>; }> | Yes | Lazy-loaded component function |
| Must return { default: React.ComponentType<AppProps> } | |||
config | AppConfig | No | Plugin-specific configuration |
onLoad | (services: ServiceRegistry) => void | Promise<void> | No | Called when plugin is loaded, receives ServiceRegistry for setup |
onUnload | () => void | Promise<void> | No | Called when plugin is unloaded, for cleanup |
dependencies | string[] | No | Plugin IDs this plugin depends on |
permissions | string[] | No | Required permissions for this plugin |
requiresServer | boolean | No | Whether this plugin requires a backend server |
KeyModifiers
Keybinding System Types
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
ctrl | boolean | Yes | |
shift | boolean | Yes | |
alt | boolean | Yes | |
meta | boolean | Yes |
KeyCombo
Parsed key combination
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
key | string | Yes |
KeybindingContribution
Keybinding contribution from manifest
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
command | string | Yes | The command to execute |
key | string | Yes | The key combination (e.g., "ctrl+shift+p") |
mac | string | No | Mac-specific key combination (e.g., "cmd+shift+p") |
when | string | No | When condition for context-aware keybindings |
ParsedKeybinding
Parsed keybinding for runtime
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
commandId | string | Yes | Original command ID |
keyCombo | KeyCombo | Yes | Parsed key combo for current platform |
keyString | string | Yes | Original key string |
when | string | No | When condition expression |
pluginId | string | Yes | Plugin that contributed this binding |
ResolvedKeybinding
Resolved keybinding with all metadata
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
commandId | string | Yes | Command ID |
displayKey | string | Yes | Display string for the key combo |
active | boolean | Yes | Whether this binding is active in current context |
keyCombo | KeyCombo | Yes | Parsed key combo |
KeybindingMatch
Keybinding match result
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
keybinding | ParsedKeybinding | Yes | The matched keybinding |
commandId | string | Yes | The command to execute |
KeybindingProviderProps
Props for keybinding provider
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
children | import("/Users/sthornock/code/epic/epic-flowstate/node_modules/@types/react/index").ReactNode | Yes |
UseKeybindingReturn
Return type for useKeybinding hook
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
displayKey | string | Yes | The display string for the keybinding (e.g., "Ctrl+Shift+P") |
hasKeybinding | boolean | Yes | Whether a keybinding is registered for this command |
UseLocalKeybindingReturn
Return type for useLocalKeybinding hook
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
active | boolean | Yes | Whether the keybinding is currently active |
LoadingOptions
Options when starting a loading operation
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
type | LoadingType | No | Type of loading indicator (default: 'topnav') |
message | string | No | Message to display |
blocking | boolean | No | Whether this blocks UI interaction (default: true for overlay, false otherwise) |
progress | number | No | Initial progress value 0-100 |
delay | number | No | Delay in ms before showing indicator (default: 200) |
minDuration | number | No | Minimum display time in ms (default: 300) |
LoadingOperation
Active loading operation
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
id | string | Yes | |
type | LoadingType | Yes | |
state | LoadingOperationState | Yes | |
message | string | No | |
progress | number | No | |
blocking | boolean | Yes | |
startTime | number | Yes | |
visibleTime | number | No | |
error | string | No | |
delay | number | Yes | |
minDuration | number | Yes |
GlobalLoadingState
Global loading state
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
operations | Map<string, LoadingOperation> | Yes | |
isLoading | boolean | Yes | |
hasBlockingLoader | boolean | Yes | |
activeOverlay | LoadingOperation | Yes | |
activeTopNav | LoadingOperation[] | Yes | |
activeContent | LoadingOperation[] | Yes | |
activeInline | LoadingOperation[] | Yes |
LoadingStartEvent
Loading event payloads
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
id | string | Yes | |
operation | LoadingOperation | Yes |
LoadingProgressEvent
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
id | string | Yes | |
progress | number | Yes |
LoadingCompleteEvent
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
id | string | Yes | |
duration | number | Yes |
LoadingErrorEvent
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
id | string | Yes | |
error | string | Yes |
GlobalLoadingConfig
Global loading configuration
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
defaultDelay | number | Yes | Default delay before showing indicator (ms) |
defaultMinDuration | number | Yes | Default minimum display duration (ms) |
defaultType | LoadingType | Yes | Default loading type |
UseGlobalLoadingReturn
Return type for useGlobalLoading hook
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
start | (id: string, options?: LoadingOptions) => void | Yes | Start a loading operation |
progress | (id: string, value: number) => void | Yes | Update progress (0-100) |
complete | (id: string) => void | Yes | Complete a loading operation |
fail | (id: string, error?: string) => void | Yes | Fail a loading operation |
isLoading | boolean | Yes | Whether any loading is active |
hasBlockingLoader | boolean | Yes | Whether a blocking loader is active |
activeOverlay | LoadingOperation | Yes | Active overlay operation (if any) |
activeTopNav | LoadingOperation[] | Yes | Active top nav operations |
activeContent | LoadingOperation[] | Yes | Active content operations |
activeInline | LoadingOperation[] | Yes | Active inline operations |
operations | LoadingOperation[] | Yes | All active operations |
service | GlobalLoadingService | Yes | Service instance for advanced usage |
ManifestAdapterOptions
Options for manifest-to-plugin conversion
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
componentLoader | (manifest: PluginManifest, directory: string) => () => Promise<{ default: ComponentType<AppProps>; }> | No | Custom component loader function |
| If not provided, uses dynamic import based on manifest.main | |||
iconResolver | (iconName: string) => ComponentType | string | No | Custom icon resolver function |
| If not provided, returns the icon string as-is | |||
onLoadWrapper | (manifest: PluginManifest, services: ServiceRegistry) => void | Promise<void> | No | Custom onLoad handler to wrap the plugin's onLoad |
ManifestBackedPlugin
Extended AppPlugin with manifest reference
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
__manifest | PluginManifest | Yes | Original manifest for reference |
__manifestPath | string | Yes | Manifest file path |
DiscoveryOptions
Options for manifest discovery
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
paths | string[] | Yes | Directories or paths to scan for manifests |
watch | boolean | No | Enable hot-reload watching (default: true in development) |
onManifestFound | (manifest: LoadedManifest) => void | No | Callback when a manifest is discovered or changes |
onManifestChange | (manifest: LoadedManifest, changeType: "add" | "change" | "unlink") => void | No | Callback when a manifest changes (hot-reload) |
onError | (error: Error, path: string) => void | No | Callback when an error occurs |
pollInterval | number | No | Polling interval for browser-based watching (ms, default: 5000) |
validate | boolean | No | Whether to validate manifests (default: true) |
registerContributions | boolean | No | Whether to automatically register contributions (default: true) |
DiscoveryResult
Discovery result
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
manifests | LoadedManifest[] | Yes | Successfully loaded manifests |
errors | { path: string; error: Error; }[] | Yes | Errors encountered during discovery |
RegisteredApp
App definition derived from manifest metadata
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
id | string | Yes | Plugin ID |
name | string | Yes | Human-readable name |
description | string | Yes | Brief description |
icon | string | Yes | Icon name from lucide-react |
color | string | Yes | Theme color |
route | string | Yes | Route path |
category | "business" | "technical" | Yes | Category |
requiresServer | boolean | Yes | Whether requires server |
order | number | Yes | Sort order (lower = higher priority) |
CommandContribution
Command contribution from a plugin manifest
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
id | string | Yes | Unique command identifier (e.g., projects.create) |
title | string | Yes | Display title for the command |
category | string | No | Category for grouping in command palette |
icon | string | No | Icon name from lucide-react |
enablement | string | No | When expression for enabling the command |
MenuItem
Menu item within a menu contribution
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
command | string | Yes | Command ID to execute |
when | string | No | When expression for visibility |
group | string | No | Group for ordering (e.g., 1_navigation, 2_actions) |
alt | string | No | Alternative command when Alt key is pressed |
MenuContribution
Menu contribution from a plugin manifest
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
id | string | Yes | Unique menu contribution identifier |
location | MenuLocation | Yes | Menu location identifier |
items | MenuItem[] | Yes | Menu items at this location |
KeybindingContribution
Keybinding contribution from a plugin manifest
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
command | string | Yes | Command ID to execute |
key | string | Yes | Key combination (e.g., ctrl+shift+n) |
mac | string | No | Mac-specific key combination (e.g., cmd+shift+n) |
when | string | No | When expression for activation context |
StatusBarItemContribution
Status bar item contribution from a plugin manifest Similar to VS Code's status bar items
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
id | string | Yes | Unique identifier for this status bar item |
alignment | StatusBarAlignment | Yes | Alignment in status bar (left or right) |
priority | number | No | Priority for ordering (higher = further from center) |
command | string | No | Command to execute on click (optional) |
text | string | No | Static text to display (can include icons via $(icon-name) syntax) |
tooltip | string | No | Tooltip text on hover |
icon | string | No | Icon name from lucide-react |
when | string | No | When expression for visibility |
backgroundColor | string | No | Background color (supports theme colors like 'statusBar.errorBackground') |
dynamic | boolean | No | Whether 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:
| Property | Type | Required | Description |
|---|---|---|---|
id | string | Yes | Unique identifier for this header action |
icon | string | Yes | Icon name from lucide-react |
tooltip | string | Yes | Tooltip text on hover |
command | string | Yes | Command to execute on click |
priority | number | No | Priority for ordering (higher = further right) |
when | string | No | When expression for visibility |
toggle | boolean | No | Whether this action has a toggle state |
toggleStateKey | string | No | State key for toggle (used with ViewStateContext) |
SettingsTabContribution
Settings tab contribution from a plugin manifest Allows plugins to add tabs to the settings modal
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
id | string | Yes | Unique identifier for this settings tab |
label | string | Yes | Display label for the tab |
icon | string | No | Icon name from lucide-react |
priority | number | No | Priority for ordering (lower = higher in list) |
component | string | No | Component path or ID for the settings pane content |
group | string | No | Group 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:
| Property | Type | Required | Description |
|---|---|---|---|
id | string | Yes | Unique identifier for this panel tab |
label | string | Yes | Display label for the tab |
icon | string | No | Icon name from lucide-react |
priority | number | No | Priority for ordering (lower = further left) |
component | string | No | Component path or ID for the panel content |
badge | string | No | Badge 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:
| Property | Type | Required | Description |
|---|---|---|---|
id | string | Yes | Unique identifier for this toolbar item |
tabId | string | Yes | Tab ID this toolbar item belongs to |
icon | string | Yes | Icon name from lucide-react |
tooltip | string | Yes | Tooltip text on hover |
command | string | Yes | Command to execute on click |
priority | number | No | Priority for ordering (lower = further left) |
when | string | No | When expression for visibility |
dropdown | BottomPanelToolbarDropdownItem[] | No | Optional dropdown menu items |
BottomPanelToolbarDropdownItem
Dropdown item for toolbar buttons with menus
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
label | string | Yes | Display label |
command | string | Yes | Command to execute |
icon | string | No | Icon name from lucide-react |
separator | boolean | No | Separator before this item |
NavigationItemContribution
Navigation item contribution for QuickNav Allows plugins to register searchable entities in the global quick navigation
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
entityType | string | Yes | Entity type identifier (e.g., 'task', 'project', 'custom-entity') |
label | string | Yes | Human-readable label for the entity type (e.g., 'Task', 'Project') |
icon | string | No | Icon name from lucide-react |
routePattern | string | Yes | Route pattern with :id placeholder (e.g., '/tasks/:id') |
collection | string | No | RxDB collection name to query for this entity type |
titleField | string | No | Field to use as display title (default: 'title') |
searchFields | string[] | No | Fields to include in full-text search (default: ['title']) |
projectIdField | string | No | Field for parent project ID (for path building) |
milestoneIdField | string | No | Field for parent milestone ID (for path building) |
PluginContributions
All contribution points a plugin can provide
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
commands | CommandContribution[] | No | Commands contributed by this plugin |
menus | MenuContribution[] | No | Menu contributions |
keybindings | KeybindingContribution[] | No | Keyboard shortcuts |
navigationItems | NavigationItemContribution[] | No | Navigation items for QuickNav global search |
statusBarItems | StatusBarItemContribution[] | No | Status bar items |
headerActions | HeaderActionItemContribution[] | No | Header action items (right side of shell header) |
settingsTabs | SettingsTabContribution[] | No | Settings modal tabs |
bottomPanelTabs | BottomPanelTabContribution[] | No | Bottom panel tabs (visor) |
bottomPanelToolbarItems | BottomPanelToolbarItemContribution[] | No | Bottom 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; }[] | No | Sync providers for external data sources |
PluginManifest
Complete plugin manifest (flowstate.json)
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
$schema | string | No | JSON Schema reference for IDE support |
id | string | Yes | Unique plugin identifier (lowercase, alphanumeric with hyphens) |
displayName | string | Yes | Human-readable plugin name |
description | string | No | Brief description of the plugin |
version | string | Yes | Semantic version (e.g., 1.0.0) |
publisher | string | No | Publisher or author name |
main | string | Yes | Path to the main entry point module |
browser | string | No | Path to the browser-specific entry point |
icon | string | No | Icon name from lucide-react or path to icon file |
color | string | No | Theme color in hex format (e.g., #EC4899) |
category | PluginCategory | No | Plugin category for organization |
route | string | No | Base route path (e.g., /apps/projects) |
basePath | string | No | Base path for plugin routing (e.g., /projects) |
activationEvents | ActivationEvent[] | No | Events that trigger plugin activation. Default: eager loading |
dependencies | string[] | No | Plugin IDs this plugin depends on |
permissions | PluginPermission[] | No | Required permissions for this plugin |
requiresServer | boolean | No | Whether this plugin requires a backend server |
order | number | No | Sort order for sidebar/launcher display (lower = higher priority, default: 100) |
contributes | PluginContributions | No | Contribution points for extending FlowState |
ManifestValidationResult
Validation result for manifest validation
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
valid | boolean | Yes | Whether the manifest is valid |
errors | ManifestValidationError[] | Yes | Validation errors if any |
warnings | ManifestValidationWarning[] | Yes | Validation warnings |
ManifestValidationError
Validation error details
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
path | string | Yes | Path to the invalid field (e.g., "contributes.commands[0].id") |
message | string | Yes | Error message |
code | string | Yes | Error code for programmatic handling |
ManifestValidationWarning
Validation warning details
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
path | string | Yes | Path to the field with warning |
message | string | Yes | Warning message |
code | string | Yes | Warning code |
LoadedManifest
Loaded manifest with metadata
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
manifest | PluginManifest | Yes | The parsed manifest |
path | string | Yes | Absolute path to the manifest file |
directory | string | Yes | Directory containing the manifest |
UseManifestDiscoveryOptions
Hook options
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
paths | string[] | Yes | Paths to scan for manifests |
watch | boolean | No | Enable hot-reload watching (default: true in development) |
validate | boolean | No | Whether to validate manifests (default: true) |
registerContributions | boolean | No | Whether to auto-register contributions (default: true) |
enabled | boolean | No | Whether to enable discovery (default: true) |
UseManifestDiscoveryReturn
Hook return value
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
manifests | LoadedManifest[] | Yes | Discovered manifests |
loading | boolean | Yes | Whether discovery is in progress |
errors | { path: string; error: Error; }[] | Yes | Discovery errors |
refresh | () => Promise<void> | Yes | Re-discover manifests |
getManifest | (pluginId: string) => LoadedManifest | undefined | Yes | Get a specific manifest by plugin ID |
MenuItemContribution
Menu item contribution from manifest
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
command | string | Yes | Command ID to execute |
when | string | No | When expression for visibility |
group | string | No | Group for ordering (e.g., "1_navigation") |
alt | string | No | Alternative command when Alt is held |
MenuAnchor
Context menu anchor position
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
x | number | Yes | X coordinate |
y | number | Yes | Y coordinate |
ContextMenuState
Context menu state
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
isOpen | boolean | Yes | Whether the menu is open |
anchor | MenuAnchor | Yes | Anchor position |
contextType | string | No | Context type (e.g., "task", "project") |
contextData | Record<string, unknown> | No | Context data |
UseContextMenuReturn
Return type for useContextMenu hook
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
state | ContextMenuState | Yes | Current menu state |
open | (anchor: MenuAnchor, contextType?: string, contextData?: Record<string, unknown>) => void | Yes | Open menu at position |
close | () => void | Yes | Close menu |
onContextMenu | (e: React.MouseEvent, contextType?: string, contextData?: Record<string, unknown>) => void | Yes | Handler for onContextMenu event |
MenuRendererProps
Props for menu components
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
location | MenuLocation | Yes | Menu location to render |
context | ConditionContext | No | Current condition context |
className | string | No | Custom class name |
horizontal | boolean | No | Whether to show as horizontal |
onItemClick | (commandId: string) => void | No | On item click callback |
ContextMenuProps
Props for context menu component
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
contextType | string | Yes | Context type for menu items |
anchor | MenuAnchor | Yes | Anchor position |
onClose | () => void | Yes | Close handler |
contextData | Record<string, unknown> | No | Context data |
NavigationHelpers
Navigation helpers interface
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
navigateTo | (path: string, options?: { replace?: boolean; }) => void | Yes | Navigate to a path |
goBack | () => void | Yes | Go back in history |
generatePath | (pluginId: string, subPath?: string) => string | Yes | Generate path for plugin with optional subpath |
currentPath | string | Yes | Current pathname |
ContextSwitchers
Context switching callbacks
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
selectOrg | (orgId: string) => Promise<void> | Yes | |
selectWorkspace | (workspaceId: string) => Promise<void> | Yes | |
getCurrentOrgId | () => string | null | Yes | |
getCurrentWorkspaceId | () => string | null | Yes |
EntityRouteConfig
Entity route configuration registered by plugins
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
entityType | NavigableEntityType | Yes | Entity type this route handles |
pluginId | string | Yes | Plugin/app ID that owns this route |
pattern | string | Yes | Route pattern with :id placeholder (e.g., '/tasks/:id') |
basePath | string | Yes | Base path for the plugin (e.g., '/apps/projects') |
NavigationOptions
Navigation options for cross-org/workspace navigation
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
orgId | string | No | Target organization ID - switch context after navigation |
workspaceId | string | No | Target workspace ID - switch context after navigation |
replace | boolean | No | Replace current history entry instead of pushing |
state | Record<string, unknown> | No | Additional state to pass to navigation |
NavigationEvent
Navigation event payload
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
type | "entity" | "route" | "app" | "back" | "forward" | Yes | Type of navigation |
path | string | Yes | Target path after resolution |
entity | { type: NavigableEntityType; id: string; } | No | Entity information if type is 'entity' |
appId | string | No | App/plugin ID if type is 'app' |
options | NavigationOptions | No | Navigation options |
timestamp | number | Yes | Timestamp of the event |
NavigationContextEvent
Navigation context event - emitted after navigation completes
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
orgId | string | No | Organization ID to switch to |
workspaceId | string | No | Workspace ID to switch to |
previousOrgId | string | No | Previous organization ID |
previousWorkspaceId | string | No | Previous workspace ID |
UseNavigationReturn
Navigation hook return type
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
toEntity | (entityId: string, options?: NavigationOptions) => Promise<void> | Yes | Navigate to an entity by ID (auto-detects type from prefix) |
toEntityByType | (entityType: NavigableEntityType, entityId: string, options?: NavigationOptions) => Promise<void> | Yes | Navigate to an entity by type and ID |
toRoute | (path: string, options?: NavigationOptions) => Promise<void> | Yes | Navigate to a route path |
toApp | (pluginId: string, subPath?: string, options?: NavigationOptions) => Promise<void> | Yes | Navigate to an app by plugin ID |
back | () => void | Yes | Go back in browser history |
forward | () => void | Yes | Go forward in browser history |
currentPath | string | Yes | Current pathname |
on | <T = unknown>(event: string, handler: (data?: T) => void | Promise<void>) => () => void | Yes | Subscribe to navigation events |
once | <T = unknown>(event: string, handler: (data?: T) => void | Promise<void>) => () => void | Yes | Subscribe to navigation event once |
service | NavigationService | Yes | Navigation service instance (for advanced usage) |
ObservabilityConfig
Configuration for ObservabilityManager initialization
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
url | string | Yes | |
apiKey | string | Yes | |
projectId | string | Yes | |
environment | string | No | |
release | string | No | |
userId | string | No | |
captureErrors | boolean | No | |
captureConsole | boolean | No | |
captureReactErrors | boolean | No | |
captureGlobalErrors | boolean | No | |
captureUnhandledRejections | boolean | No |
BugReportData
Bug report data passed to onReportBug callback
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
title | string | Yes | |
description | string | Yes | |
error | Error | No | |
errorInfo | ErrorInfo | No |
ErrorBoundaryProps
Props for ErrorBoundary component
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
children | ReactNode | Yes | |
fallback | ReactNode | ((error: Error, reset: () => void) => ReactNode) | No | |
onError | (error: Error, errorInfo: ErrorInfo) => void | No | |
onReportBug | (data: BugReportData) => void | No | |
boundaryName | string | No | |
captureErrors | boolean | No | |
isolate | boolean | No |
ErrorBoundaryState
State for ErrorBoundary component
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
hasError | boolean | Yes | |
error | Error | Yes | |
errorInfo | ErrorInfo | No |
ErrorFallbackProps
Props for DefaultErrorFallback component
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
error | Error | Yes | |
errorInfo | ErrorInfo | No | |
reset | () => void | Yes | |
onReportBug | (data: BugReportData) => void | No | |
boundaryName | string | No | |
containerClassName | string | No |
ConsoleStorage
Internal console storage
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
log | (...args: any[]) => void | Yes | |
debug | (...args: any[]) => void | Yes | |
info | (...args: any[]) => void | Yes | |
warn | (...args: any[]) => void | Yes | |
error | (...args: any[]) => void | Yes |
PaletteProviderProps
Props for PaletteProvider
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
config | Partial<PaletteConfig> | No | Configuration options |
children | React.ReactNode | Yes | Children to render |
RecentCommand
Recent command entry
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
commandId | string | Yes | Command ID |
timestamp | number | Yes | Last executed timestamp |
count | number | Yes | Execution count |
PaletteState
State of the command palette
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
isOpen | boolean | Yes | Whether the palette is open |
query | string | Yes | Current search query |
selectedIndex | number | Yes | Selected item index |
results | PaletteItem[] | Yes | Filtered/search results |
PaletteItem
An item in the command palette
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
type | "category" | "command" | "recent" | Yes | Item type |
command | ExecutableCommand | No | Command data (for command/recent types) |
category | string | No | Category name (for category type) |
label | string | Yes | Display label |
description | string | No | Optional description |
icon | string | No | Icon name |
keybinding | string | No | Keyboard shortcut |
selectable | boolean | Yes | Whether this item is selectable |
score | number | No | Search score (higher is better match) |
UsePaletteReturn
Return type for usePalette hook
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
state | PaletteState | Yes | Current state |
open | () => void | Yes | Open the palette |
close | () => void | Yes | Close the palette |
toggle | () => void | Yes | Toggle the palette |
setQuery | (query: string) => void | Yes | Update search query |
selectNext | () => void | Yes | Select next item |
selectPrevious | () => void | Yes | Select previous item |
executeSelected | () => Promise<void> | Yes | Execute selected item |
executeItem | (item: PaletteItem) => Promise<void> | Yes | Execute specific item |
PaletteItemProps
Props for PaletteItem component
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
item | PaletteItem | Yes | The item to render |
isSelected | boolean | Yes | Whether this item is selected |
onClick | () => void | Yes | Called when item is clicked |
onHover | () => void | Yes | Called when item is hovered |
PaletteConfig
Configuration for the command palette
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
maxRecentCommands | number | Yes | Maximum number of recent commands to show |
openShortcut | string | Yes | Keyboard shortcut to open palette |
openShortcutMac | string | Yes | Mac keyboard shortcut |
placeholder | string | Yes | Placeholder text for search input |
showCategories | boolean | Yes | Whether to show category headers |
showKeybindings | boolean | Yes | Whether to show keybindings |
FlowstateRuntime
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
plugins | Map<string, FlowstatePlugin> | Yes | |
contexts | Map<string, React.Context<any>> | Yes | |
components | Map<string, React.ComponentType<any>> | Yes | |
hooks | Map<string, Function> | Yes | |
services | Map<string, any> | Yes |
ComponentRegistry
HookRegistry
ServiceRegistry
FlowstatePlugin
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
name | string | Yes | |
version | string | Yes | |
dependencies | string[] | No |
PluginConfig
AuthContextValue
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
currentUser | UserModel | Yes | |
currentUserId | string | Yes | |
users | UserModel[] | Yes | |
isLoading | boolean | Yes |
AuthProviderProps
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
children | React.ReactNode | Yes |
ReplicationServerConfig
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
url | string | Yes | URL of the rxdb-server (e.g., 'https://api.example.com') |
domainId | string | Yes | Domain ID for multi-tenant isolation |
AuthPluginConfig
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
registerOnboarding | boolean | No | Whether to register onboarding steps (default: true) |
replicationServer | ReplicationServerConfig | No | Server configuration for replication authentication |
ComponentRegistry
ComponentContextValue
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
components | ComponentRegistry | Yes | |
overrides | ComponentRegistry | Yes |
ComponentProviderProps
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
children | React.ReactNode | Yes | |
components | ComponentRegistry | Yes | |
overrides | ComponentRegistry | No |
ComponentPluginConfig
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
defaults | ComponentRegistry | Yes | |
overrides | ComponentRegistry | No |
DatabaseContextValue
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
db | RxDatabase | Yes | |
isReady | boolean | Yes | |
replicationState | ReplicationState | Yes | |
serverInfo | ServerInfo | Yes |
DatabaseAdapter
DatabaseProviderProps
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
children | React.ReactNode | Yes | |
adapter | "memory" | "indexeddb" | DatabaseAdapter | Yes | |
databaseName | string | No | |
serverInfo | ServerInfo | No |
DatabasePluginConfig
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
adapter | "memory" | "indexeddb" | DatabaseAdapter | Yes | |
databaseName | string | No |
FlowstateAuthContextValue
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
user | AuthUser | Yes | Currently authenticated user (from server) |
isAuthenticated | boolean | Yes | Whether the user is authenticated with the server |
isLoading | boolean | Yes | Whether auth state is being loaded from storage |
sendVerificationCode | (email: string) => Promise<void> | Yes | Send a verification code to the email |
login | (email: string, code: string) => Promise<AuthUser> | Yes | Login with email and verification code |
logout | () => void | Yes | Logout and clear authentication |
getAuthHeaders | () => Record<string, string> | Yes | Get auth headers for API requests |
authService | FlowstateAuthService | Yes | The underlying auth service (for advanced use) |
FlowstateAuthProviderProps
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
children | React.ReactNode | Yes | |
config | FlowstateAuthServiceConfig | Yes | Configuration for the auth service |
onTokenRefresh | TokenRefreshCallback | No | Callback when tokens are refreshed. |
| Use this to sync auth tokens to external systems (e.g., ServerConfigService). |
GlobalLoadingPluginConfig
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
topNavHeight | number | No | Height of top nav loader in pixels |
topNavOffset | string | number | No | Top position offset for top nav loader |
showOverlay | boolean | No | Whether to show overlay component |
showTopNav | boolean | No | Whether to show top nav loader |
LoaderPluginConfig
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
instrumentRuntime | boolean | No | Whether to automatically instrument runtime plugin loading (default: true) |
OrgWorkspaceContextValue
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
currentOrg | OrgModel | Yes | |
currentOrgId | string | Yes | |
currentWorkspace | WorkspaceModel | Yes | |
currentWorkspaceId | string | Yes | |
orgs | OrgModel[] | Yes | |
workspaces | WorkspaceModel[] | Yes | |
isLoading | boolean | Yes | |
hasAttemptedRestore | boolean | Yes | |
hasAttemptedWorkspaceRestore | boolean | Yes |
OrgWorkspaceProviderProps
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
children | React.ReactNode | Yes | |
mode | "global" | "local" | No | |
allowLocalCreate | boolean | No |
OrgWorkspacePluginConfig
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
mode | "global" | "local" | No | |
allowLocalCreate | boolean | No | |
registerOnboarding | boolean | No | Whether to register onboarding steps (default: true) |
AuthErrorInfo
Auth error info passed to onAuthError callback
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
status | 401 | 403 | Yes | |
collection | string | Yes |
TokenRefreshResult
Result of a token refresh attempt
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
success | boolean | Yes | |
token | string | No | |
error | Error | No |
ReplicationPluginConfig
Configuration options for the ReplicationPlugin
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
collections | string[] | Yes | |
batchSize | number | No | |
periodicSyncInterval | number | No | |
enableLiveReplication | boolean | No | |
retryAttempts | number | No | |
getAuthHeaders | () => Record<string, string> | No | |
onAuthError | (error: AuthErrorInfo) => void | No | |
refreshToken | () => Promise<string> | No | |
onTokenRefreshed | (token: string) => void | No | |
onTokenRefreshFailed | (error: Error) => void | No |
ReplicationStatus
Status information for a replicated collection
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
collection | string | Yes | |
active | boolean | Yes | |
error | Error | Yes |
ServerInfo
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
name | string | Yes | |
url | string | Yes | |
domainId | string | Yes |
ServerConfigContextValue
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
mode | "offline" | "online" | Yes | |
currentServer | ServerInfo | Yes | |
servers | ServerInfo[] | Yes | |
authToken | string | Yes |
ServerConfigProviderProps
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
children | React.ReactNode | Yes | |
initialMode | "offline" | "online" | Yes | |
initialServers | ServerInfo[] | Yes | |
initialServer | ServerInfo | No |
ServerConfigPluginConfig
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
mode | "offline" | "online" | Yes | |
servers | ServerInfo[] | No | |
currentServer | string | No | |
allowAddServer | boolean | No |
StandaloneDatabasePluginConfig
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
databaseName | string | No | |
collections | string[] | No | Collection names to load. Core collections (orgs, users, workspaces) are always included. |
ThemePluginConfig
Configuration options for ThemePlugin
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
defaultMode | ThemeMode | No | Default theme mode |
QuickNavProviderProps
Props for QuickNavProvider
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
config | Partial<QuickNavConfig> | No | Configuration options |
children | React.ReactNode | Yes | Children to render |
PathSegment
Path segment for building hierarchical breadcrumbs
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
type | string | Yes | Entity type of this segment |
label | string | Yes | Display label |
id | string | Yes | Entity ID |
QuickNavItem
A navigable item in the QuickNav results
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
type | "item" | Yes | Type discriminator for union |
id | string | Yes | Unique identifier for this item |
entityType | string | Yes | Entity type |
title | string | Yes | Display title |
description | string | No | Optional description/subtitle |
path | PathSegment[] | Yes | Hierarchical path segments (Org > Workspace > Project > ...) |
pathString | string | Yes | Full path as string for display |
icon | string | No | Icon name from lucide-react or react-icons |
orgId | string | No | Organization ID for navigation context |
workspaceId | string | No | Workspace ID for navigation context |
projectId | string | No | Project ID (if applicable) |
milestoneId | string | No | Milestone ID (if applicable) |
pluginId | string | No | Plugin ID that owns this entity |
route | string | No | Route to navigate to |
score | number | No | Search relevance score (higher = more relevant) |
isRecent | boolean | No | Whether this is a recent item |
selectable | boolean | Yes | Whether this item is selectable |
QuickNavCategory
Category header in results list
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
type | "category" | Yes | Category type identifier |
label | string | Yes | Display label |
icon | string | No | Optional icon |
selectable | false | Yes | Not selectable |
QuickNavState
QuickNav modal state
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
isOpen | boolean | Yes | Whether the modal is open |
query | string | Yes | Current search query |
selectedIndex | number | Yes | Currently selected index in results |
results | QuickNavListItem[] | Yes | Search results |
isLoading | boolean | Yes | Loading state |
error | string | No | Error message if search failed |
QuickNavConfig
QuickNav configuration options
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
maxRecentItems | number | Yes | Maximum number of recent items to show |
maxResults | number | Yes | Maximum number of search results |
openShortcut | string | Yes | Keyboard shortcut to open (default: cmd+shift+g) |
placeholder | string | Yes | Placeholder text for search input |
showCategories | boolean | Yes | Whether to show category headers |
searchDebounceMs | number | Yes | Debounce delay for search (ms) |
enabledEntityTypes | string[] | Yes | Entity types to include in search |
QuickNavActions
QuickNav context actions
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
open | () => void | Yes | Open the QuickNav modal |
close | () => void | Yes | Close the QuickNav modal |
toggle | () => void | Yes | Toggle the QuickNav modal |
setQuery | (query: string) => void | Yes | Update search query |
setSelectedIndex | (index: number) => void | Yes | Set selected index |
navigateToSelected | () => void | Yes | Navigate to selected item |
navigateTo | (item: QuickNavItem) => void | Yes | Navigate to specific item |
selectPrevious | () => void | Yes | Move selection up |
selectNext | () => void | Yes | Move selection down |
QuickNavContextValue
QuickNav context value
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
state | QuickNavState | Yes | Current state |
actions | QuickNavActions | Yes | Available actions |
config | QuickNavConfig | Yes | Configuration |
FlexSearchResult
Search result from FlexSearch
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
id | string | Yes | Document ID |
score | number | Yes | Search score |
EntityPathData
Entity data for path building
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
orgs | Map<string, { id: string; name: string; }> | Yes | |
workspaces | Map<string, { id: string; name: string; orgId: string; }> | Yes | |
projects | Map<string, { id: string; title: string; orgId: string; workspaceId: string; }> | Yes | |
milestones | Map<string, { id: string; title: string; projectId: string; }> | Yes |
UseQuickNavSearchOptions
Options for useQuickNavSearch hook
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
debounceMs | number | No | Debounce delay in ms (default: 150) |
maxResults | number | No | Maximum results to return (default: 50) |
enabledEntityTypes | string[] | No | Entity types to include in search |
UseQuickNavSearchReturn
Return type for useQuickNavSearch hook
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
results | QuickNavItem[] | Yes | Current search results |
isLoading | boolean | Yes | Loading state |
error | string | Yes | Error message if search failed |
search | (query: string) => void | Yes | Perform a search |
clear | () => void | Yes | Clear results |
ServerConfig
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
url | string | Yes | |
domainId | string | Yes |
ServerAuthData
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
authToken | string | Yes | |
lastOrg | string | Yes | |
lastWorkspace | string | Yes |
ServersData
SeedOptions
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
orgId | string | Yes | Organization ID (required) |
workspaceId | string | Yes | Workspace ID (required) |
userId | string | Yes | User ID for ownership (required) |
entityTypes | string[] | No | Entity types to create attributes for (default: ['tasks']) |
includeCategories | boolean | No | Include category attributes (default: true) |
includeTags | boolean | No | Include tag attributes (default: true) |
projectId | string | No | Project ID for project-scoped attributes (optional) |
preset | PresetType | No | Preset type to use (default: 'software-development') |
SeedResult
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
created | number | Yes | Number of attributes created |
skipped | number | Yes | Number of existing attributes (skipped) |
seeded | boolean | Yes | Whether seeding was performed |
preset | PresetType | No | Preset that was used |
AttributeFormData
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
name | string | Yes | |
title | string | Yes | |
description | string | No | |
color | string | Yes | |
entityType | string | Yes | |
type | "tag" | "category" | "meta" | Yes | |
sortOrder | number | No | |
metadata | Record<string, any> | No |
AttributeValidationErrors
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
name | string | No | |
title | string | No | |
description | string | No | |
color | string | No | |
entityType | string | No | |
type | string | No |
AttributeResult
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
attribute | AttributeModel | Yes | |
errors | AttributeValidationErrors | Yes |
AttributeFilters
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
entityType | string | No | |
type | string | No | |
archived | boolean | No | |
userId | string | No | |
search | string | No |
ValidationResult
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
isValid | boolean | Yes | |
errors | AttributeValidationErrors | Yes |
MigrationResult
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
migrated | number | Yes | |
errors | { id: string; error: string; }[] | Yes |
UniqueScope
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
name | string | Yes | |
entityType | string | Yes | |
type | string | Yes | |
orgId | string | Yes | |
userId | string | No |
AuthTokenRefresherOptions
Options for creating an auth token refresher
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
debug | boolean | No | Enable debug logging |
RefreshResult
Result of a token refresh attempt
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
success | boolean | Yes | |
token | string | No | |
error | Error | No |
AuthTokens
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
accessToken | string | Yes | |
refreshToken | string | Yes | |
expiresAt | number | Yes |
AuthUser
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
id | string | Yes | |
email | string | Yes | |
name | string | No | |
domainId | string | Yes | |
orgId | string | Yes |
FlowstateAuthServiceConfig
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
serverUrl | string | Yes | |
domainId | string | Yes | |
storage | Storage | No |
AuthStateChangeCallback
TokenRefreshCallback
CreateSyncConfigInput
Input data for creating a new sync configuration
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
orgId | string | Yes | Organization ID |
workspaceId | string | Yes | Workspace ID |
userId | string | Yes | User ID who owns this config |
providerId | string | Yes | Provider type identifier (e.g., 'github', 'jira') |
name | string | Yes | User-friendly name for this sync configuration |
description | string | No | Optional description |
targetProjectId | string | No | Target project ID for synced items |
targetMilestoneId | string | No | Target milestone ID for synced items |
direction | SyncDirectionType | Yes | Direction of synchronization |
pollingIntervalMs | number | Yes | Polling interval in milliseconds (minimum 60000) |
enabled | boolean | Yes | Whether this sync configuration is enabled |
credentials | Record<string, unknown> | Yes | Provider-specific credentials |
providerConfig | Record<string, unknown> | Yes | Provider-specific configuration options |
fieldMappings | SyncFieldMapping[] | Yes | Field mappings between FlowState and external provider |
UpdateSyncConfigInput
Input data for updating a sync configuration
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
name | string | No | User-friendly name |
description | string | No | Optional description |
targetProjectId | string | No | Target project ID |
targetMilestoneId | string | No | Target milestone ID |
direction | SyncDirectionType | No | Direction of synchronization |
pollingIntervalMs | number | No | Polling interval in milliseconds |
enabled | boolean | No | Whether this sync configuration is enabled |
credentials | Record<string, unknown> | No | Provider-specific credentials |
providerConfig | Record<string, unknown> | No | Provider-specific configuration options |
fieldMappings | SyncFieldMapping[] | No | Field mappings |
SyncStatusUpdate
Sync status update input
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
lastSyncAt | string | No | Timestamp of last sync |
lastSyncError | string | No | Error message from last sync (null to clear) |
lastSyncItemCount | number | No | Number of items synced |
DeserializedSyncConfig
Deserialized sync config with parsed JSON fields
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
credentials | Record<string, unknown> | Yes | Parsed credentials object |
providerConfig | Record<string, unknown> | Yes | Parsed provider config object |
fieldMappings | SyncFieldMapping[] | Yes | Parsed field mappings array |
OAuthConfig
OAuth configuration for providers that support OAuth authentication
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
authorizationUrl | string | Yes | OAuth authorization URL |
tokenUrl | string | Yes | OAuth token exchange URL |
scopes | string[] | Yes | Required OAuth scopes |
clientIdEnvVar | string | Yes | Environment variable name for the client ID |
OAuthTokenResult
Result from OAuth token operations (callback handling or refresh)
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
accessToken | string | Yes | The access token for API requests |
refreshToken | string | No | Optional refresh token for obtaining new access tokens |
expiresAt | string | No | Optional expiration timestamp (ISO 8601 string) |
SyncProviderMetadata
Metadata describing a sync provider's capabilities and configuration
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
id | string | Yes | Unique provider identifier (e.g., 'github', 'monday', 'custom-api') |
name | string | Yes | Display name for the provider |
description | string | Yes | Description of what the provider syncs |
icon | string | Yes | Icon name from lucide-react |
supportsOAuth | boolean | Yes | Whether the provider uses OAuth for authentication |
oauthConfig | OAuthConfig | No | OAuth configuration (required if supportsOAuth is true) |
supportedDirections | SyncDirectionType[] | Yes | Supported sync directions |
defaultFieldMappings | SyncFieldMapping[] | Yes | Default field mappings for this provider |
configSchema | Record<string, unknown> | No | Optional 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:
| Property | Type | Required | Description |
|---|---|---|---|
metadata | SyncProviderMetadata | Yes | Provider 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:
| Property | Type | Required | Description |
|---|---|---|---|
flowstateField | string | Yes | Field name in FlowState entity |
externalField | string | Yes | Field name in external provider entity |
transform | "custom" | "direct" | Yes | Transform type: 'direct' for 1:1 mapping, 'custom' for custom transformer |
transformerName | string | No | Name of custom transformer function (required when transform is 'custom') |
defaultValue | unknown | No | Default value to use when source field is missing or null |
SyncProviderConfig
Configuration for a sync provider instance
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
id | string | Yes | Unique identifier for this configuration |
providerId | string | Yes | Provider type identifier (e.g., 'github', 'jira', 'asana') |
name | string | Yes | User-friendly name for this sync configuration |
workspaceId | string | Yes | Workspace ID this configuration belongs to |
orgId | string | Yes | Organization ID this configuration belongs to |
userId | string | Yes | User ID who created/owns this configuration |
targetProjectId | string | No | Target project ID for synced items (optional) |
targetMilestoneId | string | No | Target milestone ID for synced items (optional) |
direction | SyncDirectionType | Yes | Direction of synchronization |
pollingIntervalMs | number | Yes | Polling interval in milliseconds |
enabled | boolean | Yes | Whether this sync configuration is enabled |
credentials | Record<string, unknown> | Yes | Provider-specific credentials (tokens, API keys, etc.) |
providerConfig | Record<string, unknown> | Yes | Provider-specific configuration options |
fieldMappings | SyncFieldMapping[] | Yes | Field mappings between FlowState and external provider |
lastSyncAt | string | No | Timestamp of last successful sync (ISO 8601 string) |
lastSyncError | string | No | Error message from last sync attempt, if any |
createdAt | string | Yes | Configuration creation timestamp (ISO 8601 string) |
updatedAt | string | Yes | Configuration last update timestamp (ISO 8601 string) |
SyncItemResult
Result of syncing a single item
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
externalId | string | Yes | External provider's ID for the item |
flowstateId | string | No | FlowState ID for the item (if created/updated) |
operation | "updated" | "created" | "deleted" | "skipped" | "conflict" | Yes | Operation performed on this item |
error | string | No | Error message if operation failed |
SyncResult
Result of a complete sync operation
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
configId | string | Yes | Configuration ID that was synced |
providerId | string | Yes | Provider ID that was synced |
timestamp | string | Yes | Timestamp when sync completed (ISO 8601 string) |
status | SyncStatusType | Yes | Final status of the sync operation |
created | number | Yes | Number of items created |
updated | number | Yes | Number of items updated |
deleted | number | Yes | Number of items deleted |
pushed | number | Yes | Number of items pushed to external provider |
conflicts | number | Yes | Number of conflicts detected |
errors | string[] | Yes | Array of error messages |
durationMs | number | Yes | Duration of sync operation in milliseconds |
items | SyncItemResult[] | No | Detailed results for individual items (optional) |
SyncState
Current state of a sync configuration
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
status | SyncStatusType | Yes | Current sync status |
lastSyncAt | string | Yes | Timestamp of last successful sync (ISO 8601 string or null) |
progress | { current: number; total: number; entity?: string; } | Yes | Progress information for ongoing sync (or null if not syncing) |
lastResult | SyncResult | Yes | Result of the last sync operation (or null if never synced) |
error | string | Yes | Current error message (or null if no error) |
SyncEvent
Sync event payload
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
type | SyncEventType | Yes | Type of sync event |
configId | string | Yes | Configuration ID for the sync |
providerId | string | Yes | Provider ID for the sync |
timestamp | string | Yes | Timestamp when event occurred (ISO 8601 string) |
data | unknown | No | Additional event-specific data |
OrgThemeLoaderConfig
Configuration options for OrgThemeLoader
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
useMock | boolean | No | Whether to use mock in-memory storage. |
| When true (default), uses in-memory Map for storage. | |||
| When false, requires database to be provided. | |||
database | RxDatabase | No | RxDB 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:
| Property | Type | Required | Description |
|---|---|---|---|
background | string | Yes | Main background color |
foreground | string | Yes | Main foreground/text color |
primary | string | Yes | Primary brand color |
primaryForeground | string | Yes | Text color for primary backgrounds |
secondary | string | Yes | Secondary/supporting color |
secondaryForeground | string | Yes | Text color for secondary backgrounds |
accent | string | Yes | Accent color for highlights |
accentForeground | string | Yes | Text color for accent backgrounds |
muted | string | Yes | Muted/subdued background color |
mutedForeground | string | Yes | Text color for muted backgrounds |
destructive | string | Yes | Destructive/danger color (errors, delete actions) |
destructiveForeground | string | Yes | Text color for destructive backgrounds |
border | string | Yes | Border color |
ring | string | Yes | Focus ring color |
ThemeBranding
Branding configuration for white-labeling the application
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
appName | string | Yes | Application name displayed in UI |
logoBase64 | string | No | Optional logo as base64 data URL |
faviconBase64 | string | No | Optional favicon as base64 data URL |
Theme
Complete theme definition with light and dark mode colors
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
id | string | Yes | Unique theme identifier |
name | string | Yes | Human-readable theme name |
orgId | string | No | Optional organization ID for org-scoped themes |
colors | { light: ThemeColors; dark: ThemeColors; } | Yes | Color palettes for light and dark modes |
branding | ThemeBranding | Yes | Branding configuration |
createdAt | number | Yes | Creation timestamp |
updatedAt | number | Yes | Last update timestamp |
ThemeState
Runtime theme state managed by ThemeService
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
currentTheme | Theme | Yes | Currently active theme |
mode | ThemeMode | Yes | Selected mode preference |
resolvedMode | "light" | "dark" | Yes | Resolved mode (never 'system', always 'light' or 'dark') |
isLoading | boolean | Yes | Whether theme is currently loading |
ThemeConfig
Configuration options for ThemePlugin
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
defaultMode | ThemeMode | Yes | Default theme mode preference |
persistToLocalStorage | boolean | Yes | Whether to persist theme preference to localStorage |
persistToDatabase | boolean | Yes | Whether to persist theme to database |
localStorageKey | string | Yes | localStorage key for persisting theme preference |
ThemeChangeEvent
Payload for THEME_CHANGE event
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
previousTheme | Theme | Yes | Previous theme (null if none) |
newTheme | Theme | Yes | New active theme |
ModeChangeEvent
Payload for MODE_CHANGE event
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
previousMode | ThemeMode | Yes | Previous mode |
newMode | ThemeMode | Yes | New mode |
resolvedMode | "light" | "dark" | Yes | Resolved mode |
ThemeBrandingChangeEvent
Payload for BRANDING_CHANGE event
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
branding | ThemeBranding | Yes | Updated branding configuration |
UseThemeReturn
Return type for useTheme hook
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
theme | Theme | Yes | Current theme object |
mode | ThemeMode | Yes | Current mode setting (light, dark, or system) |
resolvedMode | "light" | "dark" | Yes | Resolved mode (always light or dark, never system) |
isLoading | boolean | Yes | Whether theme is currently loading |
service | ThemeService | Yes | ThemeService instance for advanced usage |
setMode | (mode: ThemeMode) => void | Yes | Set the theme mode |
setTheme | (theme: Theme) => void | Yes | Set the entire theme |
setBranding | (branding: Partial<ThemeBranding>) => void | Yes | Update branding configuration |
toggleMode | () => void | Yes | Toggle between light and dark modes |
AttributeFormData
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
name | string | Yes | |
title | string | Yes | |
description | string | No | |
color | string | Yes | |
entityType | string | Yes | |
type | "tag" | "category" | "meta" | Yes | |
sortOrder | number | No | |
metadata | Record<string, any> | No |
AttributeValidationErrors
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
name | string | No | |
title | string | No | |
description | string | No | |
color | string | No | |
entityType | string | No | |
type | string | No | |
sortOrder | string | No | |
metadata | string | No |
AttributeResult
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
attribute | AttributeModel | Yes | |
errors | AttributeValidationErrors | Yes |
AttributeOperationResult
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
success | boolean | Yes | |
errors | AttributeValidationErrors | Yes |
AttributeFilters
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
entityType | string | No | |
type | "tag" | "category" | "meta" | No | |
archived | boolean | No | |
userId | string | No | |
search | string | No | |
hasMetadata | boolean | No | |
popularityThreshold | number | No |
AttributeWithUsage
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
usageCount | number | Yes | |
entityUsage | { [entityType: string]: number; } | Yes |
AttributeWithStatistics
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
usageCount | number | Yes | |
popularityRank | number | Yes | |
lastUsed | string | No | |
createdByName | string | No | |
entityBreakdown | { [key: string]: number; tasks: number; projects: number; milestones: number; } | Yes |
AttributeSelectOption
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
value | string | Yes | |
label | string | Yes | |
name | string | Yes | |
color | string | Yes | |
type | "tag" | "category" | "meta" | Yes | |
entityType | string | Yes | |
isNew | boolean | No | |
isUserSpecific | boolean | No | |
popularity | number | No |
CategorySelectOption
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
value | string | Yes | |
label | string | Yes | |
color | string | Yes | |
isNew | boolean | No |
TagSelectOption
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
value | string | Yes | |
label | string | Yes | |
color | string | Yes | |
isNew | boolean | No |
AttributeServiceInterface
UniqueScope
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
name | string | Yes | |
entityType | string | Yes | |
type | string | Yes | |
orgId | string | Yes | |
userId | string | No |
UseAttributesReturn
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
attributes | AttributeModel[] | Yes | |
categories | AttributeModel[] | Yes | |
tags | AttributeModel[] | Yes | |
isLoading | boolean | Yes | |
error | string | Yes | |
refetch | () => void | Yes | |
searchAttributes | (query: string) => AttributeModel[] | Yes | |
getAttributesByType | (type: "tag" | "category" | "meta") => AttributeModel[] | Yes | |
getAttributeById | (id: string) => AttributeModel | undefined | Yes | |
incrementPopularity | (id: string) => Promise<void> | Yes |
UseCategoriesReturn
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
categories | AttributeModel[] | Yes | |
isLoading | boolean | Yes | |
error | string | Yes | |
refetch | () => void | Yes |
UseTagsReturn
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
tags | AttributeModel[] | Yes | |
isLoading | boolean | Yes | |
error | string | Yes | |
refetch | () => void | Yes | |
search | (query: string) => AttributeModel[] | Yes |
UseCategoriesAndTagsReturn
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
categories | AttributeModel[] | Yes | |
tags | AttributeModel[] | Yes | |
isLoading | boolean | Yes | |
error | string | Yes | |
getCategoryById | (id: string) => AttributeModel | undefined | Yes | |
getTagById | (id: string) => AttributeModel | undefined | Yes | |
getCategoriesOptions | () => CategorySelectOption[] | Yes | |
getTagsOptions | () => TagSelectOption[] | Yes | |
refetch | () => void | Yes |
AttributeFieldProps
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
entityType | string | Yes | |
attributeType | "tag" | "category" | "meta" | Yes | |
value | string | string[] | No | |
onChange | (value: string | string[] | null) => void | No | |
multiple | boolean | No | |
allowCreate | boolean | No | |
includeUserSpecific | boolean | No | |
includeSystemWide | boolean | No | |
id | string | No | |
label | string | No | |
placeholder | string | No | |
helperText | string | No | |
className | string | No | |
disabled | boolean | No | |
required | boolean | No | |
error | string | No | |
maxSelections | number | No | |
popularityBoost | boolean | No | |
hideArchived | boolean | No | |
sortBy | "name" | "custom" | "created" | "title" | "popularity" | No |
CategoryFieldProps
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
value | string | No | |
onChange | (categoryId: string | null) => void | Yes | |
placeholder | string | No | |
disabled | boolean | No | |
allowCreate | boolean | No | |
error | string | No | |
required | boolean | No |
TagFieldProps
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
value | string[] | No | |
onChange | (tagIds: string[]) => void | Yes | |
placeholder | string | No | |
maxTags | number | No | |
allowCreate | boolean | No | |
disabled | boolean | No | |
error | string | No | |
required | boolean | No |
AttributeManagerProps
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
entityType | string | No | |
attributeType | "tag" | "category" | "meta" | No | |
allowCrossEntity | boolean | No | |
orgId | string | Yes | |
userId | string | No | |
onAttributeSelect | (attribute: AttributeModel) => void | No | |
showUserSpecific | boolean | No | |
showSystemWide | boolean | No | |
enableBulkOperations | boolean | No |
AttributeFormProps
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
initialData | Partial<AttributeModel> | No | |
entityType | string | Yes | |
attributeType | "tag" | "category" | "meta" | Yes | |
onSubmit | (data: AttributeModel) => Promise<void> | Yes | |
onCancel | () => void | Yes | |
isLoading | boolean | No | |
allowTypeChange | boolean | No | |
allowEntityTypeChange | boolean | No |
AttributeFilterProps
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
value | AttributeFilters | Yes | |
onChange | (filters: AttributeFilters) => void | Yes | |
availableEntityTypes | string[] | No | |
showUserSpecificToggle | boolean | No | |
showArchivedToggle | boolean | No | |
showClearButton | boolean | No |
CategoryTagFilter
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
categoryId | string | No | |
tagIds | string[] | No |
CategoryTagFilterProps
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
value | CategoryTagFilter | Yes | |
onChange | (filter: CategoryTagFilter) => void | Yes | |
showClearButton | boolean | No |
AttributeStatistics
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
id | string | Yes | |
name | string | Yes | |
title | string | Yes | |
color | string | Yes | |
type | "tag" | "category" | "meta" | Yes | |
entityType | string | Yes | |
usageCount | number | Yes | |
popularityRank | number | Yes | |
entityBreakdown | { [key: string]: number; tasks: number; projects: number; milestones: number; clients: number; opportunities: number; goals: number; } | Yes | |
userSpecific | boolean | Yes | |
createdAt | string | Yes | |
lastUsed | string | No |
AttributeUsageReport
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
attributes | AttributeStatistics[] | 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:
| Property | Type | Required | Description |
|---|---|---|---|
action | "delete" | "archive" | "restore" | "update" | "changeType" | "changeEntity" | Yes | |
attributeIds | string[] | Yes | |
updateData | Partial<AttributeFormData> | No | |
targetType | "tag" | "category" | "meta" | No | |
targetEntityType | string | No |
BulkOperationResult
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
successful | string[] | Yes | |
failed | { id: string; error: string; }[] | Yes | |
summary | { total: number; successful: number; failed: number; } | Yes |
AttributeMigrationOptions
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
dryRun | boolean | No | |
batchSize | number | No | |
preserveIds | boolean | No | |
handleDuplicates | "skip" | "merge" | "rename" | No | |
logProgress | boolean | No |
AttributeMigrationResult
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
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:
| Property | Type | Required | Description |
|---|---|---|---|
entityId | string | Yes | |
entityType | string | Yes | |
attributeIds | string[] | Yes | |
categoryId | string | No | |
tagIds | string[] | No |
ValidationResult
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
isValid | boolean | Yes | |
errors | AttributeValidationErrors | Yes | |
warnings | string[] | No |
ColorOption
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
id | string | Yes | |
name | string | Yes | |
value | string | Yes | |
orgId | string | Yes | |
order | number | Yes | |
isDefault | boolean | No | |
attributeType | "tag" | "category" | "meta" | "all" | No |
OrganizationColorPalette
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
orgId | string | Yes | |
colors | ColorOption[] | Yes | |
updatedAt | string | Yes | |
updatedBy | string | Yes | |
defaultTagColor | string | Yes | |
defaultCategoryColor | string | Yes | |
defaultMetaColor | string | Yes |
AttributeSearchOptions
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
query | string | Yes | |
entityTypes | string[] | No | |
attributeTypes | ("tag" | "category" | "meta")[] | No | |
includeArchived | boolean | No | |
userSpecificOnly | boolean | No | |
systemWideOnly | boolean | No | |
fuzzy | boolean | No | |
limit | number | No | |
offset | number | No |
AttributeSearchResult
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
attributes | AttributeModel[] | Yes | |
total | number | Yes | |
hasMore | boolean | Yes | |
searchTime | number | Yes | |
query | string | Yes | |
suggestions | string[] | No |
AttributeEndpoints
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
list | string | Yes | |
create | string | Yes | |
update | (id: string) => string | Yes | |
delete | (id: string) => string | Yes | |
archive | (id: string) => string | Yes | |
restore | (id: string) => string | Yes | |
search | string | Yes | |
bulkOperation | string | Yes | |
usage | (id: string) => string | Yes | |
statistics | string | Yes |
AttributeSystemConfig
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
maxAttributesPerEntity | number | Yes | |
maxNameLength | number | Yes | |
maxTitleLength | number | Yes | |
maxDescriptionLength | number | Yes | |
allowUserSpecificAttributes | boolean | Yes | |
allowCrossEntityAttributes | boolean | Yes | |
enablePopularityTracking | boolean | Yes | |
defaultColors | { category: string; tag: string; meta: string; } | Yes | |
validation | { requireDescription: boolean; allowDuplicateTitles: boolean; enforceNamingConvention: boolean; } | Yes |
FlowstateAppConfig
Configuration for a Flowstate App
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
showNavigation | boolean | No | Show navigation (sidebar + header) when true. Default: true |
showSidebar | boolean | No | Show sidebar. Default: true |
showHeader | boolean | No | Show header. Default: true |
basePath | string | No | Base path for routing (e.g., "/todo-test" when embedded). Default: "/" |
useHostRouter | boolean | No | Use MemoryRouter instead of BrowserRouter (for Next.js embedding). Default: false |
theme | "light" | "dark" | No | Theme preference. Default: "light" |
className | string | No | Additional CSS classes for root container |
auth | { provider: React.ComponentType<{ children: ReactNode; }>; useAuth: () => any; } | No | Injected authentication service |
db | { provider: React.ComponentType<{ children: ReactNode; }>; useDB: () => any; } | No | Injected database service |
FlowstateAppProps
Props for Flowstate App root component
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
config | FlowstateAppConfig | No | App configuration |
children | ReactNode | No | Children to render |
FlowstateAppLayoutProps
Props for FlowstateAppLayout component
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
sidebar | ReactNode | No | Sidebar component to render |
header | ReactNode | No | Header component to render |
footer | ReactNode | No | Footer/StatusBar component to render |
children | ReactNode | Yes | Main content |
LoadingItem
Individual loading item
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
id | string | Yes | |
label | string | Yes | |
state | LoadingItemState | Yes | |
progress | number | No | |
category | string | No | |
error | string | No | |
startTime | number | No |
LoaderState
Overall loader state
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
items | Map<string, LoadingItem> | Yes | |
isLoading | boolean | Yes | |
allComplete | boolean | Yes |
LoaderConfig
Loader configuration
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
minDisplayTime | number | Yes | |
successPauseDuration | number | Yes | |
staggerDelay | number | No |
CalendarEvent
Project calendar event extending FullCalendar's EventInput interface Maintains compatibility while adding project-specific properties
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
eventType | EventType | Yes | |
projectId | string | Yes | |
milestoneId | string | No | |
taskId | string | No | |
status | CalendarEventStatus | Yes | |
priority | "low" | "medium" | "high" | "critical" | No | |
progress | number | No | |
timeBudgetHours | number | No | |
timeSpentHours | number | No | |
estimatedHours | number | No | |
parentEventId | string | No | |
dependentEventIds | string[] | No | |
recurrencePattern | RecurrencePattern | No | |
isRecurringInstance | boolean | No | |
recurrenceInstanceDate | string | No | |
statusColor | string | No | |
priorityColor | string | No | |
showProgress | boolean | No | |
isEditable | boolean | No | |
isDeletable | boolean | No | |
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:
| Property | Type | Required | Description |
|---|---|---|---|
projectIds | string[] | No | |
milestoneIds | string[] | No | |
eventTypes | EventType[] | No | |
statuses | CalendarEventStatus[] | No | |
priorities | ("low" | "medium" | "high" | "critical")[] | No | |
assignedUserIds | string[] | No | |
createdByUserIds | string[] | No | |
startDate | string | No | |
endDate | string | No | |
showOverdueOnly | boolean | No | |
showUpcomingOnly | boolean | No | |
daysAhead | number | No | |
minProgress | number | No | |
maxProgress | number | No | |
hasTimeBudget | boolean | No | |
isOverBudget | boolean | No | |
showRecurringOnly | boolean | No | |
hideCompletedRecurring | boolean | No | |
tags | string[] | No | |
hasNotes | boolean | No | |
hasDependencies | boolean | No |
CalendarViewState
Current state of the calendar view
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
currentView | CalendarViewMode | Yes | |
currentDate | string | Yes | |
scope | CalendarScope | Yes | |
scopeId | string | No | |
filters | CalendarFilters | Yes | |
showWeekends | boolean | Yes | |
showTimeGrid | boolean | Yes | |
showAllDayEvents | boolean | Yes | |
showProgress | boolean | Yes | |
showTimeTracking | boolean | Yes | |
showDependencies | boolean | Yes | |
showRecurrenceIndicator | boolean | Yes | |
selectedEventIds | string[] | Yes | |
draggedEventId | string | No | |
isCreatingEvent | boolean | Yes | |
isEditingEvent | boolean | Yes | |
isLoading | boolean | Yes | |
error | string | No | |
lastRefresh | string | No |
TimelineItem
Timeline item for project timeline views
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
id | string | Yes | |
title | string | Yes | |
type | EventType | Yes | |
startDate | string | Yes | |
endDate | string | No | |
duration | number | No | |
projectId | string | Yes | |
milestoneId | string | No | |
parentId | string | No | |
level | number | Yes | |
status | CalendarEventStatus | Yes | |
progress | number | Yes | |
dependencies | string[] | Yes | |
criticalPath | boolean | Yes | |
color | string | Yes | |
backgroundColor | string | Yes | |
textColor | string | No | |
assignedUsers | string[] | Yes | |
timeBudgetHours | number | No | |
timeSpentHours | number | No | |
priority | "low" | "medium" | "high" | "critical" | No | |
isExpanded | boolean | No | |
hasChildren | boolean | No | |
children | TimelineItem[] | No |
TimelineViewConfig
Timeline view configuration
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
timeScale | "day" | "week" | "month" | "quarter" | Yes | |
startDate | string | Yes | |
endDate | string | Yes | |
showCriticalPath | boolean | Yes | |
showDependencies | boolean | Yes | |
showProgress | boolean | Yes | |
showMilestones | boolean | Yes | |
groupBy | "project" | "milestone" | "status" | "user" | "none" | Yes | |
expandAllGroups | boolean | Yes | |
allowReordering | boolean | Yes | |
allowResizing | boolean | Yes | |
allowDependencyEditing | boolean | Yes |
CalendarEventSelection
Calendar event selection information
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
eventId | string | Yes | |
event | CalendarEvent | Yes | |
startDate | string | Yes | |
endDate | string | No | |
allDay | boolean | Yes |
CalendarDateSelection
Calendar date selection information
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
startDate | string | Yes | |
endDate | string | No | |
allDay | boolean | Yes | |
suggestedEventType | EventType | No | |
suggestedProjectId | string | No | |
suggestedMilestoneId | string | No |
CalendarEventUpdate
Event modification data
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
eventId | string | Yes | |
changes | Partial<CalendarEvent> | Yes | |
updateType | "move" | "resize" | "edit" | "status-change" | Yes | |
originalEvent | CalendarEvent | Yes |
CalendarEventCreate
Event creation data
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
title | string | Yes | |
eventType | EventType | Yes | |
projectId | string | Yes | |
milestoneId | string | No | |
startDate | string | Yes | |
endDate | string | No | |
allDay | boolean | Yes | |
description | string | No | |
priority | "low" | "medium" | "high" | "critical" | No | |
timeBudgetHours | number | No | |
assignedUserIds | string[] | No | |
recurrencePattern | RecurrencePattern | No |
CalendarStatistics
Calendar view statistics
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
totalEvents | number | Yes | |
eventsByType | Record<EventType, number> | Yes | |
eventsByStatus | Record<CalendarEventStatus, number> | Yes | |
eventsByPriority | Record<"low" | "medium" | "high" | "critical", number> | Yes | |
averageProgress | number | Yes | |
completedEvents | number | Yes | |
overdueEvents | number | Yes | |
totalBudgetedHours | number | Yes | |
totalSpentHours | number | Yes | |
averageTimePerEvent | number | Yes | |
overBudgetEvents | number | Yes | |
earliestEventDate | string | Yes | |
latestEventDate | string | Yes | |
eventsInCurrentView | number | Yes | |
recurringEventCount | number | Yes | |
nextRecurringEvents | CalendarEvent[] | Yes |
CalendarPerformanceMetrics
Performance metrics for calendar rendering
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
eventsLoaded | number | Yes | |
renderTime | number | Yes | |
filterTime | number | Yes | |
lastUpdateTimestamp | string | Yes | |
memoryUsage | number | No |
CalendarPreferences
User preferences for calendar display
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
defaultView | CalendarViewMode | Yes | |
defaultScope | CalendarScope | Yes | |
firstDayOfWeek | 0 | 2 | 1 | 3 | 5 | 4 | 6 | Yes | |
showWeekNumbers | boolean | Yes | |
show24HourTime | boolean | Yes | |
showEventTooltips | boolean | Yes | |
showProgressBars | boolean | Yes | |
showTimeTracking | boolean | Yes | |
colorScheme | "light" | "dark" | "auto" | Yes | |
eventColorMode | "project" | "status" | "custom" | "priority" | Yes | |
showOverdueWarnings | boolean | Yes | |
showUpcomingDeadlines | boolean | Yes | |
deadlineWarningDays | number | Yes | |
defaultFilters | CalendarFilters | Yes | |
saveFilterState | boolean | Yes | |
enableDragAndDrop | boolean | Yes | |
enableEventResize | boolean | Yes | |
enableQuickEventCreation | boolean | Yes | |
confirmEventDeletion | boolean | Yes | |
maxEventsToLoad | number | Yes | |
enableLazyLoading | boolean | Yes | |
cacheEventData | boolean | Yes |
CalendarColorMapping
Color mapping for different event aspects
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
status | Record<CalendarEventStatus, string> | Yes | |
priority | Record<"low" | "medium" | "high" | "critical", string> | Yes | |
eventType | Record<EventType, string> | Yes | |
project | Record<string, string> | Yes |
CalendarContext
Calendar context information
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
userId | string | Yes | |
orgId | string | Yes | |
canCreateEvents | boolean | Yes | |
canEditEvents | boolean | Yes | |
canDeleteEvents | boolean | Yes | |
canManageRecurrence | boolean | Yes | |
availableProjects | ProjectModel[] | Yes | |
availableMilestones | MilestoneModel[] | Yes | |
preferences | CalendarPreferences | Yes | |
colorMapping | CalendarColorMapping | Yes | |
features | { timeTracking: boolean; recurrence: boolean; dependencies: boolean; ganttView: boolean; timelineView: boolean; } | Yes |
CalendarHookReturn
Calendar hook return type for state management
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
viewState | CalendarViewState | Yes | |
events | CalendarEvent[] | Yes | |
statistics | CalendarStatistics | Yes | |
performance | CalendarPerformanceMetrics | Yes | |
setView | (view: CalendarViewMode) => void | Yes | |
setDate | (date: string) => void | Yes | |
setFilters | (filters: Partial<CalendarFilters>) => void | Yes | |
setScope | (scope: CalendarScope, scopeId?: string) => void | Yes | |
createEvent | (eventData: CalendarEventCreate) => Promise<CalendarEvent> | Yes | |
updateEvent | (eventId: string, changes: Partial<CalendarEvent>) => Promise<CalendarEvent> | Yes | |
deleteEvent | (eventId: string) => Promise<void> | Yes | |
selectEvent | (eventId: string) => void | Yes | |
selectDate | (selection: CalendarDateSelection) => void | Yes | |
clearSelection | () => void | Yes | |
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:
| Property | Type | Required | Description |
|---|---|---|---|
connected | boolean | Yes | |
url | string | Yes | |
latencyMs | number | No |
RxDBConnectionStatus
RxDB connection with replication status
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
replicating | boolean | Yes | |
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:
| Property | Type | Required | Description |
|---|---|---|---|
model | string | Yes |
RAGErrorEntry
Error entry from the sync pipeline
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
documentId | string | Yes | |
error | string | Yes | |
timestamp | string | Yes | |
attempts | number | Yes |
RAGPipelineStatus
Pipeline processing metrics
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
queueDepth | number | Yes | |
activeProcessing | number | Yes | |
maxConcurrency | number | Yes | |
totalProcessed | number | Yes | |
totalSkipped | number | Yes | |
totalErrors | number | Yes | |
totalRetries | number | Yes | |
processedByCollection | Record<string, number> | Yes | |
skippedByCollection | Record<string, number> | Yes | |
recentErrors | RAGErrorEntry[] | Yes |
RAGVectorStoreStatus
Vector store statistics
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
totalDocuments | number | Yes | |
byCollection | Record<string, number> | Yes | |
indexes | Record<string, string> | Yes |
RAGServiceStatus
Service health info
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
uptime | number | Yes | |
startedAt | string | Yes | |
version | string | Yes |
RAGConnectionsStatus
Connection status for all services
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
surrealdb | ConnectionStatus | Yes | |
rxdb | RxDBConnectionStatus | Yes | |
redis | ConnectionStatus | Yes | |
ollama | OllamaConnectionStatus | Yes |
RAGAdminStatus
Complete admin status response from /api/rag-sync/admin/status
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
service | RAGServiceStatus | Yes | |
connections | RAGConnectionsStatus | Yes | |
pipeline | RAGPipelineStatus | Yes | |
vectorStore | RAGVectorStoreStatus | Yes |
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:
| Property | Type | Required | Description |
|---|---|---|---|
id | string | Yes | Unique identifier for this server configuration. |
| Generated automatically when the server config is created. | |||
name | string | Yes | Human-readable display name for the server. |
url | string | Yes | RxDB server URL endpoint. |
databaseName | string | Yes | IndexedDB 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:
| Property | Type | Required | Description |
|---|---|---|---|
servers | ServerConfig[] | Yes | Array 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:
| Property | Type | Required | Description |
|---|---|---|---|
merge | boolean | No | Whether 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:
| Property | Type | Required | Description |
|---|---|---|---|
imported | number | Yes | Number of servers successfully imported. |
failed | number | Yes | Number of servers that failed to import. |
errors | { serverName: string; error: string; }[] | Yes | Array of error messages for failed imports. |
skipped | number | Yes | Whether any servers were skipped due to validation failures. |
ExportedConfigs
Exported configuration format.
Wraps server configurations with metadata for versioning and validation.
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
version | string | Yes | Schema 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:
| Property | Type | Required | Description |
|---|---|---|---|
isValid | boolean | Yes | Whether the configuration is valid. |
errors | Partial<Record<keyof ServerConfig, string>> | Yes | Validation error messages keyed by field name. |
warnings | string[] | No | Warning messages (non-blocking issues). |
ServerHealthCheck
Server health check result.
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
isHealthy | boolean | Yes | Whether the server is reachable and responding. |
statusCode | number | No | HTTP response status code. |
responseTime | number | No | Response time in milliseconds. |
serverVersion | string | No | Server version information if available. |
error | string | No | Error message if health check failed. |
checkedAt | string | Yes | ISO 8601 timestamp of when the health check was performed. |
RecurrencePattern
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
id | string | Yes | |
frequency | RecurrenceFrequency | Yes | |
interval | number | Yes | |
startDate | string | Yes | |
endDate | string | No | |
count | number | No | |
byWeekDay | WeekDay[] | No | |
byMonthDay | number[] | No | |
byMonth | number[] | No | |
byYearDay | number[] | No | |
monthlyType | MonthlyRecurrenceType | No | |
rrule | string | Yes | |
timezone | string | Yes | |
createdAt | string | Yes | |
updatedAt | string | Yes |
RecurrenceInstance
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
id | string | Yes | |
taskId | string | Yes | |
recurrenceId | string | Yes | |
instanceDate | string | Yes | |
status | "completed" | "scheduled" | "modified" | "cancelled" | Yes | |
originalTaskId | string | No | |
modifiedFields | Partial<TaskRecurrenceFields> | No | |
createdAt | string | Yes | |
updatedAt | string | Yes |
TaskRecurrenceFields
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
name | string | Yes | |
title | string | Yes | |
description | string | Yes | |
dueAt | string | No | |
status | "To Do" | "In Progress" | "Complete" | "On Hold" | "Blocked" | Yes | |
timeBudgetHours | number | No |
RecurringTaskModel
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
isRecurring | boolean | Yes | |
recurrencePattern | RecurrencePattern | No | |
parentTaskId | string | No | |
isTemplate | boolean | Yes | |
originalInstanceDate | string | No |
RecurrenceStatistics
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
totalInstances | number | Yes | |
completedInstances | number | Yes | |
upcomingInstances | number | Yes | |
overdueInstances | number | Yes | |
completionRate | number | Yes | |
nextDueDate | string | No | |
lastCompletedDate | string | No |
CreateRecurrencePatternData
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
frequency | RecurrenceFrequency | Yes | |
interval | number | Yes | |
startDate | string | Yes | |
endDate | string | No | |
count | number | No | |
byWeekDay | WeekDay[] | No | |
byMonthDay | number[] | No | |
byMonth | number[] | No | |
byYearDay | number[] | No | |
monthlyType | MonthlyRecurrenceType | No | |
timezone | string | Yes |
UpdateRecurrencePatternData
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
frequency | RecurrenceFrequency | No | |
interval | number | No | |
endDate | string | No | |
count | number | No | |
byWeekDay | WeekDay[] | No | |
byMonthDay | number[] | No | |
byMonth | number[] | No | |
byYearDay | number[] | No | |
monthlyType | MonthlyRecurrenceType | No |
RecurrenceValidationResult
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
isValid | boolean | Yes | |
errors | string[] | Yes | |
warnings | string[] | Yes |
GenerateInstancesOptions
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
startDate | string | Yes | |
endDate | string | Yes | |
maxInstances | number | No | |
includeCompleted | boolean | No |
RecurrenceFormData
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
frequency | RecurrenceFrequency | Yes | |
interval | number | Yes | |
startDate | string | Yes | |
endType | "date" | "never" | "count" | Yes | |
endDate | string | No | |
count | number | No | |
weekDays | WeekDay[] | No | |
monthDays | number[] | No | |
months | number[] | No | |
yearDays | number[] | No | |
monthlyType | MonthlyRecurrenceType | No |
RecurrencePreview
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
nextFiveInstances | string[] | Yes | |
totalInstancesInYear | number | Yes | |
estimatedEndDate | string | No |
CalendarRecurrenceInstance
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
id | string | Yes | |
instanceDate | string | Yes | |
originalTaskId | string | Yes | |
isRecurringInstance | boolean | Yes | |
recurrenceId | string | Yes | |
status | "completed" | "scheduled" | "modified" | "cancelled" | Yes | |
modifiedFields | Partial<TaskRecurrenceFields> | No | |
calendarEvent | CalendarEvent | Yes |
RecurrenceDisplayOptions
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
startDate | string | Yes | Date range to generate instances for |
endDate | string | Yes | |
maxInstances | number | No | Maximum number of instances to generate |
includeCompleted | boolean | No | Whether to include completed instances |
showRecurrenceIndicator | boolean | No | Whether to show recurring indicators |
timezone | string | No | Timezone for display calculations |
EditRecurrenceOptions
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
editScope | "all" | "this" | "future" | Yes | Whether to edit only this instance or all future instances |
instanceDate | string | Yes | The specific instance date being edited |
modifiedFields | Partial<TaskRecurrenceFields> | Yes | Modified task fields |
RecurrenceCalendarData
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
instances | CalendarRecurrenceInstance[] | Yes | Generated calendar instances |
statistics | { totalInstances: number; completedInstances: number; upcomingInstances: number; overdueInstances: number; } | Yes | Statistics about the recurrence |
nextOccurrence | { date: string; daysUntil: number; } | No | Next occurrence information |
ProjectValidationErrors
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
title | string | No | |
description | string | No | |
goalId | string | No |
ProjectUpdateData
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
title | string | Yes | |
description | string | Yes | |
goalId | string | No |
AttributeListItemProps
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
attribute | AttributeModel | Yes | |
onEdit | (attribute: AttributeModel) => void | No | |
onDelete | (attribute: AttributeModel) => void | No | |
onArchive | (attribute: AttributeModel) => void | No | |
showActions | boolean | No | |
compact | boolean | No |
PresetInfo
Preset info for display in the selector
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
name | PresetType | Yes | |
title | string | Yes | |
description | string | Yes | |
categoryCount | number | Yes | |
tagCount | number | Yes |
AttributeManagerPanelProps
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
attributes | AttributeModel[] | Yes | All attributes to display |
loading | boolean | No | Loading state |
error | string | No | Error message |
onCreate | (type: AttributeTab) => void | No | Called when user wants to create a new attribute |
onEdit | (attribute: AttributeModel) => void | No | Called when user wants to edit an attribute |
onDelete | (attribute: AttributeModel) => void | No | Called when user wants to delete an attribute |
onArchive | (attribute: AttributeModel) => void | No | Called when user wants to archive an attribute |
onSeedDefaults | (preset: PresetType) => void | No | Called when user wants to seed default attributes with a specific preset |
onSeedFromPresets | (presets: PresetType[]) => void | No | Called when user wants to seed from multiple presets |
showSeedButton | boolean | No | Whether to show the seed defaults button |
title | string | No | Custom title |
compact | boolean | No | Whether to show compact items |
LoginFormProps
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
onSuccess | () => void | No | Callback when login is successful |
onError | (error: Error) => void | No | Callback when an error occurs |
className | string | No | Custom class name for the form container |
showTitle | boolean | No | Whether to show a title |
title | string | No | Custom title text |
DateDisplayProps
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
date | string | Date | Yes | UTC ISO string or Date object to display |
format | DateDisplayFormat | No | Format style for the date display |
customFormat | string | No | Custom date-fns format string (overrides format prop) |
timezone | string | No | Override timezone (uses user preference by default) |
fallback | string | No | Fallback text when date is invalid or null |
className | string | No | CSS classes to apply to the display element |
showTimezone | boolean | No | Show timezone abbreviation/name |
RelativeTimeDisplayProps
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
date | string | Date | Yes | UTC ISO string or Date object to display |
timezone | string | No | Override timezone (uses user preference by default) |
fallback | string | No | Fallback text when date is invalid or null |
className | string | No | CSS classes to apply to the display element |
showTooltip | boolean | No | Show full date/time on hover |
updateInterval | number | No | Auto-update interval in milliseconds (default: 60000 = 1 minute) |
disableAutoUpdate | boolean | No | Disable auto-updating for performance |
addSuffix | boolean | No | Include 'ago' suffix (default: true) |
includeSeconds | boolean | No | Use more precise units (seconds) for very recent dates |
FloatingAction
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
id | string | Yes | |
label | string | Yes | |
icon | React.ReactNode | Yes | |
onClick | () => void | Yes | |
color | "brand" | "blue" | "green" | "purple" | "red" | "orange" | No | |
disabled | boolean | No |
CollectionSelectOption
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
value | string | Yes | |
label | string | Yes | |
data | any | No | |
isCreated | boolean | No |
CollectionSelectProps
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
id | string | No | |
label | string | No | |
placeholder | string | No | |
className | string | No | |
disabled | boolean | No | |
required | boolean | No | |
error | string | No | |
helperText | string | No | |
isMulti | boolean | No | |
isClearable | boolean | No | |
isCreatable | boolean | No | |
isSearchable | boolean | No | |
collectionName | string | Yes | |
selector | any | No | |
sort | any | No | |
labelField | string | No | |
valueField | string | No | |
searchFields | string[] | No | |
value | string | string[] | CollectionSelectOption | CollectionSelectOption[] | No | |
onChange | (value: OnChangeValue<CollectionSelectOption, boolean>, actionMeta: ActionMeta<CollectionSelectOption>) => void | No | |
onCreateOption | (inputValue: string) => Promise<CollectionSelectOption | null> | No | |
createOptionPrompt | string | No | |
onCreateModalOpen | (inputValue: string) => void | No | |
dynamicSelector | (searchText: string) => any | No | |
dependsOn | string | No | |
dependsOnValue | any | No | |
skipOrgFiltering | boolean | No | |
skipUserFiltering | boolean | No | |
noOptionsMessage | string | No | |
loadingMessage | string | No | |
colorMode | "light" | "dark" | No |
RichTextConfig
TypeScript interfaces for field components Follows existing field component patterns while adding rich text editor support
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
enabled | boolean | No | Enable/disable rich text editing - falls back to textarea if false |
toolbar | (string | Record<string, any>)[][] | No | Quill toolbar configuration - string array or nested array with objects for complex buttons |
modules | any | No | Quill modules configuration |
formats | string[] | No | Allowed formats for the editor |
theme | "snow" | "bubble" | No | Editor theme - 'snow' (default) or 'bubble' |
maxLength | number | No | Maximum character length for content |
placeholder | string | No | Placeholder text for empty editor |
spellCheck | boolean | No | Enable/disable spell check |
readOnly | boolean | No | Read-only mode |
className | string | No | Custom CSS classes for the editor |
RichTextEditorProps
Props interface for RichTextEditor component Based on existing field component patterns
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
id | string | Yes | Unique identifier for the field |
label | string | No | Display label for the field |
value | string | Yes | Current value (markdown format for storage) |
onChange | (value: string) => void | Yes | Change handler - receives markdown string |
error | string | No | Error message to display |
helperText | string | No | Helper text to display below the field |
config | RichTextConfig | No | Rich text editor configuration |
disabled | boolean | No | Disable the editor |
className | string | No | Additional CSS classes |
extra | string | No | Extra styles or classes (following existing field pattern) |
state | string | No | Field state for styling (following existing field pattern) |
placeholder | string | No | Placeholder text (overrides config.placeholder) |
variant | string | No | Variant styling (following existing field pattern) |
RichTextConfigValidation
Configuration validation result
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
isValid | boolean | Yes | |
errors | string[] | Yes | |
warnings | string[] | Yes | |
sanitizedConfig | RichTextConfig | Yes |
RichTextFieldConfig
Type for field configuration in ClassForm that includes rich text options Extends the existing FieldConfig pattern
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
richTextEditor | RichTextConfig | No | Rich text editor configuration |
LoadingSpinnerProps
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
size | number | "sm" | "md" | "lg" | "xl" | No | Size variant: 'sm' (32px), 'md' (64px), 'lg' (96px), 'xl' (128px), or custom number |
message | string | No | Optional message to display below the spinner |
className | string | No | Additional className for custom styling |
centered | boolean | No | Whether to center the spinner in its container |
fullScreen | boolean | No | Whether to take full viewport height when centered |
LongTermMemoryListProps
Props for LongTermMemoryList component
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
memories | LongTermMemory[] | Yes | List of memories to display |
isLoading | boolean | No | Whether data is loading |
onEdit | (memory: LongTermMemory) => void | No | Handler for editing a memory |
onDelete | (memory: LongTermMemory) => void | No | Handler for deleting a memory |
onSelect | (memory: LongTermMemory) => void | No | Handler for selecting a memory |
searchQuery | string | No | Search query (used for highlighting) |
emptyMessage | string | No | Empty state message |
colorMode | "light" | "dark" | No | Color mode |
showUserColumn | boolean | No | Show user column |
MemoryAnalyticsData
Memory analytics data structure
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
totalSessions | number | Yes | Total number of sessions |
totalMessages | number | Yes | Total number of messages across all sessions |
totalLongTermMemories | number | Yes | Total number of long-term memories |
totalTokens | number | No | Total token usage (if available) |
avgMessagesPerSession | number | No | Average messages per session |
avgTokensPerSession | number | No | Average tokens per session |
activeSessions24h | number | No | Sessions active in last 24 hours |
activeSessions7d | number | No | Sessions active in last 7 days |
topTopics | { topic: string; count: number; }[] | No | Top topics across all memories |
activityByDay | { date: string; sessions: number; messages: number; }[] | No | Activity by day (last 7 days) |
memoryTypeDistribution | { type: string; count: number; }[] | No | Memory type distribution |
MemoryAnalyticsProps
Props for MemoryAnalytics component
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
data | MemoryAnalyticsData | Yes | Analytics data to display |
isLoading | boolean | No | Whether data is loading |
error | Error | No | Error message |
onRefresh | () => void | No | Handler for refresh |
orgName | string | No | Organization name for display |
MemoryControlsProps
Props for MemoryControls component
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
isEnabled | boolean | Yes | Whether memory is enabled |
messageCount | number | Yes | Number of messages in memory |
lastUpdated | string | No | Last update timestamp (ISO string) |
isLoading | boolean | No | Whether memory is loading |
hasError | boolean | No | Whether there's an error |
errorMessage | string | No | Error message |
onClear | () => Promise<void> | Yes | Handler for clearing memory |
onOpenManager | () => void | No | Handler for opening memory manager (optional) |
colorMode | "light" | "dark" | No | Color mode for styling |
className | string | No | Optional className |
MemorySearchPanelProps
Props for MemorySearchPanel component
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
results | UnifiedSearchResult[] | Yes | Search results to display |
isLoading | boolean | No | Whether search is in progress |
error | Error | No | Error message to display |
workingMemoryCount | number | No | Count of working memory results |
longTermMemoryCount | number | No | Count of long-term memory results |
currentQuery | string | No | Current search query |
onSearch | (query: string, options: SearchOptions) => void | Yes | Handler for search submission |
onClear | () => void | No | Handler for clearing results |
onResultSelect | (result: UnifiedSearchResult) => void | No | Handler for selecting a result |
debounceMs | number | No | Debounce delay in ms (0 to disable) |
placeholder | string | No | Placeholder text for search input |
emptyMessage | string | No | Empty state message |
showFilters | boolean | No | Whether to show filter options |
SearchOptions
Search filter options
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
includeWorkingMemory | boolean | Yes | |
includeLongTermMemory | boolean | Yes |
MemorySessionDetailProps
Props for MemorySessionDetail component
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
sessionId | string | Yes | Session ID |
memory | AmsMemory | Yes | Memory data |
isLoading | boolean | No | Whether data is loading |
onBack | () => void | No | Handler for going back |
onDelete | () => void | No | Handler for deleting |
onRefresh | () => void | No | Handler for refreshing |
showActions | boolean | No | Whether actions are enabled |
colorMode | "light" | "dark" | No | Color mode |
MemorySessionListProps
Props for MemorySessionList component
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
sessions | AmsSession[] | Yes | List of sessions |
isLoading | boolean | No | Whether data is loading |
onSelectSession | (session: AmsSession) => void | No | Handler for selecting a session |
onDeleteSession | (sessionId: string) => void | No | Handler for deleting a session |
selectedSessionId | string | No | Currently selected session ID |
showUserColumn | boolean | No | Show user column |
emptyMessage | string | No | Empty state message |
colorMode | "light" | "dark" | No | Color mode |
MemoryStatusIndicatorProps
Props for MemoryStatusIndicator component
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
isEnabled | boolean | Yes | Whether memory is enabled |
messageCount | number | Yes | Number of messages in memory |
isLoading | boolean | No | Whether memory is loading |
hasError | boolean | No | Whether there's an error |
errorMessage | string | No | Error message for tooltip |
onClick | () => void | No | Click handler |
colorMode | "light" | "dark" | No | Color mode for styling |
className | string | No | Optional 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:
| Property | Type | Required | Description |
|---|---|---|---|
bg | string | Yes | |
bgDark | string | Yes | |
text | string | Yes | |
textDark | string | Yes | |
border | string | Yes | |
borderDark | string | Yes |
OrgColorFamily
A complete color family for an organization and its children. All use the same base color but with different intensities/accents.
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
org | ColorScheme | Yes | Primary color for the org badge (most prominent) |
workspace | ColorScheme | Yes | Slightly lighter shade for workspace |
project | ColorScheme | Yes | Medium accent for project |
milestone | ColorScheme | Yes | Subtle accent for milestone |
ColorSchemeSelectorProps
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
value | number | No | Currently selected color scheme index (0-7, or undefined for auto) |
onChange | (index: number | undefined) => void | Yes | Callback when color scheme is selected |
label | string | No | Optional label |
className | string | No | Optional className for the container |
OrgDetailPageProps
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
db | any | Yes | Database instance for querying data |
orgId | string | Yes | Organization ID to display |
userId | string | Yes | Current user ID |
onBack | () => void | No | Callback to navigate back |
onWorkspaceCreated | (workspace: WorkspaceModel) => void | No | Callback when workspace is created |
onWorkspaceUpdated | (workspace: WorkspaceModel) => void | No | Callback when workspace is updated |
onWorkspaceDeleted | (workspaceId: string) => void | No | Callback when workspace is deleted |
className | string | No | Custom className |
OrgsPageProps
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
db | any | Yes | Database instance for querying orgs |
userId | string | Yes | Current user ID |
onOrgCreated | (org: OrgModel) => void | No | Callback when org is created |
onOrgUpdated | (org: OrgModel) => void | No | Callback when org is updated |
onOrgDeleted | (orgId: string) => void | No | Callback when org is deleted |
onOrgClick | (orgId: string) => void | No | Callback when org is clicked to view details |
className | string | No | Custom className |
OrgWorkspaceSelectorProps
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
onOrgChange | (org: OrgModel | null) => void | No | Callback when org is selected |
onWorkspaceChange | (workspace: WorkspaceModel | null) => void | No | Callback when workspace is selected |
showCreateButtons | boolean | No | Show create buttons |
onCreateOrg | () => void | No | Callback when create org is clicked |
onCreateWorkspace | () => void | No | Callback when create workspace is clicked |
showManageButtons | boolean | No | Show manage buttons |
onManageOrg | () => void | No | Callback when manage org is clicked |
onManageWorkspace | () => void | No | Callback when manage workspace is clicked |
compact | boolean | No | Compact mode (inline layout) - deprecated, use orientation instead |
orientation | "vertical" | "horizontal" | No | Layout orientation - 'vertical' stacks selectors, 'horizontal' places them inline |
colorMode | "light" | "dark" | No | Color mode for background contrast - 'dark' for dark backgrounds, 'light' for light backgrounds |
className | string | No | Custom className |
WorkspacesPageProps
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
db | any | Yes | Database instance for querying workspaces |
userId | string | Yes | Current user ID |
onWorkspaceCreated | (workspace: WorkspaceModel) => void | No | Callback when workspace is created |
onWorkspaceUpdated | (workspace: WorkspaceModel) => void | No | Callback when workspace is updated |
onWorkspaceDeleted | (workspaceId: string) => void | No | Callback when workspace is deleted |
className | string | No | Custom className |
RAGAdminDashboardProps
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
colorMode | "light" | "dark" | No |
RAGPipelineStatusCardProps
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
pipeline | PipelineStatusType | Yes | |
colorMode | "light" | "dark" | No |
RAGRecentErrorsProps
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
errors | RAGErrorEntry[] | Yes | |
colorMode | "light" | "dark" | No |
RAGServiceHealthProps
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
connections | RAGConnectionsStatus | Yes | |
colorMode | "light" | "dark" | No |
CollectionStatus
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
name | string | Yes | |
state | "active" | "error" | "paused" | Yes | |
documentCount | number | Yes |
RAGSyncCollectionsProps
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
collections | CollectionStatus[] | Yes | |
colorMode | "light" | "dark" | No |
RAGVectorStoreStatsProps
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
vectorStore | RAGVectorStoreStatus | Yes | |
colorMode | "light" | "dark" | No |
ConnectionStatusIndicatorProps
Props for the ConnectionStatusIndicator component
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
status | "error" | "connected" | "disconnected" | "connecting" | Yes | Current 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:
| Property | Type | Required | Description |
|---|---|---|---|
open | boolean | Yes | Whether the dialog is currently open. |
onClose | () => void | Yes | Callback invoked when the dialog should close. |
| Called when user clicks Cancel, closes via X button, or on successful save. | |||
server | ServerConfig | No | Existing server configuration to edit. |
| When undefined, the dialog operates in "add new server" mode. | |||
defaultValues | Partial<Omit<ServerConfig, "id" | "isActive" | "createdAt">> | No | Default values for new server configurations. |
| Only used when server prop is undefined (add mode). | |||
onSave | (config: Omit<ServerConfig, "id" | "createdAt">) => Promise<void> | Yes | Callback invoked when user submits the form. |
| Should handle creating or updating the server configuration. | |||
onTest | (config: ServerConfig) => Promise<boolean> | No | Optional callback to test server connection. |
| When provided, a "Test Connection" button will be shown. | |||
isLoading | boolean | No | Loading state indicator (typically true during save or test operations). |
| When true, form inputs and action buttons are disabled. | |||
error | string | No | Error 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:
| Property | Type | Required | Description |
|---|---|---|---|
servers | ServerConfig[] | Yes | Array 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:
| Property | Type | Required | Description |
|---|---|---|---|
currentServer | ServerProfile | Yes | The currently connected server profile, or null if offline or no server selected |
isOffline | boolean | Yes | Whether the app is in offline mode (local-only storage) |
onClick | () => void | Yes | Callback when the indicator is clicked (typically opens a server switcher menu) |
className | string | No | Additional CSS classes to apply to the button |
ServerSwitcherMenuProps
Props for the ServerSwitcherMenu component
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
servers | ServerProfile[] | Yes | List of available server profiles |
currentServerId | string | Yes | ID of the currently selected server, or null if offline |
isOffline | boolean | Yes | Whether currently in offline mode |
onSelectServer | (serverId: string | null) => void | Yes | Callback when a server is selected (null for offline mode) |
onAddServer | () => void | Yes | Callback when Add Server action is triggered |
onManageServers | () => void | Yes | Callback when Manage Servers action is triggered |
className | string | No | Optional additional class name |
SettingsModalProps
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
isOpen | boolean | Yes | Whether the modal is open |
onClose | () => void | Yes | Callback when modal should close |
initialTab | string | No | Initial tab to show |
paneRenderers | Record<string, React.ComponentType<{ tab: ResolvedSettingsTab; }>> | No | Custom pane renderers by tab ID |
BottomPanelProps
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
defaultTab | string | No | Default tab to show |
minHeight | number | No | Minimum height in pixels |
maxHeight | number | No | Maximum height in pixels |
defaultHeight | number | No | Default height in pixels |
panelRenderers | Record<string, React.ComponentType<{ tab: ResolvedBottomPanelTab; }>> | No | Custom panel content renderers by tab ID |
colorMode | "light" | "dark" | No | Color mode for styling |
headerHeight | string | No | Height of the shell header in CSS units (for maximize calculation) |
onDimensionsChange | (dimensions: { height: number; visible: boolean; }) => void | No | Callback when panel dimensions change (for shell layout adjustment) |
HeaderProps
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
title | string | No | Title displayed in the header |
standalone | boolean | No | Whether running in standalone mode (shows server config) |
colorMode | "light" | "dark" | No | Color mode for styling |
leftContent | React.ReactNode | No | Custom content for the left side (after title) |
rightContent | React.ReactNode | No | Custom content for the right side (before HeaderActions) |
logo | React.ReactNode | No | Custom logo or branding element (replaces title) |
showHeaderActions | boolean | No | Whether to show HeaderActions (default: true) |
showMobileMenuButton | boolean | No | Whether to show mobile menu button (for sidebar toggle) |
onMobileMenuClick | () => void | No | Callback when mobile menu button is clicked |
className | string | No | Additional className for the header container |
height | string | number | No | Height of the header (default: auto) |
HeaderActionsProps
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
className | string | No | Optional className for container |
colorMode | "light" | "dark" | No | Color mode for styling |
RightSidePanelProps
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
children | React.ReactNode | Yes | Panel content |
title | string | No | Panel title displayed in header |
subtitle | string | No | Panel subtitle displayed below title |
minWidth | number | No | Minimum width in pixels |
maxWidth | number | No | Maximum width in pixels |
colorMode | "light" | "dark" | No | Color mode for styling |
headerHeight | string | No | Height of the shell header in CSS units |
onDimensionsChange | (dimensions: { width: number; mode: string; visible: boolean; }) => void | No | Callback when panel dimensions change (for shell layout adjustment) |
onClose | () => void | No | Callback when close button is clicked |
SidebarLink
Individual sidebar link configuration
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
path | string | Yes | Route path |
label | string | Yes | Display label |
icon | string | Yes | Icon name from lucide-react (e.g., 'layout-dashboard') |
color | string | No | Optional accent color for the icon |
priority | number | No | Priority for ordering (lower = higher in list) |
SidebarProps
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
title | string | No | Title displayed at top of sidebar |
links | SidebarLink[] | No | Array of navigation links |
standalone | boolean | No | Whether running in standalone mode (shows additional links) |
colorMode | "light" | "dark" | No | Color mode for styling |
basePath | string | No | Base path for constructing full paths |
logo | React.ReactNode | No | Custom logo or branding element |
footer | React.ReactNode | No | Footer content at bottom of sidebar |
collapsed | boolean | No | Whether sidebar is collapsed (icon-only mode) - controlled externally |
onCollapsedChange | (collapsed: boolean) => void | No | Callback when collapse state changes |
expandedWidth | number | No | Width when expanded (default: 256px / w-64) |
collapsedWidth | number | No | Width when collapsed (default: 64px / w-16) |
className | string | No | Additional className for the sidebar container |
isActive | (path: string) => boolean | No | Check if path is active (defaults to location.pathname.includes) |
ViewStateWrapperProps
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
children | React.ReactNode | Yes | |
initialState | Partial<ViewState> | No | Override initial view state |
paneRenderers | Record<string, React.ComponentType<{ tab: ResolvedSettingsTab; }>> | No | Custom pane renderers for settings modal |
StatusBarProps
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
onExecuteCommand | (commandId: string) => void | No | Handler for executing commands when status bar items are clicked |
className | string | No | Additional class names |
leftItems | React.ReactNode | No | Left-aligned items to render (in addition to contributed items) |
centerItems | React.ReactNode | No | Center-aligned items to render (in addition to contributed items) |
rightItems | React.ReactNode | No | Right-aligned items to render (in addition to contributed items) |
dynamicRenderers | Record<string, (item: any) => React.ReactNode> | No | Dynamic item renderers by item ID |
StatusBarItemProps
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
item | ResolvedStatusBarItem | Yes | The resolved status bar item data |
onExecuteCommand | (commandId: string) => void | No | Handler for executing commands |
children | React.ReactNode | No | Custom content to render (for dynamic items) |
TerminalContextBreadcrumbProps
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
orgId | string | No | Organization ID |
workspaceId | string | No | Workspace ID |
projectId | string | No | Project ID |
milestoneId | string | No | Milestone ID |
taskId | string | No | Task ID |
colorMode | "light" | "dark" | No | Color mode for styling |
maxLabelLength | number | No | Maximum characters for each breadcrumb label |
TerminalSession
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
id | string | Yes | Unique session ID |
displayName | string | Yes | Display name for the session |
connectionStatus | TerminalConnectionStatus | Yes | Connection status |
isActive | boolean | No | Whether this session is currently active/selected |
orgId | string | No | Organization ID for session context |
workspaceId | string | No | Workspace ID for session context |
projectId | string | No | Project ID for session context (optional) |
milestoneId | string | No | Milestone ID for session context (optional) |
taskId | string | No | Task ID for session context (optional) |
serverUrl | string | No | Shell server WebSocket URL |
TerminalSessionItemProps
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
session | TerminalSession | Yes | Session data |
isSelected | boolean | Yes | Whether this session is selected |
onClick | (sessionId: string) => void | Yes | Click handler |
onRename | (sessionId: string, newName: string) => void | Yes | Rename handler |
onClose | (sessionId: string) => void | Yes | Close handler |
onDelete | (sessionId: string, deleteFromDatabase: boolean) => void | No | Delete handler (sessionId, deleteFromDatabase) |
onEdit | (sessionId: string) => void | No | Edit handler - opens session edit form |
colorMode | "light" | "dark" | No | Color mode for styling |
TerminalSessionListProps
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
sessions | TerminalSession[] | Yes | List of terminal sessions |
selectedSessionId | string | Yes | Currently selected session ID |
onSelectSession | (sessionId: string) => void | Yes | Session select handler |
onCreateSession | () => void | Yes | Create new session handler |
onRenameSession | (sessionId: string, newName: string) => void | Yes | Rename session handler |
onCloseSession | (sessionId: string) => void | Yes | Close session handler |
onDeleteSession | (sessionId: string, deleteFromDatabase: boolean) => void | No | Delete session handler (sessionId, deleteFromDatabase) |
onEditSession | (sessionId: string) => void | No | Edit session handler - opens edit form |
width | number | No | Width of the session list in pixels |
colorMode | "light" | "dark" | No | Color mode for styling |
collapsed | boolean | No | Whether the list is collapsed |
onToggleCollapse | () => void | No | Collapse toggle handler |
isLoading | boolean | No | Whether server sessions are loading |
TerminalTabProps
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
tab | ResolvedBottomPanelTab | Yes | Bottom panel tab data |
colorMode | "light" | "dark" | No | Color mode for styling |
renderTerminal | (sessionId: string) => React.ReactNode | No | Terminal content renderer - renders the actual terminal for a session |
renderCreateForm | (props: { onCancel: () => void; }) => React.ReactNode | No | Optional custom form renderer for creating new sessions |
renderEditForm | (props: { sessionId: string; onCancel: () => void; }) => React.ReactNode | No | Optional custom form renderer for editing sessions |
renderThemePicker | () => React.ReactNode | No | Optional renderer for theme picker in the toolbar area |
sessions | TerminalSession[] | No | External sessions (if managed externally) |
selectedSessionId | string | No | Selected session ID (if managed externally) |
isCreating | boolean | No | Whether currently showing create form |
isEditing | boolean | No | Whether currently showing edit form |
editingSessionId | string | No | Session ID being edited |
isLoadingServerSessions | boolean | No | Whether server sessions are loading |
onSelectSession | (sessionId: string) => void | No | Session select handler (if managed externally) |
onCreateSession | () => void | No | Create session handler - called when + is clicked (shows form if renderCreateForm provided) |
onRenameSession | (sessionId: string, newName: string) => void | No | Rename session handler (if managed externally) |
onCloseSession | (sessionId: string) => void | No | Close session handler (if managed externally) |
onDeleteSession | (sessionId: string, deleteFromDatabase: boolean) => void | No | Delete session handler (if managed externally) |
onEditSession | (sessionId: string) => void | No | Edit session handler (if managed externally) |
onCancelCreate | () => void | No | Cancel create session handler |
onCancelEdit | () => void | No | Cancel edit session handler |
sessionListWidth | number | No | Session list width |
showSessionList | boolean | No | Whether to show session list |
TerminalThemePresetInfo
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
id | string | Yes | |
name | string | Yes | |
description | string | Yes | |
theme | { background?: string; foreground?: string; cyan?: string; cursor?: string; } | Yes |
TerminalThemePickerProps
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
presets | readonly TerminalThemePresetInfo[] | Yes | |
activeThemeId | string | Yes | |
onSelectTheme | (id: string) => void | Yes | |
colorMode | "light" | "dark" | No |
UserSelectorProps
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
onUserChange | (user: UserModel | null) => void | No | Callback when user is selected |
orientation | "vertical" | "horizontal" | No | Layout orientation - 'vertical' stacks selectors, 'horizontal' places them inline |
colorMode | "light" | "dark" | No | Color mode for background contrast - 'dark' for dark backgrounds, 'light' for light backgrounds |
className | string | No | Custom className |
UsersPageProps
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
db | any | Yes | Database instance for querying users |
onUserCreated | (user: UserModel) => void | No | Callback when user is created |
onUserUpdated | (user: UserModel) => void | No | Callback when user is updated |
onUserDeleted | (userId: string) => void | No | Callback when user is deleted |
className | string | No | Custom className |
UseRAGAdminStatusOptions
Options for useRAGAdminStatus hook
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
interval | number | No | Polling interval in ms. 0 or null disables polling. Default: 15000 |
enabled | boolean | No | Whether to fetch immediately on mount. Default: true |
UseRAGAdminStatusReturn
Return value from useRAGAdminStatus hook
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
data | RAGAdminStatus | Yes | Current status data, null if not yet loaded |
error | Error | Yes | Error from last fetch attempt |
isLoading | boolean | Yes | True during initial load |
isStale | boolean | Yes | True when last fetch failed but we have prior data |
lastUpdated | Date | Yes | Timestamp of last successful fetch |
refresh | () => void | Yes | Manually trigger a refresh |
ContentLoaderProps
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
operations | LoadingOperation[] | Yes | Active content loading operations |
className | string | No | Optional custom className for styling |
minHeight | string | number | No | Minimum height when showing loader |
GlobalInlineLoaderProps
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
operationId | string | No | Specific operation ID to display (optional - shows any inline if not specified) |
operations | LoadingOperation[] | Yes | Active inline loading operations |
size | "sm" | "md" | No | Size of the spinner |
showMessage | boolean | No | Show message text |
className | string | No | Optional custom className for styling |
GlobalLoadingProviderProps
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
children | React.ReactNode | Yes | |
topNavHeight | number | No | Height of top nav loader in pixels |
topNavOffset | string | number | No | Top position offset for top nav loader |
showOverlay | boolean | No | Whether to render the overlay component |
showTopNav | boolean | No | Whether to render the top nav loader |
LoadingOverlayProps
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
operation | LoadingOperation | Yes | Active overlay operation |
SuspenseLoadingFallbackProps
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
message | string | No | Message to display during loading |
type | "overlay" | "content" | "topnav" | No | Loading type to use (default: 'content') |
TopNavLoaderProps
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
operations | LoadingOperation[] | Yes | Active top nav operations |
height | number | No | Height of the loader bar in pixels |
top | string | number | No | Position from top (for header offset) |
MenuItemProps
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
item | ResolvedMenuItem | Yes | The resolved menu item data |
onClick | (commandId: string) => void | Yes | Click handler |
className | string | No | Custom class name |
MenuSeparatorProps
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
className | string | No | Custom class name |
DockerContainerInfo
Docker container info
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
id | string | Yes | |
name | string | Yes | |
status | DockerContainerStatus | Yes | |
image | string | Yes |
MemoryUsage
Footer Plugin Types
Shared types for footer system plugins.
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
total | number | Yes | |
free | number | Yes | |
used | number | Yes | |
usedPercent | number | Yes |
CpuUsage
CPU usage information (from Electron IPC)
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
percent | number | Yes | |
cores | number | Yes | |
model | string | Yes |
DiskUsage
Disk usage information (from Electron IPC)
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
total | number | Yes | |
free | number | Yes | |
used | number | Yes | |
usedPercent | number | Yes |
SystemResources
Combined system resources
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
memory | MemoryUsage | Yes | |
cpu | CpuUsage | Yes | |
disk | DiskUsage | Yes |
UpdateCheckResult
Update check result
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
available | boolean | Yes | |
version | string | Yes |
StorageEstimate
Browser storage estimate
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
quota | number | No | |
usage | number | No |
UseReplicationResult
Result type for the useReplication hook
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
startSync | () => Promise<void> | Yes | Start the sync process |
retrySync | () => Promise<void> | Yes | Retry a failed sync |
syncProgress | number | Yes | Current sync progress (0-100) |
syncStatus | SyncStatus | Yes | Current sync status |
syncError | string | Yes | Error message if sync failed |
OnboardingContainerProps
Props for the OnboardingContainer component
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
children | React.ReactNode | Yes | Content to render inside the container |
currentStep | number | No | Current step index (0-based) |
totalSteps | number | No | Total number of steps |
onStartOver | () => void | No | Callback when "Start over" is clicked |
showStartOver | boolean | No | Whether to show the Start over link (default: true) |
className | string | No | Additional CSS classes |
OnboardingFlowProps
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
className | string | No | Custom className for the container |
showStartOver | boolean | No | Whether to show the Start over link (default: true) |
OnboardingStep
Represents a single step in the onboarding flow
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
id | string | Yes | Unique identifier for the step |
title | string | Yes | Display title for the step |
description | string | No | Optional description shown in the step |
component | React.ComponentType<OnboardingStepProps> | Yes | React component to render for this step |
validate | () => Promise<boolean> | boolean | No | Optional validation function to check if step can proceed |
dependencies | string[] | No | Optional dependencies - IDs of steps that must be completed first |
onComplete | (data: any) => Promise<void> | void | No | Optional callback when step is completed |
skipIfComplete | boolean | No | Optional flag to skip this step if already completed |
registeredBy | string | Yes | Plugin that registered this step |
path | OnboardingMode | No | Optional path this step belongs to (server or offline) - undefined means shown on all paths |
OnboardingStepProps
Props passed to each onboarding step component
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
onNext | (data?: any) => void | Yes | Move to the next step |
onBack | () => void | Yes | Go back to the previous step |
onSkip | () => void | No | Skip the current step |
stepData | Record<string, any> | Yes | Data from previous steps |
currentStep | OnboardingStep | Yes | Current step information |
totalSteps | number | Yes | Total number of steps |
currentStepIndex | number | Yes | Current step index (0-based) |
OnboardingCapablePlugin
Interface for plugins that can contribute onboarding steps
OnboardingState
State for the onboarding flow
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
isActive | boolean | Yes | Whether onboarding is active |
currentStepIndex | number | Yes | Current step index |
completedSteps | string[] | Yes | Completed step IDs |
stepData | Record<string, any> | Yes | Data collected from each step |
isCompleted | boolean | Yes | Whether onboarding has been completed |
error | string | No | Error state if any |
OnboardingPluginConfig
Configuration options for the OnboardingPlugin
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
autoStart | boolean | No | Whether to show onboarding on first launch (default: true) |
allowSkip | boolean | No | Whether to allow skipping steps (default: false) |
customSteps | OnboardingStep[] | No | Custom steps to add (in addition to plugin-registered steps) |
onComplete | (data: Record<string, any>) => void | No | Callback when onboarding is completed |
onSkip | () => void | No | Callback when onboarding is skipped |
storageKey | string | No | LocalStorage key for persisting onboarding state |
theme | "light" | "dark" | "auto" | No | Theme variant for the onboarding UI |
OnboardingContextValue
Context value provided by OnboardingContext
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
state | OnboardingState | Yes | Current onboarding state |
steps | OnboardingStep[] | Yes | All registered onboarding steps (in order) |
startOnboarding | () => void | Yes | Start the onboarding flow |
completeStep | (data?: any) => Promise<void> | Yes | Complete current step and move to next |
goBack | () => void | Yes | Go back to previous step |
skipStep | () => void | Yes | Skip current step (if allowed) |
resetOnboarding | () => void | Yes | Reset onboarding state |
completeOnboarding | () => void | Yes | Manually complete onboarding |
isStepCompleted | (stepId: string) => boolean | Yes | Check if a specific step is completed |
getStepData | (stepId: string) => any | Yes | Get data from a specific step |
OnboardingPath
Represents an onboarding path (server or offline)
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
type | OnboardingMode | Yes | The type of onboarding path |
steps | OnboardingStep[] | Yes | Steps specific to this path |
ServerProfile
Server profile configuration
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
id | string | Yes | Unique identifier for this server config |
url | string | Yes | Server URL |
domainId | string | Yes | Domain ID for multi-tenant isolation |
dbName | string | Yes | IndexedDB database name for this server |
label | string | No | Optional display label |
authToken | string | No | Auth token for this server |
lastOrgId | string | No | Last selected org |
lastWorkspaceId | string | No | Last selected workspace |
PathAwareOnboardingState
Extended onboarding state with path awareness
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
selectedPath | OnboardingMode | Yes | Selected onboarding path |
syncStatus | SyncStatus | Yes | Sync status for server path |
syncProgress | number | Yes | Sync progress (0-100) |
syncError | string | No | Sync error message if any |
serverProfile | Partial<ServerProfile> | No | Selected server profile during onboarding |
PathAwareOnboardingContextValue
Extended context value with path-aware methods
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
setPath | (path: OnboardingMode) => void | Yes | Set the onboarding path (server or offline) |
setSyncStatus | (status: SyncStatus, progress?: number, error?: string) => void | Yes | Update sync status |
setServerProfile | (profile: Partial<ServerProfile>) => void | Yes | Set server profile data |
startOver | () => void | Yes | Restart onboarding from mode selection |
CustomApiConfigFieldsProps
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
providerConfig | Partial<CustomApiProviderConfig> | Yes | |
credentials | Record<string, string> | Yes | |
onProviderConfigChange | (config: Partial<CustomApiProviderConfig>) => void | Yes | |
onCredentialsChange | (credentials: Record<string, string>) => void | Yes |
SyncConfigCardProps
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
config | SyncProviderConfig | Yes | |
onEdit | () => void | Yes | |
onDelete | () => void | Yes | |
onToggle | () => void | Yes |
SyncConfigFormProps
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
config | SyncProviderConfig | Yes | |
providers | SyncProviderMetadata[] | Yes | |
workspaceId | string | Yes | |
onSubmit | (data: Omit<SyncProviderConfig, "id" | "createdAt" | "updatedAt"> | Partial<SyncProviderConfig>) => void | Yes | |
onCancel | () => void | Yes |
SyncHistoryEntry
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
id | string | Yes | |
configId | string | Yes | |
configName | string | Yes | |
result | SyncResult | Yes |
SyncHistoryLogProps
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
entries | SyncHistoryEntry[] | Yes | |
maxEntries | number | No |
SyncOAuthCallbackPageProps
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
onSuccess | (workspaceId: string, providerId: string) => void | No | Callback when OAuth completes successfully |
onError | (error: string) => void | No | Callback when OAuth fails |
successRedirectUrl | string | No | URL to redirect to after success (default: /sync) |
errorRedirectUrl | string | No | URL to redirect to on error (default: /sync) |
SyncSettingsTabProps
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
workspaceId | string | Yes | |
orgId | string | Yes | |
userId | string | Yes | |
db | any | Yes |
SyncStatusDisplayProps
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
state | SyncState | Yes | |
isRunning | boolean | Yes | |
onStart | () => void | Yes | |
onStop | () => void | Yes | |
onSyncNow | () => void | Yes |
UseSyncConfigOptions
Options for the useSyncConfig hook
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
workspaceId | string | Yes | Workspace ID to filter configs by |
db | RxDatabase | Yes | RxDB database instance |
providerId | string | No | Optional provider ID to filter by |
enabledOnly | boolean | No | Whether to only fetch enabled configs |
UseSyncConfigResult
Return type for the useSyncConfig hook
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
configs | DeserializedSyncConfig[] | Yes | Array of deserialized sync configurations |
isLoading | boolean | Yes | Whether data is currently loading |
error | string | Yes | Error message if any operation failed |
create | (input: Omit<CreateSyncConfigInput, "workspaceId">) => Promise<DeserializedSyncConfig | null> | Yes | Create a new sync configuration |
update | (id: string, updates: UpdateSyncConfigInput) => Promise<DeserializedSyncConfig | null> | Yes | Update an existing sync configuration |
remove | (id: string) => Promise<boolean> | Yes | Delete (archive) a sync configuration |
refresh | () => Promise<void> | Yes | Manually refresh the configs list |
getById | (id: string) => Promise<DeserializedSyncConfig | null> | Yes | Get a single config by ID |
toggleEnabled | (id: string) => Promise<DeserializedSyncConfig | null> | Yes | Toggle enabled state of a config |
UseSyncHistoryOptions
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
workspaceId | string | Yes |
UseSyncHistoryResult
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
entries | SyncHistoryEntry[] | Yes | |
addEntry | (configId: string, configName: string, result: SyncResult) => void | Yes | |
clearHistory | () => void | Yes | |
getEntriesForConfig | (configId: string) => SyncHistoryEntry[] | Yes |
CreateOAuthConfigFromEnvOptions
Options for creating OAuth config from environment variables
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
envPrefix | string | No | Prefix for environment variable names (e.g., 'VITE_' for Vite) |
defaultRedirectUri | string | No | Default redirect URI if not specified in env |
defaultScopes | string[] | No | Default scopes if not specified in env |
additionalParams | Record<string, string> | No | Additional parameters to include in authorization URL |
OAuthEnvVarNames
Standard environment variable names for OAuth configuration
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
clientId | string | Yes | |
redirectUri | string | Yes | |
authorizationEndpoint | string | Yes | |
tokenEndpoint | string | Yes | |
tokenProxyEndpoint | string | Yes | |
scopes | string | Yes |
OAuthProviderConfig
OAuth Types
Core type definitions for the generic OAuth provider system. These types support multiple OAuth providers with a unified interface.
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
providerId | string | Yes | Unique identifier for this OAuth provider (e.g., 'ynab', 'github', 'google') |
clientId | string | Yes | OAuth client ID |
redirectUri | string | Yes | OAuth redirect URI |
authorizationEndpoint | string | Yes | OAuth authorization endpoint URL |
tokenEndpoint | string | Yes | OAuth token endpoint URL |
tokenProxyEndpoint | string | Yes | Server-side proxy endpoint for secure token exchange |
scopes | string[] | Yes | OAuth scopes to request |
additionalParams | Record<string, string> | No | Additional parameters to include in authorization URL |
OAuthTokens
OAuth tokens returned from token exchange or refresh
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
accessToken | string | Yes | OAuth access token |
refreshToken | string | No | OAuth refresh token (may not be provided by all providers) |
expiresAt | number | No | Token expiration timestamp in milliseconds |
tokenType | string | Yes | Token type (typically 'Bearer') |
OAuthStoredData
Complete OAuth data stored for a provider connection
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
providerId | string | Yes | Provider ID this data belongs to |
tokens | OAuthTokens | Yes | OAuth tokens |
connectedAt | string | Yes | Timestamp when connection was established (ISO 8601) |
lastRefreshAt | string | No | Timestamp of last token refresh (ISO 8601) |
metadata | Record<string, unknown> | No | Provider-specific metadata |
OAuthCallbackResult
Result of handling an OAuth callback
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
success | boolean | Yes | Whether the OAuth flow completed successfully |
workspaceId | string | No | Workspace ID if successful |
providerId | string | No | Provider ID if successful |
error | string | No | Error message if unsuccessful |
OAuthConnectionState
Current state of an OAuth connection
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
isConnected | boolean | Yes | Whether the provider is connected |
isLoading | boolean | Yes | Whether a connection operation is in progress |
connectedAt | string | No | Timestamp when connection was established |
error | string | Yes | Error message if any |
OAuthStateData
OAuth state data stored in session storage for CSRF protection
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
state | string | Yes | Random state string for CSRF protection |
workspaceId | string | Yes | Workspace ID initiating the flow |
providerId | string | Yes | Provider ID for this flow |
createdAt | number | Yes | Timestamp when state was created |
UseOAuthConnectionOptions
Options for the useOAuthConnection hook
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
workspaceId | string | Yes | Workspace ID for the OAuth connection |
providerId | string | Yes | OAuth provider ID |
configOverrides | Partial<OAuthProviderConfig> | No | Optional config overrides |
autoCheck | boolean | No | Whether to automatically check connection on mount |
UseOAuthConnectionResult
Result type for the useOAuthConnection hook
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
connect | () => void | Yes | Start the OAuth connection flow |
disconnect | () => void | Yes | Disconnect (clear tokens) |
getAccessToken | () => Promise<string | null> | Yes | Get a valid access token (with auto-refresh) |
refresh | () => Promise<boolean> | Yes | Manually refresh the access token |
checkConnection | () => void | Yes | Manually check connection status |
TimezoneOption
Type definitions for timezone utilities
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
label | string | Yes | |
value | string | Yes |
TimezoneConfig
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
userTimezone | string | Yes | |
detectedTimezone | string | Yes | |
fallbackTimezone | "UTC" | Yes | |
formatOptions | { dateOnly: string; dateTime: string; timeOnly: string; } | Yes |
BrandingSettingsProps
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
tab | ResolvedSettingsTab | Yes |
DocsSettingsProps
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
tab | ResolvedSettingsTab | Yes |
ExtensionsSettingsProps
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
tab | ResolvedSettingsTab | Yes |
GeneralSettingsProps
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
tab | ResolvedSettingsTab | Yes |
LoadingTestSettingsProps
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
tab | ResolvedSettingsTab | Yes |
ToolsMcpSettingsProps
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
tab | ResolvedSettingsTab | Yes |
ApiEndpointConfig
API endpoint configuration
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
url | string | Yes | Endpoint URL (can include {id} placeholder) |
method | HttpMethod | Yes | HTTP method |
headers | Record<string, string> | No | Request headers |
bodyTemplate | string | No | Request body template (JSON with placeholders) |
responsePath | string | No | Path to data in response (dot notation, e.g., 'data.items') |
idPath | string | No | Path to ID in response item |
CustomApiProviderConfig
Custom API provider configuration
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
baseUrl | string | Yes | Base URL for all endpoints |
authType | CustomApiAuthType | Yes | Authentication type |
authHeaderName | string | No | Auth header name (for api-key) |
authHeaderPrefix | string | No | Auth header prefix (e.g., 'Bearer', 'Token') |
listEndpoint | ApiEndpointConfig | Yes | List items endpoint |
getEndpoint | ApiEndpointConfig | No | Get single item endpoint |
createEndpoint | ApiEndpointConfig | No | Create item endpoint |
updateEndpoint | ApiEndpointConfig | No | Update item endpoint |
deleteEndpoint | ApiEndpointConfig | No | Delete item endpoint |
pagination | { type: "offset" | "cursor" | "page"; pageParam: string; limitParam: string; defaultLimit: number; } | No | Pagination config |
rateLimit | number | No | Rate limiting (requests per second) |
GitHubUser
GitHub User representation
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
id | number | Yes | Unique ID of the user |
login | string | Yes | GitHub username (login) |
name | string | No | Display name |
avatar_url | string | Yes | User's avatar URL |
html_url | string | Yes | URL to user's GitHub profile |
GitHubLabel
GitHub Label representation
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
id | number | Yes | Unique ID of the label |
node_id | string | Yes | Node ID for GraphQL |
name | string | Yes | Label name |
description | string | No | Label description |
color | string | Yes | Label color (hex without #) |
default | boolean | No | Whether this is a default label |
GitHubMilestone
GitHub Milestone representation
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
id | number | Yes | Unique ID of the milestone |
node_id | string | Yes | Node ID for GraphQL |
number | number | Yes | Milestone number |
title | string | Yes | Milestone title |
description | string | No | Milestone description |
state | "open" | "closed" | Yes | Milestone state |
html_url | string | Yes | URL to the milestone |
due_on | string | No | Due date (ISO 8601) |
created_at | string | Yes | Creation timestamp (ISO 8601) |
updated_at | string | Yes | Update timestamp (ISO 8601) |
closed_at | string | No | Close timestamp (ISO 8601) |
GitHubIssue
GitHub Issue representation
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
id | number | Yes | Unique ID of the issue |
node_id | string | Yes | Node ID for GraphQL API |
number | number | Yes | Issue number within the repository |
title | string | Yes | Issue title |
body | string | Yes | Issue body/description (markdown) |
state | "open" | "closed" | Yes | Issue state |
state_reason | "completed" | "not_planned" | "reopened" | No | Reason for closure (if closed) |
html_url | string | Yes | URL to the issue on GitHub |
user | GitHubUser | Yes | User who created the issue |
labels | GitHubLabel[] | Yes | Labels attached to the issue |
assignees | GitHubUser[] | Yes | Users assigned to the issue |
milestone | GitHubMilestone | Yes | Milestone the issue belongs to |
created_at | string | Yes | Creation timestamp (ISO 8601) |
updated_at | string | Yes | Last update timestamp (ISO 8601) |
closed_at | string | Yes | Close timestamp (ISO 8601) |
GitHubRepository
GitHub Repository representation
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
id | number | Yes | Unique ID of the repository |
node_id | string | Yes | Node ID for GraphQL |
name | string | Yes | Repository name |
full_name | string | Yes | Full name (owner/repo) |
description | string | Yes | Repository description |
private | boolean | Yes | Whether the repo is private |
html_url | string | Yes | URL to the repository on GitHub |
owner | GitHubUser | Yes | Owner of the repository |
default_branch | string | Yes | Default branch name |
has_issues | boolean | Yes | Whether issues are enabled |
open_issues_count | number | Yes | Number of open issues |
created_at | string | Yes | Creation timestamp (ISO 8601) |
updated_at | string | Yes | Last update timestamp (ISO 8601) |
pushed_at | string | Yes | Last push timestamp (ISO 8601) |
GitHubProviderConfig
GitHub-specific provider configuration options
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
repository | string | Yes | Repository to sync in "owner/repo" format |
issueState | "all" | "open" | "closed" | No | Filter issues by state (defaults to 'all') |
labels | string | No | Filter issues by labels (comma-separated) |
milestoneNumber | number | No | Filter issues by milestone number |
syncAssignees | boolean | No | Whether to sync assignees to FlowState task assignees |
syncLabels | boolean | No | Whether to sync labels to FlowState task tags |
ListIssuesOptions
Options for listing GitHub issues
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
state | "all" | "open" | "closed" | No | Filter by state |
labels | string | No | Filter by labels (comma-separated) |
milestone | number | "*" | "none" | No | Filter by milestone number |
sort | "updated" | "created" | "comments" | No | Sort field |
direction | "asc" | "desc" | No | Sort direction |
since | string | No | Filter issues updated after this date (ISO 8601) |
per_page | number | No | Results per page (max 100) |
page | number | No | Page number |
CreateIssueData
Data for creating a GitHub issue
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
title | string | Yes | Issue title |
body | string | No | Issue body/description |
assignees | string[] | No | Assignee usernames |
labels | string[] | No | Label names |
milestone | number | No | Milestone number |
UpdateIssueData
Data for updating a GitHub issue
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
title | string | No | Issue title |
body | string | No | Issue body/description |
state | "open" | "closed" | No | Issue state |
state_reason | "completed" | "not_planned" | "reopened" | No | State reason for closure |
assignees | string[] | No | Assignee usernames |
labels | string[] | No | Label names |
milestone | number | No | Milestone number (or null to remove) |