Skip to content

for building dynamic, LLM-driven workflows using a region-based execution model

License

Notifications You must be signed in to change notification settings

seemueller-io/manifold-workflow-engine

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

65 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

manifold-workflow-engine

npm version Tests License: AGPL v3 Node Version

A TypeScript/JavaScript library for building dynamic, LLM-driven workflows using a region-based execution model.

workflow_function_manifold.png

Overview

manifold-workflow-engine is a powerful library for creating dynamic, LLM-driven workflows that leverage a region-based execution model. It enables seamless navigation between different execution regions based on natural language prompts and maintains consistent workflow state throughout the execution process.

Key Features

  • LLM-Driven Navigation: Navigate between workflow regions using natural language prompts
  • Region-Based Architecture: Organize workflow logic into discrete, connected regions
  • State Management: Maintain and propagate state across workflow operations
  • Nested Workflows: Support for hierarchical workflow structures
  • Intent Matching: Built-in intent recognition system with confidence scoring
  • TypeScript/Javascript Support

Installation

npm install manifold-workflow-engine

Or using Bun:

bun add manifold-workflow-engine

Quick Start

import {
  WorkflowFunctionManifold,
  ManifoldRegion,
  WorkflowOperator,
  DummyIntentMap,
} from 'manifold-workflow-engine';

// Create a new manifold instance
const intentService = new DummyIntentMap();
const manifold = new WorkflowFunctionManifold(intentService);

// Define operators
const analysisOperator = new WorkflowOperator('analysis', async state => ({
  ...state,
  analyzed: true,
}));

// Create regions
const analysisRegion = new ManifoldRegion('analysis', [analysisOperator]);
manifold.addRegion(analysisRegion);

// Execute workflow
await manifold.navigate('analyze the data');
await manifold.executeWorkflow('analyze the data');

Core Components

WorkflowFunctionManifold

The main orchestrator that manages workflow execution and region navigation.

const manifold = new WorkflowFunctionManifold(intentService);
manifold.addRegion(region);
await manifold.navigate(prompt);
await manifold.executeWorkflow(prompt);

ManifoldRegion

Represents a discrete workflow area containing operators and connections to other regions.

const region = new ManifoldRegion('regionName', [operator1, operator2]);
region.connectTo(otherRegion);
region.addOperator(newOperator);

WorkflowOperator

Defines executable operations within regions.

const operator = new WorkflowOperator('operatorName', async state => {
  return { ...state, processed: true };
});

NestedManifoldRegion

Enables hierarchical workflow structures by embedding one manifold within another.

const nestedManifold = new WorkflowFunctionManifold(intentService);
const nestedRegion = new NestedManifoldRegion('preprocessing', nestedManifold);

Complete Example

Here's a comprehensive example demonstrating nested workflows:

import {
  WorkflowFunctionManifold,
  ManifoldRegion,
  WorkflowOperator,
  NestedManifoldRegion,
  DummyIntentMap,
} from 'manifold-workflow-engine';

async function createWorkflow() {
  // Create nested workflow for preprocessing
  const nestedIntentService = new DummyIntentMap();
  const nestedManifold = new WorkflowFunctionManifold(nestedIntentService);
  
  const validateOp = new WorkflowOperator('validation', async state => ({
    ...state,
    validated: true,
  }));
  
  const cleanOp = new WorkflowOperator('cleaning', async state => ({
    ...state,
    cleaned: true,
  }));
  
  const validateRegion = new ManifoldRegion('validation', [validateOp]);
  const cleanRegion = new ManifoldRegion('cleaning', [cleanOp]);
  
  validateRegion.connectTo(cleanRegion);
  nestedManifold.addRegion(validateRegion);
  nestedManifold.addRegion(cleanRegion);

  // Create main workflow
  const mainIntentService = new DummyIntentMap();
  const mainManifold = new WorkflowFunctionManifold(mainIntentService);
  
  const nestedPreprocessRegion = new NestedManifoldRegion('preprocessing', nestedManifold);
  const analysisRegion = new ManifoldRegion('analysis', [
    new WorkflowOperator('analysis', async state => ({
      ...state,
      analyzed: true,
    })),
  ]);
  
  nestedPreprocessRegion.connectTo(analysisRegion);
  mainManifold.addRegion(nestedPreprocessRegion);
  mainManifold.addRegion(analysisRegion);
  
  return mainManifold;
}

// Execute workflow
const manifold = await createWorkflow();
const prompts = [
  'validate the input',
  'clean the data',
  'analyze the results',
];

for (const prompt of prompts) {
  await manifold.navigate(prompt);
  await manifold.executeWorkflow(prompt);
}

A more complete example can be found in src/cli.ts. For fun, experience it in action.

npx manifold-workflow-engine

State Management

The library maintains workflow state across operations and regions. Each operator can access and modify the state:

const operator = new WorkflowOperator('example', async state => {
  // Access existing state
  const currentValue = state.someValue;
  
  // Return modified state
  return {
    ...state,
    newValue: 'updated',
    processed: true,
  };
});

Error Handling

The library includes built-in error handling for:

  • Invalid navigation attempts
  • Unmatched intents
  • Operation execution failures
  • State management errors

Contributing

  1. Fork the repository
  2. Create your feature branch: git checkout -b feature/my-feature
  3. Commit your changes: git commit -m 'Add my feature'
  4. Push to the branch: git push origin feature/my-feature
  5. Submit a pull request

Development

# Install dependencies
bun install

# Run development mode
bun dev

# Build for production
bun run build

# Fix formatting and lint issues
bun run fix

License

This project is licensed under the terms of the GNU Affero General Public License v3.0 or later.

About

for building dynamic, LLM-driven workflows using a region-based execution model

Topics

Resources

License

Security policy

Stars

Watchers

Forks

Sponsor this project

  •