Skip to content

Plugin

Defined in: src/plugins/plugin.ts:51

Abstract base class for objects that extend agent functionality.

Plugins provide a composable way to add behavior changes to agents by registering hook callbacks in their initAgent method. Each plugin must have a unique name for identification, logging, and duplicate prevention.

class LoggingPlugin extends Plugin {
get name(): string {
return 'logging-plugin'
}
override initAgent(agent: AgentData): void {
agent.addHook(BeforeInvocationEvent, (event) => {
console.log('Agent invocation started')
})
}
}
const agent = new Agent({
model,
plugins: [new LoggingPlugin()],
})
class MyToolPlugin extends Plugin {
get name(): string {
return 'my-tool-plugin'
}
override getTools(): Tool[] {
return [myTool]
}
}
new Plugin(): Plugin;

Plugin

get abstract name(): string;

Defined in: src/plugins/plugin.ts:58

A stable string identifier for the plugin. Used for logging, duplicate detection, and plugin management.

For strands-vended plugins, names should be prefixed with strands:.

string

initAgent(agent): void | Promise<void>;

Defined in: src/plugins/plugin.ts:69

Initialize the plugin with the agent instance.

Override this method to register hooks and perform custom initialization. When overriding, call super.initAgent(agent) to ensure tools from getTools are registered automatically.

ParameterTypeDescription
agentAgentDataThe agent instance this plugin is being attached to

void | Promise<void>


getTools(): Tool[];

Defined in: src/plugins/plugin.ts:82

Returns tools provided by this plugin for auto-registration. Override to provide plugin-specific tools.

Tool[]

Array of tools to register with the agent