npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

sw4rm

v0.1.0

Published

TypeScript AI Agent collaboration inspired by OpenAI/Swarm

Downloads

78

Readme

Swarm TypeScript

A powerful TypeScript library for building AI agents with tool-use capabilities. Swarm enables you to create intelligent agents that can use multiple tools, chain operations together, and handle complex multi-step tasks.

Inspired by openai/swarm.

Demo

Features

  • 🛠 Multi-Tool Support: Create agents with access to multiple tools and functions
  • 🔄 Tool Chaining: Intelligently chain multiple operations together
  • 🌊 Streaming Support: Real-time streaming of agent responses
  • 🎯 Type Safety: Full TypeScript support with comprehensive type definitions
  • 🔍 Smart Context: Pass and maintain context variables across operations
  • Parallel Execution: Support for parallel tool calls when possible
  • 🐛 Error Handling: Robust error handling and retry mechanisms
  • 📝 Logging: Configurable logging system for debugging

Installation

You can install the package using npm:

npm install sw4rm

Quick Start

  1. Create an agent with tools:
import { Agent } from 'sw4rm/types';

const myAgent: Agent = {
  name: 'MyAssistant',
  model: 'gpt-4o-mini',
  instructions: 'You are a helpful assistant...',
  functions: [
    async function calculate(params: { expression: string }) {
      // Implementation
    }
  ],
  parallelToolCalls: true
};
  1. Initialize and run the Swarm system:
import { Swarm } from 'sw4rm/core';

const swarm = new Swarm();
const result = await swarm.run(
  myAgent,
  messages,
  contextVariables,
  { stream: true }
);
  1. Use the CLI interface:
import { CLI } from 'sw4rm/cli';

const cli = new CLI({
  agent: myAgent,
  stream: true
});

await cli.start();

Examples

Check out the examples directory for complete working examples, including:

  • Multi-tool agent implementation
  • Weather and web search integration
  • Data analysis and unit conversion
  • Complex query handling

To run the examples:

npm run start:example

Project Structure

sw4rm/
├── src/
│   ├── core.ts      # Core Swarm implementation
│   ├── cli.ts       # CLI interface
│   ├── types.ts     # TypeScript type definitions
│   ├── errors.ts    # Error handling
│   └── utils.ts     # Utility functions
├── examples/
│   ├── agent.ts     # Example agent configuration
│   ├── functions.ts # Tool implementations
│   ├── index.ts     # Example usage
│   └── README.md    # Example documentation
└── README.md        # This file

API Documentation

Core Classes

Swarm

The main class for running agents and managing tool execution.

const swarm = new Swarm(config?: SwarmConfig);
await swarm.run(agent, messages, contextVariables, options);

CLI

Command-line interface for interactive agent sessions.

const cli = new CLI(config: {
  agent: Agent;
  contextVariables?: Record<string, unknown>;
  stream?: boolean;
  debug?: boolean;
});
await cli.start();

Key Interfaces

Agent

Defines an agent's capabilities and configuration.

interface Agent {
  name: string;
  model: string;
  instructions: string | (() => string);
  functions: Function[];
  parallelToolCalls: boolean;
}

SwarmConfig

Configuration options for the Swarm system.

interface SwarmConfig {
  logger?: Logger;
  retryConfig?: {
    maxRetries: number;
    initialDelay: number;
    maxDelay: number;
  };
}

Error Handling

The system includes several error types for different scenarios:

  • ValidationError: For input validation failures
  • APIError: For API communication issues
  • ToolExecutionError: For tool execution failures
  • TimeoutError: For operation timeouts

Best Practices

  1. Tool Implementation

    • Implement proper error handling in tools
    • Return clear, formatted responses
    • Include type definitions for parameters
  2. Agent Configuration

    • Provide clear instructions
    • Set appropriate model parameters
    • Consider parallel execution capabilities
  3. Error Handling

    • Catch and handle specific error types
    • Provide meaningful error messages
    • Implement retry mechanisms where appropriate

Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

License

This project is licensed under the MIT License - see the LICENSE file for details.