learning

Classes

AbTestTracker

Defined in: packages/nexus-agents/src/learning/ab-test-tracker.ts:34

A/B Test Tracker implementation. Provides experiment management with deterministic variant assignment.

Implements

Constructors

Constructor
new AbTestTracker(): AbTestTracker;
Returns

AbTestTracker

Methods

assignVariant()
assignVariant(experimentId, traceId): ExperimentVariant | null;

Defined in: packages/nexus-agents/src/learning/ab-test-tracker.ts:123

Assign a variant for a given trace ID (deterministic assignment). Uses consistent hashing to ensure same trace ID always gets same variant.

Parameters
experimentId

string

traceId

string

Returns

ExperimentVariant | null

Implementation of

IAbTestTracker.assignVariant

completeExperiment()
completeExperiment(experimentId): void;

Defined in: packages/nexus-agents/src/learning/ab-test-tracker.ts:103

Complete an experiment.

Parameters
experimentId

string

Returns

void

Implementation of

IAbTestTracker.completeExperiment

createExperiment()
createExperiment(definition): ExperimentDefinition;

Defined in: packages/nexus-agents/src/learning/ab-test-tracker.ts:41

Create a new experiment.

Parameters
definition

Omit<ExperimentDefinition, "status" | "startedAt" | "endedAt">

Returns

ExperimentDefinition

Implementation of

IAbTestTracker.createExperiment

exportData()
exportData(): ExperimentExport;

Defined in: packages/nexus-agents/src/learning/ab-test-tracker.ts:228

Export all experiment data.

Returns

ExperimentExport

Implementation of

IAbTestTracker.exportData

getExperiment()
getExperiment(experimentId): ExperimentDefinition | null;

Defined in: packages/nexus-agents/src/learning/ab-test-tracker.ts:221

Get experiment by ID.

Parameters
experimentId

string

Returns

ExperimentDefinition | null

Implementation of

IAbTestTracker.getExperiment

getSummary()
getSummary(experimentId): ExperimentSummary | null;

Defined in: packages/nexus-agents/src/learning/ab-test-tracker.ts:168

Get experiment summary with statistics.

Parameters
experimentId

string

Returns

ExperimentSummary | null

Implementation of

IAbTestTracker.getSummary

listExperiments()
listExperiments(filter?): readonly ExperimentDefinition[];

Defined in: packages/nexus-agents/src/learning/ab-test-tracker.ts:200

List all experiments.

Parameters
filter?
status?

ExperimentStatus

tags?

readonly string[]

Returns

readonly ExperimentDefinition[]

Implementation of

IAbTestTracker.listExperiments

pauseExperiment()
pauseExperiment(experimentId): void;

Defined in: packages/nexus-agents/src/learning/ab-test-tracker.ts:85

Pause a running experiment.

Parameters
experimentId

string

Returns

void

Implementation of

IAbTestTracker.pauseExperiment

recordOutcome()
recordOutcome(outcome): void;

Defined in: packages/nexus-agents/src/learning/ab-test-tracker.ts:148

Record an outcome for an experiment.

Parameters
outcome

ExperimentOutcome

Returns

void

Implementation of

IAbTestTracker.recordOutcome

startExperiment()
startExperiment(experimentId): void;

Defined in: packages/nexus-agents/src/learning/ab-test-tracker.ts:66

Start an experiment (sets status to running).

Parameters
experimentId

string

Returns

void

Implementation of

IAbTestTracker.startExperiment


FeedbackIntegration

Defined in: packages/nexus-agents/src/learning/feedback-integration.ts:208

Learning exports - Closed-loop feedback and routing improvement Split from index.ts for file size compliance (Issue #285)

Implements

Constructors

Constructor
new FeedbackIntegration(config?, collector?): FeedbackIntegration;

Defined in: packages/nexus-agents/src/learning/feedback-integration.ts:225

Parameters
config?

Partial<FeedbackIntegrationConfig>

collector?

OutcomeFeedbackCollector

Returns

FeedbackIntegration

Methods

evictStaleEntries()
evictStaleEntries(): number;

Defined in: packages/nexus-agents/src/learning/feedback-integration.ts:440

Evicts stale entries from decisionMap that exceed the configured TTL. Called on every recordRoutingDecision (throttled) and on reset.

Returns

number

Implementation of

IFeedbackIntegration.evictStaleEntries

getDecisionMapSize()
getDecisionMapSize(): number;

Defined in: packages/nexus-agents/src/learning/feedback-integration.ts:475

Gets the current size of the decision map (for testing/monitoring).

Returns

number

Implementation of

IFeedbackIntegration.getDecisionMapSize

getEvictedEntryCount()
getEvictedEntryCount(): number;

Defined in: packages/nexus-agents/src/learning/feedback-integration.ts:468

Gets the total number of evicted entries since creation or last reset.

Returns

number

Implementation of

IFeedbackIntegration.getEvictedEntryCount

getStats()
getStats(): FeedbackLoopStats;

Defined in: packages/nexus-agents/src/learning/feedback-integration.ts:415

Get feedback statistics

Returns

FeedbackLoopStats

Implementation of

IFeedbackIntegration.getStats

onOutcomeProcessed()
onOutcomeProcessed(callback): () => void;

Defined in: packages/nexus-agents/src/learning/feedback-integration.ts:419

Subscribe to outcome processed events

Parameters
callback

OutcomeProcessedCallback

Returns

() => void

Implementation of

IFeedbackIntegration.onOutcomeProcessed

recordOutcome()
recordOutcome(params): void;

Defined in: packages/nexus-agents/src/learning/feedback-integration.ts:329

Record a generic task outcome

Parameters
params

RecordOutcomeParams

Returns

void

Implementation of

IFeedbackIntegration.recordOutcome

recordRoutingDecision()
recordRoutingDecision(decision, traceId?): string;

Defined in: packages/nexus-agents/src/learning/feedback-integration.ts:244

Record a routing decision from CompositeRouter

Parameters
decision

CompositeRoutingDecision

traceId?

string

Returns

string

Implementation of

IFeedbackIntegration.recordRoutingDecision

recordStepOutcome()
recordStepOutcome(
   routingDecisionId, 
   stepResult, 
   durationMs, 
   tokenUsage
): void;

Defined in: packages/nexus-agents/src/learning/feedback-integration.ts:311

Record a step outcome from workflow execution

Parameters
routingDecisionId

string

stepResult

StepResult

durationMs

number

tokenUsage

number

Returns

void

Implementation of

IFeedbackIntegration.recordStepOutcome

registerCompositeRouter()
registerCompositeRouter(router): void;

Defined in: packages/nexus-agents/src/learning/feedback-integration.ts:423

Register CompositeRouter for bi-directional feedback

Parameters
router

ICompositeRouter

Returns

void

Implementation of

IFeedbackIntegration.registerCompositeRouter

reset()
reset(): void;

Defined in: packages/nexus-agents/src/learning/feedback-integration.ts:428

Reset all collected data

Returns

void

Implementation of

IFeedbackIntegration.reset


OutcomeFeedbackCollector

Defined in: packages/nexus-agents/src/learning/outcome-feedback.ts:58

Learning exports - Closed-loop feedback and routing improvement Split from index.ts for file size compliance (Issue #285)

Implements

Constructors

Constructor
new OutcomeFeedbackCollector(config?): OutcomeFeedbackCollector;

Defined in: packages/nexus-agents/src/learning/outcome-feedback.ts:69

Parameters
config?

Partial<FeedbackCollectorConfig>

Returns

OutcomeFeedbackCollector

Methods

clearExpiredDecisions()
clearExpiredDecisions(): number;

Defined in: packages/nexus-agents/src/learning/outcome-feedback.ts:250

Clear expired pending decisions.

Returns

number

Implementation of

IOutcomeFeedback.clearExpiredDecisions

computeReward()
computeReward(outcome): ComputedReward;

Defined in: packages/nexus-agents/src/learning/outcome-feedback.ts:170

Compute reward from an outcome.

Parameters
outcome

TaskOutcome

Returns

ComputedReward

Implementation of

IOutcomeFeedback.computeReward

getPendingDecisions()
getPendingDecisions(): readonly FeedbackRoutingDecision[];

Defined in: packages/nexus-agents/src/learning/outcome-feedback.ts:246

Get pending decisions (waiting for outcomes).

Returns

readonly FeedbackRoutingDecision[]

Implementation of

IOutcomeFeedback.getPendingDecisions

getStats()
getStats(): FeedbackLoopStats;

Defined in: packages/nexus-agents/src/learning/outcome-feedback.ts:227

Get feedback loop statistics.

Returns

FeedbackLoopStats

Implementation of

IOutcomeFeedback.getStats

onOutcomeProcessed()
onOutcomeProcessed(callback): () => void;

Defined in: packages/nexus-agents/src/learning/outcome-feedback.ts:100

Subscribe to outcome processed events.

Parameters
callback

OutcomeProcessedCallback

Returns

() => void

processOutcome()
processOutcome(traceId, partialOutcome): void;

Defined in: packages/nexus-agents/src/learning/outcome-feedback.ts:154

Process outcome for a trace ID (finds matching decision and computes reward).

Parameters
traceId

string

partialOutcome

Omit<TaskOutcome, "routingDecisionId">

Returns

void

Implementation of

IOutcomeFeedback.processOutcome

recordOutcome()
recordOutcome(outcome): void;

Defined in: packages/nexus-agents/src/learning/outcome-feedback.ts:133

Record an outcome for a routing decision.

Parameters
outcome

TaskOutcome

Returns

void

Implementation of

IOutcomeFeedback.recordOutcome

recordRoutingDecision()
recordRoutingDecision(decision): void;

Defined in: packages/nexus-agents/src/learning/outcome-feedback.ts:107

Record a routing decision for tracking.

Parameters
decision

FeedbackRoutingDecision

Returns

void

Implementation of

IOutcomeFeedback.recordRoutingDecision

registerLinUCBBandit()
registerLinUCBBandit(bandit): void;

Defined in: packages/nexus-agents/src/learning/outcome-feedback.ts:84

Register LinUCB bandit for direct feedback.

Parameters
bandit

LinUCBBandit

Returns

void

registerPreferenceRouter()
registerPreferenceRouter(router): void;

Defined in: packages/nexus-agents/src/learning/outcome-feedback.ts:92

Register PreferenceRouter for direct feedback.

Parameters
router

PreferenceRouter

Returns

void

reset()
reset(): void;

Defined in: packages/nexus-agents/src/learning/outcome-feedback.ts:282

Reset all state.

Returns

void

Implementation of

IOutcomeFeedback.reset


OutcomeStorageError

Defined in: packages/nexus-agents/src/learning/outcome-storage-types.ts:29

Error class for outcome storage operations.

Extends

Constructors

Constructor
new OutcomeStorageError(message, options?): OutcomeStorageError;

Defined in: packages/nexus-agents/src/learning/outcome-storage-types.ts:30

Parameters
message

string

options?

Partial<Omit<{ cause?: Error; code: ErrorCode; context?: Record<string, unknown>; }, "code">>

Returns

OutcomeStorageError

Overrides

NexusError.constructor

Properties

cause
readonly cause: Error | undefined;

Defined in: packages/nexus-agents/src/core/errors.ts:105

Inherited from

NexusError.cause

code
readonly code: ErrorCode;

Defined in: packages/nexus-agents/src/core/errors.ts:103

Inherited from

NexusError.code

context
readonly context: Record<string, unknown> | undefined;

Defined in: packages/nexus-agents/src/core/errors.ts:104

Inherited from

NexusError.context

message
message: string;

Defined in: node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es5.d.ts:1075

Inherited from

NexusError.message

name
name: string;

Defined in: node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es5.d.ts:1074

Inherited from

NexusError.name

stack?
optional stack?: string;

Defined in: node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es5.d.ts:1076

Inherited from

NexusError.stack

stackTraceLimit
static stackTraceLimit: number;

Defined in: node_modules/.pnpm/@types+node@25.9.8/node_modules/@types/node/globals.d.ts:67

The Error.stackTraceLimit property specifies the number of stack frames collected by a stack trace (whether generated by new Error().stack or Error.captureStackTrace(obj)).

The default value is 10 but may be set to any valid JavaScript number. Changes will affect any stack trace captured after the value has been changed.

If set to a non-number value, or set to a negative number, stack traces will not capture any frames.

Inherited from

NexusError.stackTraceLimit

Methods

toJSON()
toJSON(): SerializedError;

Defined in: packages/nexus-agents/src/core/errors.ts:121

Serializes the error to a JSON-safe object.

Returns

SerializedError

Inherited from

NexusError.toJSON

captureStackTrace()
static captureStackTrace(targetObject, constructorOpt?): void;

Defined in: node_modules/.pnpm/@types+node@25.9.8/node_modules/@types/node/globals.d.ts:51

Creates a .stack property on targetObject, which when accessed returns a string representing the location in the code at which Error.captureStackTrace() was called.

const myObject = {};
Error.captureStackTrace(myObject);
myObject.stack;  // Similar to `new Error().stack`

The first line of the trace will be prefixed with ${myObject.name}: ${myObject.message}.

The optional constructorOpt argument accepts a function. If given, all frames above constructorOpt, including constructorOpt, will be omitted from the generated stack trace.

The constructorOpt argument is useful for hiding implementation details of error generation from the user. For instance:

function a() {
  b();
}

function b() {
  c();
}

function c() {
  // Create an error without stack trace to avoid calculating the stack trace twice.
  const { stackTraceLimit } = Error;
  Error.stackTraceLimit = 0;
  const error = new Error();
  Error.stackTraceLimit = stackTraceLimit;

  // Capture the stack trace above function b
  Error.captureStackTrace(error, b); // Neither function c, nor b is included in the stack trace
  throw error;
}

a();
Parameters
targetObject

object

constructorOpt?

Function

Returns

void

Inherited from

NexusError.captureStackTrace

prepareStackTrace()
static prepareStackTrace(err, stackTraces): any;

Defined in: node_modules/.pnpm/@types+node@25.9.8/node_modules/@types/node/globals.d.ts:55

Parameters
err

Error

stackTraces

CallSite[]

Returns

any

See

https://v8.dev/docs/stack-trace-api#customizing-stack-traces

Inherited from

NexusError.prepareStackTrace


PersistentStrategyDistiller

Defined in: packages/nexus-agents/src/learning/strategy-distiller-persistence.ts:129

StrategyDistiller that persists distilled rules to a JSON file.

  • Construction: hydrates from rules.json via Zod validation
  • distill(): calls super.distill() then atomically saves snapshot
  • Corruption: warn + start fresh (no partial loads)

Extends

Constructors

Constructor
new PersistentStrategyDistiller(
   outcomeStore, 
   persistConfig?, 
   logger?, 
   distillerConfig?
): PersistentStrategyDistiller;

Defined in: packages/nexus-agents/src/learning/strategy-distiller-persistence.ts:135

Parameters
outcomeStore

OutcomeStore

persistConfig?

PersistentDistillerConfig

logger?

ILogger

distillerConfig?

Partial<DistillerConfig>

Returns

PersistentStrategyDistiller

Overrides

StrategyDistiller.constructor

Properties

config
protected readonly config: DistillerConfig;

Defined in: packages/nexus-agents/src/learning/strategy-distiller.ts:228

Protected so PersistentStrategyDistiller hydrates legacy rules under the live thresholds.

Inherited from

StrategyDistiller.config

Methods

checkPersistedTrigger()
checkPersistedTrigger(): boolean;

Defined in: packages/nexus-agents/src/learning/strategy-distiller-persistence.ts:155

An existing but unreadable rules.json is not overwritten by the first-route trigger: it may hold rules written by a newer build, or be recoverable by hand. It is logged and skipped; the in-process counter still distills.

Returns

boolean

Overrides

StrategyDistiller.checkPersistedTrigger

distill()
distill(): void;

Defined in: packages/nexus-agents/src/learning/strategy-distiller-persistence.ts:164

Override distill to persist rules after each run.

Returns

void

Overrides

StrategyDistiller.distill

getRules()
getRules(status?): readonly DistilledRule[];

Defined in: packages/nexus-agents/src/learning/strategy-distiller.ts:323

Get rules filtered by status.

Parameters
status?

RuleStatus

Returns

readonly DistilledRule[]

Inherited from

StrategyDistiller.getRules

getStats()
getStats(): DistillerStats;

Defined in: packages/nexus-agents/src/learning/strategy-distiller.ts:330

Get distiller statistics.

Returns

DistillerStats

Inherited from

StrategyDistiller.getStats

loadRules()
protected loadRules(rules): void;

Defined in: packages/nexus-agents/src/learning/strategy-distiller.ts:389

Load pre-existing rules (e.g., from disk). Used by PersistentStrategyDistiller.

Parameters
rules

readonly DistilledRule[]

Returns

void

Inherited from

StrategyDistiller.loadRules

onOutcome()
onOutcome(): void;

Defined in: packages/nexus-agents/src/learning/strategy-distiller.ts:248

Called for each processed outcome. Triggers distillation at threshold. This counter is per-process; checkPersistedTrigger covers the cross-process case (#6512).

Returns

void

Inherited from

StrategyDistiller.onOutcome

promote()
promote(routingMemory): number;

Defined in: packages/nexus-agents/src/learning/strategy-distiller.ts:360

Promote high-confidence rules to RoutingMemory. Rules must be active, with sufficient observations and confidence.

Parameters
routingMemory

IRoutingMemory

Returns

number

Deprecated

No production caller (#5004 finding 4). DistilledRuleStage is the single channel by which distilled rules reach routing; this second channel into RoutingMemory is kept only so the deprecation is non-breaking. Removal is tracked in #5467. Note the gate now compares confidence = support × effect against promotionConfidence, so a rule that would have promoted on sample size alone may no longer clear it.

Inherited from

StrategyDistiller.promote

restoreDistillState()
protected restoreDistillState(lastDistillAt, eligibleOutcomes): void;

Defined in: packages/nexus-agents/src/learning/strategy-distiller.ts:399

Restore last-distill state from a persisted snapshot (#6512), so the first-route trigger counts only outcomes newer than that snapshot.

Parameters
lastDistillAt

number

eligibleOutcomes

number | undefined

Returns

void

Inherited from

StrategyDistiller.restoreDistillState


SQLiteOutcomeStorage

Defined in: packages/nexus-agents/src/learning/outcome-storage.ts:84

SQLite-based outcome storage implementation.

Implements

Constructors

Constructor
new SQLiteOutcomeStorage(config): SQLiteOutcomeStorage;

Defined in: packages/nexus-agents/src/learning/outcome-storage.ts:91

Parameters
config

OutcomeStorageConfig

Returns

SQLiteOutcomeStorage

Methods

close()
close(): void;

Defined in: packages/nexus-agents/src/learning/outcome-storage.ts:363

Close the database connection.

Returns

void

getCounts()
getCounts(): Promise<Result<{
  decisions: number;
  outcomes: number;
  rewards: number;
}, OutcomeStorageError>>;

Defined in: packages/nexus-agents/src/learning/outcome-storage.ts:341

Get total record counts.

Returns

Promise<Result<{ decisions: number; outcomes: number; rewards: number; }, OutcomeStorageError>>

Implementation of

IOutcomeStorage.getCounts

getDecision()
getDecision(id): Promise<Result<StoredRoutingDecision | null, OutcomeStorageError>>;

Defined in: packages/nexus-agents/src/learning/outcome-storage.ts:252

Get routing decision by ID.

Parameters
id

string

Returns

Promise<Result<StoredRoutingDecision | null, OutcomeStorageError>>

Implementation of

IOutcomeStorage.getDecision

getDecisionsByRequestId()
getDecisionsByRequestId(requestId): Promise<Result<StoredRoutingDecision[], OutcomeStorageError>>;

Defined in: packages/nexus-agents/src/learning/outcome-storage.ts:304

Get decisions by request ID (for audit trail integration).

Parameters
requestId

string

Returns

Promise<Result<StoredRoutingDecision[], OutcomeStorageError>>

Implementation of

IOutcomeStorage.getDecisionsByRequestId

getModelStats()
getModelStats(): Promise<Result<StoredModelStats[], OutcomeStorageError>>;

Defined in: packages/nexus-agents/src/learning/outcome-storage.ts:278

Get aggregated statistics per model.

Returns

Promise<Result<StoredModelStats[], OutcomeStorageError>>

Implementation of

IOutcomeStorage.getModelStats

getOutcome()
getOutcome(decisionId): Promise<Result<StoredTaskOutcome | null, OutcomeStorageError>>;

Defined in: packages/nexus-agents/src/learning/outcome-storage.ts:265

Get outcome for a routing decision.

Parameters
decisionId

string

Returns

Promise<Result<StoredTaskOutcome | null, OutcomeStorageError>>

Implementation of

IOutcomeStorage.getOutcome

getRecentDecisions()
getRecentDecisions(model, limit): Promise<Result<StoredRoutingDecision[], OutcomeStorageError>>;

Defined in: packages/nexus-agents/src/learning/outcome-storage.ts:289

Get recent decisions for a model.

Parameters
model

"claude" | "gemini" | "codex" | "opencode"

limit

number

Returns

Promise<Result<StoredRoutingDecision[], OutcomeStorageError>>

Implementation of

IOutcomeStorage.getRecentDecisions

initialize()
initialize(): Promise<Result<void, OutcomeStorageError>>;

Defined in: packages/nexus-agents/src/learning/outcome-storage.ts:115

Initialize the storage backend.

Returns

Promise<Result<void, OutcomeStorageError>>

initializeWithDatabase()
initializeWithDatabase(database): void;

Defined in: packages/nexus-agents/src/learning/outcome-storage.ts:107

Initialize with an existing database instance (for testing).

Parameters
database

ISQLiteDatabase

Returns

void

prune()
prune(olderThan): Promise<Result<number, OutcomeStorageError>>;

Defined in: packages/nexus-agents/src/learning/outcome-storage.ts:318

Prune old records.

Parameters
olderThan

Date

Returns

Promise<Result<number, OutcomeStorageError>>

Implementation of

IOutcomeStorage.prune

storeDecision()
storeDecision(decision): Promise<Result<void, OutcomeStorageError>>;

Defined in: packages/nexus-agents/src/learning/outcome-storage.ts:160

Store a routing decision.

Parameters
decision

StoredRoutingDecision

Returns

Promise<Result<void, OutcomeStorageError>>

Implementation of

IOutcomeStorage.storeDecision

storeOutcome()
storeOutcome(outcome): Promise<Result<void, OutcomeStorageError>>;

Defined in: packages/nexus-agents/src/learning/outcome-storage.ts:194

Store a task outcome.

Parameters
outcome

StoredTaskOutcome

Returns

Promise<Result<void, OutcomeStorageError>>

Implementation of

IOutcomeStorage.storeOutcome

storeReward()
storeReward(reward): Promise<Result<void, OutcomeStorageError>>;

Defined in: packages/nexus-agents/src/learning/outcome-storage.ts:223

Store a computed reward.

Parameters
reward

StoredReward

Returns

Promise<Result<void, OutcomeStorageError>>

Implementation of

IOutcomeStorage.storeReward


StrategyDistiller

Defined in: packages/nexus-agents/src/learning/strategy-distiller.ts:226

Distills outcome patterns into routing rules.

Subscribe to OutcomeFeedbackCollector.onOutcomeProcessed() and call onOutcome() for each processed outcome. Distillation triggers automatically every triggerThreshold outcomes.

Extended by

Constructors

Constructor
new StrategyDistiller(
   outcomeStore, 
   logger?, 
   config?
): StrategyDistiller;

Defined in: packages/nexus-agents/src/learning/strategy-distiller.ts:237

Parameters
outcomeStore

OutcomeStore

logger?

ILogger

config?

Partial<DistillerConfig>

Returns

StrategyDistiller

Properties

config
protected readonly config: DistillerConfig;

Defined in: packages/nexus-agents/src/learning/strategy-distiller.ts:228

Protected so PersistentStrategyDistiller hydrates legacy rules under the live thresholds.

Methods

checkPersistedTrigger()
checkPersistedTrigger(): boolean;

Defined in: packages/nexus-agents/src/learning/strategy-distiller.ts:273

First-route trigger against the persisted store (#6512).

The in-process counter above only fires after triggerThreshold outcomes in ONE process, which short-lived CLI processes never reach. This checks the store instead: distill when it holds at least triggerThreshold eligible outcomes newer than the last distill (a hydrated snapshot’s savedAt; no snapshot means all of them count). With no snapshot and zero eligible outcomes it distills anyway, so the empty state is recorded as “0 eligible, 0 rules, at

Before deciding, rules past ruleExpiryMs are expired, so a hydrated rule that is out of date is never applied.

Runs at most once per instance; DistilledRuleStage calls it when it first runs, so constructing a distiller stays cheap. Returns whether it distilled.

Returns

boolean

distill()
distill(): void;

Defined in: packages/nexus-agents/src/learning/strategy-distiller.ts:291

Run distillation on the eligible outcomes in the OutcomeStore (#6512).

Returns

void

getRules()
getRules(status?): readonly DistilledRule[];

Defined in: packages/nexus-agents/src/learning/strategy-distiller.ts:323

Get rules filtered by status.

Parameters
status?

RuleStatus

Returns

readonly DistilledRule[]

getStats()
getStats(): DistillerStats;

Defined in: packages/nexus-agents/src/learning/strategy-distiller.ts:330

Get distiller statistics.

Returns

DistillerStats

loadRules()
protected loadRules(rules): void;

Defined in: packages/nexus-agents/src/learning/strategy-distiller.ts:389

Load pre-existing rules (e.g., from disk). Used by PersistentStrategyDistiller.

Parameters
rules

readonly DistilledRule[]

Returns

void

onOutcome()
onOutcome(): void;

Defined in: packages/nexus-agents/src/learning/strategy-distiller.ts:248

Called for each processed outcome. Triggers distillation at threshold. This counter is per-process; checkPersistedTrigger covers the cross-process case (#6512).

Returns

void

promote()
promote(routingMemory): number;

Defined in: packages/nexus-agents/src/learning/strategy-distiller.ts:360

Promote high-confidence rules to RoutingMemory. Rules must be active, with sufficient observations and confidence.

Parameters
routingMemory

IRoutingMemory

Returns

number

Deprecated

No production caller (#5004 finding 4). DistilledRuleStage is the single channel by which distilled rules reach routing; this second channel into RoutingMemory is kept only so the deprecation is non-breaking. Removal is tracked in #5467. Note the gate now compares confidence = support × effect against promotionConfidence, so a rule that would have promoted on sample size alone may no longer clear it.

restoreDistillState()
protected restoreDistillState(lastDistillAt, eligibleOutcomes): void;

Defined in: packages/nexus-agents/src/learning/strategy-distiller.ts:399

Restore last-distill state from a persisted snapshot (#6512), so the first-route trigger counts only outcomes newer than that snapshot.

Parameters
lastDistillAt

number

eligibleOutcomes

number | undefined

Returns

void

Interfaces

ComparisonResult

Defined in: packages/nexus-agents/src/learning/validation-stats-types.ts:57

Result of a two-sample comparison test.

Properties

alpha
readonly alpha: number;

Defined in: packages/nexus-agents/src/learning/validation-stats-types.ts:63

Alpha level used for significance

difference
readonly difference: number;

Defined in: packages/nexus-agents/src/learning/validation-stats-types.ts:65

Difference in success rates (group1 - group2)

differenceCI
readonly differenceCI: ConfidenceInterval;

Defined in: packages/nexus-agents/src/learning/validation-stats-types.ts:67

Confidence interval for the difference

effectSize
readonly effectSize: number;

Defined in: packages/nexus-agents/src/learning/validation-stats-types.ts:69

Effect size (Cohen’s h for proportions)

n1
readonly n1: number;

Defined in: packages/nexus-agents/src/learning/validation-stats-types.ts:71

Sample sizes

n2
readonly n2: number;

Defined in: packages/nexus-agents/src/learning/validation-stats-types.ts:72

pValue
readonly pValue: number;

Defined in: packages/nexus-agents/src/learning/validation-stats-types.ts:59

P-value from the test

significant
readonly significant: boolean;

Defined in: packages/nexus-agents/src/learning/validation-stats-types.ts:61

Whether result is significant at alpha level


ComputedReward

Defined in: packages/nexus-agents/src/learning/outcome-feedback-types.ts:185

Computed reward for bandit update.

Properties

components
readonly components: {
  baseReward: number;
  efficiencyBonus: number;
  qualityBonus: number;
  retryPenalty: number;
  speedBonus: number;
};

Defined in: packages/nexus-agents/src/learning/outcome-feedback-types.ts:189

Components that contributed to the reward

baseReward
readonly baseReward: number;
efficiencyBonus
readonly efficiencyBonus: number;
qualityBonus
readonly qualityBonus: number;
retryPenalty
readonly retryPenalty: number;
speedBonus
readonly speedBonus: number;
explanation
readonly explanation: string;

Defined in: packages/nexus-agents/src/learning/outcome-feedback-types.ts:197

Explanation of reward computation

reward
readonly reward: number;

Defined in: packages/nexus-agents/src/learning/outcome-feedback-types.ts:187

The reward value (0-1)


ConfidenceInterval

Defined in: packages/nexus-agents/src/learning/validation-stats-types.ts:14

Confidence interval result with bounds and metadata.

Properties

confidence
readonly confidence: number;

Defined in: packages/nexus-agents/src/learning/validation-stats-types.ts:22

Confidence level (e.g., 0.95 for 95% CI)

estimate
readonly estimate: number;

Defined in: packages/nexus-agents/src/learning/validation-stats-types.ts:20

Point estimate (center of interval)

lower
readonly lower: number;

Defined in: packages/nexus-agents/src/learning/validation-stats-types.ts:16

Lower bound of the interval

measured
readonly measured: boolean;

Defined in: packages/nexus-agents/src/learning/validation-stats-types.ts:51

Whether the interval was computed from data (#5760 item 3).

false means the sample was empty and lower/upper/estimate carry no information — they are whatever the empty branch happened to return, not a result. Read this before reading the bounds.

The bounds alone cannot say it. meanConfidenceInterval([]) returned lower === upper === 0 — the strongest possible precision claim, over no data. proportionConfidenceInterval(0, 0) returned [0, 1], which is honest by luck rather than by construction: a proportion’s domain happens to be bounded, so its uninformative interval is expressible, and a mean’s is not. calculateDifferenceCI divided by (total1 || 1) and produced a finite interval from nothing at all.

Named for the vocabulary this repo already uses for exactly this — tokensMeasured, policyEvaluated, gapsMeasured, routerTypeMeasured. REQUIRED rather than optional so the compiler names every producer; optional would let a new one stay silent, which is the state this removes.

Ratified 5 of 6 approvers at supermajority (#5760). Infinity and NaN bounds were both rejected for the same reason: each serialises to null in JSON, turning a loud in-process signal into a silent persisted one.

n
readonly n: number;

Defined in: packages/nexus-agents/src/learning/validation-stats-types.ts:24

Sample size used

standardError
readonly standardError: number;

Defined in: packages/nexus-agents/src/learning/validation-stats-types.ts:26

Standard error

upper
readonly upper: number;

Defined in: packages/nexus-agents/src/learning/validation-stats-types.ts:18

Upper bound of the interval


DistilledRule

Defined in: packages/nexus-agents/src/learning/strategy-distiller-types.ts:30

A distilled routing rule extracted from outcome patterns.

Rules are fingerprinted by patternType:cli:category to prevent duplicates and cap total rules at a bounded maximum.

Properties

action
readonly action: StrategyAction;

Defined in: packages/nexus-agents/src/learning/strategy-distiller-types.ts:40

What routing action to take

category
readonly category: string;

Defined in: packages/nexus-agents/src/learning/strategy-distiller-types.ts:38

Task category this rule applies to

cli
readonly cli: "claude" | "gemini" | "codex" | "opencode";

Defined in: packages/nexus-agents/src/learning/strategy-distiller-types.ts:36

Which CLI this rule applies to

confidence
readonly confidence: number;

Defined in: packages/nexus-agents/src/learning/strategy-distiller-types.ts:50

Confidence 0-1 = support × effect (#5004 finding 3).

This is the value DistilledRuleStage.computeDelta multiplies the base delta by, so it must answer “how much should routing move” — not “how many samples did we see”. Before #5004 it was the sigmoid over observations alone, and a rule at 62.5% failure penalised exactly as hard as one at 100% given the same traffic.

createdAt
readonly createdAt: number;

Defined in: packages/nexus-agents/src/learning/strategy-distiller-types.ts:67

Epoch ms when rule was first created

effect
readonly effect: number;

Defined in: packages/nexus-agents/src/learning/strategy-distiller-types.ts:59

Effect size 0-1: how far metric sits past its detector threshold, normalised over the remaining headroom — see effectFor. Persisted at distill time because the threshold is config; recomputing it on load would silently rescale old rules when the threshold changes.

id
readonly id: string;

Defined in: packages/nexus-agents/src/learning/strategy-distiller-types.ts:32

Fingerprint: ${patternType}:${cli}:${category}

metric
readonly metric: number;

Defined in: packages/nexus-agents/src/learning/strategy-distiller-types.ts:63

The metric value (failure rate, success rate, or p90/median ratio)

observationCount
readonly observationCount: number;

Defined in: packages/nexus-agents/src/learning/strategy-distiller-types.ts:61

Number of observations that informed this rule

patternType
readonly patternType: PatternType;

Defined in: packages/nexus-agents/src/learning/strategy-distiller-types.ts:34

What kind of pattern triggered this rule

status
readonly status: RuleStatus;

Defined in: packages/nexus-agents/src/learning/strategy-distiller-types.ts:65

Current lifecycle status

support
readonly support: number;

Defined in: packages/nexus-agents/src/learning/strategy-distiller-types.ts:52

Sample support 0-1: sigmoidConfidence(observationCount) (center=30).

tainted
readonly tainted: boolean;

Defined in: packages/nexus-agents/src/learning/strategy-distiller-types.ts:84

Reserved. No producer sets this to true (#5853).

It was documented as a security gate — “tainted rules never promote to RoutingMemory” — but upsertRule writes the literal false and is the only constructor of new rules, so both consumer branches that read it were unreachable and have been removed. DistilledRuleStage, the channel by which distilled rules actually reach routing, never checked it at all.

The field stays only because removing a required member of a published interface is breaking; removal is queued for the next major in #5867. Do not write a filter against it without first adding a producer — a check that cannot fail is not a check.

updatedAt
readonly updatedAt: number;

Defined in: packages/nexus-agents/src/learning/strategy-distiller-types.ts:69

Epoch ms when rule was last updated


DistillerConfig

Defined in: packages/nexus-agents/src/learning/strategy-distiller-types.ts:88

Configuration for the strategy distiller.

Properties

failureRateThreshold
readonly failureRateThreshold: number;

Defined in: packages/nexus-agents/src/learning/strategy-distiller-types.ts:105

Failure rate above which a failure pattern is detected (default: 0.6)

latencyRatioThreshold
readonly latencyRatioThreshold: number;

Defined in: packages/nexus-agents/src/learning/strategy-distiller-types.ts:109

p90/median ratio above which a latency spike is detected (default: 2.0)

maxRules
readonly maxRules: number;

Defined in: packages/nexus-agents/src/learning/strategy-distiller-types.ts:111

Maximum number of rules to store (default: 90)

minObservationsForActive
readonly minObservationsForActive: number;

Defined in: packages/nexus-agents/src/learning/strategy-distiller-types.ts:94

Minimum observations before activating a rule (default: 5)

minObservationsForDraft
readonly minObservationsForDraft: number;

Defined in: packages/nexus-agents/src/learning/strategy-distiller-types.ts:92

Minimum observations before creating a draft rule (default: 3)

promotionConfidence
readonly promotionConfidence: number;

Defined in: packages/nexus-agents/src/learning/strategy-distiller-types.ts:103

Confidence threshold for promotion to RoutingMemory (default: 0.7).

Deprecated

Only read by StrategyDistiller.promote(), which has no production caller — DistilledRuleStage is the single channel by which distilled rules reach routing (#5004 finding 4). Removal is tracked in #5467. The gate compares confidence, which is now support × effect.

ruleExpiryMs
readonly ruleExpiryMs: number;

Defined in: packages/nexus-agents/src/learning/strategy-distiller-types.ts:113

Rule expiry time in ms (default: 24h)

successRateThreshold
readonly successRateThreshold: number;

Defined in: packages/nexus-agents/src/learning/strategy-distiller-types.ts:107

Success rate above which a success pattern is detected (default: 0.8)

triggerThreshold
readonly triggerThreshold: number;

Defined in: packages/nexus-agents/src/learning/strategy-distiller-types.ts:90

Distill every N outcomes (default: 50)


DistillerStats

Defined in: packages/nexus-agents/src/learning/strategy-distiller-types.ts:136

Statistics returned by StrategyDistiller.getStats().

Properties

eligibleOutcomesAtLastDistill?
readonly optional eligibleOutcomesAtLastDistill?: number;

Defined in: packages/nexus-agents/src/learning/strategy-distiller-types.ts:150

Eligible outcomes the last distillation trained on (#6512). Undefined when no distillation has run or been restored from a snapshot; 0 is a real measurement (a distill ran and nothing was eligible).

lastDistillAt
readonly lastDistillAt: number | undefined;

Defined in: packages/nexus-agents/src/learning/strategy-distiller-types.ts:142

Epoch ms of last distillation run

outcomesSinceLastDistill
readonly outcomesSinceLastDistill: number;

Defined in: packages/nexus-agents/src/learning/strategy-distiller-types.ts:144

Number of outcomes processed since last distillation

ruleCountByStatus
readonly ruleCountByStatus: Readonly<Record<RuleStatus, number>>;

Defined in: packages/nexus-agents/src/learning/strategy-distiller-types.ts:138

Number of rules in each status

totalRules
readonly totalRules: number;

Defined in: packages/nexus-agents/src/learning/strategy-distiller-types.ts:140

Total number of rules


DistributionStats

Defined in: packages/nexus-agents/src/learning/validation-stats-types.ts:78

Descriptive statistics for a distribution.

Properties

max
readonly max: number;

Defined in: packages/nexus-agents/src/learning/validation-stats-types.ts:84

mean
readonly mean: number;

Defined in: packages/nexus-agents/src/learning/validation-stats-types.ts:79

median
readonly median: number;

Defined in: packages/nexus-agents/src/learning/validation-stats-types.ts:80

min
readonly min: number;

Defined in: packages/nexus-agents/src/learning/validation-stats-types.ts:83

n
readonly n: number;

Defined in: packages/nexus-agents/src/learning/validation-stats-types.ts:85

percentiles
readonly percentiles: {
  p25: number;
  p5: number;
  p50: number;
  p75: number;
  p95: number;
};

Defined in: packages/nexus-agents/src/learning/validation-stats-types.ts:87

Percentiles: p5, p25, p50, p75, p95

p25
readonly p25: number;
p5
readonly p5: number;
p50
readonly p50: number;
p75
readonly p75: number;
p95
readonly p95: number;
stdDev
readonly stdDev: number;

Defined in: packages/nexus-agents/src/learning/validation-stats-types.ts:81

variance
readonly variance: number;

Defined in: packages/nexus-agents/src/learning/validation-stats-types.ts:82


ExperimentDefinition

Defined in: packages/nexus-agents/src/learning/ab-test-types.ts:37

Experiment definition.

Properties

description
readonly description: string;

Defined in: packages/nexus-agents/src/learning/ab-test-types.ts:43

Description of the experiment’s hypothesis

endedAt
readonly endedAt: string | null;

Defined in: packages/nexus-agents/src/learning/ab-test-types.ts:51

End timestamp (ISO 8601)

id
readonly id: string;

Defined in: packages/nexus-agents/src/learning/ab-test-types.ts:39

Unique experiment identifier

minimumDetectableEffect
readonly minimumDetectableEffect: number;

Defined in: packages/nexus-agents/src/learning/ab-test-types.ts:57

Minimum detectable effect size

minSampleSize
readonly minSampleSize: number;

Defined in: packages/nexus-agents/src/learning/ab-test-types.ts:53

Minimum sample size per variant

name
readonly name: string;

Defined in: packages/nexus-agents/src/learning/ab-test-types.ts:41

Human-readable name

primaryMetric
readonly primaryMetric: "successRate" | "avgReward" | "avgLatency";

Defined in: packages/nexus-agents/src/learning/ab-test-types.ts:55

Primary metric to optimize

startedAt
readonly startedAt: string | null;

Defined in: packages/nexus-agents/src/learning/ab-test-types.ts:49

Start timestamp (ISO 8601)

status
readonly status: ExperimentStatus;

Defined in: packages/nexus-agents/src/learning/ab-test-types.ts:45

Current status

tags
readonly tags: readonly string[];

Defined in: packages/nexus-agents/src/learning/ab-test-types.ts:59

Tags for categorization

variants
readonly variants: readonly ExperimentVariant[];

Defined in: packages/nexus-agents/src/learning/ab-test-types.ts:47

Experiment variants


ExperimentExport

Defined in: packages/nexus-agents/src/learning/ab-test-types.ts:187

Export format for experiment data.

Properties

experiments
readonly experiments: readonly ExperimentDefinition[];

Defined in: packages/nexus-agents/src/learning/ab-test-types.ts:191

All experiments

exportedAt
readonly exportedAt: string;

Defined in: packages/nexus-agents/src/learning/ab-test-types.ts:189

Export timestamp

outcomes
readonly outcomes: readonly ExperimentOutcome[];

Defined in: packages/nexus-agents/src/learning/ab-test-types.ts:193

All outcomes

summaries
readonly summaries: readonly ExperimentSummary[];

Defined in: packages/nexus-agents/src/learning/ab-test-types.ts:195

Summaries for completed experiments


ExperimentOutcome

Defined in: packages/nexus-agents/src/learning/ab-test-types.ts:65

Recorded outcome for an experiment.

Properties

experimentId
readonly experimentId: string;

Defined in: packages/nexus-agents/src/learning/ab-test-types.ts:67

Experiment ID

latencyMs
readonly latencyMs: number;

Defined in: packages/nexus-agents/src/learning/ab-test-types.ts:77

Latency in milliseconds

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

Defined in: packages/nexus-agents/src/learning/ab-test-types.ts:81

Additional metadata

reward
readonly reward: number;

Defined in: packages/nexus-agents/src/learning/ab-test-types.ts:75

Reward value

success
readonly success: boolean;

Defined in: packages/nexus-agents/src/learning/ab-test-types.ts:73

Whether the task succeeded

timestamp
readonly timestamp: string;

Defined in: packages/nexus-agents/src/learning/ab-test-types.ts:79

Timestamp (ISO 8601)

traceId
readonly traceId: string;

Defined in: packages/nexus-agents/src/learning/ab-test-types.ts:71

Routing decision trace ID

variantId
readonly variantId: string;

Defined in: packages/nexus-agents/src/learning/ab-test-types.ts:69

Assigned variant ID


ExperimentResult

Defined in: packages/nexus-agents/src/learning/validation-stats-types.ts:158

A/B test experiment result.

Properties

comparison
readonly comparison: ComparisonResult;

Defined in: packages/nexus-agents/src/learning/validation-stats-types.ts:166

Comparison between groups

control
readonly control: VariantResultSummary;

Defined in: packages/nexus-agents/src/learning/validation-stats-types.ts:162

Control group statistics

experimentId
readonly experimentId: string;

Defined in: packages/nexus-agents/src/learning/validation-stats-types.ts:160

Experiment identifier

hasMinimumSampleSize
readonly hasMinimumSampleSize: boolean;

Defined in: packages/nexus-agents/src/learning/validation-stats-types.ts:185

Whether experiment has enough data for valid conclusions

recommendedSampleSize
readonly recommendedSampleSize: number;

Defined in: packages/nexus-agents/src/learning/validation-stats-types.ts:187

Minimum recommended sample size per group

recommendedSampleSizeMeasured
readonly recommendedSampleSizeMeasured: boolean;

Defined in: packages/nexus-agents/src/learning/validation-stats-types.ts:204

Whether recommendedSampleSize was computed from a baseline the control actually measured.

false means the control has no observations, so the 0 baseline calculateMinSampleSize was handed is a default, not a rate. The number it returns is real arithmetic over a fabricated input and comes out several times too small — in the direction that tells an operator to stop collecting early, which is exactly the reader this field exists to warn.

Note the gate is control.n > 0, NOT control.successRate > 0: a control of 0/50 is a measured baseline of 0.0 and a legitimate input here. That is a different question from the one relativeImprovementMeasured answers, which is whether a ratio over the control rate exists — hence two markers rather than one shared flag (#5857).

relativeImprovement
readonly relativeImprovement: number;

Defined in: packages/nexus-agents/src/learning/validation-stats-types.ts:168

Relative improvement (treatment vs control)

relativeImprovementMeasured
readonly relativeImprovementMeasured: boolean;

Defined in: packages/nexus-agents/src/learning/validation-stats-types.ts:183

Whether relativeImprovement was computed from a control rate that could support a ratio.

false means the control measured 0 successes, so the relative improvement is unbounded and the accompanying 0 is a placeholder — NOT “treatment and control performed identically”, which is what 0 reads as on that scale. A control of 0/50 is a real measurement; the ratio over it is the thing that does not exist.

calculateRegret solved the same problem with null (#5255). This field carries the same information without widening a public number to number | null, which is a breaking change for readers.

treatment
readonly treatment: VariantResultSummary;

Defined in: packages/nexus-agents/src/learning/validation-stats-types.ts:164

Treatment group statistics


ExperimentSummary

Defined in: packages/nexus-agents/src/learning/ab-test-types.ts:111

Experiment summary with all variants and comparison.

Properties

experiment
readonly experiment: ExperimentDefinition;

Defined in: packages/nexus-agents/src/learning/ab-test-types.ts:113

Experiment definition

hasMinimumSampleSize
readonly hasMinimumSampleSize: boolean;

Defined in: packages/nexus-agents/src/learning/ab-test-types.ts:119

Whether experiment has reached minimum sample size

recommendation
readonly recommendation: "continue" | "stop_winner" | "stop_inconclusive";

Defined in: packages/nexus-agents/src/learning/ab-test-types.ts:121

Recommended action based on results

result
readonly result: ExperimentResult | null;

Defined in: packages/nexus-agents/src/learning/ab-test-types.ts:117

Statistical comparison result

variantStats
readonly variantStats: readonly VariantStats[];

Defined in: packages/nexus-agents/src/learning/ab-test-types.ts:115

Statistics per variant


ExperimentVariant

Defined in: packages/nexus-agents/src/learning/ab-test-types.ts:21

Experiment variant configuration.

Properties

description
readonly description: string;

Defined in: packages/nexus-agents/src/learning/ab-test-types.ts:27

Description of what this variant does

id
readonly id: string;

Defined in: packages/nexus-agents/src/learning/ab-test-types.ts:23

Variant identifier

isControl
readonly isControl: boolean;

Defined in: packages/nexus-agents/src/learning/ab-test-types.ts:31

Whether this is the control variant

name
readonly name: string;

Defined in: packages/nexus-agents/src/learning/ab-test-types.ts:25

Human-readable name

trafficPercent
readonly trafficPercent: number;

Defined in: packages/nexus-agents/src/learning/ab-test-types.ts:29

Traffic allocation percentage (0-100)


FeedbackCollectorConfig

Defined in: packages/nexus-agents/src/learning/outcome-feedback-types.ts:238

Configuration for the feedback collector.

Properties

efficiencyWeight
readonly efficiencyWeight: number;

Defined in: packages/nexus-agents/src/learning/outcome-feedback-types.ts:250

Weight for efficiency in reward computation

enableAutoReward
readonly enableAutoReward: boolean;

Defined in: packages/nexus-agents/src/learning/outcome-feedback-types.ts:244

Enable automatic reward computation

maxHistorySize
readonly maxHistorySize: number;

Defined in: packages/nexus-agents/src/learning/outcome-feedback-types.ts:258

Maximum history entries (outcomes + decisions) to retain

maxPendingDecisions
readonly maxPendingDecisions: number;

Defined in: packages/nexus-agents/src/learning/outcome-feedback-types.ts:240

Maximum pending decisions to track

pendingTimeoutMs
readonly pendingTimeoutMs: number;

Defined in: packages/nexus-agents/src/learning/outcome-feedback-types.ts:242

Timeout for pending decisions (ms)

qualityWeight
readonly qualityWeight: number;

Defined in: packages/nexus-agents/src/learning/outcome-feedback-types.ts:246

Weight for quality in reward computation

retryPenalty
readonly retryPenalty: number;

Defined in: packages/nexus-agents/src/learning/outcome-feedback-types.ts:252

Penalty per retry in reward computation

speedWeight
readonly speedWeight: number;

Defined in: packages/nexus-agents/src/learning/outcome-feedback-types.ts:248

Weight for speed in reward computation

targetDurationMs
readonly targetDurationMs: number;

Defined in: packages/nexus-agents/src/learning/outcome-feedback-types.ts:254

Target duration for speed bonus (ms)

targetTokenUsage
readonly targetTokenUsage: number;

Defined in: packages/nexus-agents/src/learning/outcome-feedback-types.ts:256

Target token usage for efficiency bonus


FeedbackIntegrationConfig

Defined in: packages/nexus-agents/src/learning/feedback-integration-types.ts:53

Configuration for feedback integration.

Properties

decisionTtlMs?
readonly optional decisionTtlMs?: number;

Defined in: packages/nexus-agents/src/learning/feedback-integration-types.ts:61

TTL for decision entries in milliseconds (default: 3600000 = 1 hour)

enableAutoFeedback
readonly enableAutoFeedback: boolean;

Defined in: packages/nexus-agents/src/learning/feedback-integration-types.ts:55

Enable automatic feedback to routers (default: true)

enablePersistence?
readonly optional enablePersistence?: boolean;

Defined in: packages/nexus-agents/src/learning/feedback-integration-types.ts:69

Enable persistent storage via SQLite (default: false). Requires outcomeStorage to be provided. (Source: Issue #560 - Wire SQLiteOutcomeStorage to feedback loop)

logger?
readonly optional logger?: ILogger;

Defined in: packages/nexus-agents/src/learning/feedback-integration-types.ts:63

Logger instance

outcomeStorage?
readonly optional outcomeStorage?: IOutcomeStorage;

Defined in: packages/nexus-agents/src/learning/feedback-integration-types.ts:75

SQLite outcome storage instance for cross-session learning. Only used when enablePersistence is true. (Source: Issue #560 - Wire SQLiteOutcomeStorage to feedback loop)

partialQualityThreshold
readonly partialQualityThreshold: number;

Defined in: packages/nexus-agents/src/learning/feedback-integration-types.ts:59

Quality score threshold for partial success (default: 0.4)

successQualityThreshold
readonly successQualityThreshold: number;

Defined in: packages/nexus-agents/src/learning/feedback-integration-types.ts:57

Quality score threshold for success (default: 0.7)


FeedbackLoopStats

Defined in: packages/nexus-agents/src/learning/outcome-feedback-types.ts:203

Feedback loop statistics.

Properties

avgQualityScore
readonly avgQualityScore: number;

Defined in: packages/nexus-agents/src/learning/outcome-feedback-types.ts:213

Average quality score

avgReward
readonly avgReward: number;

Defined in: packages/nexus-agents/src/learning/outcome-feedback-types.ts:215

Average reward computed

decisionsByRouter
readonly decisionsByRouter: Record<RouterType, number>;

Defined in: packages/nexus-agents/src/learning/outcome-feedback-types.ts:221

Decisions by router type, counting ONLY decisions whose routerType was measured (#5812). Before this, every unattributable decision was counted as topsis, inflating the exact number this metric exists to report.

decisionsUnattributed
readonly decisionsUnattributed: number;

Defined in: packages/nexus-agents/src/learning/outcome-feedback-types.ts:230

Decisions whose routing stage could not be identified, and which therefore appear in NO bucket of decisionsByRouter (#5812).

This is the field that makes routerTypeMeasured a fix rather than an annotation: without it the unattributable population would still have to land somewhere, and “somewhere” was topsis.

lastUpdatedAt
readonly lastUpdatedAt: string;

Defined in: packages/nexus-agents/src/learning/outcome-feedback-types.ts:232

Last update timestamp

outcomesByClass
readonly outcomesByClass: Record<OutcomeClass, number>;

Defined in: packages/nexus-agents/src/learning/outcome-feedback-types.ts:211

Outcomes by classification

pendingOutcomes
readonly pendingOutcomes: number;

Defined in: packages/nexus-agents/src/learning/outcome-feedback-types.ts:209

Decisions pending outcome

totalDecisions
readonly totalDecisions: number;

Defined in: packages/nexus-agents/src/learning/outcome-feedback-types.ts:205

Total routing decisions recorded

totalOutcomes
readonly totalOutcomes: number;

Defined in: packages/nexus-agents/src/learning/outcome-feedback-types.ts:207

Total outcomes recorded


FeedbackRoutingDecision

Defined in: packages/nexus-agents/src/learning/outcome-feedback-types.ts:73

Recorded routing decision for feedback tracking.

Properties

armIndex?
readonly optional armIndex?: number;

Defined in: packages/nexus-agents/src/learning/outcome-feedback-types.ts:103

Arm index for LinUCB bandit

banditContext?
readonly optional banditContext?: BanditContext;

Defined in: packages/nexus-agents/src/learning/outcome-feedback-types.ts:105

Bandit context (for LinUCB decisions)

confidence?
readonly optional confidence?: number;

Defined in: packages/nexus-agents/src/learning/outcome-feedback-types.ts:111

Confidence score

domain?
readonly optional domain?: string;

Defined in: packages/nexus-agents/src/learning/outcome-feedback-types.ts:115

Task domain classification

id
readonly id: string;

Defined in: packages/nexus-agents/src/learning/outcome-feedback-types.ts:75

Unique decision ID

query
readonly query: string;

Defined in: packages/nexus-agents/src/learning/outcome-feedback-types.ts:79

Original query/task that was routed

queryFeatures?
readonly optional queryFeatures?: QueryFeatures;

Defined in: packages/nexus-agents/src/learning/outcome-feedback-types.ts:107

Query features (for preference routing)

routerType
readonly routerType: RouterType;

Defined in: packages/nexus-agents/src/learning/outcome-feedback-types.ts:81

Type of router used

routerTypeMeasured?
readonly optional routerTypeMeasured?: boolean;

Defined in: packages/nexus-agents/src/learning/outcome-feedback-types.ts:97

Whether routerType was MEASURED or is a fallback label (#5812).

getDecisiveRouterType tests four stage names and, when none of them explains the decision, returns 'topsis' — byte-identical to its own measured 'topsis' answer. routerType is therefore best-effort, and this field is what qualifies it.

Three states, deliberately:

  • true — a stage was identified and routerType names it.
  • false — no stage explained the decision; routerType is a fallback.
  • absent — a row written before this field existed. Read it as UNMEASURED, never as measured: a legacy row carries exactly as much evidence as the fallback does.
selectedModel
readonly selectedModel: string;

Defined in: packages/nexus-agents/src/learning/outcome-feedback-types.ts:99

Selected model/adapter name

selectedTier?
readonly optional selectedTier?: "strong" | "weak";

Defined in: packages/nexus-agents/src/learning/outcome-feedback-types.ts:101

Selected model tier (strong/weak for preference routing)

timestamp
readonly timestamp: string;

Defined in: packages/nexus-agents/src/learning/outcome-feedback-types.ts:77

Timestamp of decision

traceId
readonly traceId: string;

Defined in: packages/nexus-agents/src/learning/outcome-feedback-types.ts:113

Trace ID to correlate with SwarmObserver events

ucbScore?
readonly optional ucbScore?: number;

Defined in: packages/nexus-agents/src/learning/outcome-feedback-types.ts:109

UCB score (for LinUCB)


IAbTestTracker

Defined in: packages/nexus-agents/src/learning/ab-test-types.ts:127

A/B test tracker interface.

Methods

assignVariant()
assignVariant(experimentId, traceId): ExperimentVariant | null;

Defined in: packages/nexus-agents/src/learning/ab-test-types.ts:153

Assign a variant for a given trace ID (deterministic assignment).

Parameters
experimentId

string

traceId

string

Returns

ExperimentVariant | null

completeExperiment()
completeExperiment(experimentId): void;

Defined in: packages/nexus-agents/src/learning/ab-test-types.ts:148

Complete an experiment.

Parameters
experimentId

string

Returns

void

createExperiment()
createExperiment(definition): ExperimentDefinition;

Defined in: packages/nexus-agents/src/learning/ab-test-types.ts:131

Create a new experiment.

Parameters
definition

Omit<ExperimentDefinition, "status" | "startedAt" | "endedAt">

Returns

ExperimentDefinition

exportData()
exportData(): ExperimentExport;

Defined in: packages/nexus-agents/src/learning/ab-test-types.ts:181

Export all experiment data.

Returns

ExperimentExport

getExperiment()
getExperiment(experimentId): ExperimentDefinition | null;

Defined in: packages/nexus-agents/src/learning/ab-test-types.ts:176

Get experiment by ID.

Parameters
experimentId

string

Returns

ExperimentDefinition | null

getSummary()
getSummary(experimentId): ExperimentSummary | null;

Defined in: packages/nexus-agents/src/learning/ab-test-types.ts:163

Get experiment summary with statistics.

Parameters
experimentId

string

Returns

ExperimentSummary | null

listExperiments()
listExperiments(filter?): readonly ExperimentDefinition[];

Defined in: packages/nexus-agents/src/learning/ab-test-types.ts:168

List all experiments.

Parameters
filter?
status?

ExperimentStatus

tags?

readonly string[]

Returns

readonly ExperimentDefinition[]

pauseExperiment()
pauseExperiment(experimentId): void;

Defined in: packages/nexus-agents/src/learning/ab-test-types.ts:143

Pause a running experiment.

Parameters
experimentId

string

Returns

void

recordOutcome()
recordOutcome(outcome): void;

Defined in: packages/nexus-agents/src/learning/ab-test-types.ts:158

Record an outcome for an experiment.

Parameters
outcome

ExperimentOutcome

Returns

void

startExperiment()
startExperiment(experimentId): void;

Defined in: packages/nexus-agents/src/learning/ab-test-types.ts:138

Start an experiment (sets status to running).

Parameters
experimentId

string

Returns

void


IFeedbackIntegration

Defined in: packages/nexus-agents/src/learning/feedback-integration-types.ts:98

Interface for feedback integration.

Methods

evictStaleEntries()
evictStaleEntries(): number;

Defined in: packages/nexus-agents/src/learning/feedback-integration-types.ts:126

Evict stale entries from decision map that exceed TTL

Returns

number

getDecisionMapSize()
getDecisionMapSize(): number;

Defined in: packages/nexus-agents/src/learning/feedback-integration-types.ts:132

Get current size of decision map

Returns

number

getEvictedEntryCount()
getEvictedEntryCount(): number;

Defined in: packages/nexus-agents/src/learning/feedback-integration-types.ts:129

Get total count of evicted entries since creation or last reset

Returns

number

getStats()
getStats(): FeedbackLoopStats;

Defined in: packages/nexus-agents/src/learning/feedback-integration-types.ts:114

Get feedback statistics

Returns

FeedbackLoopStats

onOutcomeProcessed()
onOutcomeProcessed(callback): () => void;

Defined in: packages/nexus-agents/src/learning/feedback-integration-types.ts:117

Subscribe to outcome processed events

Parameters
callback

OutcomeProcessedCallback

Returns

() => void

recordOutcome()
recordOutcome(params): void;

Defined in: packages/nexus-agents/src/learning/feedback-integration-types.ts:111

Record a generic task outcome

Parameters
params

RecordOutcomeParams

Returns

void

recordRoutingDecision()
recordRoutingDecision(decision, traceId?): string;

Defined in: packages/nexus-agents/src/learning/feedback-integration-types.ts:100

Record a routing decision from CompositeRouter

Parameters
decision

CompositeRoutingDecision

traceId?

string

Returns

string

recordStepOutcome()
recordStepOutcome(
   routingDecisionId, 
   stepResult, 
   durationMs, 
   tokenUsage
): void;

Defined in: packages/nexus-agents/src/learning/feedback-integration-types.ts:103

Record a step outcome from workflow execution

Parameters
routingDecisionId

string

stepResult

StepResult

durationMs

number

tokenUsage

number

Returns

void

registerCompositeRouter()
registerCompositeRouter(router): void;

Defined in: packages/nexus-agents/src/learning/feedback-integration-types.ts:120

Register CompositeRouter for bi-directional feedback

Parameters
router

ICompositeRouter

Returns

void

reset()
reset(): void;

Defined in: packages/nexus-agents/src/learning/feedback-integration-types.ts:123

Reset all collected data

Returns

void


IOutcomeFeedback

Defined in: packages/nexus-agents/src/learning/outcome-feedback-types.ts:296

Interface for outcome feedback collector.

Methods

clearExpiredDecisions()
clearExpiredDecisions(): number;

Defined in: packages/nexus-agents/src/learning/outcome-feedback-types.ts:330

Clear expired pending decisions.

Returns

number

computeReward()
computeReward(outcome): ComputedReward;

Defined in: packages/nexus-agents/src/learning/outcome-feedback-types.ts:315

Compute reward from an outcome.

Parameters
outcome

TaskOutcome

Returns

ComputedReward

getPendingDecisions()
getPendingDecisions(): readonly FeedbackRoutingDecision[];

Defined in: packages/nexus-agents/src/learning/outcome-feedback-types.ts:325

Get pending decisions (waiting for outcomes).

Returns

readonly FeedbackRoutingDecision[]

getStats()
getStats(): FeedbackLoopStats;

Defined in: packages/nexus-agents/src/learning/outcome-feedback-types.ts:320

Get feedback loop statistics.

Returns

FeedbackLoopStats

processOutcome()
processOutcome(traceId, outcome): void;

Defined in: packages/nexus-agents/src/learning/outcome-feedback-types.ts:310

Process outcome for a trace ID (finds matching decision and computes reward).

Parameters
traceId

string

outcome

Omit<TaskOutcome, "routingDecisionId">

Returns

void

recordOutcome()
recordOutcome(outcome): void;

Defined in: packages/nexus-agents/src/learning/outcome-feedback-types.ts:305

Record an outcome for a routing decision.

Parameters
outcome

TaskOutcome

Returns

void

recordRoutingDecision()
recordRoutingDecision(decision): void;

Defined in: packages/nexus-agents/src/learning/outcome-feedback-types.ts:300

Record a routing decision for tracking.

Parameters
decision

FeedbackRoutingDecision

Returns

void

reset()
reset(): void;

Defined in: packages/nexus-agents/src/learning/outcome-feedback-types.ts:335

Reset all state.

Returns

void


IOutcomeStorage

Defined in: packages/nexus-agents/src/learning/outcome-storage-types.ts:190

Interface for outcome storage implementations.

Methods

getCounts()
getCounts(): Promise<Result<{
  decisions: number;
  outcomes: number;
  rewards: number;
}, OutcomeStorageError>>;

Defined in: packages/nexus-agents/src/learning/outcome-storage-types.ts:246

Get total record counts.

Returns

Promise<Result<{ decisions: number; outcomes: number; rewards: number; }, OutcomeStorageError>>

getDecision()
getDecision(id): Promise<Result<StoredRoutingDecision | null, OutcomeStorageError>>;

Defined in: packages/nexus-agents/src/learning/outcome-storage-types.ts:209

Get routing decision by ID.

Parameters
id

string

Returns

Promise<Result<StoredRoutingDecision | null, OutcomeStorageError>>

getDecisionsByRequestId()
getDecisionsByRequestId(requestId): Promise<Result<StoredRoutingDecision[], OutcomeStorageError>>;

Defined in: packages/nexus-agents/src/learning/outcome-storage-types.ts:234

Get decisions by request ID (for audit trail integration).

Parameters
requestId

string

Returns

Promise<Result<StoredRoutingDecision[], OutcomeStorageError>>

getModelStats()
getModelStats(): Promise<Result<StoredModelStats[], OutcomeStorageError>>;

Defined in: packages/nexus-agents/src/learning/outcome-storage-types.ts:221

Get aggregated statistics per model.

Returns

Promise<Result<StoredModelStats[], OutcomeStorageError>>

getOutcome()
getOutcome(routingDecisionId): Promise<Result<StoredTaskOutcome | null, OutcomeStorageError>>;

Defined in: packages/nexus-agents/src/learning/outcome-storage-types.ts:214

Get outcome for a routing decision.

Parameters
routingDecisionId

string

Returns

Promise<Result<StoredTaskOutcome | null, OutcomeStorageError>>

getRecentDecisions()
getRecentDecisions(model, limit): Promise<Result<StoredRoutingDecision[], OutcomeStorageError>>;

Defined in: packages/nexus-agents/src/learning/outcome-storage-types.ts:226

Get recent decisions for a model.

Parameters
model

"claude" | "gemini" | "codex" | "opencode"

limit

number

Returns

Promise<Result<StoredRoutingDecision[], OutcomeStorageError>>

prune()
prune(olderThan): Promise<Result<number, OutcomeStorageError>>;

Defined in: packages/nexus-agents/src/learning/outcome-storage-types.ts:241

Prune old records.

Parameters
olderThan

Date

Returns

Promise<Result<number, OutcomeStorageError>>

storeDecision()
storeDecision(decision): Promise<Result<void, OutcomeStorageError>>;

Defined in: packages/nexus-agents/src/learning/outcome-storage-types.ts:194

Store a routing decision.

Parameters
decision

StoredRoutingDecision

Returns

Promise<Result<void, OutcomeStorageError>>

storeOutcome()
storeOutcome(outcome): Promise<Result<void, OutcomeStorageError>>;

Defined in: packages/nexus-agents/src/learning/outcome-storage-types.ts:199

Store a task outcome.

Parameters
outcome

StoredTaskOutcome

Returns

Promise<Result<void, OutcomeStorageError>>

storeReward()
storeReward(reward): Promise<Result<void, OutcomeStorageError>>;

Defined in: packages/nexus-agents/src/learning/outcome-storage-types.ts:204

Store a computed reward.

Parameters
reward

StoredReward

Returns

Promise<Result<void, OutcomeStorageError>>


ISQLiteDatabase

Defined in: packages/nexus-agents/src/core/types/database-types.ts:57

Minimal interface for a SQLite database handle. Satisfied by node:sqlite’s DatabaseSync via openSqliteDatabase (#5388). ~30 helper signatures and ~12 test doubles are written against this, which is why swapping the engine underneath did not ripple outward.

Methods

close()
close(): void;

Defined in: packages/nexus-agents/src/core/types/database-types.ts:71

Close the database connection.

Returns

void

exec()
exec(sql): void;

Defined in: packages/nexus-agents/src/core/types/database-types.ts:61

Execute raw SQL statements (typically for DDL or multiple statements).

Parameters
sql

string

Returns

void

prepare()
prepare<T>(sql): ISQLiteStatement<T>;

Defined in: packages/nexus-agents/src/core/types/database-types.ts:66

Prepare a parameterized statement for execution.

Type Parameters
T

T = unknown

Parameters
sql

string

Returns

ISQLiteStatement<T>


ISQLiteStatement

Defined in: packages/nexus-agents/src/core/types/database-types.ts:18

Minimal interface for a prepared SQLite statement. Satisfied by node:sqlite’s StatementSync (#5388).

Type Parameters

T

T = unknown

Methods

all()
all(...params): T[];

Defined in: packages/nexus-agents/src/core/types/database-types.ts:34

Get all rows matching the statement.

Parameters
params

…unknown[]

Returns

T[]

get()
get(...params): T | undefined;

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

Get a single row matching the statement. Returns undefined if no match.

Parameters
params

…unknown[]

Returns

T | undefined

run()
run(...params): ISQLiteRunResult;

Defined in: packages/nexus-agents/src/core/types/database-types.ts:23

Execute the statement with the given parameters. Returns information about changes made.

Parameters
params

…unknown[]

Returns

ISQLiteRunResult


OutcomeStorageConfig

Defined in: packages/nexus-agents/src/learning/outcome-storage-types.ts:258

Configuration for SQLite outcome storage.

Properties

autoPruneInterval?
optional autoPruneInterval?: number;

Defined in: packages/nexus-agents/src/learning/outcome-storage-types.ts:266

Auto-prune interval in ms (default: 3600000 = 1 hour)

dbPath
dbPath: string;

Defined in: packages/nexus-agents/src/learning/outcome-storage-types.ts:260

Path to SQLite database file

logger?
optional logger?: ILogger;

Defined in: packages/nexus-agents/src/learning/outcome-storage-types.ts:262

Optional logger instance

maxRecords?
optional maxRecords?: number;

Defined in: packages/nexus-agents/src/learning/outcome-storage-types.ts:264

Maximum records to retain (default: 100000)


PerformanceMatrixEntry

Defined in: packages/nexus-agents/src/learning/validation-stats-types.ts:210

Model performance matrix entry (model × task type).

Properties

avgLatencyMs
readonly avgLatencyMs: number;

Defined in: packages/nexus-agents/src/learning/validation-stats-types.ts:216

avgReward
readonly avgReward: number;

Defined in: packages/nexus-agents/src/learning/validation-stats-types.ts:215

model
readonly model: string;

Defined in: packages/nexus-agents/src/learning/validation-stats-types.ts:211

n
readonly n: number;

Defined in: packages/nexus-agents/src/learning/validation-stats-types.ts:213

successRate
readonly successRate: number;

Defined in: packages/nexus-agents/src/learning/validation-stats-types.ts:214

successRateCI
readonly successRateCI: ConfidenceInterval;

Defined in: packages/nexus-agents/src/learning/validation-stats-types.ts:217

taskType
readonly taskType: string;

Defined in: packages/nexus-agents/src/learning/validation-stats-types.ts:212


PersistentDistillerConfig

Defined in: packages/nexus-agents/src/learning/strategy-distiller-persistence.ts:111

Learning exports - Closed-loop feedback and routing improvement Split from index.ts for file size compliance (Issue #285)

Properties

dataDir?
readonly optional dataDir?: string;

Defined in: packages/nexus-agents/src/learning/strategy-distiller-persistence.ts:115

Override the data directory (useful for testing).

filePath?
readonly optional filePath?: string;

Defined in: packages/nexus-agents/src/learning/strategy-distiller-persistence.ts:113

Override the file path (useful for testing).


QualitySignals

Defined in: packages/nexus-agents/src/learning/outcome-feedback-types.ts:40

Quality signals extracted from task execution.

Properties

coherenceScore?
readonly optional coherenceScore?: number;

Defined in: packages/nexus-agents/src/learning/outcome-feedback-types.ts:54

Response coherence score (0-1)

completionRatio
readonly completionRatio: number;

Defined in: packages/nexus-agents/src/learning/outcome-feedback-types.ts:50

Task completion percentage (0-1)

lintErrors?
readonly optional lintErrors?: number;

Defined in: packages/nexus-agents/src/learning/outcome-feedback-types.ts:44

Number of lint errors (for code tasks)

retryCount
readonly retryCount: number;

Defined in: packages/nexus-agents/src/learning/outcome-feedback-types.ts:48

Number of retries required

testsPass?
readonly optional testsPass?: boolean;

Defined in: packages/nexus-agents/src/learning/outcome-feedback-types.ts:42

Whether code tests passed (for code tasks)

userApproved?
readonly optional userApproved?: boolean;

Defined in: packages/nexus-agents/src/learning/outcome-feedback-types.ts:46

Explicit user approval/rejection

validStructure?
readonly optional validStructure?: boolean;

Defined in: packages/nexus-agents/src/learning/outcome-feedback-types.ts:52

Whether output was valid JSON/structured (for structured output tasks)


RecordOutcomeParams

Defined in: packages/nexus-agents/src/learning/feedback-integration-types.ts:27

Parameters for recording an outcome.

Properties

durationMs
readonly durationMs: number;

Defined in: packages/nexus-agents/src/learning/feedback-integration-types.ts:35

Execution duration in milliseconds

errorMessage?
readonly optional errorMessage?: string;

Defined in: packages/nexus-agents/src/learning/feedback-integration-types.ts:43

Error message for failed outcomes (sanitized before persistence)

qualityScore
readonly qualityScore: number;

Defined in: packages/nexus-agents/src/learning/feedback-integration-types.ts:33

Quality score (0-1)

retryCount?
readonly optional retryCount?: number;

Defined in: packages/nexus-agents/src/learning/feedback-integration-types.ts:39

Number of retries (default: 0)

routingDecisionId
readonly routingDecisionId: string;

Defined in: packages/nexus-agents/src/learning/feedback-integration-types.ts:29

Routing decision ID

success
readonly success: boolean;

Defined in: packages/nexus-agents/src/learning/feedback-integration-types.ts:31

Whether the task succeeded

tokenUsage
readonly tokenUsage: number;

Defined in: packages/nexus-agents/src/learning/feedback-integration-types.ts:37

Token usage

traceId?
readonly optional traceId?: string;

Defined in: packages/nexus-agents/src/learning/feedback-integration-types.ts:41

Trace ID for correlation


RegretAnalysis

Defined in: packages/nexus-agents/src/learning/validation-stats-types.ts:99

Regret analysis result comparing actual vs optimal decisions.

Properties

avgRegret
readonly avgRegret: number | null;

Defined in: packages/nexus-agents/src/learning/validation-stats-types.ts:115

Average regret per decision, or null when unmeasured — see above.

cumulativeRegret
readonly cumulativeRegret: number | null;

Defined in: packages/nexus-agents/src/learning/validation-stats-types.ts:113

Total cumulative regret, or null when no decision was comparable (#5255).

These three were plain number and returned 0/0/1 for an empty decision set — which the dashboard rendered as “Cumulative Regret: 0.00” and “Optimal Decision Rate: 100.0%” with a full progress bar. A perfect routing record asserted over nothing is an absent measurement wearing a good score, and the primary consumer of these numbers is the learning loop itself, which has no way to consult a sibling flag.

null means UNMEASURED — no comparable decision existed. It does not mean zero regret; that is 0, and the two are now distinguishable.

optimalRate
readonly optimalRate: number | null;

Defined in: packages/nexus-agents/src/learning/validation-stats-types.ts:121

Share of optimal decisions, or null when unmeasured — see above.

regretPerModel
readonly regretPerModel: Record<string, number>;

Defined in: packages/nexus-agents/src/learning/validation-stats-types.ts:123

Regret per model (how much worse each model performed vs best)

suboptimalDecisions
readonly suboptimalDecisions: number;

Defined in: packages/nexus-agents/src/learning/validation-stats-types.ts:119

Number of suboptimal decisions. Stays numeric: 0 is the true count.

totalDecisions
readonly totalDecisions: number;

Defined in: packages/nexus-agents/src/learning/validation-stats-types.ts:117

Number of decisions analyzed. Stays numeric: 0 is the true count.


StatisticalOptions

Defined in: packages/nexus-agents/src/learning/validation-stats-types.ts:223

Options for statistical calculations.

Properties

alpha?
readonly optional alpha?: number;

Defined in: packages/nexus-agents/src/learning/validation-stats-types.ts:227

Alpha level for significance testing (default: 0.05)

confidence?
readonly optional confidence?: number;

Defined in: packages/nexus-agents/src/learning/validation-stats-types.ts:225

Confidence level for intervals (default: 0.95)

minSampleSize?
readonly optional minSampleSize?: number;

Defined in: packages/nexus-agents/src/learning/validation-stats-types.ts:229

Minimum sample size for valid inference (default: 30)

useContinuityCorrection?
readonly optional useContinuityCorrection?: boolean;

Defined in: packages/nexus-agents/src/learning/validation-stats-types.ts:231

Use continuity correction for proportions (default: true)


StoredModelStats

Defined in: packages/nexus-agents/src/learning/outcome-storage-types.ts:99

Aggregated model statistics from stored data.

Properties

avgLatencyMs
readonly avgLatencyMs: number;

Defined in: packages/nexus-agents/src/learning/outcome-storage-types.ts:105

avgQualityScore
readonly avgQualityScore: number;

Defined in: packages/nexus-agents/src/learning/outcome-storage-types.ts:104

avgReward
readonly avgReward: number;

Defined in: packages/nexus-agents/src/learning/outcome-storage-types.ts:103

model
readonly model: "claude" | "gemini" | "codex" | "opencode";

Defined in: packages/nexus-agents/src/learning/outcome-storage-types.ts:100

successRate
readonly successRate: number;

Defined in: packages/nexus-agents/src/learning/outcome-storage-types.ts:106

totalDecisions
readonly totalDecisions: number;

Defined in: packages/nexus-agents/src/learning/outcome-storage-types.ts:101

totalOutcomes
readonly totalOutcomes: number;

Defined in: packages/nexus-agents/src/learning/outcome-storage-types.ts:102


StoredReward

Defined in: packages/nexus-agents/src/learning/outcome-storage-types.ts:85

Stored computed reward record.

Properties

baseReward
readonly baseReward: number;

Defined in: packages/nexus-agents/src/learning/outcome-storage-types.ts:89

efficiencyBonus
readonly efficiencyBonus: number;

Defined in: packages/nexus-agents/src/learning/outcome-storage-types.ts:92

qualityBonus
readonly qualityBonus: number;

Defined in: packages/nexus-agents/src/learning/outcome-storage-types.ts:90

retryPenalty
readonly retryPenalty: number;

Defined in: packages/nexus-agents/src/learning/outcome-storage-types.ts:93

reward
readonly reward: number;

Defined in: packages/nexus-agents/src/learning/outcome-storage-types.ts:88

routingDecisionId
readonly routingDecisionId: string;

Defined in: packages/nexus-agents/src/learning/outcome-storage-types.ts:86

speedBonus
readonly speedBonus: number;

Defined in: packages/nexus-agents/src/learning/outcome-storage-types.ts:91

timestamp
readonly timestamp: string;

Defined in: packages/nexus-agents/src/learning/outcome-storage-types.ts:87


StoredRoutingDecision

Defined in: packages/nexus-agents/src/learning/outcome-storage-types.ts:48

Stored routing decision record.

Properties

alternativeModels
readonly alternativeModels: readonly ("claude" | "gemini" | "codex" | "opencode")[];

Defined in: packages/nexus-agents/src/learning/outcome-storage-types.ts:54

confidence
readonly confidence: number;

Defined in: packages/nexus-agents/src/learning/outcome-storage-types.ts:55

id
readonly id: string;

Defined in: packages/nexus-agents/src/learning/outcome-storage-types.ts:49

reason
readonly reason: string;

Defined in: packages/nexus-agents/src/learning/outcome-storage-types.ts:56

requestId?
readonly optional requestId?: string;

Defined in: packages/nexus-agents/src/learning/outcome-storage-types.ts:58

routerType
readonly routerType: RouterType;

Defined in: packages/nexus-agents/src/learning/outcome-storage-types.ts:52

routerTypeMeasured?
readonly optional routerTypeMeasured?: boolean;

Defined in: packages/nexus-agents/src/learning/outcome-storage-types.ts:65

Whether a router actually attributed this decision (#5915, closing the third step of #5812). Absent on a decision read back from a row written before the column existed, and absence reads as UNMEASURED everywhere — a legacy row carries no more evidence than the fallback does.

selectedModel
readonly selectedModel: "claude" | "gemini" | "codex" | "opencode";

Defined in: packages/nexus-agents/src/learning/outcome-storage-types.ts:53

taskProfile
readonly taskProfile: Record<string, unknown>;

Defined in: packages/nexus-agents/src/learning/outcome-storage-types.ts:57

timestamp
readonly timestamp: string;

Defined in: packages/nexus-agents/src/learning/outcome-storage-types.ts:51

traceId
readonly traceId: string;

Defined in: packages/nexus-agents/src/learning/outcome-storage-types.ts:50


StoredTaskOutcome

Defined in: packages/nexus-agents/src/learning/outcome-storage-types.ts:71

Stored task outcome record.

Properties

durationMs
readonly durationMs: number;

Defined in: packages/nexus-agents/src/learning/outcome-storage-types.ts:77

errorMessage?
readonly optional errorMessage?: string;

Defined in: packages/nexus-agents/src/learning/outcome-storage-types.ts:79

outcomeClass
readonly outcomeClass: OutcomeClass;

Defined in: packages/nexus-agents/src/learning/outcome-storage-types.ts:74

qualityScore
readonly qualityScore: number;

Defined in: packages/nexus-agents/src/learning/outcome-storage-types.ts:76

routingDecisionId
readonly routingDecisionId: string;

Defined in: packages/nexus-agents/src/learning/outcome-storage-types.ts:72

success
readonly success: boolean;

Defined in: packages/nexus-agents/src/learning/outcome-storage-types.ts:75

timestamp
readonly timestamp: string;

Defined in: packages/nexus-agents/src/learning/outcome-storage-types.ts:73

tokenUsage
readonly tokenUsage: number;

Defined in: packages/nexus-agents/src/learning/outcome-storage-types.ts:78


TaskOutcome

Defined in: packages/nexus-agents/src/learning/outcome-feedback-types.ts:143

Task outcome for a routing decision.

Properties

durationMs
readonly durationMs: number;

Defined in: packages/nexus-agents/src/learning/outcome-feedback-types.ts:155

Execution duration in milliseconds

errorMessage?
readonly optional errorMessage?: string;

Defined in: packages/nexus-agents/src/learning/outcome-feedback-types.ts:159

Error message if failed

outcomeClass
readonly outcomeClass: OutcomeClass;

Defined in: packages/nexus-agents/src/learning/outcome-feedback-types.ts:149

Outcome classification

qualityScore
readonly qualityScore: number;

Defined in: packages/nexus-agents/src/learning/outcome-feedback-types.ts:153

Quality score (0-1)

qualitySignals
readonly qualitySignals: QualitySignals;

Defined in: packages/nexus-agents/src/learning/outcome-feedback-types.ts:161

Extracted quality signals

routingDecisionId
readonly routingDecisionId: string;

Defined in: packages/nexus-agents/src/learning/outcome-feedback-types.ts:145

Reference to the routing decision

success
readonly success: boolean;

Defined in: packages/nexus-agents/src/learning/outcome-feedback-types.ts:151

Overall success indicator

timestamp
readonly timestamp: string;

Defined in: packages/nexus-agents/src/learning/outcome-feedback-types.ts:147

Timestamp of outcome

tokenUsage
readonly tokenUsage: number;

Defined in: packages/nexus-agents/src/learning/outcome-feedback-types.ts:157

Token usage

traceId
readonly traceId: string;

Defined in: packages/nexus-agents/src/learning/outcome-feedback-types.ts:163

Trace ID for correlation


VariantStats

Defined in: packages/nexus-agents/src/learning/ab-test-types.ts:87

Variant statistics.

Properties

avgLatencyMs
readonly avgLatencyMs: number;

Defined in: packages/nexus-agents/src/learning/ab-test-types.ts:101

Average latency in ms

avgReward
readonly avgReward: number;

Defined in: packages/nexus-agents/src/learning/ab-test-types.ts:99

Average reward

n
readonly n: number;

Defined in: packages/nexus-agents/src/learning/ab-test-types.ts:93

Number of observations

name
readonly name: string;

Defined in: packages/nexus-agents/src/learning/ab-test-types.ts:91

Variant name

successes
readonly successes: number;

Defined in: packages/nexus-agents/src/learning/ab-test-types.ts:95

Success count

successRate
readonly successRate: number;

Defined in: packages/nexus-agents/src/learning/ab-test-types.ts:97

Success rate

sumLatencyMs
readonly sumLatencyMs: number;

Defined in: packages/nexus-agents/src/learning/ab-test-types.ts:105

Sum of latencies (for incremental computation)

sumReward
readonly sumReward: number;

Defined in: packages/nexus-agents/src/learning/ab-test-types.ts:103

Sum of rewards (for incremental computation)

variantId
readonly variantId: string;

Defined in: packages/nexus-agents/src/learning/ab-test-types.ts:89

Variant ID


WinLossAnalysis

Defined in: packages/nexus-agents/src/learning/validation-stats-types.ts:129

Win/loss analysis comparing routing choices.

Properties

losses
readonly losses: number;

Defined in: packages/nexus-agents/src/learning/validation-stats-types.ts:135

Number of times this model lost (not best outcome)

model
readonly model: string;

Defined in: packages/nexus-agents/src/learning/validation-stats-types.ts:131

Model name

ties
readonly ties: number;

Defined in: packages/nexus-agents/src/learning/validation-stats-types.ts:137

Number of ties

winRate
readonly winRate: number;

Defined in: packages/nexus-agents/src/learning/validation-stats-types.ts:139

Win rate

winRateCI
readonly winRateCI: ConfidenceInterval;

Defined in: packages/nexus-agents/src/learning/validation-stats-types.ts:141

Confidence interval for win rate

wins
readonly wins: number;

Defined in: packages/nexus-agents/src/learning/validation-stats-types.ts:133

Number of times this model won (best outcome)

Type Aliases

EffectThresholds

type EffectThresholds = Pick<DistillerConfig, 
  | "failureRateThreshold"
  | "successRateThreshold"
| "latencyRatioThreshold">;

Defined in: packages/nexus-agents/src/learning/strategy-distiller-types.ts:117

The detector thresholds effectFor normalises a metric against.


ExperimentStatus

type ExperimentStatus = "draft" | "running" | "paused" | "completed" | "archived";

Defined in: packages/nexus-agents/src/learning/ab-test-types.ts:16

Experiment status states.


OutcomeClass

type OutcomeClass = "success" | "partial" | "failure" | "timeout" | "error";

Defined in: packages/nexus-agents/src/learning/outcome-feedback-types.ts:35

Task outcome classification.


OutcomeProcessedCallback

type OutcomeProcessedCallback = (decision, outcome, reward) => void;

Defined in: packages/nexus-agents/src/learning/outcome-feedback-types.ts:341

Callback for when an outcome is processed.

Parameters

decision

FeedbackRoutingDecision

outcome

TaskOutcome

reward

ComputedReward

Returns

void


PatternType

type PatternType = "failure-rate" | "success-rate" | "latency-spike";

Defined in: packages/nexus-agents/src/learning/strategy-distiller-types.ts:19

The type of pattern detected from outcomes.


RouterType

type RouterType = "linucb" | "preference" | "quality" | "cascade" | "topsis";

Defined in: packages/nexus-agents/src/learning/outcome-feedback-types.ts:30

Router type that made the routing decision.

NOTE: 'quality' has no producer — getDecisiveRouterType cannot return it, so countDecisionsByRouter reports quality: 0 forever. It is not being given a producer to justify its existence (#5812 panel: “do NOT invent a producer — that is YAGNI backwards”). Removing a member of this union is a breaking change, so 'quality' is documented as unreachable here and removed in the same next-major change that adds an 'unattributed' member (#5914).

No @deprecated tag: the tag applies to the whole type alias, and RouterType itself is not deprecated — no-deprecated would then fire at every one of its call sites for a defect in one member.


RulesSnapshot

type RulesSnapshot = z.infer<typeof RulesSnapshotSchema>;

Defined in: packages/nexus-agents/src/learning/strategy-distiller-persistence.ts:70

Learning exports - Closed-loop feedback and routing improvement Split from index.ts for file size compliance (Issue #285)


RuleStatus

type RuleStatus = "draft" | "active" | "promoted" | "expired";

Defined in: packages/nexus-agents/src/learning/strategy-distiller-types.ts:16

Status lifecycle for a distilled rule.


StrategyAction

type StrategyAction = "penalize" | "boost" | "avoid";

Defined in: packages/nexus-agents/src/learning/strategy-distiller-types.ts:22

Action to take when a rule matches a routing candidate.

Variables

DEFAULT_DISTILLER_CONFIG

const DEFAULT_DISTILLER_CONFIG: DistillerConfig;

Defined in: packages/nexus-agents/src/learning/strategy-distiller-types.ts:123

Default distiller configuration.


DEFAULT_FEEDBACK_COLLECTOR_CONFIG

const DEFAULT_FEEDBACK_COLLECTOR_CONFIG: FeedbackCollectorConfig;

Defined in: packages/nexus-agents/src/learning/outcome-feedback-types.ts:264

Default feedback collector configuration.


DEFAULT_FEEDBACK_INTEGRATION_CONFIG

const DEFAULT_FEEDBACK_INTEGRATION_CONFIG: FeedbackIntegrationConfig;

Defined in: packages/nexus-agents/src/learning/feedback-integration-types.ts:84

Default configuration.


DEFAULT_OUTCOME_STORAGE_CONFIG

const DEFAULT_OUTCOME_STORAGE_CONFIG: {
  autoPruneInterval: 3600000;
  maxRecords: 100000;
};

Defined in: packages/nexus-agents/src/learning/outcome-storage-types.ts:281

Default configuration values.

Type Declaration

autoPruneInterval
readonly autoPruneInterval: 3600000 = 3600000;
maxRecords
readonly maxRecords: 100000 = 100000;

DEFAULT_STATISTICAL_OPTIONS

const DEFAULT_STATISTICAL_OPTIONS: Required<StatisticalOptions>;

Defined in: packages/nexus-agents/src/learning/validation-stats-types.ts:237

Default statistical options.


FeedbackCollectorConfigSchema

const FeedbackCollectorConfigSchema: ZodObject<{
  efficiencyWeight: ZodDefault<ZodNumber>;
  enableAutoReward: ZodDefault<ZodBoolean>;
  maxHistorySize: ZodDefault<ZodNumber>;
  maxPendingDecisions: ZodDefault<ZodNumber>;
  pendingTimeoutMs: ZodDefault<ZodNumber>;
  qualityWeight: ZodDefault<ZodNumber>;
  retryPenalty: ZodDefault<ZodNumber>;
  speedWeight: ZodDefault<ZodNumber>;
  targetDurationMs: ZodDefault<ZodNumber>;
  targetTokenUsage: ZodDefault<ZodNumber>;
}, $strip>;

Defined in: packages/nexus-agents/src/learning/outcome-feedback-types.ts:280

Zod schema for feedback collector configuration.


FeedbackRoutingDecisionSchema

const FeedbackRoutingDecisionSchema: ZodObject<{
  armIndex: ZodOptional<ZodNumber>;
  banditContext: ZodOptional<ZodRecord<ZodString, ZodUnknown>>;
  confidence: ZodOptional<ZodNumber>;
  domain: ZodOptional<ZodString>;
  id: ZodUUID;
  query: ZodString;
  queryFeatures: ZodOptional<ZodRecord<ZodString, ZodUnknown>>;
  routerType: ZodEnum<{
     cascade: "cascade";
     linucb: "linucb";
     preference: "preference";
     quality: "quality";
     topsis: "topsis";
  }>;
  routerTypeMeasured: ZodOptional<ZodBoolean>;
  selectedModel: ZodString;
  selectedTier: ZodOptional<ZodEnum<{
     strong: "strong";
     weak: "weak";
  }>>;
  timestamp: ZodISODateTime;
  traceId: ZodString;
  ucbScore: ZodOptional<ZodNumber>;
}, $strip>;

Defined in: packages/nexus-agents/src/learning/outcome-feedback-types.ts:121

Zod schema for routing decision.


OutcomeStorageConfigSchema

const OutcomeStorageConfigSchema: ZodObject<{
  autoPruneInterval: ZodOptional<ZodNumber>;
  dbPath: ZodString;
  maxRecords: ZodOptional<ZodNumber>;
}, $strip>;

Defined in: packages/nexus-agents/src/learning/outcome-storage-types.ts:272

Zod schema for OutcomeStorageConfig validation.


QualitySignalsSchema

const QualitySignalsSchema: ZodObject<{
  coherenceScore: ZodOptional<ZodNumber>;
  completionRatio: ZodDefault<ZodNumber>;
  lintErrors: ZodOptional<ZodNumber>;
  retryCount: ZodDefault<ZodNumber>;
  testsPass: ZodOptional<ZodBoolean>;
  userApproved: ZodOptional<ZodBoolean>;
  validStructure: ZodOptional<ZodBoolean>;
}, $strip>;

Defined in: packages/nexus-agents/src/learning/outcome-feedback-types.ts:60

Zod schema for quality signals.


RulesSnapshotSchema

const RulesSnapshotSchema: ZodObject<{
  eligibleOutcomes: ZodOptional<ZodNumber>;
  rules: ZodArray<ZodObject<{
     action: ZodEnum<{
        avoid: "avoid";
        boost: "boost";
        penalize: "penalize";
     }>;
     category: ZodString;
     cli: ZodEnum<{
        claude: "claude";
        codex: "codex";
        gemini: "gemini";
        opencode: "opencode";
     }>;
     confidence: ZodNumber;
     createdAt: ZodNumber;
     effect: ZodOptional<ZodNumber>;
     id: ZodString;
     metric: ZodNumber;
     observationCount: ZodNumber;
     patternType: ZodEnum<{
        failure-rate: "failure-rate";
        latency-spike: "latency-spike";
        success-rate: "success-rate";
     }>;
     status: ZodEnum<{
        active: "active";
        draft: "draft";
        expired: "expired";
        promoted: "promoted";
     }>;
     support: ZodOptional<ZodNumber>;
     tainted: ZodBoolean;
     updatedAt: ZodNumber;
  }, $strip>>;
  savedAt: ZodString;
  version: ZodLiteral<1>;
}, $strip>;

Defined in: packages/nexus-agents/src/learning/strategy-distiller-persistence.ts:59

Versioned snapshot schema for atomic saves.


TaskOutcomeSchema

const TaskOutcomeSchema: ZodObject<{
  durationMs: ZodNumber;
  errorMessage: ZodOptional<ZodString>;
  outcomeClass: ZodEnum<{
     error: "error";
     failure: "failure";
     partial: "partial";
     success: "success";
     timeout: "timeout";
  }>;
  qualityScore: ZodNumber;
  qualitySignals: ZodObject<{
     coherenceScore: ZodOptional<ZodNumber>;
     completionRatio: ZodDefault<ZodNumber>;
     lintErrors: ZodOptional<ZodNumber>;
     retryCount: ZodDefault<ZodNumber>;
     testsPass: ZodOptional<ZodBoolean>;
     userApproved: ZodOptional<ZodBoolean>;
     validStructure: ZodOptional<ZodBoolean>;
  }, $strip>;
  routingDecisionId: ZodUUID;
  success: ZodBoolean;
  timestamp: ZodISODateTime;
  tokenUsage: ZodNumber;
  traceId: ZodString;
}, $strip>;

Defined in: packages/nexus-agents/src/learning/outcome-feedback-types.ts:169

Zod schema for task outcome.

Functions

calculateDistributionStats()

function calculateDistributionStats(values): DistributionStats;

Defined in: packages/nexus-agents/src/learning/validation-stats.ts:173

Calculate descriptive statistics for a distribution.

Parameters

values

readonly number[]

Returns

DistributionStats


calculateMinSampleSize()

function calculateMinSampleSize(
   baselineRate, 
   minimumDetectableEffect, 
   options?
): number;

Defined in: packages/nexus-agents/src/learning/validation-stats.ts:349

Calculate minimum sample size for detecting a difference in proportions. Uses formula for two-proportion z-test power analysis.

Parameters

baselineRate

number

minimumDetectableEffect

number

options?
alpha?

number

power?

number

Returns

number


calculateRegret()

function calculateRegret(decisions): RegretAnalysis;

Defined in: packages/nexus-agents/src/learning/validation-stats.ts:228

Calculate regret analysis comparing actual decisions vs oracle (best possible).

Parameters

decisions

readonly { actualReward: number; chosenModel: string; rewards: Record<string, number>; }[]

Returns

RegretAnalysis


calculateWinLoss()

function calculateWinLoss(
   model, 
   decisions, 
   options?
): WinLossAnalysis;

Defined in: packages/nexus-agents/src/learning/validation-stats.ts:293

Calculate win/loss analysis for a model.

Parameters

model

string

decisions

readonly { actualReward: number; chosenModel: string; rewards: Record<string, number>; }[]

options?

StatisticalOptions = {}

Returns

WinLossAnalysis


compareProportions()

function compareProportions(
   successes1, 
   total1, 
   successes2, 
   total2, 
   options?
): ComparisonResult;

Defined in: packages/nexus-agents/src/learning/validation-stats.ts:128

Compare two proportions using two-proportion z-test.

Parameters

successes1

number

total1

number

successes2

number

total2

number

options?

StatisticalOptions = {}

Returns

ComparisonResult


computeOutcomeReward()

function computeOutcomeReward(collector, outcome): ComputedReward;

Defined in: packages/nexus-agents/src/learning/feedback-integration.ts:576

Helper to compute reward from outcome.

Parameters

collector

IOutcomeFeedback

outcome

TaskOutcome

Returns

ComputedReward


createAbTestTracker()

function createAbTestTracker(): IAbTestTracker;

Defined in: packages/nexus-agents/src/learning/ab-test-tracker.ts:417

Create a default A/B test tracker instance.

Returns

IAbTestTracker


createFeedbackIntegration()

function createFeedbackIntegration(config?, collector?): IFeedbackIntegration;

Defined in: packages/nexus-agents/src/learning/feedback-integration.ts:566

Creates a FeedbackIntegration instance.

Parameters

config?

Partial<FeedbackIntegrationConfig>

collector?

OutcomeFeedbackCollector

Returns

IFeedbackIntegration


createOutcomeFeedbackCollector()

function createOutcomeFeedbackCollector(config?): OutcomeFeedbackCollector;

Defined in: packages/nexus-agents/src/learning/outcome-feedback.ts:376

Create an OutcomeFeedbackCollector instance.

Parameters

config?

Partial<FeedbackCollectorConfig>

Returns

OutcomeFeedbackCollector


createOutcomeStorage()

function createOutcomeStorage(config): SQLiteOutcomeStorage;

Defined in: packages/nexus-agents/src/learning/outcome-storage.ts:374

Create an SQLite outcome storage instance.

Parameters

config

OutcomeStorageConfig

Returns

SQLiteOutcomeStorage


createRoutingDecision()

function createRoutingDecision(params): FeedbackRoutingDecision;

Defined in: packages/nexus-agents/src/learning/outcome-feedback-helpers.ts:125

Create a routing decision record.

Parameters

params

Omit<FeedbackRoutingDecision, "id" | "timestamp">

Returns

FeedbackRoutingDecision


createStrategyDistiller()

function createStrategyDistiller(
   outcomeStore, 
   logger?, 
   config?
): StrategyDistiller;

Defined in: packages/nexus-agents/src/learning/strategy-distiller.ts:516

Factory function for creating StrategyDistiller.

Parameters

outcomeStore

OutcomeStore

logger?

ILogger

config?

Partial<DistillerConfig>

Returns

StrategyDistiller


createTaskOutcome()

function createTaskOutcome(params): TaskOutcome;

Defined in: packages/nexus-agents/src/learning/outcome-feedback-helpers.ts:138

Create a task outcome record.

Parameters

params

Omit<TaskOutcome, "timestamp">

Returns

TaskOutcome


detectFailurePatterns()

function detectFailurePatterns(groups, threshold): DetectedPattern[];

Defined in: packages/nexus-agents/src/learning/strategy-distiller.ts:141

Detect groups with failure rate above threshold.

Parameters

groups

readonly OutcomeGroup[]

threshold

number

Returns

DetectedPattern[]


detectLatencyPatterns()

function detectLatencyPatterns(groups, threshold): DetectedPattern[];

Defined in: packages/nexus-agents/src/learning/strategy-distiller.ts:187

Detect groups with latency spike (p90/median > threshold).

Parameters

groups

readonly OutcomeGroup[]

threshold

number

Returns

DetectedPattern[]


detectSuccessPatterns()

function detectSuccessPatterns(groups, threshold): DetectedPattern[];

Defined in: packages/nexus-agents/src/learning/strategy-distiller.ts:164

Detect groups with success rate above threshold.

Parameters

groups

readonly OutcomeGroup[]

threshold

number

Returns

DetectedPattern[]


effectFor()

function effectFor(
   patternType, 
   metric, 
   thresholds
): number;

Defined in: packages/nexus-agents/src/learning/strategy-distiller.ts:68

Effect size of a detected pattern in [0, 1] (#5004 finding 3): how far the metric sits past the detector threshold that produced it, normalised.

  • failure-rate: (rate − failureRateThreshold) / (1 − failureRateThreshold)
  • success-rate: (rate − successRateThreshold) / (1 − successRateThreshold)
  • latency-spike: min(1, (ratio − latencyRatioThreshold) / latencyRatioThreshold)

A metric exactly at its threshold is 0: the detector fired, but there is no margin to act on. A metric at the far end of its scale is 1. Never NaN — a threshold with no headroom (failure threshold 1.0, latency threshold 0) or a NaN metric yields 0, so baseDelta × confidence in routing stays a number.

Parameters

patternType

PatternType

metric

number

thresholds

EffectThresholds

Returns

number


meanConfidenceInterval()

function meanConfidenceInterval(values, options?): ConfidenceInterval;

Defined in: packages/nexus-agents/src/learning/validation-stats.ts:82

Calculate confidence interval for a mean.

Parameters

values

readonly number[]

options?

StatisticalOptions = {}

Returns

ConfidenceInterval


proportionConfidenceInterval()

function proportionConfidenceInterval(
   successes, 
   total, 
   options?
): ConfidenceInterval;

Defined in: packages/nexus-agents/src/learning/validation-stats.ts:32

Calculate confidence interval for a proportion (success rate). Uses Wilson score interval for better coverage at extreme proportions.

Parameters

successes

number

total

number

options?

StatisticalOptions = {}

Returns

ConfidenceInterval


sigmoidConfidence()

function sigmoidConfidence(observations, center?): number;

Defined in: packages/nexus-agents/src/learning/strategy-distiller.ts:44

Sample support: 1 / (1 + exp(-(n - center) / 5)).

This is the support factor of a rule’s confidence (#5004 finding 3). The name predates the support/effect split and is kept because it is exported from the package root.

Parameters

observations

number

center?

number = 30

Returns

number