Class: ResourceGovernor
Defined in: src/plugins/sandbox/resource-governor.ts:132
Resource governor implementation.
Remarks
Tracks and enforces resource limits per plugin:
- Memory: Hard limit enforced per plugin
- CPU: Percentage of time limit over rolling period
- Execution time: Per-request timeout
Example
const governor = container.resolve(ResourceGovernor);
// Allocate resources for plugin
governor.allocate('my-plugin', {
maxMemoryMB: 128,
maxCpuPercent: 10,
maxExecutionTimeMs: 5000,
});
// Check if within limits
if (governor.isWithinLimits('my-plugin')) {
// Safe to execute
}
// Update usage
governor.updateMemoryUsage('my-plugin', 64);
// Release when done
governor.release('my-plugin');
Implements
Constructors
new ResourceGovernor()
new ResourceGovernor(
logger):ResourceGovernor
Defined in: src/plugins/sandbox/resource-governor.ts:148
Creates a new ResourceGovernor.
Parameters
logger
Logger instance
Returns
Methods
allocate()
allocate(
pluginId,limits):void
Defined in: src/plugins/sandbox/resource-governor.ts:169
Allocates resources for a plugin.
Parameters
pluginId
string
Plugin ID
limits
Resource limits to apply
Returns
void
Example
governor.allocate('my-plugin', {
maxMemoryMB: 128,
maxCpuPercent: 10,
maxExecutionTimeMs: 5000,
});
Implementation of
checkCpuUsage()
checkCpuUsage(
pluginId):number
Defined in: src/plugins/sandbox/resource-governor.ts:211
Gets current CPU usage for a plugin.
Parameters
pluginId
string
Plugin ID
Returns
number
CPU usage percentage
Remarks
CPU usage is calculated as percentage of time used over the current period (1 minute rolling window).
Implementation of
IResourceGovernor.checkCpuUsage
checkMemoryUsage()
checkMemoryUsage(
pluginId):number
Defined in: src/plugins/sandbox/resource-governor.ts:195
Gets current memory usage for a plugin.
Parameters
pluginId
string
Plugin ID
Returns
number
Memory usage in MB
Implementation of
IResourceGovernor.checkMemoryUsage
getActivePlugins()
getActivePlugins(): readonly
string[]
Defined in: src/plugins/sandbox/resource-governor.ts:401
Gets all plugin IDs with active allocations.
Returns
readonly string[]
Array of plugin IDs
getLimits()
getLimits(
pluginId):undefined|ResourceLimits
Defined in: src/plugins/sandbox/resource-governor.ts:390
Gets resource limits for a plugin.
Parameters
pluginId
string
Plugin ID
Returns
undefined | ResourceLimits
Resource limits or undefined if not allocated
getResourceSummary()
getResourceSummary():
Map<string, {cpuPercent:number;memoryMB:number; }>
Defined in: src/plugins/sandbox/resource-governor.ts:412
Gets resource summary for all plugins.
Returns
Map<string, { cpuPercent: number; memoryMB: number; }>
Map of plugin ID to resource usage
isWithinLimits()
isWithinLimits(
pluginId):boolean
Defined in: src/plugins/sandbox/resource-governor.ts:256
Checks if a plugin is within its resource limits.
Parameters
pluginId
string
Plugin ID
Returns
boolean
True if within limits
Implementation of
IResourceGovernor.isWithinLimits
recordCpuTime()
recordCpuTime(
pluginId,durationMs):void
Defined in: src/plugins/sandbox/resource-governor.ts:332
Records CPU time for a plugin operation.
Parameters
pluginId
string
Plugin ID
durationMs
number
Duration of operation in milliseconds
Returns
void
Remarks
Call this after each operation to track CPU time usage.
release()
release(
pluginId):void
Defined in: src/plugins/sandbox/resource-governor.ts:235
Releases resources for a plugin.
Parameters
pluginId
string
Plugin ID
Returns
void
Implementation of
startCpuTiming()
startCpuTiming(
pluginId): () =>void
Defined in: src/plugins/sandbox/resource-governor.ts:373
Starts timing a CPU operation.
Parameters
pluginId
string
Plugin ID
Returns
Function
Function to call when operation completes
Returns
void
Example
const endTiming = governor.startCpuTiming('my-plugin');
// ... do work ...
endTiming(); // Records CPU time
updateMemoryUsage()
updateMemoryUsage(
pluginId,memoryMB):void
Defined in: src/plugins/sandbox/resource-governor.ts:285
Updates memory usage for a plugin.
Parameters
pluginId
string
Plugin ID
memoryMB
number
Current memory usage in MB
Returns
void
Throws
If limit exceeded