This is an automated email from the ASF dual-hosted git repository.

hsluoyz pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/casbin-gateway.git


The following commit(s) were added to refs/heads/master by this push:
     new 82ae18a  fix: add entryDigest to MCP
82ae18a is described below

commit 82ae18ab1c4fa6e83a5cbfd5f79adf4f42d2380a
Author: Yang Luo <[email protected]>
AuthorDate: Fri Aug 21 21:23:05 2026 +0800

    fix: add entryDigest to MCP
---
 agentconfig/mcp_item.go | 14 ++++++++++++++
 1 file changed, 14 insertions(+)

diff --git a/agentconfig/mcp_item.go b/agentconfig/mcp_item.go
index 99e4a51..f51c45c 100644
--- a/agentconfig/mcp_item.go
+++ b/agentconfig/mcp_item.go
@@ -15,6 +15,7 @@
 package agentconfig
 
 import (
+       "crypto/sha256"
        "encoding/json"
        "strings"
 
@@ -37,6 +38,7 @@ func mcpItems(agentId string, owner string, file string, 
entries map[string]map[
                        Url:       stringField(entry, "url", "serverUrl", 
"endpoint"),
                        Managed:   name == ManagedEntryName,
                        Transport: transportOf(entry),
+                       Digest:    entryDigest(entry),
                }
                items = append(items, item)
        }
@@ -58,6 +60,18 @@ func mcpDetail(agentId string, owner string, file string, 
name string, entry map
        return &Detail{Item: items[0], Content: string(content)}, nil
 }
 
+// entryDigest identifies one server's definition, so the same name in two
+// agents can be told apart when the two definitions differ. Marshalling sorts
+// the keys, so the digest does not depend on how the file was written.
+func entryDigest(entry map[string]any) string {
+       raw, err := json.Marshal(entry)
+       if err != nil {
+               return ""
+       }
+       sum := sha256.Sum256(raw)
+       return shortDigest(sum[:])
+}
+
 // transportOf reports how the agent reaches the server. An entry that names 
its
 // own type is believed; otherwise a command means the server is spawned 
locally
 // and a URL means it is reached over HTTP.


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to