MCPcopy Create free account
hub / github.com/QuantumNous/new-api / validateProjectedTaskArtifacts

Function validateProjectedTaskArtifacts

controller/task.go:148–175  ·  view source on GitHub ↗
(artifacts []relaychannel.TaskArtifact)

Source from the content-addressed store, hash-verified

146}
147
148func validateProjectedTaskArtifacts(artifacts []relaychannel.TaskArtifact) ([]relaychannel.TaskArtifact, error) {
149 if len(artifacts) > 64 {
150 return nil, fmt.Errorf("%w: too many artifacts", errTaskArtifactPlugin)
151 }
152 seen := make(map[string]struct{}, len(artifacts))
153 for i := range artifacts {
154 if artifacts[i].Key != strings.TrimSpace(artifacts[i].Key) ||
155 artifacts[i].Type != strings.TrimSpace(artifacts[i].Type) {
156 return nil, fmt.Errorf("%w: invalid artifact identity", errTaskArtifactPlugin)
157 }
158 if !taskArtifactKeyPattern.MatchString(artifacts[i].Key) {
159 return nil, fmt.Errorf("%w: invalid artifact key", errTaskArtifactPlugin)
160 }
161 if _, exists := seen[artifacts[i].Key]; exists {
162 return nil, fmt.Errorf("%w: duplicate artifact key", errTaskArtifactPlugin)
163 }
164 seen[artifacts[i].Key] = struct{}{}
165 switch artifacts[i].Type {
166 case "video", "audio", "image", "file":
167 default:
168 return nil, fmt.Errorf("%w: invalid artifact type", errTaskArtifactPlugin)
169 }
170 if len(artifacts[i].MimeType) > 255 || strings.ContainsAny(artifacts[i].MimeType, "\r\n") {
171 return nil, fmt.Errorf("%w: invalid artifact mime type", errTaskArtifactPlugin)
172 }
173 }
174 return artifacts, nil
175}
176
177func initTaskArtifactAdaptor(task *model.Task) (relaychannel.TaskAdaptor, error) {
178 if task == nil || !taskHasPluginExecution(task) {

Calls

no outgoing calls