Files
foundry-core/internal/platform/canvas_limits.go
T
codex-bot d6ee8942f1
Foundry Go checks / check (push) Successful in 2m40s
Foundry Go checks / check (pull_request) Successful in 2m36s
Implement Canvas V2 subgraphs, assets and asynchronous AI execution
2026-11-06 18:36:00 +08:00

37 lines
757 B
Go

package platform
import (
"encoding/json"
"net/http"
"strings"
)
func canvasIdempotencyKey(r *http.Request) string {
return strings.ToLower(r.Header.Get("Idempotency-Key"))
}
func canvasExceededGraphLimits(raw json.RawMessage) bool {
var doc struct {
Nodes []json.RawMessage `json:"nodes"`
Edges []json.RawMessage `json:"edges"`
}
if json.Unmarshal(raw, &doc) != nil {
return false
}
if len(doc.Nodes) > 500 || len(doc.Edges) > 2000 {
return true
}
for _, raw := range doc.Edges {
var edge struct {
Data struct {
Path struct {
Knots []json.RawMessage `json:"knots"`
} `json:"path"`
} `json:"data"`
}
if json.Unmarshal(raw, &edge) == nil && len(edge.Data.Path.Knots) > 64 {
return true
}
}
return false
}