Go SDK for Elydora agent operations, cryptographic signing, and audit trail integration. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
40 lines
1.3 KiB
Go
40 lines
1.3 KiB
Go
package plugins
|
|
|
|
// AgentRegistryEntry describes a supported agent integration.
|
|
type AgentRegistryEntry struct {
|
|
Name string
|
|
ConfigDir string // ~ means home dir; no ~ means project-relative
|
|
ConfigFile string
|
|
}
|
|
|
|
// SupportedAgents is the canonical registry of all supported agent integrations.
|
|
var SupportedAgents = map[string]AgentRegistryEntry{
|
|
"claudecode": {Name: "Claude Code", ConfigDir: "~/.claude", ConfigFile: "settings.json"},
|
|
"cursor": {Name: "Cursor", ConfigDir: ".cursor", ConfigFile: "hooks.json"},
|
|
"gemini": {Name: "Gemini CLI", ConfigDir: "~/.gemini", ConfigFile: "settings.json"},
|
|
"augment": {Name: "Augment Code", ConfigDir: "~/.augment", ConfigFile: "settings.json"},
|
|
"kiro": {Name: "Kiro", ConfigDir: ".kiro/hooks", ConfigFile: "elydora-audit.kiro.hook"},
|
|
"opencode": {Name: "OpenCode", ConfigDir: ".opencode/plugins", ConfigFile: "elydora-audit.js"},
|
|
}
|
|
|
|
// NewPlugin creates a plugin instance for the given agent name.
|
|
// Returns nil if the agent is not supported.
|
|
func NewPlugin(agentName string) AgentPlugin {
|
|
switch agentName {
|
|
case "claudecode":
|
|
return &ClaudeCodePlugin{}
|
|
case "cursor":
|
|
return &CursorPlugin{}
|
|
case "gemini":
|
|
return &GeminiPlugin{}
|
|
case "augment":
|
|
return &AugmentPlugin{}
|
|
case "kiro":
|
|
return &KiroPlugin{}
|
|
case "opencode":
|
|
return &OpenCodePlugin{}
|
|
default:
|
|
return nil
|
|
}
|
|
}
|