autoflow

package
v19.1.2 Latest Latest
Warning

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

Go to latest
Published: Jul 7, 2026 License: MIT Imports: 25 Imported by: 0

Documentation

Index

Constants

View Source
const (
	ModuleName = "autoflow"
)

Variables

View Source
var File_internal_module_autoflow_autoflow_proto protoreflect.FileDescriptor

Functions

This section is empty.

Types

type AllowLimiter added in v19.1.0

type AllowLimiter interface {
	Allow(ctx context.Context) bool
}

func NewRedisAllowLimiter added in v19.1.0

func NewRedisAllowLimiter(
	redisClient rueidis.Client,
	keyPrefix string,
	perMinute uint32,
	log *slog.Logger,
	handleProcessingError func(msg string, err error),
	tracer trace.Tracer,
	meter otelmetric.Meter,
) (AllowLimiter, error)

NewRedisAllowLimiter returns a metrics-instrumented AllowLimiter backed by a Redis token bucket keyed per project ID + event type, allowing perMinute events through each one-minute window. Returns an error if the metric instrumentation fails to register.

type CompositeModuleManager added in v19.1.0

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

func NewCompositeModuleManager added in v19.1.0

func NewCompositeModuleManager(delegate flowcore.ModuleManager, modules ...Module) *CompositeModuleManager

func (*CompositeModuleManager) InvokeAction added in v19.1.0

func (m *CompositeModuleManager) InvokeAction(ctx context.Context, moduleName, actionName, idempotencyKey string, args []*pkg_autoflow.Value, kwargs []*pkg_autoflow.NamedValue) (flowcore.CallResult, error)

func (*CompositeModuleManager) LoadModuleDescriptor added in v19.1.0

func (m *CompositeModuleManager) LoadModuleDescriptor(ctx context.Context, moduleName string) (*pkg_autoflow.ModuleDescriptor, error)

type Module added in v19.1.0

type Module interface {
	Name() string
	LoadModuleDescriptor(ctx context.Context) (*pkg_autoflow.ModuleDescriptor, error)
	InvokeAction(ctx context.Context, actionName, idempotencyKey string, args []*pkg_autoflow.Value, kwargs []*pkg_autoflow.NamedValue) (flowcore.CallResult, error)
}

type RateLimiterCtxKey added in v19.1.0

type RateLimiterCtxKey string

type RedisModuleRegistry added in v19.1.0

type RedisModuleRegistry struct {
	Client    rueidis.Client
	KeyPrefix string
	TTL       time.Duration
	Validator protovalidate.Validator
}

RedisModuleRegistry registers AutoFlow modules in Redis. A module's descriptor can be looked up by name.

func (*RedisModuleRegistry) LoadModuleDescriptor added in v19.1.0

func (r *RedisModuleRegistry) LoadModuleDescriptor(ctx context.Context, moduleName string) (*RegisteredModuleDescriptor, error)

LoadModuleDescriptor loads a module descriptor from Redis. Returns (nil, nil) if not found.

func (*RedisModuleRegistry) RegisterDescriptor added in v19.1.0

func (r *RedisModuleRegistry) RegisterDescriptor(ctx context.Context, moduleName string, desc *RegisteredModuleDescriptor) error

type RegisteredModuleDescriptor added in v19.1.0

type RegisteredModuleDescriptor struct {
	ModuleId   int64                      `protobuf:"varint,1,opt,name=module_id,json=moduleId" json:"module_id,omitempty"`
	ModuleDesc *autoflow.ModuleDescriptor `protobuf:"bytes,2,opt,name=module_desc,json=moduleDesc" json:"module_desc,omitempty"`
	// contains filtered or unexported fields
}

func (*RegisteredModuleDescriptor) Descriptor deprecated added in v19.1.0

func (*RegisteredModuleDescriptor) Descriptor() ([]byte, []int)

Deprecated: Use RegisteredModuleDescriptor.ProtoReflect.Descriptor instead.

func (*RegisteredModuleDescriptor) GetModuleDesc added in v19.1.0

func (*RegisteredModuleDescriptor) GetModuleId added in v19.1.0

func (x *RegisteredModuleDescriptor) GetModuleId() int64

func (*RegisteredModuleDescriptor) ProtoMessage added in v19.1.0

func (*RegisteredModuleDescriptor) ProtoMessage()

func (*RegisteredModuleDescriptor) ProtoReflect added in v19.1.0

func (*RegisteredModuleDescriptor) Reset added in v19.1.0

func (x *RegisteredModuleDescriptor) Reset()

func (*RegisteredModuleDescriptor) String added in v19.1.0

func (x *RegisteredModuleDescriptor) String() string

type RemoteModuleClient added in v19.1.0

type RemoteModuleClient struct {
	AgentConnPool func(api.AgentKey) grpc.ClientConnInterface
}

func (*RemoteModuleClient) InvokeAction added in v19.1.0

InvokeAction sends a request to a matching agent.

This method uses the simplified tunneling approach. A Remote AutoFlow Module client for that agent key must have an open InvokeAction RPC call to any Relay. The req is routed through a gateway Relay (potentially itself) to that client. This method must send the RPC messages in reversed order - meaning that the actually defined RPC "response" becomes this client's request and the vice versa.

type RemoteModuleManager added in v19.1.0

type RemoteModuleManager struct {
	ModuleClient *RemoteModuleClient
	Registry     *RedisModuleRegistry
}

func (*RemoteModuleManager) InvokeAction added in v19.1.0

func (m *RemoteModuleManager) InvokeAction(ctx context.Context, moduleName, actionName, idempotencyKey string, args []*pkg_autoflow.Value, kwargs []*pkg_autoflow.NamedValue) (flowcore.CallResult, error)

func (*RemoteModuleManager) LoadModuleDescriptor added in v19.1.0

func (m *RemoteModuleManager) LoadModuleDescriptor(ctx context.Context, moduleName string) (*pkg_autoflow.ModuleDescriptor, error)

type WorkflowRateLimiter added in v19.1.0

type WorkflowRateLimiter struct {
	AllowLimiter AllowLimiter
}

WorkflowRateLimiter wraps a generic allowLimiter to provide a more suitable interface. This type mostly exists because the redistool.TokenLimiter implements this interface, too. NOTE: we may consider refactoring the redistool.TokenLimiter and metric.AllowLimiter to be more generic and not needing the HandleProcessingError (the caller can do that) and RequestKey function. The latter value can be provided as argument by the caller.

func (*WorkflowRateLimiter) Allow added in v19.1.0

func (l *WorkflowRateLimiter) Allow(ctx context.Context, projectID int64, eventType string) bool

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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