Architecture

Plugin Architecture

Plugins extend agent capabilities through a simple interface:

interface Plugin {
  name: string;
  version: string;
  initialize: (agent: Agent) => Promise<void>;
  execute: (agent: Agent, input: any) => Promise<any>;
  cleanup?: () => Promise<void>;
}

BasePlugin Class

Extend BasePlugin to create your own plugins:

import { BasePlugin } from '@naomi/core';
import { Agent } from '@naomi/core';

export class MyPlugin extends BasePlugin {
  name = 'my-plugin';
  version = '1.0.0';

  async initialize(agent: Agent): Promise<void> {
    // Initialize plugin resources
  }

  async execute(agent: Agent, input: any): Promise<any> {
    // Execute plugin functionality
    return { result: 'success' };
  }

  async cleanup(): Promise<void> {
    // Cleanup resources
  }
}

Using Plugins

Built-in Plugins

ColosseumHackathonPlugin

Enables agents to participate in the Colosseum Agent Hackathon.

MemoryPlugin

Example memory plugin for storing and retrieving memories.

See packages/core/src/plugins/examples/MemoryPlugin.ts for implementation.

Plugin Events

Plugins can emit events that agents can listen to:

Last updated