Skip to main content

Class: EmergentCapabilityEngine

Defined in: packages/agentos/src/emergent/EmergentCapabilityEngine.ts:186

Orchestrates runtime tool creation for agents with emergent capabilities.

Pipeline: forge request → build tool → run tests → judge review → register.

Supports two creation modes:

Example

const engine = new EmergentCapabilityEngine({
config: { ...DEFAULT_EMERGENT_CONFIG, enabled: true },
composableBuilder,
sandboxForge,
judge,
registry,
});

const result = await engine.forge(request, { agentId: 'gmi-1', sessionId: 'sess-1' });
if (result.success) {
console.log('Registered tool:', result.toolId);
}

Constructors

Constructor

new EmergentCapabilityEngine(deps): EmergentCapabilityEngine

Defined in: packages/agentos/src/emergent/EmergentCapabilityEngine.ts:208

Create a new EmergentCapabilityEngine.

Parameters

deps

EmergentCapabilityEngineDeps

All collaborator dependencies. See EmergentCapabilityEngineDeps.

Returns

EmergentCapabilityEngine

Methods

checkPromotion()

checkPromotion(toolId): Promise<PromotionResult | null>

Defined in: packages/agentos/src/emergent/EmergentCapabilityEngine.ts:440

Check if a tool is eligible for promotion and auto-promote if the threshold is met.

A tool qualifies for promotion when:

  1. It is at the 'session' tier.
  2. Its usage stats meet EmergentConfig.promotionThreshold:
    • totalUses >= threshold.uses
    • confidenceScore >= threshold.confidence

When eligible, the engine submits the tool to the judge's promotion panel. If both reviewers approve, the tool is promoted to 'agent' tier.

Parameters

toolId

string

The ID of the tool to check.

Returns

Promise<PromotionResult | null>

A PromotionResult if promotion was attempted, or null if the tool is not eligible or does not exist.


cleanupSession()

cleanupSession(sessionId): EmergentTool[]

Defined in: packages/agentos/src/emergent/EmergentCapabilityEngine.ts:535

Clean up all session tools for a given session.

Delegates to the registry's EmergentToolRegistry.cleanupSession() method and clears the local session index.

Parameters

sessionId

string

The session identifier to clean up.

Returns

EmergentTool[]


createExecutableTool()

createExecutableTool(tool): ITool<Record<string, unknown>, unknown>

Defined in: packages/agentos/src/emergent/EmergentCapabilityEngine.ts:701

Create an executable ITool wrapper for a forged emergent tool.

The wrapper performs runtime output validation, usage tracking, and promotion checks after each successful execution.

Parameters

tool

EmergentTool

Returns

ITool<Record<string, unknown>, unknown>


createSelfImprovementTools()

createSelfImprovementTools(deps): Promise<ITool<any, any>[]>

Defined in: packages/agentos/src/emergent/EmergentCapabilityEngine.ts:604

Factory method that creates the four self-improvement tools when config.selfImprovement?.enabled is true.

Returns an array containing:

  1. AdaptPersonalityTool — bounded HEXACO trait mutation.
  2. ManageSkillsTool — runtime skill enable/disable/search.
  3. CreateWorkflowTool — multi-step tool composition.
  4. SelfEvaluateTool — self-scoring with parameter adjustment.

Returns an empty array when self-improvement is disabled or the config is absent. Uses dynamic imports to avoid hard compile-time coupling to tool modules that may not yet exist.

Parameters

deps

SelfImprovementToolDeps

Runtime hooks for personality, skills, tools, and memory.

Returns

Promise<ITool<any, any>[]>

Array of 0 or 4 ITool instances.


forge()

forge(request, context): Promise<ForgeResult>

Defined in: packages/agentos/src/emergent/EmergentCapabilityEngine.ts:242

Forge a new tool from a request.

Runs test cases, submits the candidate to the LLM judge, and registers the tool at the 'session' tier if approved. Returns a ForgeResult with the tool ID on success, or an error / rejection verdict on failure.

Pipeline:

  1. Generate unique tool ID.
  2. Build or validate implementation (compose vs. sandbox).
  3. Execute all declared test cases and collect results.
  4. Submit candidate to the judge for creation review.
  5. If approved: create EmergentTool, register at session tier, index.
  6. If rejected: return failure with the judge's reasoning.

Parameters

request

ForgeToolRequest

The forge request describing the desired tool.

context

Caller context containing the agent and session IDs.

agentId

string

sessionId

string

Returns

Promise<ForgeResult>

A ForgeResult indicating success or failure.


getAgentTools()

getAgentTools(agentId): EmergentTool[]

Defined in: packages/agentos/src/emergent/EmergentCapabilityEngine.ts:519

Get all agent-tier tools for a given agent ID.

Parameters

agentId

string

The agent identifier.

Returns

EmergentTool[]

An array of EmergentTool objects created by the agent.


getSessionTools()

getSessionTools(sessionId): EmergentTool[]

Defined in: packages/agentos/src/emergent/EmergentCapabilityEngine.ts:493

Get all session-scoped tools for a given session ID.

Parameters

sessionId

string

The session identifier.

Returns

EmergentTool[]

An array of EmergentTool objects belonging to the session.


removeTool()

removeTool(toolId): Promise<EmergentTool | undefined>

Defined in: packages/agentos/src/emergent/EmergentCapabilityEngine.ts:569

Remove a previously synced tool from the live runtime and registry.

Parameters

toolId

string

Returns

Promise<EmergentTool | undefined>


syncPersistedTool()

syncPersistedTool(tool): Promise<void>

Defined in: packages/agentos/src/emergent/EmergentCapabilityEngine.ts:548

Hydrate a persisted tool back into a live runtime and make it executable.

This is used by backend/admin control planes to sync shared tools from durable storage into a running ToolOrchestrator after promotion or restart.

Parameters

tool

EmergentTool

Returns

Promise<void>