Interface that packages implement to provide problems to the platform.

Providers are responsible for:

  • Storing and managing their own problems
  • Defining problem types with display information
  • Supplying actions users can take on problems
  • Responding to queries from the platform

The platform aggregates problems from all registered providers.

Example

Provider implementation

class EmailProblemProvider implements ProblemProvider {
id = 'email-integration';
title = 'Email Integration';
description = 'Problems related to email sending and delivery';
icon = 'envelope';

private types: ProblemType[] = [
{ id: 'delivery-failed', title: 'Delivery Failed' }
];

private statuses: ProblemStatus[] = [
{ id: 'open', title: 'Open' },
{ id: 'resolved', title: 'Resolved' }
];

getTypes(): ProblemType[] { return this.types; }
getType(type: string): ProblemType | undefined {
return this.types.find(t => t.id === type);
}
getStatuses(): ProblemStatus[] { return this.statuses; }
getStatus(status: string): ProblemStatus | undefined {
return this.statuses.find(s => s.id === status);
}
// ... implement remaining methods
}

Example

Registering a provider

const repository = platform.get(PlatformServiceName.ProblemRepository);
repository.registerProvider(new EmailProblemProvider());

See

Hierarchy

  • ProblemProvider

Properties

description: string

Description of what problems this provider handles.

icon: string | Icon

Icon representing this provider.

Can be either a string referencing an icon name from the platform's icon library, or an Icon object with additional properties like color.

See

Icon

id: string

Unique identifier for this provider.

Used to identify the provider in the repository and to link problems back to their source. Should be a stable, lowercase identifier using hyphens for word separation (e.g., 'email-integration', 'external-crm-sync').

The platform uses this id to set providerId when returning problems to consumers.

title: string

Human-readable title for the provider.

Should clearly identify the source of problems (e.g., 'Email Integration', 'External CRM Sync').

Methods

  • Retrieves a specific problem by its id.

    Returns

    A promise resolving to the problem if found, or undefined if no problem with that id exists.

    Parameters

    • id: string

      The unique identifier of the problem within this provider.

    Returns Promise<Omit<Problem<unknown>, "providerId">>

  • Returns available actions for a specific problem.

    Actions allow users to take action on problems (e.g., retry, dismiss, navigate to configuration). Each action wraps a command that executes when triggered.

    Returns

    An array of actions available for this problem. Return an empty array [] if no actions are available.

    See

    Action

    Parameters

    • problem: Problem<unknown>

      The problem to get actions for.

    Returns Action<AnyCommand>[]

  • Returns the count of problems matching the query options.

    Should return the total count of matching problems, not affected by pagination (limit/offset).

    Returns

    A promise resolving to the number of matching problems.

    Parameters

    • Optional options: ProblemQueryOptions

      Query options for filtering. Pagination options (limit/offset) should be ignored when counting.

    Returns Promise<number>

  • Retrieves problems from this provider.

    Implement filtering based on the provided options where supported. Unsupported filters should be silently ignored.

    Returns

    A promise resolving to an array of problems matching the query.

    See

    ProblemQueryOptions

    Parameters

    • Optional options: ProblemQueryOptions

      Query options for filtering and pagination. All properties are optional. Providers should handle what they support and ignore the rest.

    Returns Promise<Omit<Problem<unknown>, "providerId">[]>

  • Returns display information for a problem status.

    Returns

    Display information for the status, or undefined if the status is not recognized by this provider.

    See

    Parameters

    • status: string

      The status identifier (from status).

    Returns ProblemStatus

  • Returns all statuses supported by this provider.

    Used by the platform to render status filters and understand the provider's workflow.

    Returns

    An array of all statuses this provider uses. Return an empty array [] if this provider doesn't track status.

    See

    Returns ProblemStatus[]

  • Returns display information for a problem type.

    Problem types are provider-specific identifiers (e.g., 'delivery-failed', 'connection-error'). This method provides the human-readable title, description, and icon for each type.

    Returns

    Display information for the type, or undefined if the type is not recognized by this provider.

    See

    Parameters

    • type: string

      The problem type identifier (from type).

    Returns ProblemType

  • Returns all problem types supported by this provider.

    Used by the platform to render type filters and understand the provider's problem categories.

    Returns

    An array of all problem types this provider can produce.

    See

    Returns ProblemType[]