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