Files
metabuilder/workflow/plugins/go/plugin.go
johndoe6345789 48135c81e6 feat: Propagate workflow plugins to Go, Rust, C++, and Mojo
Multi-language workflow plugin system following Python's structure:
- Each plugin in its own directory with implementation + package.json
- Category-level package.json manifests listing all plugins
- Consistent interface: run(runtime, inputs) -> outputs

Languages added:
- Go: math, string, logic, list, dict, var, convert (25+ plugins)
- Rust: math, string, logic, list, convert, var (50+ functions)
- C++: header-only math, string, logic, var, convert (30+ plugins)
- Mojo: math, string, list with systems programming features

Python structure fixed:
- Reorganized flat files into plugin subdirectories
- Added package.json metadata to all 120+ plugins
- Added missing backend category (15 plugins)
- Category manifests with plugin lists

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-21 18:42:14 +00:00

37 lines
1.2 KiB
Go

// Package plugin defines the workflow plugin interface for Go.
//
// Go plugins follow the same pattern as Python:
// - Each file contains one operation
// - All plugins implement the Run function
// - Input/output are map[string]interface{}
package plugin
// Runtime provides context for plugin execution.
type Runtime struct {
Store map[string]interface{} // Workflow state storage
Context map[string]interface{} // Shared context (clients, config)
Logger Logger // Logging interface
}
// Logger interface for plugin logging.
type Logger interface {
Info(msg string)
Error(msg string)
Debug(msg string)
}
// Plugin is the interface all workflow plugins must implement.
type Plugin interface {
// Run executes the plugin with given inputs.
// Returns output map and optional error.
Run(runtime *Runtime, inputs map[string]interface{}) (map[string]interface{}, error)
}
// PluginFunc is a function type that implements Plugin interface.
type PluginFunc func(runtime *Runtime, inputs map[string]interface{}) (map[string]interface{}, error)
// Run implements Plugin interface for PluginFunc.
func (f PluginFunc) Run(runtime *Runtime, inputs map[string]interface{}) (map[string]interface{}, error) {
return f(runtime, inputs)
}