API ReferenceAgent Session

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[]): void

Example

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}`);
});

See Also