Releases: AuroraToolkit/AuroraCore
0.1.1 Beta Release
AuroraCore v0.1.1: Declarative Workflows Integration 🎉
🚀 What’s New
This release introduces Declarative Workflows, a major enhancement to AuroraCore that simplifies and modernizes task orchestration for AI-driven applications. The new syntax provides a clear, SwiftUI-like structure for defining workflows, allowing developers to build complex task sequences effortlessly.
Key Features
- Declarative Workflow Syntax:
-- Define workflows using a clear and concise declarative syntax.
-- Tasks and task groups can now be expressed naturally with support for sequential and parallel execution modes. - Dynamic Input Resolution:
-- Automatically resolve task inputs at execution time, supporting dynamic references to prior task outputs.
-- Ensures clean and predictable input management across workflows. - Improved Modularity:
-- Streamlined task creation and execution, reducing boilerplate and improving readability. - Asynchronous Support:
-- Full support for asynchronous task execution, enabling seamless handling of network requests, AI service interactions, and more.
🔨 Enhancements
- Replaced the legacy WorkflowManager and associated Workflow API with the declarative Workflow API.
- Added an optional TaskGroup for grouping tasks with sequential or parallel execution.
- Built-in execution timing for tasks and workflows, allowing for performance analysis.
- Simplified handling of task parameters using a clean, reusable resolveInput extension.
- Enhanced logging for better debugging and visibility during workflow execution.
🧪 Examples
Creating a Workflow
import AuroraCore
let workflow = Workflow(name: "Sample Workflow", description: "Fetch and summarize articles") {
Workflow.Task(name: "FetchArticles", description: "Fetch RSS feed articles") {
// Fetch task logic
return ["articles": ["Article 1", "Article 2"]]
}
Workflow.Task(name: "SummarizeArticles", description: "Generate summaries") { inputs in
let articles = inputs["articles"] as? [String] ?? []
let summaries = articles.map { "Summary of \($0)" }
return ["summaries": summaries]
}
Workflow.Task(name: "GenerateScript", description: "Generate news anchor script") { inputs in
let summaries = inputs["summaries"] as? [String] ?? []
let script = summaries.joined(separator: "\n")
return ["script": script]
}
}
await workflow.start()
print("Workflow Outputs: \(workflow.outputs)")
Parallel Task Execution
Workflow.TaskGroup(name: "ParallelTasks", mode: .parallel) {
Workflow.Task(name: "Task1", description: "First parallel task")
Workflow.Task(name: "Task2", description: "Second parallel task")
}
⚠️ Breaking Changes
- Removed the legacy WorkflowManager, WorkflowState, and WorkflowTask APIs.
- Any code relying on the old workflow APIs will need to be updated to use the new declarative syntax.
📈 Future Plans
- Template Workflows: Predefined workflows for common AI tasks like summarization and Q&A.
- Time-based Triggers: Scheduled workflows based on timers or events.
- Multimodal LLM Support: Expanding to support multimodal inputs and outputs.
🛠️ How to Upgrade
- Update your codebase to use the new declarative Workflow API.
- Replace instances of WorkflowManager with Workflow constructs.
- Use the enhanced task and task group components to define your workflows.
Initial Beta Release
Initial Beta Release of AuroraToolkit Core library (v0.1.0)
We are thrilled to introduce AuroraCore, the foundational library within the AuroraToolkit—a suite of tools designed to simplify the integration of AI capabilities into your Swift projects. This release marks the beginning of a robust, modular framework for managing AI-driven workflows and context-aware integrations.
Key Features
- Context Management: Efficiently handle and maintain task or conversation-specific context, including summarization and tokenization.
- Task and Workflow Handling: Define and orchestrate workflows with support for dependent tasks, asynchronous execution, and status tracking.
- Seamless LLM Integration: Easily connect to one or more large language models like OpenAI, Anthropic, and Ollama with customizable routing strategies, token trimming, and fallback mechanisms.
- Domain-Specific Routing: Dynamically route requests to the most appropriate LLM based on predefined domains or fallback rules.
- Extendable Architecture: Add new workflows, services, or routing strategies with ease using the framework’s modular design.
- Example Implementations: Ready-to-use examples demonstrating context management, workflow orchestration, and multi-LLM integration.
Future Plans
- Parallel and dynamic task execution for enhanced workflow performance.
- On-device LLM support for scenarios requiring offline capabilities.
- Advanced context summarization, memory pinning, and multi-service task orchestration.
Getting Started
Integrate AuroraCore into your Swift project using Swift Package Manager and follow the examples in the README to explore its capabilities.