/** * Decides which extensions to activate from manifest metadata + config + env. */ import type { ManifestRegistry } from './manifest-registry.js'; export type ActivationLoadPhase = 'startup' | 'deferred'; export type ActivationReason = 'explicit_enabled' | 'explicit_disabled' | 'enabled_by_default' | 'model_match' | 'env_var_detected' | 'auto_enable_provider' | 'activation_trigger' | 'not_activated'; export interface ActivationDecision { extensionId: string; activated: boolean; reason: ActivationReason; trigger?: string; } export interface ActivationContext { enabledIds?: string[]; disabledIds?: string[]; requestedModelId?: string; configuredProviderIds?: string[]; configuredChannelIds?: string[]; env?: NodeJS.ProcessEnv; } export declare class ActivationPlanner { private registry; constructor(registry: ManifestRegistry); plan(context: ActivationContext): ActivationDecision[]; getActivatedIds(context: ActivationContext): string[]; /** * Split activated ids by manifest `activation.onStartup`. * Extensions without the field remain on the startup path (backward compatible). */ filterActivatedIdsByLoadPhase(activatedIds: readonly string[], phase: ActivationLoadPhase): string[]; explainPlan(context: ActivationContext): string; private findTriggerEnvVar; }