Versions in this module Expand all Collapse all v0 v0.2.2 Feb 24, 2026 v0.2.0 Feb 24, 2026 v0.1.9 Feb 24, 2026 v0.1.8 Feb 24, 2026 v0.1.7 Feb 24, 2026 v0.1.6 Feb 24, 2026 v0.1.5 Feb 22, 2026 v0.1.1 Feb 22, 2026 v0.1.0 Feb 22, 2026 Changes in this version + const EventConditionalRouted + const EventExecutionCancelled + const EventExecutionCompleted + const EventExecutionFailed + const EventExecutionStarted + const EventRetryAttempted + const EventSagaCompensated + const EventSagaCompensating + const EventStepCompensated + const EventStepCompleted + const EventStepFailed + const EventStepInputRecorded + const EventStepOutputRecorded + const EventStepSkipped + const EventStepStarted + var ErrConflict = errors.New("conflict") + var ErrDuplicate = errors.New("duplicate entry") + var ErrForbidden = errors.New("forbidden") + var ErrKeyExpired = fmt.Errorf("api key expired") + var ErrKeyInactive = fmt.Errorf("api key inactive") + var ErrNotFound = errors.New("not found") + var ValidRoles = map[Role]bool + var ValidWorkflowStatuses = map[WorkflowStatus]bool + type APIKey struct + CompanyID uuid.UUID + CreatedAt time.Time + CreatedBy uuid.UUID + ExpiresAt *time.Time + ID uuid.UUID + IsActive bool + KeyHash string + KeyPrefix string + LastUsedAt *time.Time + Name string + OrgID *uuid.UUID + Permissions []string + ProjectID *uuid.UUID + type APIKeyStore interface + Create func(ctx context.Context, key *APIKey) (rawKey string, err error) + Delete func(ctx context.Context, id uuid.UUID) error + Get func(ctx context.Context, id uuid.UUID) (*APIKey, error) + GetByHash func(ctx context.Context, keyHash string) (*APIKey, error) + List func(ctx context.Context, companyID uuid.UUID) ([]*APIKey, error) + UpdateLastUsed func(ctx context.Context, id uuid.UUID) error + Validate func(ctx context.Context, rawKey string) (*APIKey, error) + type AuditEntry struct + Action string + CreatedAt time.Time + Details json.RawMessage + ID int64 + IPAddress string + ResourceID *uuid.UUID + ResourceType string + UserAgent string + UserID *uuid.UUID + type AuditFilter struct + Action string + Pagination Pagination + ResourceID *uuid.UUID + ResourceType string + Since *time.Time + Until *time.Time + UserID *uuid.UUID + type AuditStore interface + Query func(ctx context.Context, f AuditFilter) ([]*AuditEntry, error) + Record func(ctx context.Context, e *AuditEntry) error + type AuthSessionStoreAdapter struct + func NewAuthSessionStoreAdapter(store SessionStore) *AuthSessionStoreAdapter + func (a *AuthSessionStoreAdapter) Cleanup(ctx context.Context) error + func (a *AuthSessionStoreAdapter) Delete(ctx context.Context, sessionID string) error + func (a *AuthSessionStoreAdapter) Get(ctx context.Context, sessionID string) (*auth.Session, error) + func (a *AuthSessionStoreAdapter) Store(ctx context.Context, session *auth.Session) error + type AuthUserStoreAdapter struct + func NewAuthUserStoreAdapter(store UserStore) *AuthUserStoreAdapter + func (a *AuthUserStoreAdapter) CreateUser(ctx context.Context, user *auth.User) error + func (a *AuthUserStoreAdapter) DeleteUser(ctx context.Context, userID string) error + func (a *AuthUserStoreAdapter) GetUser(ctx context.Context, userID string) (*auth.User, error) + func (a *AuthUserStoreAdapter) GetUserByEmail(ctx context.Context, email string) (*auth.User, error) + func (a *AuthUserStoreAdapter) UpdateUser(ctx context.Context, user *auth.User) error + type BackfillMockDiffHandler struct + func NewBackfillMockDiffHandler(backfillStore BackfillStore, mockStore StepMockStore, diffCalc *DiffCalculator, ...) *BackfillMockDiffHandler + func (h *BackfillMockDiffHandler) RegisterRoutes(mux *http.ServeMux) + type BackfillRequest struct + CompletedAt *time.Time + CreatedAt time.Time + EndTime *time.Time + ErrorMsg string + Failed int64 + ID uuid.UUID + PipelineName string + Processed int64 + SourceQuery string + StartTime *time.Time + Status BackfillStatus + TotalEvents int64 + type BackfillStatus string + const BackfillStatusCancelled + const BackfillStatusCompleted + const BackfillStatusFailed + const BackfillStatusPending + const BackfillStatusRunning + type BackfillStore interface + Cancel func(ctx context.Context, id uuid.UUID) error + Create func(ctx context.Context, req *BackfillRequest) error + Get func(ctx context.Context, id uuid.UUID) (*BackfillRequest, error) + List func(ctx context.Context) ([]*BackfillRequest, error) + UpdateProgress func(ctx context.Context, id uuid.UUID, processed, failed int64) error + UpdateStatus func(ctx context.Context, id uuid.UUID, status BackfillStatus, errMsg string) error + type Company struct + CreatedAt time.Time + ID uuid.UUID + Metadata json.RawMessage + Name string + OwnerID uuid.UUID + Slug string + UpdatedAt time.Time + type CompanyFilter struct + OwnerID *uuid.UUID + Pagination Pagination + Slug string + type CompanyStore interface + Create func(ctx context.Context, c *Company) error + Delete func(ctx context.Context, id uuid.UUID) error + Get func(ctx context.Context, id uuid.UUID) (*Company, error) + GetBySlug func(ctx context.Context, slug string) (*Company, error) + List func(ctx context.Context, f CompanyFilter) ([]*Company, error) + ListForUser func(ctx context.Context, userID uuid.UUID) ([]*Company, error) + Update func(ctx context.Context, c *Company) error + type CrossWorkflowLink struct + Config json.RawMessage + CreatedAt time.Time + CreatedBy uuid.UUID + ID uuid.UUID + LinkType string + SourceWorkflowID uuid.UUID + TargetWorkflowID uuid.UUID + type CrossWorkflowLinkFilter struct + LinkType string + Pagination Pagination + SourceWorkflowID *uuid.UUID + TargetWorkflowID *uuid.UUID + type CrossWorkflowLinkStore interface + Create func(ctx context.Context, l *CrossWorkflowLink) error + Delete func(ctx context.Context, id uuid.UUID) error + Get func(ctx context.Context, id uuid.UUID) (*CrossWorkflowLink, error) + List func(ctx context.Context, f CrossWorkflowLinkFilter) ([]*CrossWorkflowLink, error) + type DLQEntry struct + CreatedAt time.Time + ErrorMessage string + ErrorType string + ID uuid.UUID + MaxRetries int + Metadata map[string]any + OriginalEvent json.RawMessage + PipelineName string + ResolvedAt *time.Time + RetryCount int + Status DLQStatus + StepName string + UpdatedAt time.Time + type DLQFilter struct + ErrorType string + Limit int + Offset int + PipelineName string + Status DLQStatus + StepName string + type DLQHandler struct + func NewDLQHandler(store DLQStore, logger *slog.Logger) *DLQHandler + func (h *DLQHandler) RegisterRoutes(mux *http.ServeMux) + type DLQStatus string + const DLQStatusDiscarded + const DLQStatusPending + const DLQStatusResolved + const DLQStatusRetrying + type DLQStore interface + Add func(ctx context.Context, entry *DLQEntry) error + Count func(ctx context.Context, filter DLQFilter) (int64, error) + Discard func(ctx context.Context, id uuid.UUID) error + Get func(ctx context.Context, id uuid.UUID) (*DLQEntry, error) + List func(ctx context.Context, filter DLQFilter) ([]*DLQEntry, error) + Purge func(ctx context.Context, olderThan time.Duration) (int64, error) + Resolve func(ctx context.Context, id uuid.UUID) error + Retry func(ctx context.Context, id uuid.UUID) error + UpdateStatus func(ctx context.Context, id uuid.UUID, status DLQStatus) error + type DiffCalculator struct + func NewDiffCalculator(eventStore EventStore) *DiffCalculator + func (d *DiffCalculator) Compare(ctx context.Context, execA, execB uuid.UUID) (*ExecutionDiff, error) + type DiffSummary struct + AddedSteps int + DiffSteps int + RemovedSteps int + SameSteps int + TotalSteps int + type EventRecorderAdapter struct + func NewEventRecorderAdapter(store EventStore) *EventRecorderAdapter + func (a *EventRecorderAdapter) RecordEvent(ctx context.Context, executionID string, eventType string, data map[string]any) error + type EventStore interface + Append func(ctx context.Context, executionID uuid.UUID, eventType string, ...) error + GetEvents func(ctx context.Context, executionID uuid.UUID) ([]ExecutionEvent, error) + GetTimeline func(ctx context.Context, executionID uuid.UUID) (*MaterializedExecution, error) + ListExecutions func(ctx context.Context, filter ExecutionEventFilter) ([]MaterializedExecution, error) + type ExecutionDiff struct + ExecutionA uuid.UUID + ExecutionB uuid.UUID + StepDiffs []StepDiff + Summary DiffSummary + type ExecutionEvent struct + CreatedAt time.Time + EventData json.RawMessage + EventType string + ExecutionID uuid.UUID + ID uuid.UUID + SequenceNum int64 + type ExecutionEventFilter struct + Limit int + Offset int + Pipeline string + Since *time.Time + Status string + TenantID string + Until *time.Time + type ExecutionFilter struct + Pagination Pagination + Since *time.Time + Status ExecutionStatus + Until *time.Time + WorkflowID *uuid.UUID + type ExecutionLog struct + CreatedAt time.Time + ExecutionID *uuid.UUID + Fields json.RawMessage + ID int64 + Level LogLevel + Message string + ModuleName string + WorkflowID uuid.UUID + type ExecutionStatus string + const ExecutionStatusCancelled + const ExecutionStatusCompleted + const ExecutionStatusFailed + const ExecutionStatusPending + const ExecutionStatusRunning + type ExecutionStep struct + CompletedAt *time.Time + DurationMs *int64 + ErrorMessage string + ExecutionID uuid.UUID + ID uuid.UUID + InputData json.RawMessage + Metadata json.RawMessage + OutputData json.RawMessage + SequenceNum int + StartedAt *time.Time + Status StepStatus + StepName string + StepType string + type ExecutionStore interface + CountByStatus func(ctx context.Context, workflowID uuid.UUID) (map[ExecutionStatus]int, error) + CreateExecution func(ctx context.Context, e *WorkflowExecution) error + CreateStep func(ctx context.Context, s *ExecutionStep) error + GetExecution func(ctx context.Context, id uuid.UUID) (*WorkflowExecution, error) + ListExecutions func(ctx context.Context, f ExecutionFilter) ([]*WorkflowExecution, error) + ListSteps func(ctx context.Context, executionID uuid.UUID) ([]*ExecutionStep, error) + UpdateExecution func(ctx context.Context, e *WorkflowExecution) error + UpdateStep func(ctx context.Context, s *ExecutionStep) error + type FieldChange struct + Path string + ValueA any + ValueB any + func DiffMaps(a, b map[string]any) []FieldChange + type FileInfo struct + ContentType string + IsDir bool + ModTime time.Time + Name string + Path string + Size int64 + type IAMProviderConfig struct + CompanyID uuid.UUID + Config json.RawMessage + CreatedAt time.Time + Enabled bool + ID uuid.UUID + Name string + ProviderType IAMProviderType + UpdatedAt time.Time + type IAMProviderFilter struct + CompanyID *uuid.UUID + Enabled *bool + Pagination Pagination + ProviderType IAMProviderType + type IAMProviderType string + const IAMProviderAWS + const IAMProviderCustom + const IAMProviderKubernetes + const IAMProviderLDAP + const IAMProviderOIDC + const IAMProviderSAML + type IAMRoleMapping struct + CreatedAt time.Time + ExternalIdentifier string + ID uuid.UUID + ProviderID uuid.UUID + ResourceID uuid.UUID + ResourceType string + Role Role + type IAMRoleMappingFilter struct + ExternalIdentifier string + Pagination Pagination + ProviderID *uuid.UUID + ResourceID *uuid.UUID + ResourceType string + type IAMStore interface + CreateMapping func(ctx context.Context, m *IAMRoleMapping) error + CreateProvider func(ctx context.Context, p *IAMProviderConfig) error + DeleteMapping func(ctx context.Context, id uuid.UUID) error + DeleteProvider func(ctx context.Context, id uuid.UUID) error + GetMapping func(ctx context.Context, id uuid.UUID) (*IAMRoleMapping, error) + GetProvider func(ctx context.Context, id uuid.UUID) (*IAMProviderConfig, error) + ListMappings func(ctx context.Context, f IAMRoleMappingFilter) ([]*IAMRoleMapping, error) + ListProviders func(ctx context.Context, f IAMProviderFilter) ([]*IAMProviderConfig, error) + ResolveRole func(ctx context.Context, providerID uuid.UUID, externalID string, ...) (Role, error) + UpdateProvider func(ctx context.Context, p *IAMProviderConfig) error + type IdempotencyRecord struct + CreatedAt time.Time + ExecutionID uuid.UUID + ExpiresAt time.Time + Key string + Result json.RawMessage + StepName string + type IdempotencyStore interface + Check func(ctx context.Context, key string) (*IdempotencyRecord, error) + Cleanup func(ctx context.Context) (int64, error) + Store func(ctx context.Context, record *IdempotencyRecord) error + type InMemoryAPIKeyStore struct + func NewInMemoryAPIKeyStore() *InMemoryAPIKeyStore + func (s *InMemoryAPIKeyStore) Create(_ context.Context, key *APIKey) (string, error) + func (s *InMemoryAPIKeyStore) Delete(_ context.Context, id uuid.UUID) error + func (s *InMemoryAPIKeyStore) Get(_ context.Context, id uuid.UUID) (*APIKey, error) + func (s *InMemoryAPIKeyStore) GetByHash(_ context.Context, keyHash string) (*APIKey, error) + func (s *InMemoryAPIKeyStore) List(_ context.Context, companyID uuid.UUID) ([]*APIKey, error) + func (s *InMemoryAPIKeyStore) UpdateLastUsed(_ context.Context, id uuid.UUID) error + func (s *InMemoryAPIKeyStore) Validate(_ context.Context, rawKey string) (*APIKey, error) + type InMemoryBackfillStore struct + func NewInMemoryBackfillStore() *InMemoryBackfillStore + func (s *InMemoryBackfillStore) Cancel(_ context.Context, id uuid.UUID) error + func (s *InMemoryBackfillStore) Create(_ context.Context, req *BackfillRequest) error + func (s *InMemoryBackfillStore) Get(_ context.Context, id uuid.UUID) (*BackfillRequest, error) + func (s *InMemoryBackfillStore) List(_ context.Context) ([]*BackfillRequest, error) + func (s *InMemoryBackfillStore) UpdateProgress(_ context.Context, id uuid.UUID, processed, failed int64) error + func (s *InMemoryBackfillStore) UpdateStatus(_ context.Context, id uuid.UUID, status BackfillStatus, errMsg string) error + type InMemoryDLQStore struct + func NewInMemoryDLQStore() *InMemoryDLQStore + func (s *InMemoryDLQStore) Add(_ context.Context, entry *DLQEntry) error + func (s *InMemoryDLQStore) Count(_ context.Context, filter DLQFilter) (int64, error) + func (s *InMemoryDLQStore) Discard(_ context.Context, id uuid.UUID) error + func (s *InMemoryDLQStore) Get(_ context.Context, id uuid.UUID) (*DLQEntry, error) + func (s *InMemoryDLQStore) List(_ context.Context, filter DLQFilter) ([]*DLQEntry, error) + func (s *InMemoryDLQStore) Purge(_ context.Context, olderThan time.Duration) (int64, error) + func (s *InMemoryDLQStore) Resolve(_ context.Context, id uuid.UUID) error + func (s *InMemoryDLQStore) Retry(_ context.Context, id uuid.UUID) error + func (s *InMemoryDLQStore) UpdateStatus(_ context.Context, id uuid.UUID, status DLQStatus) error + type InMemoryEventStore struct + func NewInMemoryEventStore() *InMemoryEventStore + func (s *InMemoryEventStore) Append(_ context.Context, executionID uuid.UUID, eventType string, ...) error + func (s *InMemoryEventStore) GetEvents(_ context.Context, executionID uuid.UUID) ([]ExecutionEvent, error) + func (s *InMemoryEventStore) GetTimeline(_ context.Context, executionID uuid.UUID) (*MaterializedExecution, error) + func (s *InMemoryEventStore) ListExecutions(_ context.Context, filter ExecutionEventFilter) ([]MaterializedExecution, error) + type InMemoryIdempotencyStore struct + func NewInMemoryIdempotencyStore() *InMemoryIdempotencyStore + func (s *InMemoryIdempotencyStore) Check(_ context.Context, key string) (*IdempotencyRecord, error) + func (s *InMemoryIdempotencyStore) Cleanup(_ context.Context) (int64, error) + func (s *InMemoryIdempotencyStore) Store(_ context.Context, record *IdempotencyRecord) error + type InMemoryStepMockStore struct + func NewInMemoryStepMockStore() *InMemoryStepMockStore + func (s *InMemoryStepMockStore) ClearAll(_ context.Context) error + func (s *InMemoryStepMockStore) Get(_ context.Context, pipeline, step string) (*StepMock, error) + func (s *InMemoryStepMockStore) IncrementHitCount(_ context.Context, pipeline, step string) error + func (s *InMemoryStepMockStore) List(_ context.Context, pipeline string) ([]*StepMock, error) + func (s *InMemoryStepMockStore) Remove(_ context.Context, pipeline, step string) error + func (s *InMemoryStepMockStore) Set(_ context.Context, mock *StepMock) error + type LocalStorage struct + func NewLocalStorage(root string) (*LocalStorage, error) + func (l *LocalStorage) Delete(_ context.Context, path string) error + func (l *LocalStorage) Get(_ context.Context, path string) (io.ReadCloser, error) + func (l *LocalStorage) List(_ context.Context, prefix string) ([]FileInfo, error) + func (l *LocalStorage) MkdirAll(_ context.Context, path string) error + func (l *LocalStorage) Put(_ context.Context, path string, reader io.Reader) error + func (l *LocalStorage) Root() string + func (l *LocalStorage) Stat(_ context.Context, path string) (FileInfo, error) + type LogFilter struct + ExecutionID *uuid.UUID + Level LogLevel + ModuleName string + Pagination Pagination + Since *time.Time + Until *time.Time + WorkflowID *uuid.UUID + type LogLevel string + const LogLevelDebug + const LogLevelError + const LogLevelFatal + const LogLevelInfo + const LogLevelWarn + type LogStore interface + Append func(ctx context.Context, l *ExecutionLog) error + CountByLevel func(ctx context.Context, workflowID uuid.UUID) (map[LogLevel]int, error) + Query func(ctx context.Context, f LogFilter) ([]*ExecutionLog, error) + type MaterializedExecution struct + CompletedAt *time.Time + Error string + EventCount int + ExecutionID uuid.UUID + Pipeline string + StartedAt *time.Time + Status string + Steps []MaterializedStep + TenantID string + type MaterializedStep struct + CompletedAt *time.Time + Error string + InputData json.RawMessage + OutputData json.RawMessage + Retries int + Route string + StartedAt *time.Time + Status string + StepName string + StepType string + type Membership struct + CompanyID uuid.UUID + CreatedAt time.Time + ID uuid.UUID + ProjectID *uuid.UUID + Role Role + UpdatedAt time.Time + UserID uuid.UUID + type MembershipFilter struct + CompanyID *uuid.UUID + Pagination Pagination + ProjectID *uuid.UUID + Role Role + UserID *uuid.UUID + type MembershipStore interface + Create func(ctx context.Context, m *Membership) error + Delete func(ctx context.Context, id uuid.UUID) error + Get func(ctx context.Context, id uuid.UUID) (*Membership, error) + GetEffectiveRole func(ctx context.Context, userID, companyID uuid.UUID, projectID *uuid.UUID) (Role, error) + List func(ctx context.Context, f MembershipFilter) ([]*Membership, error) + Update func(ctx context.Context, m *Membership) error + type Migrator struct + func NewMigrator(pool *pgxpool.Pool) *Migrator + func (m *Migrator) Migrate(ctx context.Context) error + type MockAuditStore struct + func NewMockAuditStore() *MockAuditStore + func (s *MockAuditStore) Query(_ context.Context, f AuditFilter) ([]*AuditEntry, error) + func (s *MockAuditStore) Record(_ context.Context, e *AuditEntry) error + type MockCompanyStore struct + func NewMockCompanyStore() *MockCompanyStore + func (s *MockCompanyStore) Create(_ context.Context, c *Company) error + func (s *MockCompanyStore) Delete(_ context.Context, id uuid.UUID) error + func (s *MockCompanyStore) Get(_ context.Context, id uuid.UUID) (*Company, error) + func (s *MockCompanyStore) GetBySlug(_ context.Context, slug string) (*Company, error) + func (s *MockCompanyStore) List(_ context.Context, f CompanyFilter) ([]*Company, error) + func (s *MockCompanyStore) ListForUser(_ context.Context, userID uuid.UUID) ([]*Company, error) + func (s *MockCompanyStore) SetMembershipStore(ms *MockMembershipStore) + func (s *MockCompanyStore) Update(_ context.Context, c *Company) error + type MockCrossWorkflowLinkStore struct + func NewMockCrossWorkflowLinkStore() *MockCrossWorkflowLinkStore + func (s *MockCrossWorkflowLinkStore) Create(_ context.Context, l *CrossWorkflowLink) error + func (s *MockCrossWorkflowLinkStore) Delete(_ context.Context, id uuid.UUID) error + func (s *MockCrossWorkflowLinkStore) Get(_ context.Context, id uuid.UUID) (*CrossWorkflowLink, error) + func (s *MockCrossWorkflowLinkStore) List(_ context.Context, f CrossWorkflowLinkFilter) ([]*CrossWorkflowLink, error) + type MockExecutionStore struct + func NewMockExecutionStore() *MockExecutionStore + func (s *MockExecutionStore) CountByStatus(_ context.Context, workflowID uuid.UUID) (map[ExecutionStatus]int, error) + func (s *MockExecutionStore) CreateExecution(_ context.Context, e *WorkflowExecution) error + func (s *MockExecutionStore) CreateStep(_ context.Context, step *ExecutionStep) error + func (s *MockExecutionStore) GetExecution(_ context.Context, id uuid.UUID) (*WorkflowExecution, error) + func (s *MockExecutionStore) ListExecutions(_ context.Context, f ExecutionFilter) ([]*WorkflowExecution, error) + func (s *MockExecutionStore) ListSteps(_ context.Context, executionID uuid.UUID) ([]*ExecutionStep, error) + func (s *MockExecutionStore) UpdateExecution(_ context.Context, e *WorkflowExecution) error + func (s *MockExecutionStore) UpdateStep(_ context.Context, step *ExecutionStep) error + type MockIAMStore struct + func NewMockIAMStore() *MockIAMStore + func (s *MockIAMStore) CreateMapping(_ context.Context, m *IAMRoleMapping) error + func (s *MockIAMStore) CreateProvider(_ context.Context, p *IAMProviderConfig) error + func (s *MockIAMStore) DeleteMapping(_ context.Context, id uuid.UUID) error + func (s *MockIAMStore) DeleteProvider(_ context.Context, id uuid.UUID) error + func (s *MockIAMStore) GetMapping(_ context.Context, id uuid.UUID) (*IAMRoleMapping, error) + func (s *MockIAMStore) GetProvider(_ context.Context, id uuid.UUID) (*IAMProviderConfig, error) + func (s *MockIAMStore) ListMappings(_ context.Context, f IAMRoleMappingFilter) ([]*IAMRoleMapping, error) + func (s *MockIAMStore) ListProviders(_ context.Context, f IAMProviderFilter) ([]*IAMProviderConfig, error) + func (s *MockIAMStore) ResolveRole(_ context.Context, providerID uuid.UUID, externalID string, ...) (Role, error) + func (s *MockIAMStore) UpdateProvider(_ context.Context, p *IAMProviderConfig) error + type MockLogStore struct + func NewMockLogStore() *MockLogStore + func (s *MockLogStore) Append(_ context.Context, l *ExecutionLog) error + func (s *MockLogStore) CountByLevel(_ context.Context, workflowID uuid.UUID) (map[LogLevel]int, error) + func (s *MockLogStore) Query(_ context.Context, f LogFilter) ([]*ExecutionLog, error) + type MockMembershipStore struct + func NewMockMembershipStore() *MockMembershipStore + func (s *MockMembershipStore) Create(_ context.Context, m *Membership) error + func (s *MockMembershipStore) Delete(_ context.Context, id uuid.UUID) error + func (s *MockMembershipStore) Get(_ context.Context, id uuid.UUID) (*Membership, error) + func (s *MockMembershipStore) GetEffectiveRole(_ context.Context, userID, companyID uuid.UUID, projectID *uuid.UUID) (Role, error) + func (s *MockMembershipStore) List(_ context.Context, f MembershipFilter) ([]*Membership, error) + func (s *MockMembershipStore) Update(_ context.Context, m *Membership) error + type MockProjectStore struct + func NewMockProjectStore() *MockProjectStore + func (s *MockProjectStore) Create(_ context.Context, p *Project) error + func (s *MockProjectStore) Delete(_ context.Context, id uuid.UUID) error + func (s *MockProjectStore) Get(_ context.Context, id uuid.UUID) (*Project, error) + func (s *MockProjectStore) GetBySlug(_ context.Context, companyID uuid.UUID, slug string) (*Project, error) + func (s *MockProjectStore) List(_ context.Context, f ProjectFilter) ([]*Project, error) + func (s *MockProjectStore) ListForUser(_ context.Context, userID uuid.UUID) ([]*Project, error) + func (s *MockProjectStore) SetMembershipStore(ms *MockMembershipStore) + func (s *MockProjectStore) Update(_ context.Context, p *Project) error + type MockSessionStore struct + func NewMockSessionStore() *MockSessionStore + func (s *MockSessionStore) Create(_ context.Context, sess *Session) error + func (s *MockSessionStore) Delete(_ context.Context, id uuid.UUID) error + func (s *MockSessionStore) DeleteExpired(_ context.Context) (int64, error) + func (s *MockSessionStore) Get(_ context.Context, id uuid.UUID) (*Session, error) + func (s *MockSessionStore) GetByToken(_ context.Context, token string) (*Session, error) + func (s *MockSessionStore) List(_ context.Context, f SessionFilter) ([]*Session, error) + func (s *MockSessionStore) Update(_ context.Context, sess *Session) error + type MockUserStore struct + func NewMockUserStore() *MockUserStore + func (s *MockUserStore) Create(_ context.Context, u *User) error + func (s *MockUserStore) Delete(_ context.Context, id uuid.UUID) error + func (s *MockUserStore) Get(_ context.Context, id uuid.UUID) (*User, error) + func (s *MockUserStore) GetByEmail(_ context.Context, email string) (*User, error) + func (s *MockUserStore) GetByOAuth(_ context.Context, provider OAuthProvider, oauthID string) (*User, error) + func (s *MockUserStore) List(_ context.Context, f UserFilter) ([]*User, error) + func (s *MockUserStore) Update(_ context.Context, u *User) error + type MockWorkflowStore struct + func NewMockWorkflowStore() *MockWorkflowStore + func (s *MockWorkflowStore) Create(_ context.Context, w *WorkflowRecord) error + func (s *MockWorkflowStore) Delete(_ context.Context, id uuid.UUID) error + func (s *MockWorkflowStore) Get(_ context.Context, id uuid.UUID) (*WorkflowRecord, error) + func (s *MockWorkflowStore) GetBySlug(_ context.Context, projectID uuid.UUID, slug string) (*WorkflowRecord, error) + func (s *MockWorkflowStore) GetVersion(_ context.Context, id uuid.UUID, version int) (*WorkflowRecord, error) + func (s *MockWorkflowStore) List(_ context.Context, f WorkflowFilter) ([]*WorkflowRecord, error) + func (s *MockWorkflowStore) ListVersions(_ context.Context, id uuid.UUID) ([]*WorkflowRecord, error) + func (s *MockWorkflowStore) Update(_ context.Context, w *WorkflowRecord) error + type OAuthProvider string + const OAuthProviderGitHub + const OAuthProviderGoogle + type Organization = Company + type OrganizationStore = CompanyStore + type PGAuditStore struct + func (s *PGAuditStore) Query(ctx context.Context, f AuditFilter) ([]*AuditEntry, error) + func (s *PGAuditStore) Record(ctx context.Context, e *AuditEntry) error + type PGCompanyStore struct + func (s *PGCompanyStore) Create(ctx context.Context, c *Company) error + func (s *PGCompanyStore) Delete(ctx context.Context, id uuid.UUID) error + func (s *PGCompanyStore) Get(ctx context.Context, id uuid.UUID) (*Company, error) + func (s *PGCompanyStore) GetBySlug(ctx context.Context, slug string) (*Company, error) + func (s *PGCompanyStore) List(ctx context.Context, f CompanyFilter) ([]*Company, error) + func (s *PGCompanyStore) ListForUser(ctx context.Context, userID uuid.UUID) ([]*Company, error) + func (s *PGCompanyStore) Update(ctx context.Context, c *Company) error + type PGConfig struct + MaxConnIdleTime string + MaxConns int32 + MinConns int32 + URL string + type PGCrossWorkflowLinkStore struct + func (s *PGCrossWorkflowLinkStore) Create(ctx context.Context, l *CrossWorkflowLink) error + func (s *PGCrossWorkflowLinkStore) Delete(ctx context.Context, id uuid.UUID) error + func (s *PGCrossWorkflowLinkStore) Get(ctx context.Context, id uuid.UUID) (*CrossWorkflowLink, error) + func (s *PGCrossWorkflowLinkStore) List(ctx context.Context, f CrossWorkflowLinkFilter) ([]*CrossWorkflowLink, error) + type PGExecutionStore struct + func (s *PGExecutionStore) CountByStatus(ctx context.Context, workflowID uuid.UUID) (map[ExecutionStatus]int, error) + func (s *PGExecutionStore) CreateExecution(ctx context.Context, e *WorkflowExecution) error + func (s *PGExecutionStore) CreateStep(ctx context.Context, step *ExecutionStep) error + func (s *PGExecutionStore) GetExecution(ctx context.Context, id uuid.UUID) (*WorkflowExecution, error) + func (s *PGExecutionStore) ListExecutions(ctx context.Context, f ExecutionFilter) ([]*WorkflowExecution, error) + func (s *PGExecutionStore) ListSteps(ctx context.Context, executionID uuid.UUID) ([]*ExecutionStep, error) + func (s *PGExecutionStore) UpdateExecution(ctx context.Context, e *WorkflowExecution) error + func (s *PGExecutionStore) UpdateStep(ctx context.Context, step *ExecutionStep) error + type PGIAMStore struct + func (s *PGIAMStore) CreateMapping(ctx context.Context, m *IAMRoleMapping) error + func (s *PGIAMStore) CreateProvider(ctx context.Context, p *IAMProviderConfig) error + func (s *PGIAMStore) DeleteMapping(ctx context.Context, id uuid.UUID) error + func (s *PGIAMStore) DeleteProvider(ctx context.Context, id uuid.UUID) error + func (s *PGIAMStore) GetMapping(ctx context.Context, id uuid.UUID) (*IAMRoleMapping, error) + func (s *PGIAMStore) GetProvider(ctx context.Context, id uuid.UUID) (*IAMProviderConfig, error) + func (s *PGIAMStore) ListMappings(ctx context.Context, f IAMRoleMappingFilter) ([]*IAMRoleMapping, error) + func (s *PGIAMStore) ListProviders(ctx context.Context, f IAMProviderFilter) ([]*IAMProviderConfig, error) + func (s *PGIAMStore) ResolveRole(ctx context.Context, providerID uuid.UUID, externalID string, ...) (Role, error) + func (s *PGIAMStore) UpdateProvider(ctx context.Context, p *IAMProviderConfig) error + type PGLogStore struct + func (s *PGLogStore) Append(ctx context.Context, l *ExecutionLog) error + func (s *PGLogStore) CountByLevel(ctx context.Context, workflowID uuid.UUID) (map[LogLevel]int, error) + func (s *PGLogStore) Query(ctx context.Context, f LogFilter) ([]*ExecutionLog, error) + type PGMembershipStore struct + func (s *PGMembershipStore) Create(ctx context.Context, m *Membership) error + func (s *PGMembershipStore) Delete(ctx context.Context, id uuid.UUID) error + func (s *PGMembershipStore) Get(ctx context.Context, id uuid.UUID) (*Membership, error) + func (s *PGMembershipStore) GetEffectiveRole(ctx context.Context, userID, companyID uuid.UUID, projectID *uuid.UUID) (Role, error) + func (s *PGMembershipStore) List(ctx context.Context, f MembershipFilter) ([]*Membership, error) + func (s *PGMembershipStore) Update(ctx context.Context, m *Membership) error + type PGProjectStore struct + func (s *PGProjectStore) Create(ctx context.Context, p *Project) error + func (s *PGProjectStore) Delete(ctx context.Context, id uuid.UUID) error + func (s *PGProjectStore) Get(ctx context.Context, id uuid.UUID) (*Project, error) + func (s *PGProjectStore) GetBySlug(ctx context.Context, companyID uuid.UUID, slug string) (*Project, error) + func (s *PGProjectStore) List(ctx context.Context, f ProjectFilter) ([]*Project, error) + func (s *PGProjectStore) ListForUser(ctx context.Context, userID uuid.UUID) ([]*Project, error) + func (s *PGProjectStore) Update(ctx context.Context, p *Project) error + type PGSessionStore struct + func (s *PGSessionStore) Create(ctx context.Context, sess *Session) error + func (s *PGSessionStore) Delete(ctx context.Context, id uuid.UUID) error + func (s *PGSessionStore) DeleteExpired(ctx context.Context) (int64, error) + func (s *PGSessionStore) Get(ctx context.Context, id uuid.UUID) (*Session, error) + func (s *PGSessionStore) GetByToken(ctx context.Context, token string) (*Session, error) + func (s *PGSessionStore) List(ctx context.Context, f SessionFilter) ([]*Session, error) + func (s *PGSessionStore) Update(ctx context.Context, sess *Session) error + type PGStore struct + func NewPGStore(ctx context.Context, cfg PGConfig) (*PGStore, error) + func (s *PGStore) Audit() AuditStore + func (s *PGStore) Close() + func (s *PGStore) Companies() CompanyStore + func (s *PGStore) CrossWorkflowLinks() CrossWorkflowLinkStore + func (s *PGStore) Executions() ExecutionStore + func (s *PGStore) IAM() IAMStore + func (s *PGStore) Logs() LogStore + func (s *PGStore) Memberships() MembershipStore + func (s *PGStore) Pool() *pgxpool.Pool + func (s *PGStore) Projects() ProjectStore + func (s *PGStore) Sessions() SessionStore + func (s *PGStore) Users() UserStore + func (s *PGStore) Workflows() WorkflowStore + type PGUserStore struct + func (s *PGUserStore) Create(ctx context.Context, u *User) error + func (s *PGUserStore) Delete(ctx context.Context, id uuid.UUID) error + func (s *PGUserStore) Get(ctx context.Context, id uuid.UUID) (*User, error) + func (s *PGUserStore) GetByEmail(ctx context.Context, email string) (*User, error) + func (s *PGUserStore) GetByOAuth(ctx context.Context, provider OAuthProvider, oauthID string) (*User, error) + func (s *PGUserStore) List(ctx context.Context, f UserFilter) ([]*User, error) + func (s *PGUserStore) Update(ctx context.Context, u *User) error + type PGWorkflowStore struct + func (s *PGWorkflowStore) Create(ctx context.Context, w *WorkflowRecord) error + func (s *PGWorkflowStore) Delete(ctx context.Context, id uuid.UUID) error + func (s *PGWorkflowStore) Get(ctx context.Context, id uuid.UUID) (*WorkflowRecord, error) + func (s *PGWorkflowStore) GetBySlug(ctx context.Context, projectID uuid.UUID, slug string) (*WorkflowRecord, error) + func (s *PGWorkflowStore) GetVersion(ctx context.Context, id uuid.UUID, version int) (*WorkflowRecord, error) + func (s *PGWorkflowStore) List(ctx context.Context, f WorkflowFilter) ([]*WorkflowRecord, error) + func (s *PGWorkflowStore) ListVersions(ctx context.Context, id uuid.UUID) ([]*WorkflowRecord, error) + func (s *PGWorkflowStore) Update(ctx context.Context, w *WorkflowRecord) error + type Pagination struct + Limit int + Offset int + func DefaultPagination() Pagination + type Project struct + CompanyID uuid.UUID + CreatedAt time.Time + Description string + ID uuid.UUID + Metadata json.RawMessage + Name string + Slug string + UpdatedAt time.Time + type ProjectFilter struct + CompanyID *uuid.UUID + Pagination Pagination + Slug string + type ProjectStore interface + Create func(ctx context.Context, p *Project) error + Delete func(ctx context.Context, id uuid.UUID) error + Get func(ctx context.Context, id uuid.UUID) (*Project, error) + GetBySlug func(ctx context.Context, companyID uuid.UUID, slug string) (*Project, error) + List func(ctx context.Context, f ProjectFilter) ([]*Project, error) + ListForUser func(ctx context.Context, userID uuid.UUID) ([]*Project, error) + Update func(ctx context.Context, p *Project) error + type ReplayHandler struct + ReplayFunc func(original *MaterializedExecution, mode string, modifications map[string]any) (uuid.UUID, error) + func NewReplayHandler(store EventStore, logger *slog.Logger) *ReplayHandler + func (h *ReplayHandler) RegisterRoutes(mux *http.ServeMux) + type ReplayRequest struct + Mode string + Modifications map[string]any + type ReplayResult struct + Mode string + NewExecutionID uuid.UUID + OriginalExecutionID uuid.UUID + Status string + Type string + type Role string + const RoleAdmin + const RoleEditor + const RoleOwner + const RoleViewer + type SQLiteAPIKeyStore struct + func NewSQLiteAPIKeyStore(dbPath string) (*SQLiteAPIKeyStore, error) + func NewSQLiteAPIKeyStoreFromDB(db *sql.DB) (*SQLiteAPIKeyStore, error) + func (s *SQLiteAPIKeyStore) Close() error + func (s *SQLiteAPIKeyStore) Create(ctx context.Context, key *APIKey) (string, error) + func (s *SQLiteAPIKeyStore) Delete(ctx context.Context, id uuid.UUID) error + func (s *SQLiteAPIKeyStore) Get(ctx context.Context, id uuid.UUID) (*APIKey, error) + func (s *SQLiteAPIKeyStore) GetByHash(ctx context.Context, keyHash string) (*APIKey, error) + func (s *SQLiteAPIKeyStore) List(ctx context.Context, companyID uuid.UUID) ([]*APIKey, error) + func (s *SQLiteAPIKeyStore) UpdateLastUsed(ctx context.Context, id uuid.UUID) error + func (s *SQLiteAPIKeyStore) Validate(ctx context.Context, rawKey string) (*APIKey, error) + type SQLiteDLQStore struct + func NewSQLiteDLQStore(dbPath string) (*SQLiteDLQStore, error) + func NewSQLiteDLQStoreFromDB(db *sql.DB) (*SQLiteDLQStore, error) + func (s *SQLiteDLQStore) Add(ctx context.Context, entry *DLQEntry) error + func (s *SQLiteDLQStore) Close() error + func (s *SQLiteDLQStore) Count(ctx context.Context, filter DLQFilter) (int64, error) + func (s *SQLiteDLQStore) Discard(ctx context.Context, id uuid.UUID) error + func (s *SQLiteDLQStore) Get(ctx context.Context, id uuid.UUID) (*DLQEntry, error) + func (s *SQLiteDLQStore) List(ctx context.Context, filter DLQFilter) ([]*DLQEntry, error) + func (s *SQLiteDLQStore) Purge(ctx context.Context, olderThan time.Duration) (int64, error) + func (s *SQLiteDLQStore) Resolve(ctx context.Context, id uuid.UUID) error + func (s *SQLiteDLQStore) Retry(ctx context.Context, id uuid.UUID) error + func (s *SQLiteDLQStore) UpdateStatus(ctx context.Context, id uuid.UUID, status DLQStatus) error + type SQLiteEventStore struct + func NewSQLiteEventStore(dbPath string) (*SQLiteEventStore, error) + func NewSQLiteEventStoreFromDB(db *sql.DB) (*SQLiteEventStore, error) + func (s *SQLiteEventStore) Append(ctx context.Context, executionID uuid.UUID, eventType string, ...) error + func (s *SQLiteEventStore) Close() error + func (s *SQLiteEventStore) GetEvents(ctx context.Context, executionID uuid.UUID) ([]ExecutionEvent, error) + func (s *SQLiteEventStore) GetTimeline(ctx context.Context, executionID uuid.UUID) (*MaterializedExecution, error) + func (s *SQLiteEventStore) ListExecutions(ctx context.Context, filter ExecutionEventFilter) ([]MaterializedExecution, error) + type SQLiteIdempotencyStore struct + func NewSQLiteIdempotencyStore(db *sql.DB) (*SQLiteIdempotencyStore, error) + func (s *SQLiteIdempotencyStore) Check(ctx context.Context, key string) (*IdempotencyRecord, error) + func (s *SQLiteIdempotencyStore) Cleanup(ctx context.Context) (int64, error) + func (s *SQLiteIdempotencyStore) Store(ctx context.Context, record *IdempotencyRecord) error + type Session struct + Active bool + CreatedAt time.Time + ExpiresAt time.Time + ID uuid.UUID + IPAddress string + Metadata json.RawMessage + Token string + UserAgent string + UserID uuid.UUID + type SessionFilter struct + Active *bool + Pagination Pagination + UserID *uuid.UUID + type SessionStore interface + Create func(ctx context.Context, s *Session) error + Delete func(ctx context.Context, id uuid.UUID) error + DeleteExpired func(ctx context.Context) (int64, error) + Get func(ctx context.Context, id uuid.UUID) (*Session, error) + GetByToken func(ctx context.Context, token string) (*Session, error) + List func(ctx context.Context, f SessionFilter) ([]*Session, error) + Update func(ctx context.Context, s *Session) error + type StepDiff struct + Changes []FieldChange + DurationA time.Duration + DurationB time.Duration + OutputA map[string]any + OutputB map[string]any + Status string + StepName string + type StepMock struct + CreatedAt time.Time + Delay time.Duration + Enabled bool + ErrorResponse string + HitCount int64 + ID uuid.UUID + PipelineName string + Response map[string]any + StepName string + type StepMockStore interface + ClearAll func(ctx context.Context) error + Get func(ctx context.Context, pipeline, step string) (*StepMock, error) + IncrementHitCount func(ctx context.Context, pipeline, step string) error + List func(ctx context.Context, pipeline string) ([]*StepMock, error) + Remove func(ctx context.Context, pipeline, step string) error + Set func(ctx context.Context, mock *StepMock) error + type StepStatus string + const StepStatusCompleted + const StepStatusFailed + const StepStatusPending + const StepStatusRunning + const StepStatusSkipped + type StorageProvider interface + Delete func(ctx context.Context, path string) error + Get func(ctx context.Context, path string) (io.ReadCloser, error) + List func(ctx context.Context, prefix string) ([]FileInfo, error) + MkdirAll func(ctx context.Context, path string) error + Put func(ctx context.Context, path string, reader io.Reader) error + Stat func(ctx context.Context, path string) (FileInfo, error) + type TimelineHandler struct + func NewTimelineHandler(store EventStore, logger *slog.Logger) *TimelineHandler + func (h *TimelineHandler) RegisterRoutes(mux *http.ServeMux) + type User struct + Active bool + AvatarURL string + CreatedAt time.Time + DisplayName string + Email string + ID uuid.UUID + LastLoginAt *time.Time + Metadata json.RawMessage + OAuthID string + OAuthProvider OAuthProvider + PasswordHash string + UpdatedAt time.Time + type UserFilter struct + Active *bool + Email string + OAuthProvider OAuthProvider + Pagination Pagination + type UserStore interface + Create func(ctx context.Context, u *User) error + Delete func(ctx context.Context, id uuid.UUID) error + Get func(ctx context.Context, id uuid.UUID) (*User, error) + GetByEmail func(ctx context.Context, email string) (*User, error) + GetByOAuth func(ctx context.Context, provider OAuthProvider, oauthID string) (*User, error) + List func(ctx context.Context, f UserFilter) ([]*User, error) + Update func(ctx context.Context, u *User) error + type WorkflowExecution struct + CompletedAt *time.Time + DurationMs *int64 + ErrorMessage string + ErrorStack string + ID uuid.UUID + Metadata json.RawMessage + OutputData json.RawMessage + StartedAt time.Time + Status ExecutionStatus + TriggerData json.RawMessage + TriggerType string + WorkflowID uuid.UUID + type WorkflowFilter struct + Pagination Pagination + ProjectID *uuid.UUID + Slug string + Status WorkflowStatus + type WorkflowRecord struct + ConfigYAML string + CreatedAt time.Time + CreatedBy uuid.UUID + Description string + ID uuid.UUID + Name string + ProjectID uuid.UUID + Slug string + Status WorkflowStatus + UpdatedAt time.Time + UpdatedBy uuid.UUID + Version int + type WorkflowStatus string + const WorkflowStatusActive + const WorkflowStatusDraft + const WorkflowStatusError + const WorkflowStatusStopped + type WorkflowStore interface + Create func(ctx context.Context, w *WorkflowRecord) error + Delete func(ctx context.Context, id uuid.UUID) error + Get func(ctx context.Context, id uuid.UUID) (*WorkflowRecord, error) + GetBySlug func(ctx context.Context, projectID uuid.UUID, slug string) (*WorkflowRecord, error) + GetVersion func(ctx context.Context, id uuid.UUID, version int) (*WorkflowRecord, error) + List func(ctx context.Context, f WorkflowFilter) ([]*WorkflowRecord, error) + ListVersions func(ctx context.Context, id uuid.UUID) ([]*WorkflowRecord, error) + Update func(ctx context.Context, w *WorkflowRecord) error + type WorkspaceManager struct + func NewWorkspaceManager(dataDir string) *WorkspaceManager + func (wm *WorkspaceManager) StorageForProject(projectID string) (*LocalStorage, error) + func (wm *WorkspaceManager) WorkspacePath(projectID string) string