Skip to content

EPOML - Enhanced Prompt Orchestration Markup Language is language for creating prompts using JSX based syntax

Notifications You must be signed in to change notification settings

codeboltai/epoml

Repository files navigation

Turborepo starter

EPOML Monorepo

EPOML (Enhanced Prompt Orchestration Markup Language) is a JSX-based template engine for orchestrating prompts and rendering to plain text. This monorepo contains the core EPOML library and examples.

Packages

  • epoml: The main EPOML library package (published to npm)
  • @epoml/example: Examples and demos (private)

Quick Start

# Install dependencies
pnpm install

# Build all packages
pnpm build

# Run examples
cd packages/example
pnpm run example:basic

Development

Building

# Build all packages
pnpm build

# Build specific package
pnpm build --filter=epoml

Running Examples

# Basic example
pnpm --filter=@epoml/example run example:basic

# Template variables demo
pnpm --filter=@epoml/example run example:demo

# Custom component example
pnpm --filter=@epoml/example run dev

Publishing

We use Changesets for version management and publishing. See PUBLISHING.md for detailed instructions.

# Create a changeset for your changes
pnpm changeset

# Release to npm (automated via GitHub Actions)
pnpm release

Package Details

EPOML Core Library

The main library is published to npm as epoml. It provides:

  • JSX-based template syntax for prompt orchestration
  • Multiple output formats (markdown, html, json, yaml, xml, text)
  • Enhanced template variables support with {variableName} syntax
  • 20+ built-in components with comprehensive template variable support
  • Custom component registration for reusable prompt patterns
  • Robust TypeScript compilation with 0 errors
  • File tree generation for context injection
  • Audio/multimedia support for rich prompts
  • Shared utility functions for text processing and escaping

Recent Improvements ✨

  • Enhanced Code Component: Improved support for complex JavaScript code blocks using template variables to avoid JSX parsing conflicts
  • Component Naming: Renamed Object component to DataObject to prevent conflicts with JavaScript's built-in Object
  • JSX Template Safety: Implemented safer patterns for including complex code in templates
  • Documentation Updates: Comprehensive updates to component documentation with troubleshooting guides
  • Template Variable Best Practices: Enhanced examples showing proper usage of template variables with code blocks
  • Fixed all TypeScript compilation errors: Resolved 192+ syntax errors across components
  • Enhanced template variable support: Added {variableName} processing to all major components
  • New component documentation: Complete docs for ExampleInput, ExampleOutput, ExampleSet, DataObject, and OutputFormat
  • Shared utilities module: Centralized text processing, escaping, and validation functions
  • Improved inline rendering: Better support for compact display modes
  • Updated TypeScript target: Upgraded to ES2018 with downlevel iteration support

Examples Package

The examples package contains:

  • Basic usage examples
  • Template variable demonstrations
  • Custom component examples
  • Test files for functionality verification

Remote Caching

Tip

Vercel Remote Cache is free for all plans. Get started today at vercel.com.

Turborepo can use a technique known as Remote Caching to share cache artifacts across machines, enabling you to share build caches with your team and CI/CD pipelines.

By default, Turborepo will cache locally. To enable Remote Caching you will need an account with Vercel. If you don't have an account you can create one, then enter the following commands:

cd my-turborepo

# With [global `turbo`](https://turborepo.com/docs/getting-started/installation#global-installation) installed (recommended)
turbo login

# Without [global `turbo`](https://turborepo.com/docs/getting-started/installation#global-installation), use your package manager
npx turbo login
yarn exec turbo login
pnpm exec turbo login

This will authenticate the Turborepo CLI with your Vercel account.

Next, you can link your Turborepo to your Remote Cache by running the following command from the root of your Turborepo:

# With [global `turbo`](https://turborepo.com/docs/getting-started/installation#global-installation) installed (recommended)
turbo link

# Without [global `turbo`](https://turborepo.com/docs/getting-started/installation#global-installation), use your package manager
npx turbo link
yarn exec turbo link
pnpm exec turbo link

Useful Links

Learn more about the power of Turborepo:

About

EPOML - Enhanced Prompt Orchestration Markup Language is language for creating prompts using JSX based syntax

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 3

  •  
  •  
  •