Register dry-run adapters via BuildOwnerMux when independent flags are on; U9 stub fail-closes on malformed/timeout/out-of-bounds without raising PlanTier. Co-authored-by: Cursor <cursoragent@cursor.com>
50 lines
1.8 KiB
Go
50 lines
1.8 KiB
Go
package intentflow
|
|
|
|
import "errors"
|
|
|
|
// Sentinel errors use the public API error codes from the design §9.
|
|
var (
|
|
ErrPlanNotFoundOrHidden = errors.New("PLAN_NOT_FOUND_OR_HIDDEN")
|
|
ErrPlanStaleRevision = errors.New("PLAN_STALE_REVISION")
|
|
ErrPlanExpired = errors.New("PLAN_EXPIRED")
|
|
ErrPlanDecisionConflict = errors.New("PLAN_DECISION_CONFLICT")
|
|
ErrPlanDependencyInvalid = errors.New("PLAN_DEPENDENCY_INVALID")
|
|
ErrPlanActionForbidden = errors.New("PLAN_ACTION_FORBIDDEN")
|
|
ErrPlanActionVersionConflict = errors.New("PLAN_ACTION_VERSION_CONFLICT")
|
|
ErrUnauthenticated = errors.New("ERR_UNAUTHENTICATED")
|
|
)
|
|
|
|
var errTurnExists = errors.New("intentflow: turn exists")
|
|
|
|
// ErrorCode returns the stable machine code for a sentinel, or empty.
|
|
func ErrorCode(err error) string {
|
|
switch {
|
|
case errors.Is(err, ErrPlanNotFoundOrHidden):
|
|
return "PLAN_NOT_FOUND_OR_HIDDEN"
|
|
case errors.Is(err, ErrPlanStaleRevision):
|
|
return "PLAN_STALE_REVISION"
|
|
case errors.Is(err, ErrPlanExpired):
|
|
return "PLAN_EXPIRED"
|
|
case errors.Is(err, ErrPlanDecisionConflict):
|
|
return "PLAN_DECISION_CONFLICT"
|
|
case errors.Is(err, ErrPlanDependencyInvalid):
|
|
return "PLAN_DEPENDENCY_INVALID"
|
|
case errors.Is(err, ErrPlanActionForbidden):
|
|
return "PLAN_ACTION_FORBIDDEN"
|
|
case errors.Is(err, ErrPlanActionVersionConflict):
|
|
return "PLAN_ACTION_VERSION_CONFLICT"
|
|
case errors.Is(err, ErrUnauthenticated):
|
|
return "ERR_UNAUTHENTICATED"
|
|
case errors.Is(err, ErrSegmentProposalDisabled):
|
|
return "SEGMENT_PROPOSAL_DISABLED"
|
|
case errors.Is(err, ErrSegmentProposalMalformed):
|
|
return "SEGMENT_PROPOSAL_MALFORMED"
|
|
case errors.Is(err, ErrSegmentProposalTimeout):
|
|
return "SEGMENT_PROPOSAL_TIMEOUT"
|
|
case errors.Is(err, ErrSegmentProposalOutOfBounds):
|
|
return "SEGMENT_PROPOSAL_OUT_OF_BOUNDS"
|
|
default:
|
|
return ""
|
|
}
|
|
}
|