Skip to main content

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​

ILogger

Logger instance

Returns​

ResourceGovernor

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​

ResourceLimits

Resource limits to apply

Returns​

void

Example​

governor.allocate('my-plugin', {
maxMemoryMB: 128,
maxCpuPercent: 10,
maxExecutionTimeMs: 5000,
});

Implementation of​

IResourceGovernor.allocate


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​

IResourceGovernor.release


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

Implementation of​

IResourceGovernor.updateMemoryUsage