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: {
chat: {
name: 'onnx-community/gemma-3-270m-it-ONNX',
quantization: 'q4'
},
tool_use: {
name: 'onnx-community/Qwen2.5-0.5B-Instruct',
quantization: 'q4'
}
}
});Agent Session Methods
runWorkflow
Execute a multi-step agent workflow.
runWorkflow(
prompt: string,
workflow: AgentWorkflow
): AsyncIterable<WorkflowIterationResponse>Parameters
interface AgentWorkflow {
id: string;
name: string;
description?: string;
systemPrompt?: string;
steps: WorkflowStep[];
context?: Record<string, any>;
tools?: Tool[];
timeout?: number;
maxIterations?: number;
memoryConfig?: MemoryConfig;
}
interface WorkflowStep {
id: string;
description?: string;
prompt: string;
maxTokens?: number;
temperature?: number;
generationTask?: GenerationTask;
toolChoice?: string[];
maxAttempts?: number;
}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',
name: 'My Workflow',
systemPrompt: 'You are a helpful assistant.',
maxIterations: 5,
steps: [
{
id: 'step1',
prompt: 'Analyze the input',
maxTokens: 200
}
],
tools: []
};
for await (const iteration of agent.runWorkflow('Hello', workflow)) {
console.log(iteration.content);
}registerTool
Register a tool for use in workflows.
registerTool(tool: Tool): voidExample
agent.registerTool({
type: 'function',
function: {
name: 'my_tool',
description: 'Does something useful',
parameters: {
type: 'object',
properties: {
input: { type: 'string' }
},
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.
interface MemoryConfig {
memory?: Memory;
formatter?: MemoryFormatter;
memoryCompressor?: MemoryCompressor;
maxTokens?: number;
compressionThreshold?: number;
preserveMessageTypes?: string[];
autoCompress?: boolean;
checkpointInterval?: number;
}Example
import { SlidingWindowMemory, LLMSummarization } from 'agentary-js';
const workflow = {
memoryConfig: {
memory: new SlidingWindowMemory(),
memoryCompressor: new LLMSummarization({
maxSummaryTokens: 512,
recentWindowSize: 4
}),
maxTokens: 2048,
compressionThreshold: 0.8
},
// ...
};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}`);
});