SDK y paquetes@styx/plugin-sdkinterfaces

Interface: IPluginRegistry

Referencia de @styx/plugin-sdk generada de su TSDoc.

ImplementadoSin versión del tren todavía· generada desde packages/plugin-sdk/package.json

Página generada desde el TSDoc de @styx/plugin-sdk. No se edita a mano: bun run docs:gen la regenera y bun run docs:check falla si difiere.

Interface: IPluginRegistry

Registry de extensiones embebidas de un servicio.

Properties

pluginIds

readonly pluginIds: readonly string[]

Ids registrados, en orden de id (determinista).

Methods

discover()

discover<K>(kind): readonly IPluginBinding<K>[]

Todos los plugins que cubren un extension point, ordenados por precedencia (mejor primero). Incluye los no servibles — el caller ve el panorama completo.

Type Parameters

K

K extends keyof PluginExportsByKind

Parameters

kind

K

Extension point.

Returns

readonly IPluginBinding<K>[]

Bindings ordenados por precedencia.


healthOf()

healthOf(pluginId): Result<PluginHealthState, ResultError<"PLUGIN_NOT_FOUND">>

Health actual de un plugin.

Parameters

pluginId

string

Id del plugin.

Returns

Result<PluginHealthState, ResultError<"PLUGIN_NOT_FOUND">>

Result con el health, o PLUGIN_NOT_FOUND.


initialize()

initialize(host): Promise<IRegistryInitReport>

Inicializa todos los plugins no desactivados, cada uno con su contexto scoped y bajo timeout.

No devuelve Result a propósito: el arranque del registry no es una operación fallible — un plugin caído no debe tumbar el servicio (r48 §3.2). Ningún fallo se traga: cada uno viaja en outcomes[].result y en failed[], para que el servicio lo loguee con su extension.id.

Parameters

host

IExtensionHost

Fuente host-level de config/secrets/principal.

Returns

Promise<IRegistryInitReport>

Reporte con el outcome de cada plugin.


lifecycleOf()

lifecycleOf(pluginId): Result<PluginLifecycleState, ResultError<"PLUGIN_NOT_FOUND">>

Lifecycle actual de un plugin.

Parameters

pluginId

string

Id del plugin.

Returns

Result<PluginLifecycleState, ResultError<"PLUGIN_NOT_FOUND">>

Result con el lifecycle, o PLUGIN_NOT_FOUND.


probeHealth()

probeHealth(pluginId): Promise<Result<PluginHealthState, ResultError<"INVALID_HEALTH_TRANSITION" | "PLUGIN_NOT_FOUND">>>

Sondea el health de un plugin llamando a su health() y aplica la transición.

Parameters

pluginId

string

Id del plugin.

Returns

Promise<Result<PluginHealthState, ResultError<"INVALID_HEALTH_TRANSITION" | "PLUGIN_NOT_FOUND">>>

Result con el health resultante, o el motivo del rechazo.


select()

select<K>(kind): Result<IPluginBinding<K>, ResultError<"NO_PLUGIN_AVAILABLE">>

El plugin de mayor precedencia que puede servir ese extension point.

Salta los no servibles (failed, disabled, unavailable, misconfigured): ahí es donde un provider caído deja paso al siguiente en vez de romper el flujo.

Type Parameters

K

K extends keyof PluginExportsByKind

Parameters

kind

K

Extension point.

Returns

Result<IPluginBinding<K>, ResultError<"NO_PLUGIN_AVAILABLE">>

Result con el binding ganador, o NO_PLUGIN_AVAILABLE.


setHealth()

setHealth(pluginId, next): Result<PluginHealthState, ResultError<"INVALID_HEALTH_TRANSITION" | "PLUGIN_NOT_FOUND">>

Fuerza una transición de health (acción de operador: disable/enable, o un health check externo al plugin).

Parameters

pluginId

string

Id del plugin.

next

PluginHealthState

Health destino.

Returns

Result<PluginHealthState, ResultError<"INVALID_HEALTH_TRANSITION" | "PLUGIN_NOT_FOUND">>

Result con el health resultante, o el motivo del rechazo.


shutdown()

shutdown(): Promise<readonly IPluginShutdownOutcome[]>

Apaga los plugins activos.

Como initialize(), no falla en bloque: devuelve el outcome de cada uno.

Returns

Promise<readonly IPluginShutdownOutcome[]>

Outcome de shutdown por plugin, en orden de id.