chore(go): audit providers copilot droid augment cline
Move the four providers onto managed_runtime.go and shell_command.go; keep the Auggie wrappers, Cline metadata wrappers, and the Copilot and Droid precondition handling provider-local. Claude-Session: https://claude.ai/code/session_01Agoc9bRVE9KL7mmWtey9Vq
This commit is contained in:
1 parent
a7fc75bf6b
commit
1ede03d989
28 files changed
+234
-2051
No files matched your search
@@ -6,7 +6,6 @@ import (
|
||||
"fmt"
|
||||
"os"
|
||||
"path/filepath"
|
||||
"runtime"
|
||||
"strings"
|
||||
)
|
||||
|
||||
@@ -80,37 +79,6 @@ func resolveClineHookFiles() (clineHookPaths, error) {
|
||||
}, nil
|
||||
}
|
||||
|
||||
func sameClineAgentID(left, right string) bool {
|
||||
if runtime.GOOS == "windows" {
|
||||
return strings.EqualFold(left, right)
|
||||
}
|
||||
return left == right
|
||||
}
|
||||
|
||||
func normalizeClinePath(value string) (string, error) {
|
||||
absolute, err := filepath.Abs(value)
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
normalized := filepath.Clean(absolute)
|
||||
if runtime.GOOS == "windows" {
|
||||
normalized = strings.ToLower(normalized)
|
||||
}
|
||||
return normalized, nil
|
||||
}
|
||||
|
||||
func sameClinePath(left, right string) (bool, error) {
|
||||
normalizedLeft, err := normalizeClinePath(left)
|
||||
if err != nil {
|
||||
return false, err
|
||||
}
|
||||
normalizedRight, err := normalizeClinePath(right)
|
||||
if err != nil {
|
||||
return false, err
|
||||
}
|
||||
return normalizedLeft == normalizedRight, nil
|
||||
}
|
||||
|
||||
func buildClineMetadata(kind, agentID, runtimePath string) (clineHookMetadata, error) {
|
||||
metadata := clineHookMetadata{
|
||||
Version: clineMetadataVersion,
|
||||
@@ -314,7 +282,7 @@ func clineContractForFiles(
|
||||
if guard.Kind != "guard" || audit.Kind != "audit" {
|
||||
return nil, fmt.Errorf("Elydora Cline hook files contain mismatched event metadata")
|
||||
}
|
||||
if !sameClineAgentID(guard.AgentID, audit.AgentID) {
|
||||
if !sameManagedAgentID(guard.AgentID, audit.AgentID) {
|
||||
return nil, fmt.Errorf("Elydora Cline hook files reference different agents")
|
||||
}
|
||||
agentDirectory, err := ResolveAgentRuntimeDirectory(guard.AgentID)
|
||||
@@ -323,15 +291,8 @@ func clineContractForFiles(
|
||||
}
|
||||
expectedGuard := filepath.Join(agentDirectory, clineGuardScript)
|
||||
expectedAudit := filepath.Join(agentDirectory, clineAuditScript)
|
||||
guardMatches, err := sameClinePath(guard.RuntimePath, expectedGuard)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("compare Cline guard runtime path: %w", err)
|
||||
}
|
||||
auditMatches, err := sameClinePath(audit.RuntimePath, expectedAudit)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("compare Cline audit runtime path: %w", err)
|
||||
}
|
||||
if !guardMatches || !auditMatches {
|
||||
if !sameManagedPath(guard.RuntimePath, expectedGuard) ||
|
||||
!sameManagedPath(audit.RuntimePath, expectedAudit) {
|
||||
return nil, fmt.Errorf("Elydora Cline hook metadata references an unexpected runtime path")
|
||||
}
|
||||
return &clineRuntimeContract{
|
||||
|
||||
Reference in new issue
Block a user