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

Function ValidateApprovalSemantics

internal/task/validate.go:1177–1219  ·  view source on GitHub ↗

ValidateApprovalSemantics reports whether one approval policy and state pair is internally consistent.

(policy ApprovalPolicy, state ApprovalState, path string)

Source from the content-addressed store, hash-verified

1175
1176// ValidateApprovalSemantics reports whether one approval policy and state pair is internally consistent.
1177func ValidateApprovalSemantics(policy ApprovalPolicy, state ApprovalState, path string) error {
1178 normalizedPolicy := normalizeApprovalPolicyOrDefault(policy)
1179 normalizedState := normalizeApprovalStateOrDefault(normalizedPolicy, state)
1180
1181 if err := normalizedPolicy.Validate(nestedPath(path, "approval_policy")); err != nil {
1182 return err
1183 }
1184 if err := normalizedState.Validate(nestedPath(path, "approval_state")); err != nil {
1185 return err
1186 }
1187
1188 switch normalizedPolicy {
1189 case ApprovalPolicyNone:
1190 if normalizedState != ApprovalStateNotRequired {
1191 return fmt.Errorf(
1192 "%w: %s must be %q when %s is %q",
1193 ErrValidation,
1194 nestedPath(path, "approval_state"),
1195 ApprovalStateNotRequired,
1196 nestedPath(path, "approval_policy"),
1197 ApprovalPolicyNone,
1198 )
1199 }
1200 case ApprovalPolicyManual:
1201 switch normalizedState {
1202 case ApprovalStatePending, ApprovalStateApproved, ApprovalStateRejected:
1203 return nil
1204 default:
1205 return fmt.Errorf(
1206 "%w: %s must be one of %q, %q, or %q when %s is %q",
1207 ErrValidation,
1208 nestedPath(path, "approval_state"),
1209 ApprovalStatePending,
1210 ApprovalStateApproved,
1211 ApprovalStateRejected,
1212 nestedPath(path, "approval_policy"),
1213 ApprovalPolicyManual,
1214 )
1215 }
1216 }
1217
1218 return nil
1219}
1220
1221func validateJSONSize(payload json.RawMessage, maxBytes int, path string) error {
1222 if len(payload) == 0 {

Callers 1

ValidateMethod · 0.85

Calls 4

nestedPathFunction · 0.70
ValidateMethod · 0.65

Tested by

no test coverage detected