Files
Agent-System/internal/app/intentflow/errors.go
T
weichenandCursor 0611b1f24f feat(intentflow): wire U9–U12 ports and gated OwnerMux
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>
2026-09-16 15:42:49 +00:00

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 ""
}
}