MCPcopy Create free account
hub / github.com/compozy/agh / ValidateEnvelopeConversation

Function ValidateEnvelopeConversation

internal/network/validate.go:272–302  ·  view source on GitHub ↗

ValidateEnvelopeConversation enforces kind-specific container and work fields.

(env Envelope)

Source from the content-addressed store, hash-verified

270
271// ValidateEnvelopeConversation enforces kind-specific container and work fields.
272func ValidateEnvelopeConversation(env Envelope) error {
273 if env.WorkID != nil {
274 if err := ValidateWorkID(*env.WorkID); err != nil {
275 return err
276 }
277 }
278 if isDiscoveryKind(env.Kind) {
279 return validateDiscoveryEnvelopeOmitsConversation(env)
280 }
281 if !isConversationKind(env.Kind) {
282 return nil
283 }
284 if _, err := ConversationRefFromEnvelope(env); err != nil {
285 return err
286 }
287 switch env.Kind {
288 case KindCapability:
289 if env.WorkID == nil {
290 return fmt.Errorf("%w: capability work_id is required", ErrMissingField)
291 }
292 case KindReceipt:
293 if env.WorkID == nil {
294 return fmt.Errorf("%w: receipt work_id is required", ErrMissingField)
295 }
296 case KindTrace:
297 if env.WorkID == nil {
298 return fmt.Errorf("%w: trace work_id is required", ErrMissingField)
299 }
300 }
301 return nil
302}
303
304// ConversationRefFromEnvelope returns the validated container reference for a conversation envelope.
305func ConversationRefFromEnvelope(env Envelope) (ConversationRef, error) {

Callers 1

Calls 5

ValidateWorkIDFunction · 0.85
isDiscoveryKindFunction · 0.85
isConversationKindFunction · 0.85

Tested by

no test coverage detected