Skip to content

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

FlowWorkflows

nodeRegistry

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

FlowMetadata

Flow metadata

Returns

Promise<Flow>

Created flow

Implementation of

IFlowStore.createFlow


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

FlowMetadata

Flow metadata (name, description, ownerId)

parentPath

string

Parent directory path where .fflow folder will be created

Returns

Promise<Flow>

The created flow

Implementation of

IFlowStore.createFlowAtPath


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

IFlowStore.deleteFlow


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

IFlowStore.deleteFlowAtPath


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

IFlowStore.getFlow


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

IFlowStore.getFlowByRef


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

IFlowStore.getFlowMetadata


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

IFlowStore.hasAccess


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

IFlowStore.listFlows


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

IFlowStore.lockFlow


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

IFlowStore.unlockFlow


updateFlow()

updateFlow(flow): Promise<Flow>

Defined in: packages/fireflow-trpc/server/stores/flowStore/vfsFlowStore.ts:259

Updates flow with new data

Parameters

flow

Flow

Flow data

Returns

Promise<Flow>

Updated flow

Implementation of

IFlowStore.updateFlow


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

Flow

The flow to save

flowPath

string

Path to the .fflow folder

Returns

Promise<Flow>

The updated flow

Implementation of

IFlowStore.updateFlowAtPath

Licensed under BUSL-1.1