Package-level declarations

Types

Link copied to clipboard
data class ApplicationKtorInstaller(val pluginKey: String, val installer: Application.() -> Unit)
Link copied to clipboard
data class DefaultPluginRequestContext(val pluginId: String, val method: String, val rawPath: String, val pathParameters: Map<String, String>, val queryParameters: Map<String, List<String>>, val requestHeaders: Map<String, List<String>>, val requestId: String, val attributes: MutableMap<String, Any?> = linkedMapOf(), var principal: Any? = null, var tenant: Any? = null) : KeelRequestContext
Link copied to clipboard
data class EndpointExecutionPolicy(val timeoutMs: Long? = null, val maxPayloadBytes: Long? = null, val allowChunkedTransfer: Boolean = false)
Link copied to clipboard
interface EndpointPlugin
Link copied to clipboard
data class GeneratedKeelRouteInterceptorMetadata(val method: String, val path: String, val clearDefaults: Boolean = false, val interceptorClassNames: List<String> = emptyList())
Link copied to clipboard
data class JvmCommunicationStrategy(val preferredMode: JvmCommunicationMode = JvmCommunicationMode.UDS, val fallbackMode: JvmCommunicationMode = JvmCommunicationMode.TCP, val maxAttempts: Int = 3)
Link copied to clipboard
sealed interface KeelInterceptorResult
Link copied to clipboard
interface KeelPlugin
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
interface LifecyclePlugin
Link copied to clipboard
interface ModulePlugin
Link copied to clipboard
class PluginApiException(val status: Int, val message: String) : RuntimeException
Link copied to clipboard
Link copied to clipboard
data class PluginConfig(val pluginId: String, val enabled: Boolean = true, val runtimeMode: PluginRuntimeMode = PluginRuntimeMode.IN_PROCESS, val communicationStrategy: JvmCommunicationStrategy = JvmCommunicationStrategy.DEFAULT, val recoveryPolicy: PluginRecoveryPolicy = PluginRecoveryPolicy(), val startupTimeoutMs: Long = 5000, val callTimeoutMs: Long = 3000, val stopTimeoutMs: Long = 3000, val healthCheckIntervalMs: Long = 10000, val maxConcurrentCalls: Int = 128, val eventLogRingBufferSize: Int = 4096, val criticalEventQueueSize: Int = 256, val reload: ReloadConfig = ReloadConfig(), val settings: JsonObject = buildJsonObject {})

Runtime configuration for a plugin instance, derived from its PluginDescriptor. This is no longer loaded from JSON files to ensure "Config-as-Code".

Link copied to clipboard
data class PluginDescriptor(val pluginId: String, val version: String, val displayName: String, val defaultRuntimeMode: PluginRuntimeMode = PluginRuntimeMode.IN_PROCESS, val communicationStrategy: JvmCommunicationStrategy = JvmCommunicationStrategy.DEFAULT, val supportedRuntimeModes: Set<PluginRuntimeMode> = setOf( PluginRuntimeMode.IN_PROCESS, PluginRuntimeMode.EXTERNAL_JVM ), val supportedServices: Set<PluginServiceType> = setOf( PluginServiceType.ENDPOINT, PluginServiceType.SSE, PluginServiceType.STATIC_RESOURCE ), val recoveryPolicy: PluginRecoveryPolicy = PluginRecoveryPolicy(), val startupTimeoutMs: Long = 5000, val callTimeoutMs: Long = 3000, val stopTimeoutMs: Long = 3000, val healthCheckIntervalMs: Long = 10000, val maxConcurrentCalls: Int = 128, val eventLogRingBufferSize: Int = 4096, val criticalEventQueueSize: Int = 256, val nodeAssetMetadata: PluginNodeAssetMetadata? = null)
Link copied to clipboard
Link copied to clipboard
data class PluginEndpointDefinition<Req : Any, Res : Any>(val endpointId: String, val method: HttpMethod, val path: String, val requestType: KType?, val responseType: KType, val doc: OpenApiDoc = OpenApiDoc(), val executionPolicy: EndpointExecutionPolicy = EndpointExecutionPolicy(), val interceptors: List<KClass<out KeelRequestInterceptor>> = emptyList(), val interceptorSource: InterceptorMetadataSource = InterceptorMetadataSource.NONE, val handler: suspend KeelRequestContext.(Req?) -> PluginResult<Res>) : PluginRouteDefinition
Link copied to clipboard
Link copied to clipboard
data class PluginFailureRecord(val timestamp: Long, val source: String, val message: String)
Link copied to clipboard
value class PluginGeneration(val value: Long)
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
@Serializable
data class PluginNodeAssetMetadata(val assetId: String? = null, val address: String? = null, val zone: String? = null, val region: String? = null, val role: String? = null, val roleDescription: String? = null, val featured: Boolean = false)
Link copied to clipboard
data class PluginRecoveryPolicy(val maxRestarts: Int = 5, val baseBackoffMs: Long = 250, val maxBackoffMs: Long = 5000, val resetWindowMs: Long = 60000)
Link copied to clipboard
data class PluginResult<T>(val status: Int = 200, val headers: Map<String, List<String>> = emptyMap(), val body: T? = null)
Link copied to clipboard
sealed interface PluginRouteDefinition
Link copied to clipboard
Link copied to clipboard
data class PluginRuntimeDiagnostics(val processAlive: Boolean? = null, val adminChannelHealth: PluginChannelHealth = PluginChannelHealth.UNKNOWN, val eventChannelHealth: PluginChannelHealth = PluginChannelHealth.UNKNOWN, val activeCommunicationMode: JvmCommunicationMode? = null, val fallbackActivated: Boolean = false, val lastFallbackReason: String? = null, val droppedLogCount: Long = 0, val eventQueueDepth: Int = 0, val eventOverflowed: Boolean = false, val lastHealthLatencyMs: Long? = null, val lastAdminLatencyMs: Long? = null, val lastEventAtEpochMs: Long? = null, val inflightInvocations: Int = 0, val processCpuLoadPercent: Double? = null, val heapUsedBytes: Long? = null, val heapMaxBytes: Long? = null, val heapUsedPercent: Double? = null, val assetMetadata: PluginNodeAssetMetadata? = null)
Link copied to clipboard
Link copied to clipboard
data class PluginRuntimeSnapshot(val pluginId: String, val displayName: String, val version: String, val runtimeMode: PluginRuntimeMode, val lifecycleState: PluginLifecycleState, val healthState: PluginHealthState, val generation: PluginGeneration, val processState: PluginProcessState?, val processId: Long?, val processHandleAlive: Boolean? = null, val diagnostics: PluginRuntimeDiagnostics, val lastFailure: PluginFailureRecord? = null)
Link copied to clipboard
Link copied to clipboard
data class PluginSseDefinition(val path: String, val doc: OpenApiDoc = OpenApiDoc(), val handler: suspend PluginSseSession.() -> Unit) : PluginRouteDefinition
Link copied to clipboard
Link copied to clipboard
data class PluginStaticResourceDefinition(val path: String, val basePackage: String, val doc: OpenApiDoc = OpenApiDoc(), val index: String? = null) : PluginRouteDefinition
Link copied to clipboard
Link copied to clipboard
data class ReloadConfig(val watchEnabled: Boolean = false, val debounceMs: Long = 500, val replaceOnArtifactChange: Boolean = true, val reloadOnConfigChange: Boolean = true)
Link copied to clipboard
data class ServiceKtorInstaller(val pluginKey: String, val installer: Route.() -> Unit)
Link copied to clipboard
Link copied to clipboard
class UnifiedPluginManager(kernelKoin: Koin, runtimeRoot: File = File("/tmp/keel"), currentClasspath: String = System.getProperty("java.class.path"), observabilityHub: ObservabilityHub? = null) : PluginAvailability

Functions

Link copied to clipboard
fun buildEndpointId(pluginId: String, method: HttpMethod, path: String): String
Link copied to clipboard