Agent Session API
The Agent Session extends the basic Session with workflow capabilities.
createAgentSession
Creates a new agent session with workflow support.
function createAgentSession(args?: CreateSessionArgs): Promise<AgentSession>Example
import { createAgentSession } from 'agentary-js';
const agent = await createAgentSession({
models: [
{
runtime: 'transformers-js',
model: 'onnx-community/Qwen3-0.6B-ONNX',
quantization: 'q4',
engine: 'webgpu'
}
]
});Agent Session Methods
runWorkflow
Execute a multi-step agent workflow.
runWorkflow(
prompt: string,
workflow: Workflow,
memoryConfig?: MemoryConfig
): AsyncIterable<WorkflowIterationResponse>Parameters
interface Workflow {
id: string;
systemPrompt?: string;
context?: Record<string, any>;
steps: WorkflowStep[];
tools: Tool[];
timeout?: number;
maxIterations?: number;
}
interface WorkflowStep {
id: string;
prompt: string;
model: string; // Model to use for this step
maxTokens?: number;
temperature?: number;
enableThinking?: boolean;
toolChoice?: string[]; // Restrict to specific tools
maxAttempts?: number; // Retry attempts on failure
}Returns
interface WorkflowIterationResponse {
stepId?: string;
error?: WorkflowStepError;
content?: string;
toolCall?: {
name?: string;
args?: Record<string, any>;
result?: string;
};
metadata?: Record<string, any>;
}Example
const workflow = {
id: 'my-workflow',
systemPrompt: 'You are a helpful assistant.',
maxIterations: 5,
steps: [
{
id: 'step1',
prompt: 'Analyze the input',
model: 'onnx-community/Qwen3-0.6B-ONNX',
maxTokens: 200
}
],
tools: []
};
const memoryConfig = {
maxTokens: 2048,
compressionThreshold: 0.8,
memoryCompressorConfig: {
name: 'sliding-window'
}
};
for await (const iteration of agent.runWorkflow('Hello', workflow, memoryConfig)) {
console.log(iteration.content);
}registerTools
Register tools for use in workflows.
registerTools(tools: Tool[]): voidExample
agent.registerTools([{
definition: {
name: 'my_tool',
description: 'Does something useful',
parameters: {
type: 'object',
properties: {
input: {
type: 'string',
description: 'Input to process'
}
},
required: ['input']
}
},
implementation: async ({ input }) => {
return `Processed: ${input}`;
}
}]);getRegisteredTools
Get all registered tools.
getRegisteredTools(): Tool[]Example
const tools = agent.getRegisteredTools();
console.log(`${tools.length} tools registered`);Inherited Methods
Agent Session inherits all methods from Session:
createResponse()dispose()on()off()
Memory Configuration
Configure memory management for workflows by passing a MemoryConfig to runWorkflow().
interface MemoryConfig {
maxTokens?: number;
compressionThreshold?: number;
preserveMessageTypes?: MemoryMessageType[];
formatter?: MemoryFormatter;
memoryCompressorConfig?: MemoryCompressorConfig;
}
type MemoryCompressorConfig =
| { name: 'sliding-window' }
| {
name: 'summarization';
model: string;
temperature?: number;
enableThinking?: boolean;
};Example
Sliding Window Memory:
const memoryConfig = {
maxTokens: 2048,
compressionThreshold: 0.8,
memoryCompressorConfig: {
name: 'sliding-window'
}
};
for await (const result of agent.runWorkflow(prompt, workflow, memoryConfig)) {
// ...
}LLM Summarization:
const memoryConfig = {
maxTokens: 4096,
compressionThreshold: 0.75,
memoryCompressorConfig: {
name: 'summarization',
model: 'onnx-community/Qwen3-0.6B-ONNX',
temperature: 0.1,
enableThinking: false
}
};
for await (const result of agent.runWorkflow(prompt, workflow, memoryConfig)) {
// ...
}Workflow Events
Monitor workflow execution with events.
agent.on('workflow:start', (event) => {
console.log(`Starting: ${event.workflowName}`);
});
agent.on('workflow:step:start', (event) => {
console.log(`Step ${event.stepId} starting`);
});
agent.on('workflow:step:complete', (event) => {
console.log(`Step ${event.stepId} complete`);
});
agent.on('workflow:complete', (event) => {
console.log(`Workflow complete in ${event.duration}ms`);
});
agent.on('workflow:error', (event) => {
console.error(`Workflow failed: ${event.error}`);
});