Package Exports
- alvamind-workflow
- alvamind-workflow/dist/index.js
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (alvamind-workflow) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
๐ Alvamind Workflow
A lightweight and flexible workflow automation library for JavaScript/TypeScript projects, powered by Bun.
๐ฏ Introduction
Alvamind Workflow streamlines your development process by providing an elegant way to define and execute multi-step workflows. Whether you prefer YAML configurations or programmatic approaches, Alvamind makes automation simple and maintainable.
โจ Key Features
๐ Flexible Workflow Definition
- YAML-based configuration for simple, readable workflows
- Programmatic API for dynamic workflow creation
- Mix and match approaches based on your needs
โก Powerful Execution Engine
- Real-time execution progress with timing
- Intelligent error handling and recovery
- Skippable steps for optional tasks
- Graceful interruption handling
๐ ๏ธ Developer Experience
- TypeScript-first design
- Minimal configuration required
- Clear, colorful console output
- Comprehensive error messages
๐งช Testing & Development
- Test mode for dry runs
- Promise-based API
- Easy to integrate with CI/CD
๐ Quick Start
Installation
bun install alvamind-workflowSimple Example (YAML)
- Create
workflow.yml:
version: "1.0"
name: "Deploy Application"
commands:
- name: "Build Project"
command: "bun run build"
- name: "Run Tests"
command: "bun test"
skippable: true
- name: "Deploy"
command: "bun run deploy"- Run it:
workflow-runProgrammatic Usage
import { createWorkflow } from 'alvamind-workflow';
const workflow = createWorkflow({ name: 'CI Pipeline' })
.execute('bun run lint', 'Lint Code')
.execute('bun run test', 'Run Tests', true)
.execute('bun run build', 'Build Project');
await workflow.run();๐ Example Output
๐ณ Executing workflow: Deploy Application
=====================================
Step 1/3: Build Project
> bun run build
-> running... 2.5s
[1/3] โ Build Project 2.5s
Step 2/3: Run Tests
> bun test
-> running... 1.2s
[2/3] โ Run Tests 1.2s
Step 3/3: Deploy
> bun run deploy
-> running... 3.1s
[3/3] โ Deploy 3.1s
=====================================
โ Workflow completed in 6.8s๐๏ธ Advanced Features
Error Handling
try {
await workflow
.execute('risky-command', 'Risky Step', true) // skippable
.execute('must-run', 'Critical Step') // will fail if error
.run();
} catch (error) {
console.error('Workflow failed:', error);
}Test Mode
await workflow.run({ testMode: true }); // Dry run without executing commandsInteractive Mode
When a command fails, the interactive mode provides options to:
- Retry the original command
- Enter a new command to execute
- Skip the current step (if skippable)
- Abort the entire workflow
๐ง API Reference
loadWorkflow(path?: string)
Loads a workflow configuration from a YAML file.
path: (optional) Path to the YAML file. Defaults toworkflow.yml.- Returns:
Promise<WorkflowConfig>
runWorkflow(config: WorkflowConfig, options?: RunnerOptions)
Executes a workflow based on the provided configuration.
config: Workflow configuration object.options: (optional) Runner options.testMode: (boolean) Enable test mode to prevent actual command execution.
- Returns:
Promise<boolean>
createWorkflow(options?: WorkflowOptions)
Creates a new programmatic workflow builder.
options: (optional) Workflow options.name: (string) Workflow name.
- Returns:
WorkflowBuilder
WorkflowBuilder
A fluent interface for constructing workflows programmatically.
name(name: string): Sets the workflow name.execute(command: string, name: string, skippable?: boolean): Adds a command to the workflow.executeWith(command: string, name: string, callback: (result: { exitCode: number, stdout: string, stderr: string }) => string | undefined, skippable?: boolean): Adds a command with a callback (for branching logic).build(): Builds the workflow configuration object (WorkflowConfig).run(options?: WorkflowOptions): Runs the workflow.
Workflow Configuration (WorkflowConfig)
interface WorkflowConfig {
version: string;
name: string;
commands: WorkflowCommand[];
}Workflow Command (WorkflowCommand)
interface WorkflowCommand {
command: string;
name: string;
skippable?: boolean;
}๐ค Contributing
We welcome contributions! Here's how you can help:
- ๐ Report bugs by opening issues
- ๐ก Propose new features
- ๐ Improve documentation
- ๐ Submit pull requests
๐ฆ What's Inside
alvamind-workflow/
โโโ src/
โ โโโ cli.ts # CLI implementation
โ โโโ index.ts # Main entry point
โ โโโ runner.ts # Execution engine
โ โโโ types.ts # TypeScript types
โ โโโ workflow.ts # Workflow builder
โโโ README.md๐ License
MIT ยฉ Alvamind 2025
Built with โค๏ธ by the Alvamind team