Files
ai-agent/internal/ai/workflow/registry/spec.go
T
2026-06-22 00:08:31 +08:00

54 lines
1.3 KiB
Go

package registry
type NodeRiskLevel string
const (
NodeRiskLevelLow NodeRiskLevel = "low"
NodeRiskLevelMedium NodeRiskLevel = "medium"
NodeRiskLevelHigh NodeRiskLevel = "high"
)
type NodeSpec struct {
Type string `json:"type"`
Title string `json:"title"`
Description string `json:"description"`
RiskLevel NodeRiskLevel `json:"riskLevel"`
Interruptible bool `json:"interruptible"`
RequiresConfirmationPredecessor bool `json:"requiresConfirmationPredecessor"`
}
type Registry struct {
specsByType map[string]NodeSpec
specs []NodeSpec
}
func NewRegistry(specs ...NodeSpec) *Registry {
ret := &Registry{
specsByType: make(map[string]NodeSpec, len(specs)),
specs: make([]NodeSpec, 0, len(specs)),
}
for _, spec := range specs {
if spec.Type == "" {
continue
}
ret.specsByType[spec.Type] = spec
ret.specs = append(ret.specs, spec)
}
return ret
}
func (r *Registry) Get(nodeType string) (NodeSpec, bool) {
if r == nil {
return NodeSpec{}, false
}
spec, ok := r.specsByType[nodeType]
return spec, ok
}
func (r *Registry) List() []NodeSpec {
if r == nil {
return nil
}
return append([]NodeSpec(nil), r.specs...)
}