@orka-js/workflow
v1.0.9
Published
Multi-step workflows for OrkaJS
Downloads
92
Readme
@orka-js/workflow
Multi-step workflow orchestration for OrkaJS — chain plan, retrieve, generate, verify, and improve steps.
Installation
npm install @orka-js/workflow @orka-js/coreQuick Start
import { Workflow, plan, retrieve, generate, verify } from '@orka-js/workflow'
import { Orka } from '@orka-js/core'
const orka = new Orka({ llm, vectorDB })
const workflow = new Workflow({
orka,
steps: [
plan({ prompt: 'Break down the question into sub-tasks' }),
retrieve({ topK: 5 }),
generate({ systemPrompt: 'Answer based on the retrieved documents' }),
verify({ threshold: 0.8 }),
],
})
const result = await workflow.run('What are the key features of OrkaJS?')
console.log(result.output)Streaming
for await (const event of workflow.stream('Summarize the quarterly report')) {
if (event.type === 'token') process.stdout.write(event.delta)
if (event.type === 'step') console.log(`Step done: ${event.step}`)
}Custom Step
import { custom } from '@orka-js/workflow'
const myStep = custom(async (ctx) => {
const transformed = await myTransform(ctx.output)
return { ...ctx, output: transformed }
})
const workflow = new Workflow({
orka,
steps: [retrieve({ topK: 3 }), generate(), myStep],
})Built-in Steps
| Step | Description |
|------|-------------|
| plan(opts) | Decompose the input into sub-tasks |
| retrieve(opts) | Fetch relevant documents from vector DB |
| generate(opts) | Generate a response using the LLM |
| verify(opts) | Check output quality, retry if below threshold |
| improve(opts) | Refine and improve the previous output |
| custom(fn) | Custom step function |
Workflow Context
Each step receives and returns a WorkflowContext:
interface WorkflowContext {
input: string
output: string
memory: Message[]
documents: Document[]
metadata: Record<string, unknown>
}API
Workflow
new Workflow(config: WorkflowConfig)
workflow.run(input: string) // Promise<WorkflowResult>
workflow.stream(input: string) // AsyncIterable<WorkflowEvent>WorkflowResult: { output, steps, duration, tokens }
Related Packages
@orka-js/graph— Graph-based workflows with branching@orka-js/agent— Agent implementations@orka-js/core— Core typesorkajs— Full bundle
