Versions in this module Expand all Collapse all v1 v1.4.0 Oct 20, 2026 Changes in this version + const DefaultNamespace + var ErrCrossNamespaceForbidden = errors.New("cross-namespace access is forbidden by policy") + var ErrDefaultNamespaceProtected = errors.New("the default namespace is protected and cannot be deleted") + var ErrInvalidNamespaceName = errors.New("invalid namespace name") + var ErrNamespaceAlreadyExists = errors.New("namespace already exists") + var ErrNamespaceNotEmpty = errors.New("namespace contains active resources and cannot be deleted") + var ErrNamespaceNotFound = errors.New("namespace not found") + var ErrNamespaceTerminating = errors.New("namespace is terminating") + var ErrQuotaExceeded = errors.New("resource quota exceeded") + func ValidateNamespaceName(name string) error + type Enforcer struct + func NewEnforcer(store Store) *Enforcer + func (e *Enforcer) CheckIPCPermission(ctx context.Context, senderTenant, senderNS, receiverTenant, receiverNS string) error + func (e *Enforcer) CheckMailboxAdmission(ctx context.Context, tenantID, nsName string) error + func (e *Enforcer) CheckNamespaceActive(ctx context.Context, tenantID, nsName string) (*Namespace, error) + func (e *Enforcer) CheckServiceAdmission(ctx context.Context, tenantID, nsName string, isNewService bool, replicas int) error + func (e *Enforcer) CheckTaskAdmission(ctx context.Context, tenantID, nsName string, budget store.TaskBudget) error + type MemoryStore struct + func NewMemoryStore() *MemoryStore + func NewMemoryStoreWithClock(clock func() time.Time) *MemoryStore + func (s *MemoryStore) CreateNamespace(ctx context.Context, ns *Namespace) error + func (s *MemoryStore) DeleteNamespace(ctx context.Context, tenantID, name string) error + func (s *MemoryStore) GetNamespace(ctx context.Context, tenantID, name string) (*Namespace, error) + func (s *MemoryStore) GetUsage(ctx context.Context, tenantID, name string) (*ResourceUsage, error) + func (s *MemoryStore) ListNamespaces(ctx context.Context, tenantID string) ([]*Namespace, error) + func (s *MemoryStore) RecordUsageDelta(ctx context.Context, tenantID, name string, delta ResourceUsageDelta) error + func (s *MemoryStore) UpdateNamespace(ctx context.Context, ns *Namespace) error + type Namespace struct + CreatedAt time.Time + Description string + DisplayName string + Labels map[string]string + Name string + Phase NamespacePhase + Quota ResourceQuota + TenantID string + UpdatedAt time.Time + func NewDefaultNamespace(tenantID string) *Namespace + type NamespacePhase string + const NamespacePhaseActive + const NamespacePhaseTerminating + type NamespaceSpec struct + Description string + DisplayName string + Labels map[string]string + Name string + Quota ResourceQuota + TenantID string + type ResourceQuota struct + AllowCrossNamespaceIPC bool + MaxCostMicroUSD int64 + MaxIPCMailboxMessages int + MaxReplicasPerService int + MaxServices int + MaxTasks int + MaxTokens int64 + MaxToolCalls int64 + MaxWallSeconds int64 + type ResourceUsage struct + ActiveInstances int + ActiveServices int + ActiveTasks int + ConsumedCostMicroUSD int64 + ConsumedTokens int64 + ConsumedToolCalls int64 + ConsumedWallSeconds int64 + MailboxMessages int + Namespace string + TenantID string + UpdatedAt time.Time + type ResourceUsageDelta struct + ActiveInstancesDelta int + ActiveServicesDelta int + ActiveTasksDelta int + ConsumedCostMicroUSDDelta int64 + ConsumedTokensDelta int64 + ConsumedToolCallsDelta int64 + ConsumedWallSecondsDelta int64 + MailboxMessagesDelta int + type Store interface + CreateNamespace func(ctx context.Context, ns *Namespace) error + DeleteNamespace func(ctx context.Context, tenantID, name string) error + GetNamespace func(ctx context.Context, tenantID, name string) (*Namespace, error) + GetUsage func(ctx context.Context, tenantID, name string) (*ResourceUsage, error) + ListNamespaces func(ctx context.Context, tenantID string) ([]*Namespace, error) + RecordUsageDelta func(ctx context.Context, tenantID, name string, delta ResourceUsageDelta) error + UpdateNamespace func(ctx context.Context, ns *Namespace) error