mirror of
https://github.com/johndoe6345789/metabuilder.git
synced 2026-04-25 14:25:02 +00:00
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>
37 lines
1.2 KiB
Go
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)
|
|
}
|