Help us shape the future of Go! Take the 2026 Go Developer Survey

ratelimit

package
v1.22.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 26, 2026 License: AGPL-3.0 Imports: 6 Imported by: 0

Documentation

Index

Constants

View Source
const (
	DefaultCooldown      = 30 * time.Second
	DefaultResetBuffer   = 5
	DefaultRecoveryInput = "1\n"
)

Variables

This section is empty.

Functions

This section is empty.

Types

type BufferReader

type BufferReader interface {
	GetRecentOutput(n int) []byte
}

type Detection

type Detection struct {
	Provider    Provider
	State       RateLimitState
	ResetTime   time.Time
	InputToSend []byte
	DetectedAt  time.Time
}

type Detector

type Detector struct {
	// contains filtered or unexported fields
}

func NewDetector

func NewDetector(sessionID string) *Detector

func (*Detector) GetResetTime

func (d *Detector) GetResetTime() time.Time

func (*Detector) GetState

func (d *Detector) GetState() RateLimitState

func (*Detector) ProcessOutput

func (d *Detector) ProcessOutput(data []byte)

func (*Detector) SetCooldown

func (d *Detector) SetCooldown(cooldown time.Duration)

func (*Detector) SetDetectionCallback

func (d *Detector) SetDetectionCallback(callback func(Detection))

func (*Detector) SetResetBuffer

func (d *Detector) SetResetBuffer(seconds int)

func (*Detector) SetState

func (d *Detector) SetState(state RateLimitState)

type EventBus

type EventBus struct {
	// contains filtered or unexported fields
}

func NewEventBus

func NewEventBus() *EventBus

func (*EventBus) Publish

func (eb *EventBus) Publish(event RateLimitEvent)

func (*EventBus) Subscribe

func (eb *EventBus) Subscribe(eventType eventType) <-chan RateLimitEvent

type Integration

type Integration struct {
	// contains filtered or unexported fields
}

func NewIntegrationWithAccessor

func NewIntegrationWithAccessor(sessionID string, session SessionAccessor, buffer BufferReader) *Integration

func (*Integration) GetManager

func (i *Integration) GetManager() *Manager

func (*Integration) IsEnabled

func (i *Integration) IsEnabled() bool

func (*Integration) SetEnabled

func (i *Integration) SetEnabled(enabled bool)

func (*Integration) Start

func (i *Integration) Start()

func (*Integration) Stop

func (i *Integration) Stop()

type Manager

type Manager struct {
	// contains filtered or unexported fields
}

func NewManager

func NewManager(sessionID string, instance SessionAccessor) *Manager

func (*Manager) GetDetector

func (m *Manager) GetDetector() *Detector

func (*Manager) GetEventBus

func (m *Manager) GetEventBus() *EventBus

func (*Manager) GetScheduler

func (m *Manager) GetScheduler() *Scheduler

func (*Manager) GetState

func (m *Manager) GetState() RateLimitState

func (*Manager) IsEnabled

func (m *Manager) IsEnabled() bool

func (*Manager) ProcessOutput

func (m *Manager) ProcessOutput(data []byte)

func (*Manager) SetCooldown

func (m *Manager) SetCooldown(cooldown time.Duration)

func (*Manager) SetEnabled

func (m *Manager) SetEnabled(enabled bool)

func (*Manager) SetResetBuffer

func (m *Manager) SetResetBuffer(seconds int)

func (*Manager) Start

func (m *Manager) Start()

func (*Manager) Stop

func (m *Manager) Stop()

type PTYConsumer

type PTYConsumer struct {
	// contains filtered or unexported fields
}

func NewPTYConsumer

func NewPTYConsumer(buffer BufferReader, manager *Manager) *PTYConsumer

func (*PTYConsumer) GetRateLimitState

func (pc *PTYConsumer) GetRateLimitState() RateLimitState

func (*PTYConsumer) IsEnabled

func (pc *PTYConsumer) IsEnabled() bool

func (*PTYConsumer) SetEnabled

func (pc *PTYConsumer) SetEnabled(enabled bool)

func (*PTYConsumer) Start

func (pc *PTYConsumer) Start()

func (*PTYConsumer) Stop

func (pc *PTYConsumer) Stop()

type Provider

type Provider string
const (
	ProviderAnthropic Provider = "anthropic"
	ProviderOpenAI    Provider = "openai"
	ProviderGoogle    Provider = "google"
	ProviderAider     Provider = "aider"
	ProviderUnknown   Provider = "unknown"
)

type RateLimitEvent

type RateLimitEvent struct {
	Type      eventType
	SessionID string
	Provider  Provider
	Timestamp time.Time
	Error     error
}

type RateLimitState

type RateLimitState int
const (
	StateNone RateLimitState = iota
	StateWaiting
	StateRecovering
	StateRecovered
	StateFailed
)

type RecoveryHandler

type RecoveryHandler struct {
	// contains filtered or unexported fields
}

func NewRecoveryHandler

func NewRecoveryHandler(sessionID string, sendInput func([]byte) error) *RecoveryHandler

func (*RecoveryHandler) Execute

func (h *RecoveryHandler) Execute(input []byte) error

type Scheduler

type Scheduler struct {
	// contains filtered or unexported fields
}

func NewScheduler

func NewScheduler(sessionID string) *Scheduler

func (*Scheduler) CancelRecovery

func (s *Scheduler) CancelRecovery()

func (*Scheduler) GetScheduledTime

func (s *Scheduler) GetScheduledTime() (time.Time, bool)

func (*Scheduler) IsScheduled

func (s *Scheduler) IsScheduled() bool

func (*Scheduler) ScheduleRecovery

func (s *Scheduler) ScheduleRecovery(resetTime time.Time)

func (*Scheduler) SetBuffer

func (s *Scheduler) SetBuffer(seconds int)

func (*Scheduler) SetRecoveryCallback

func (s *Scheduler) SetRecoveryCallback(callback func() error)

func (*Scheduler) SetSessionStatusCheck

func (s *Scheduler) SetSessionStatusCheck(callback func() bool)

type SessionAccessor

type SessionAccessor interface {
	WriteToPTY(data []byte) (int, error)
	GetStatus() int
}

type SessionStatus

type SessionStatus int
const (
	SessionStatusRunning SessionStatus = iota
	SessionStatusReady
	SessionStatusPaused
	SessionStatusStopped
)

func StatusToSessionStatus

func StatusToSessionStatus(s int) SessionStatus

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL