PersistentAI API Documentation / @persistentai/fireflow-trpc / server / VFSFlowStore
Class: VFSFlowStore
Defined in: packages/fireflow-trpc/server/stores/flowStore/vfsFlowStore.ts:30
VFS-native implementation of flow storage
This store implements IFlowStore using VFS FlowWorkflows for persistence. Flows are stored as .fflow/ folder packages in lakeFS with:
- manifest.json: Package metadata (flowId, name, version)
- flow.json: The serialized flow definition
- events/*.ffevent: Derived event entry point files
Key features:
- Path-based addressing via FlowRef
- In-memory caching for performance
- Lock queue pattern for concurrency control
- Backward compatible with ID-based operations
Implements
Constructors
Constructor
new VFSFlowStore(
flowWorkflows,nodeRegistry,workspaceId,branchName?,cacheEnabled?):VFSFlowStore
Defined in: packages/fireflow-trpc/server/stores/flowStore/vfsFlowStore.ts:39
Parameters
flowWorkflows
nodeRegistry
workspaceId
string
branchName?
string = 'main'
cacheEnabled?
boolean = true
Returns
VFSFlowStore
Methods
createFlow()
createFlow(
metadata):Promise<Flow>
Defined in: packages/fireflow-trpc/server/stores/flowStore/vfsFlowStore.ts:65
Creates a new flow with given metadata Generates a path based on the flow name
Parameters
metadata
Flow metadata
Returns
Promise<Flow>
Created flow
Implementation of
createFlowAtPath()
createFlowAtPath(
metadata,parentPath):Promise<Flow>
Defined in: packages/fireflow-trpc/server/stores/flowStore/vfsFlowStore.ts:388
Create a flow at a specific VFS path
Parameters
metadata
Flow metadata (name, description, ownerId)
parentPath
string
Parent directory path where .fflow folder will be created
Returns
Promise<Flow>
The created flow
Implementation of
deleteFlow()
deleteFlow(
flowId):Promise<boolean>
Defined in: packages/fireflow-trpc/server/stores/flowStore/vfsFlowStore.ts:225
Deletes flow by ID
Parameters
flowId
string
Flow identifier
Returns
Promise<boolean>
true if flow was deleted, false if not found
Implementation of
deleteFlowAtPath()
deleteFlowAtPath(
flowPath):Promise<boolean>
Defined in: packages/fireflow-trpc/server/stores/flowStore/vfsFlowStore.ts:495
Delete a flow at a specific VFS path
Parameters
flowPath
string
Path to the .fflow folder to delete
Returns
Promise<boolean>
True if deleted successfully
Implementation of
getFlow()
getFlow(
flowId):Promise<Flow|null>
Defined in: packages/fireflow-trpc/server/stores/flowStore/vfsFlowStore.ts:105
Retrieves flow by ID
Parameters
flowId
string
Flow identifier
Returns
Promise<Flow | null>
Flow instance or null if not found
Implementation of
getFlowByRef()
getFlowByRef(
ref):Promise<Flow|null>
Defined in: packages/fireflow-trpc/server/stores/flowStore/vfsFlowStore.ts:429
Get a flow by FlowRef (path-based addressing)
Parameters
ref
FlowRef containing workspaceId, git ref, and path to .fflow folder
path
string
ref
string
workspaceId
string
Returns
Promise<Flow | null>
The flow or null if not found
Implementation of
getFlowMetadata()
getFlowMetadata(
flowId):Promise<FlowMetadata|null>
Defined in: packages/fireflow-trpc/server/stores/flowStore/vfsFlowStore.ts:153
Retrieves flow metadata by ID
Parameters
flowId
string
Flow identifier
Returns
Promise<FlowMetadata | null>
Flow metadata or null if not found
Implementation of
hasAccess()
hasAccess(
flowId,userId):Promise<boolean>
Defined in: packages/fireflow-trpc/server/stores/flowStore/vfsFlowStore.ts:298
Checks if user has access to flow For VFS flows, access is determined by workspace membership
Parameters
flowId
string
Flow identifier
userId
string
User identifier
Returns
Promise<boolean>
true if user has access, false otherwise
Implementation of
listFlows()
listFlows(
ownerId,orderBy,limit):Promise<FlowMetadata[]>
Defined in: packages/fireflow-trpc/server/stores/flowStore/vfsFlowStore.ts:174
Lists all available flows for the workspace
Parameters
ownerId
string
User identifier (used for filtering)
orderBy
ListOrderBy
Sort order
limit
number
Maximum number of flows to return
Returns
Promise<FlowMetadata[]>
Array of flow metadata
Implementation of
lockFlow()
lockFlow(
flowId,timeout?):Promise<void>
Defined in: packages/fireflow-trpc/server/stores/flowStore/vfsFlowStore.ts:324
Locks a flow to prevent concurrent modifications. If the flow is already locked, this method will block until the lock is released.
Parameters
flowId
string
Flow identifier
timeout?
number = 5000
Lock timeout in milliseconds (default: 5000 ms)
Returns
Promise<void>
Throws
Error if flow doesn't exist
Implementation of
unlockFlow()
unlockFlow(
flowId):Promise<void>
Defined in: packages/fireflow-trpc/server/stores/flowStore/vfsFlowStore.ts:363
Unlocks a previously locked flow and grants lock to the next waiter if any
Parameters
flowId
string
Flow identifier
Returns
Promise<void>
Implementation of
updateFlow()
updateFlow(
flow):Promise<Flow>
Defined in: packages/fireflow-trpc/server/stores/flowStore/vfsFlowStore.ts:259
Updates flow with new data
Parameters
flow
Flow data
Returns
Promise<Flow>
Updated flow
Implementation of
updateFlowAtPath()
updateFlowAtPath(
flow,flowPath):Promise<Flow>
Defined in: packages/fireflow-trpc/server/stores/flowStore/vfsFlowStore.ts:466
Update a flow at a specific VFS path
Parameters
flow
The flow to save
flowPath
string
Path to the .fflow folder
Returns
Promise<Flow>
The updated flow