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:
- Compose: chains existing tools via ComposableToolBuilder (safe by construction).
- Sandbox: runs agent-written code via SandboxedToolForge (judge-gated).
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
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:
- It is at the
'session'tier. - Its usage stats meet
EmergentConfig.promotionThreshold:totalUses >= threshold.usesconfidenceScore >= 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
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
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:
- AdaptPersonalityTool — bounded HEXACO trait mutation.
- ManageSkillsTool — runtime skill enable/disable/search.
- CreateWorkflowTool — multi-step tool composition.
- 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
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:
- Generate unique tool ID.
- Build or validate implementation (compose vs. sandbox).
- Execute all declared test cases and collect results.
- Submit candidate to the judge for creation review.
- If approved: create EmergentTool, register at session tier, index.
- If rejected: return failure with the judge's reasoning.
Parameters
request
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
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
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
Returns
Promise<void>