Skip to content

Releases: kayossouza/flowform

v0.1.0 - Core Orchestrator

11 Nov 12:30

Choose a tag to compare

@flowform/core v0.1.0 - Core Orchestrator

First release of Flowform: Pure function orchestrator for conversational forms powered by LLMs.

Highlights

  • 98.62% Test Coverage - 75 test cases covering all functionality
  • Zero Dependencies - Pure TypeScript, no external runtime dependencies
  • Production Ready - Complete type system, comprehensive validation
  • Framework Agnostic - Works with React, Vue, Node.js, edge functions
  • Clean Architecture - Pure functions, dependency injection, SOLID principles

Core Features

Orchestrator

  • Single-turn and multi-turn LLM-powered field extraction
  • Context preservation across conversation turns
  • Real-time validation with descriptive error messages
  • Automatic form completion detection

Field Types (7 total)

  • TEXT - Short text input
  • LONG_TEXT - Multi-line text
  • EMAIL - RFC-compliant validation
  • PHONE - International format support
  • NUMBER - Min/max constraints
  • DATE - ISO date with timezone handling
  • ENUM - Select from options

Type System

  • FormDefinition, Session, SessionField, SessionTurn
  • LlmClient interface (provider-agnostic)
  • OrchestratorResult, ValidationResult
  • Complete TypeScript strict mode

Quality

  • Functions ≤60 lines
  • Files ≤350 lines
  • Cyclomatic complexity ≤12
  • Zero any types
  • ESLint 9 + TypeScript project references

Documentation

  • 25,000+ words technical documentation
  • English + Portuguese (PT-BR) versions
  • Architecture Decision Records (ADRs)
  • Spec Kit collaborative development guide
  • Complete API reference

Installation

```bash
pnpm add @flowform/core
```

Quick Example

```typescript
import { runLlmStep, FieldType, SessionStatus } from '@flowform/core';

const form = {
id: 'contact',
name: 'Contact Form',
fields: [
{ id: 'name', name: 'name', label: 'Name', type: FieldType.TEXT, required: true, order: 0 },
{ id: 'email', name: 'email', label: 'Email', type: FieldType.EMAIL, required: true, order: 1 }
],
createdAt: new Date(),
updatedAt: new Date(),
};

const session = {
id: 'session-1',
formId: 'contact',
status: SessionStatus.ACTIVE,
turns: [],
fields: [],
startedAt: new Date(),
};

const result = await runLlmStep(
form,
session,
'My name is John and email is john@example.com',
llmClient
);

console.log(result.extractedFields);
// { name: "John", email: "john@example.com" }
```

What's Next

See TASKS_MVP.md for the complete roadmap.

Next release (v0.2.0):

  • @flowform/llm package (OpenAI, Anthropic adapters)
  • Extended field types
  • Conditional logic support

v1.0 MVP:

  • Web dashboard
  • Form builder UI
  • Webhook delivery
  • Embed widget

Contributors

Links


Open Source · MIT License · Community Owned