Initial commit: Elydora Open Source — self-hosted audit platform for AI agents
Full self-hosted port of the Elydora tamper-evident audit protocol: - Hono API server with PostgreSQL, Redis, MinIO adapters - Ed25519 signed operations, chain hashing, Merkle epoch rollups - PBKDF2 password hashing, HMAC-SHA256 JWT, 5-role RBAC - Next.js management console - Node.js, Python, and Go SDKs - Docker Compose for local deployment - Helm chart for Kubernetes - Comprehensive security hardening and audit fixes applied Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
1 parent
15547a8c35
commit
e390e68594
207 files changed
+32790
-63
No files matched your search
@@ -0,0 +1,45 @@
|
||||
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"},
|
||||
"kirocli": {Name: "Kiro CLI", ConfigDir: "~/.kiro", ConfigFile: "settings.json"},
|
||||
"kiroide": {Name: "Kiro IDE", ConfigDir: "~/.kiro/hooks", ConfigFile: "elydora-audit.kiro.hook"},
|
||||
"opencode": {Name: "OpenCode", ConfigDir: "~/.opencode/plugins", ConfigFile: "elydora-audit.js"},
|
||||
"copilot": {Name: "Copilot CLI", ConfigDir: ".github/hooks", ConfigFile: "hooks.json"},
|
||||
"letta": {Name: "Letta Code", ConfigDir: "~/.letta", ConfigFile: "settings.json"},
|
||||
}
|
||||
|
||||
// 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 "kirocli":
|
||||
return &KiroCliPlugin{}
|
||||
case "kiroide":
|
||||
return &KiroIdePlugin{}
|
||||
case "opencode":
|
||||
return &OpenCodePlugin{}
|
||||
case "copilot":
|
||||
return &CopilotPlugin{}
|
||||
case "letta":
|
||||
return &LettaPlugin{}
|
||||
default:
|
||||
return nil
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user