Releases: kayossouza/flowform
v0.1.0 - Core Orchestrator
@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
anytypes - 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