Skip to content

Plugin

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

Interface 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 implements Plugin {
get name(): string {
return 'logging-plugin'
}
initAgent(agent: AgentData): void {
agent.addHook(BeforeInvocationEvent, (event) => {
console.log('Agent invocation started')
})
}
}
const agent = new Agent({
model,
plugins: [new LoggingPlugin()],
})
class MyToolPlugin implements Plugin {
get name(): string {
return 'my-tool-plugin'
}
getTools(): Tool[] {
return [myTool]
}
}
readonly 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:.

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

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

Initialize the plugin with the agent instance.

Implement this method to register hooks and perform custom initialization. Tool registration from getTools is handled automatically by the PluginRegistry.

ParameterTypeDescription
agentAgentDataThe agent instance this plugin is being attached to

void | Promise<void>


optional getTools(): Tool[];

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

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

Tool[]

Array of tools to register with the agent