exports/agents-ictm

nexus-agents - ICTM Module Exports

AOrchestra ICTM (Instructions, Context, Tools, Model) pattern for dynamic sub-agent creation.

Split from agents.ts to stay under the 400-line limit.

See

Issue #756

Interfaces

ContextFilter

Defined in: packages/nexus-agents/src/agents/ictm/ictm-types.ts:29

Context filter configuration. Controls what information flows to a sub-agent to prevent long-horizon degradation (AOrchestra Section 3.2).

Properties

includeHistory
includeHistory: boolean;

Defined in: packages/nexus-agents/src/agents/ictm/ictm-types.ts:35

Whether to include conversation history

maxTokens
maxTokens: number;

Defined in: packages/nexus-agents/src/agents/ictm/ictm-types.ts:31

Maximum token budget for curated context

pruneStrategy
pruneStrategy: ContextPruneStrategy;

Defined in: packages/nexus-agents/src/agents/ictm/ictm-types.ts:37

Strategy for pruning excess context

relevanceThreshold
relevanceThreshold: number;

Defined in: packages/nexus-agents/src/agents/ictm/ictm-types.ts:33

Minimum relevance score (0-1) to include context items


CuratedContextItem

Defined in: packages/nexus-agents/src/agents/ictm/ictm-types.ts:142

A context item that can be filtered and ranked.

Properties

content
content: string;

Defined in: packages/nexus-agents/src/agents/ictm/ictm-types.ts:146

Text content

id
id: string;

Defined in: packages/nexus-agents/src/agents/ictm/ictm-types.ts:144

Unique item identifier

relevance
relevance: number;

Defined in: packages/nexus-agents/src/agents/ictm/ictm-types.ts:152

Relevance score (0-1) assigned during curation

source
source: "knowledge" | "result" | "task" | "history";

Defined in: packages/nexus-agents/src/agents/ictm/ictm-types.ts:154

Source category

timestamp
timestamp: number;

Defined in: packages/nexus-agents/src/agents/ictm/ictm-types.ts:150

Timestamp (ms since epoch) for recency scoring

tokenCount
tokenCount: number;

Defined in: packages/nexus-agents/src/agents/ictm/ictm-types.ts:148

Estimated token count


CurationResult

Defined in: packages/nexus-agents/src/agents/ictm/context-curator.ts:131

Curated context result.

Properties

filteredCount
filteredCount: number;

Defined in: packages/nexus-agents/src/agents/ictm/context-curator.ts:137

Number of items filtered out

items
items: CuratedContextItem[];

Defined in: packages/nexus-agents/src/agents/ictm/context-curator.ts:133

Selected context items, ordered by score (descending)

totalTokens
totalTokens: number;

Defined in: packages/nexus-agents/src/agents/ictm/context-curator.ts:135

Total tokens used

trimmedCount
trimmedCount: number;

Defined in: packages/nexus-agents/src/agents/ictm/context-curator.ts:139

Number of items trimmed for token budget


ICTMConfig

Defined in: packages/nexus-agents/src/agents/ictm/ictm-types.ts:101

ICTM configuration tuple.

Each sub-agent receives a unique ICTM config tailored to its subtask, enabling dynamic specialization instead of static expert roles.

Example

const config: ICTMConfig = {
  instructions: 'Analyze the authentication module for SQL injection vulnerabilities.',
  context: { maxTokens: 8000, relevanceThreshold: 0.7, includeHistory: false, pruneStrategy: 'importance' },
  tools: { capabilities: ['code_review', 'research'], restrictions: ['code_generation'] },
  model: { temperature: 0.1, reasoning: 'extended' },
};

Properties

context
context: ContextFilter;

Defined in: packages/nexus-agents/src/agents/ictm/ictm-types.ts:105

Context curation filter

instructions
instructions: string;

Defined in: packages/nexus-agents/src/agents/ictm/ictm-types.ts:103

Task-specific instructions (extends the base system prompt)

metadata?
optional metadata?: Record<string, unknown>;

Defined in: packages/nexus-agents/src/agents/ictm/ictm-types.ts:111

Optional metadata for tracking/extensions

model
model: ModelSelection;

Defined in: packages/nexus-agents/src/agents/ictm/ictm-types.ts:109

Model configuration

tools
tools: ToolSet;

Defined in: packages/nexus-agents/src/agents/ictm/ictm-types.ts:107

Selected tool capabilities


ICTMInferenceResult

Defined in: packages/nexus-agents/src/agents/ictm/ictm-types.ts:121

Result of ICTM inference — the inferred config plus reasoning.

Properties

confidence
confidence: number;

Defined in: packages/nexus-agents/src/agents/ictm/ictm-types.ts:132

Confidence in the inference (0-1)

config
config: ICTMConfig;

Defined in: packages/nexus-agents/src/agents/ictm/ictm-types.ts:123

Inferred ICTM configuration

reasoning
reasoning: {
  context: string;
  instructions: string;
  model: string;
  tools: string;
};

Defined in: packages/nexus-agents/src/agents/ictm/ictm-types.ts:125

Reasoning for each ICTM component

context
context: string;
instructions
instructions: string;
model
model: string;
tools
tools: string;

ModelSelection

Defined in: packages/nexus-agents/src/agents/ictm/ictm-types.ts:68

Model selection for a sub-agent. Enables per-subtask model optimization (performance-cost tradeoff).

Properties

maxTokens?
optional maxTokens?: number;

Defined in: packages/nexus-agents/src/agents/ictm/ictm-types.ts:76

Maximum response tokens

modelId?
optional modelId?: string;

Defined in: packages/nexus-agents/src/agents/ictm/ictm-types.ts:72

Specific model ID

provider?
optional provider?: string;

Defined in: packages/nexus-agents/src/agents/ictm/ictm-types.ts:70

Provider ID (e.g., ‘anthropic’, ‘openai’)

reasoning?
optional reasoning?: ReasoningDepth;

Defined in: packages/nexus-agents/src/agents/ictm/ictm-types.ts:78

Reasoning depth hint

temperature?
optional temperature?: number;

Defined in: packages/nexus-agents/src/agents/ictm/ictm-types.ts:74

Generation temperature (0-2)


ToolSet

Defined in: packages/nexus-agents/src/agents/ictm/ictm-types.ts:48

Tool set configuration for a sub-agent. Restricts capabilities to only what the subtask needs.

Properties

capabilities
capabilities: string[];

Defined in: packages/nexus-agents/src/agents/ictm/ictm-types.ts:50

Allowed capabilities (from AgentCapability values)

restrictions?
optional restrictions?: string[];

Defined in: packages/nexus-agents/src/agents/ictm/ictm-types.ts:52

Explicit tool restrictions — tool names to exclude

Type Aliases

ContextPruneStrategy

type ContextPruneStrategy = "recency" | "importance" | "hybrid";

Defined in: packages/nexus-agents/src/agents/ictm/ictm-types.ts:22

Context pruning strategy for sub-agent context curation.


ReasoningDepth

type ReasoningDepth = "minimal" | "standard" | "extended";

Defined in: packages/nexus-agents/src/agents/ictm/ictm-types.ts:62

Reasoning depth hint for model selection.

Variables

ContextFilterSchema

const ContextFilterSchema: ZodObject<{
  includeHistory: ZodBoolean;
  maxTokens: ZodNumber;
  pruneStrategy: ZodEnum<{
     hybrid: "hybrid";
     importance: "importance";
     recency: "recency";
  }>;
  relevanceThreshold: ZodNumber;
}, $strip>;

Defined in: packages/nexus-agents/src/agents/ictm/ictm-types.ts:163


ContextPruneStrategySchema

const ContextPruneStrategySchema: ZodEnum<{
  hybrid: "hybrid";
  importance: "importance";
  recency: "recency";
}>;

Defined in: packages/nexus-agents/src/agents/ictm/ictm-types.ts:161


ICTMConfigSchema

const ICTMConfigSchema: ZodObject<{
  context: ZodObject<{
     includeHistory: ZodBoolean;
     maxTokens: ZodNumber;
     pruneStrategy: ZodEnum<{
        hybrid: "hybrid";
        importance: "importance";
        recency: "recency";
     }>;
     relevanceThreshold: ZodNumber;
  }, $strip>;
  instructions: ZodString;
  metadata: ZodOptional<ZodRecord<ZodString, ZodUnknown>>;
  model: ZodObject<{
     maxTokens: ZodOptional<ZodNumber>;
     modelId: ZodOptional<ZodString>;
     provider: ZodOptional<ZodString>;
     reasoning: ZodOptional<ZodEnum<{
        extended: "extended";
        minimal: "minimal";
        standard: "standard";
     }>>;
     temperature: ZodOptional<ZodNumber>;
  }, $strip>;
  tools: ZodObject<{
     capabilities: ZodArray<ZodString>;
     restrictions: ZodOptional<ZodArray<ZodString>>;
  }, $strip>;
}, $strip>;

Defined in: packages/nexus-agents/src/agents/ictm/ictm-types.ts:185


ICTMInferenceResultSchema

const ICTMInferenceResultSchema: ZodObject<{
  confidence: ZodNumber;
  config: ZodObject<{
     context: ZodObject<{
        includeHistory: ZodBoolean;
        maxTokens: ZodNumber;
        pruneStrategy: ZodEnum<{
           hybrid: "hybrid";
           importance: "importance";
           recency: "recency";
        }>;
        relevanceThreshold: ZodNumber;
     }, $strip>;
     instructions: ZodString;
     metadata: ZodOptional<ZodRecord<ZodString, ZodUnknown>>;
     model: ZodObject<{
        maxTokens: ZodOptional<ZodNumber>;
        modelId: ZodOptional<ZodString>;
        provider: ZodOptional<ZodString>;
        reasoning: ZodOptional<ZodEnum<{
           extended: "extended";
           minimal: "minimal";
           standard: "standard";
        }>>;
        temperature: ZodOptional<ZodNumber>;
     }, $strip>;
     tools: ZodObject<{
        capabilities: ZodArray<ZodString>;
        restrictions: ZodOptional<ZodArray<ZodString>>;
     }, $strip>;
  }, $strip>;
  reasoning: ZodObject<{
     context: ZodString;
     instructions: ZodString;
     model: ZodString;
     tools: ZodString;
  }, $strip>;
}, $strip>;

Defined in: packages/nexus-agents/src/agents/ictm/ictm-types.ts:193


ModelSelectionSchema

const ModelSelectionSchema: ZodObject<{
  maxTokens: ZodOptional<ZodNumber>;
  modelId: ZodOptional<ZodString>;
  provider: ZodOptional<ZodString>;
  reasoning: ZodOptional<ZodEnum<{
     extended: "extended";
     minimal: "minimal";
     standard: "standard";
  }>>;
  temperature: ZodOptional<ZodNumber>;
}, $strip>;

Defined in: packages/nexus-agents/src/agents/ictm/ictm-types.ts:177


ReasoningDepthSchema

const ReasoningDepthSchema: ZodEnum<{
  extended: "extended";
  minimal: "minimal";
  standard: "standard";
}>;

Defined in: packages/nexus-agents/src/agents/ictm/ictm-types.ts:175


ToolSetSchema

const ToolSetSchema: ZodObject<{
  capabilities: ZodArray<ZodString>;
  restrictions: ZodOptional<ZodArray<ZodString>>;
}, $strip>;

Defined in: packages/nexus-agents/src/agents/ictm/ictm-types.ts:170

Functions

createContextItem()

function createContextItem(
   id, 
   content, 
   source, 
   relevance, 
   timestamp?
): CuratedContextItem;

Defined in: packages/nexus-agents/src/agents/ictm/context-curator.ts:196

Create a context item from raw text.

Parameters

id

string

content

string

source

"knowledge" | "result" | "task" | "history"

relevance

number

timestamp?

number

Returns

CuratedContextItem


curateContext()

function curateContext(
   items, 
   filter, 
   nowMs?
): CurationResult;

Defined in: packages/nexus-agents/src/agents/ictm/context-curator.ts:152

Curate context items according to a context filter.

Pipeline: filter by history → filter by relevance → rank by strategy → trim to budget.

Parameters

items

readonly CuratedContextItem[]

All available context items

filter

ContextFilter

Context filter configuration from ICTM config

nowMs?

number

Current timestamp in ms (defaults to Date.now())

Returns

CurationResult

Curated result with selected items and stats


estimateTokens()

function estimateTokens(text): number;

Defined in: packages/nexus-agents/src/agents/ictm/context-curator.ts:189

Estimate token count for a text string. Uses a simple char/4 heuristic (same as preference-router-extractor).

Parameters

text

string

Returns

number


getRecommendedRole()

function getRecommendedRole(taskType): string;

Defined in: packages/nexus-agents/src/agents/ictm/ictm-factory.ts:278

Get the recommended expert role for a task type. Falls back to ‘code_expert’ for unknown types.

Parameters

taskType

string

Returns

string


ictmToExpertConfig()

function ictmToExpertConfig(ictm, subtaskId): ExpertConfig;

Defined in: packages/nexus-agents/src/agents/ictm/ictm-factory.ts:62

Convert an ICTM config to an ExpertConfig for the existing expert factory.

This bridges the ICTM pattern to the existing expert creation pipeline, enabling backward compatibility with all existing expert infrastructure.

Parameters

ictm

ICTMConfig

subtaskId

string

Returns

ExpertConfig


inferICTM()

function inferICTM(subtask, analysis): ICTMInferenceResult;

Defined in: packages/nexus-agents/src/agents/ictm/ictm-factory.ts:242

Infer an optimal ICTM configuration from a subtask and its parent task analysis.

This is the core intelligence of the ICTM pattern — it analyzes the subtask to determine the best instructions, context filter, tools, and model config.

Parameters

subtask

SubTask

The subtask to create a sub-agent for

analysis

TaskAnalysis

Analysis of the parent task

Returns

ICTMInferenceResult

ICTMInferenceResult with config and reasoning


scoreByHybrid()

function scoreByHybrid(item, nowMs): number;

Defined in: packages/nexus-agents/src/agents/ictm/context-curator.ts:46

Score an item using hybrid strategy (weighted average of recency + importance).

Parameters

item

CuratedContextItem

nowMs

number

Returns

number


scoreByImportance()

function scoreByImportance(item): number;

Defined in: packages/nexus-agents/src/agents/ictm/context-curator.ts:39

Score an item by importance (uses pre-assigned relevance).

Parameters

item

CuratedContextItem

Returns

number


scoreByRecency()

function scoreByRecency(item, nowMs): number;

Defined in: packages/nexus-agents/src/agents/ictm/context-curator.ts:31

Score an item by recency using exponential decay. More recent items score higher.

Parameters

item

CuratedContextItem

nowMs

number

Returns

number


validateICTM()

function validateICTM(config): ICTMConfig | null;

Defined in: packages/nexus-agents/src/agents/ictm/ictm-factory.ts:269

Validate an ICTM config using Zod schema. Returns the validated config or null on failure.

Parameters

config

unknown

Returns

ICTMConfig | null