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
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
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
Implementation of
IAbTestTracker.createExperiment
exportData()
exportData(): ExperimentExport;
Defined in: packages/nexus-agents/src/learning/ab-test-tracker.ts:228
Export all experiment data.
Returns
Implementation of
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
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
listExperiments()
listExperiments(filter?): readonly ExperimentDefinition[];
Defined in: packages/nexus-agents/src/learning/ab-test-tracker.ts:200
List all experiments.
Parameters
filter?
status?
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
Returns
void
Implementation of
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:152
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:169
Parameters
config?
Partial<FeedbackIntegrationConfig>
collector?
Returns
Methods
evictStaleEntries()
evictStaleEntries(): number;
Defined in: packages/nexus-agents/src/learning/feedback-integration.ts:375
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:410
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:403
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:350
Get feedback statistics
Returns
Implementation of
onOutcomeProcessed()
onOutcomeProcessed(callback): () => void;
Defined in: packages/nexus-agents/src/learning/feedback-integration.ts:354
Subscribe to outcome processed events
Parameters
callback
Returns
() => void
Implementation of
IFeedbackIntegration.onOutcomeProcessed
recordOutcome()
recordOutcome(params): void;
Defined in: packages/nexus-agents/src/learning/feedback-integration.ts:264
Record a generic task outcome
Parameters
params
Returns
void
Implementation of
IFeedbackIntegration.recordOutcome
recordRoutingDecision()
recordRoutingDecision(
decision,
traceId?,
options?
): string;
Defined in: packages/nexus-agents/src/learning/feedback-integration.ts:188
Record a routing decision; omitted task text skips preference training.
Parameters
decision
traceId?
string
options?
query?
string
Returns
string
Implementation of
IFeedbackIntegration.recordRoutingDecision
recordStepOutcome()
recordStepOutcome(
routingDecisionId,
stepResult,
durationMs,
tokenUsage
): void;
Defined in: packages/nexus-agents/src/learning/feedback-integration.ts:246
Record a step outcome from workflow execution
Parameters
routingDecisionId
string
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:358
Register CompositeRouter for bi-directional feedback
Parameters
router
Returns
void
Implementation of
IFeedbackIntegration.registerCompositeRouter
reset()
reset(): void;
Defined in: packages/nexus-agents/src/learning/feedback-integration.ts:363
Reset all collected data
Returns
void
Implementation of
OutcomeFeedbackCollector
Defined in: packages/nexus-agents/src/learning/outcome-feedback.ts:63
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:74
Parameters
config?
Partial<FeedbackCollectorConfig>
Returns
Methods
clearExpiredDecisions()
clearExpiredDecisions(): number;
Defined in: packages/nexus-agents/src/learning/outcome-feedback.ts:268
Clear expired pending decisions.
Returns
number
Implementation of
IOutcomeFeedback.clearExpiredDecisions
computeReward()
computeReward(outcome): ComputedReward;
Defined in: packages/nexus-agents/src/learning/outcome-feedback.ts:189
Compute reward from an outcome.
Parameters
outcome
Returns
Implementation of
IOutcomeFeedback.computeReward
getPendingDecisions()
getPendingDecisions(): readonly FeedbackRoutingDecision[];
Defined in: packages/nexus-agents/src/learning/outcome-feedback.ts:264
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:246
Get feedback loop statistics.
Returns
Implementation of
onOutcomeProcessed()
onOutcomeProcessed(callback): () => void;
Defined in: packages/nexus-agents/src/learning/outcome-feedback.ts:105
Subscribe to outcome processed events.
Parameters
callback
Returns
() => void
processOutcome()
processOutcome(traceId, partialOutcome): void;
Defined in: packages/nexus-agents/src/learning/outcome-feedback.ts:173
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:152
Record an outcome for a routing decision.
Parameters
outcome
Returns
void
Implementation of
IOutcomeFeedback.recordOutcome
recordRoutingDecision()
recordRoutingDecision(decision): void;
Defined in: packages/nexus-agents/src/learning/outcome-feedback.ts:112
Record a routing decision for tracking.
Parameters
decision
Returns
void
Implementation of
IOutcomeFeedback.recordRoutingDecision
registerLinUCBBandit()
registerLinUCBBandit(bandit): void;
Defined in: packages/nexus-agents/src/learning/outcome-feedback.ts:89
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:97
Register PreferenceRouter for direct feedback.
Parameters
router
Returns
void
reset()
reset(): void;
Defined in: packages/nexus-agents/src/learning/outcome-feedback.ts:300
Reset all state.
Returns
void
Implementation of
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
Overrides
Properties
cause
readonly cause: Error | undefined;
Defined in: packages/nexus-agents/src/core/errors.ts:105
Inherited from
code
readonly code: ErrorCode;
Defined in: packages/nexus-agents/src/core/errors.ts:103
Inherited from
context
readonly context: Record<string, unknown> | undefined;
Defined in: packages/nexus-agents/src/core/errors.ts:104
Inherited from
message
message: string;
Defined in: node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es5.d.ts:1075
Inherited from
name
name: string;
Defined in: node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es5.d.ts:1074
Inherited from
stack?
stack?: string;
Defined in: node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es5.d.ts:1076
Inherited from
stackTraceLimit
static stackTraceLimit: number;
Defined in: node_modules/.pnpm/@types+node@24.19.2/node_modules/@types/node/globals.d.ts:68
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
Methods
toJSON()
toJSON(): SerializedError;
Defined in: packages/nexus-agents/src/core/errors.ts:121
Serializes the error to a JSON-safe object.
Returns
Inherited from
captureStackTrace()
static captureStackTrace(targetObject, constructorOpt?): void;
Defined in: node_modules/.pnpm/@types+node@24.19.2/node_modules/@types/node/globals.d.ts:52
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
prepareStackTrace()
static prepareStackTrace(err, stackTraces): any;
Defined in: node_modules/.pnpm/@types+node@24.19.2/node_modules/@types/node/globals.d.ts:56
Parameters
err
Error
stackTraces
CallSite[]
Returns
any
See
https://v8.dev/docs/stack-trace-api#customizing-stack-traces
Inherited from
PersistentStrategyDistiller
Defined in: packages/nexus-agents/src/learning/strategy-distiller-persistence.ts:133
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:139
Parameters
outcomeStore
persistConfig?
logger?
distillerConfig?
Partial<DistillerConfig>
Returns
Overrides
Properties
config
protected readonly config: DistillerConfig;
Defined in: packages/nexus-agents/src/learning/strategy-distiller.ts:223
Protected so PersistentStrategyDistiller hydrates legacy rules under the live thresholds.
Inherited from
Methods
checkPersistedTrigger()
checkPersistedTrigger(): boolean;
Defined in: packages/nexus-agents/src/learning/strategy-distiller-persistence.ts:159
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:168
Override distill to persist rules after each run.
Returns
void
Overrides
getRules()
getRules(status?): readonly DistilledRule[];
Defined in: packages/nexus-agents/src/learning/strategy-distiller.ts:318
Get rules filtered by status.
Parameters
status?
Returns
readonly DistilledRule[]
Inherited from
getStats()
getStats(): DistillerStats;
Defined in: packages/nexus-agents/src/learning/strategy-distiller.ts:325
Get distiller statistics.
Returns
Inherited from
loadRules()
protected loadRules(rules): void;
Defined in: packages/nexus-agents/src/learning/strategy-distiller.ts:348
Load pre-existing rules (e.g., from disk). Used by PersistentStrategyDistiller.
Parameters
rules
readonly DistilledRule[]
Returns
void
Inherited from
onOutcome()
onOutcome(): void;
Defined in: packages/nexus-agents/src/learning/strategy-distiller.ts:243
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
restoreDistillState()
protected restoreDistillState(lastDistillAt, eligibleOutcomes): void;
Defined in: packages/nexus-agents/src/learning/strategy-distiller.ts:358
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
Returns
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
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
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
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
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
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
storeDecision()
storeDecision(decision): Promise<Result<void, OutcomeStorageError>>;
Defined in: packages/nexus-agents/src/learning/outcome-storage.ts:160
Store a routing decision.
Parameters
decision
Returns
Promise<Result<void, OutcomeStorageError>>
Implementation of
storeOutcome()
storeOutcome(outcome): Promise<Result<void, OutcomeStorageError>>;
Defined in: packages/nexus-agents/src/learning/outcome-storage.ts:194
Store a task outcome.
Parameters
outcome
Returns
Promise<Result<void, OutcomeStorageError>>
Implementation of
storeReward()
storeReward(reward): Promise<Result<void, OutcomeStorageError>>;
Defined in: packages/nexus-agents/src/learning/outcome-storage.ts:223
Store a computed reward.
Parameters
reward
Returns
Promise<Result<void, OutcomeStorageError>>
Implementation of
StrategyDistiller
Defined in: packages/nexus-agents/src/learning/strategy-distiller.ts:221
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:232
Parameters
outcomeStore
logger?
config?
Partial<DistillerConfig>
Returns
Properties
config
protected readonly config: DistillerConfig;
Defined in: packages/nexus-agents/src/learning/strategy-distiller.ts:223
Protected so PersistentStrategyDistiller hydrates legacy rules under the live thresholds.
Methods
checkPersistedTrigger()
checkPersistedTrigger(): boolean;
Defined in: packages/nexus-agents/src/learning/strategy-distiller.ts:268
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:286
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:318
Get rules filtered by status.
Parameters
status?
Returns
readonly DistilledRule[]
getStats()
getStats(): DistillerStats;
Defined in: packages/nexus-agents/src/learning/strategy-distiller.ts:325
Get distiller statistics.
Returns
loadRules()
protected loadRules(rules): void;
Defined in: packages/nexus-agents/src/learning/strategy-distiller.ts:348
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:243
Called for each processed outcome. Triggers distillation at threshold.
This counter is per-process; checkPersistedTrigger covers the
cross-process case (#6512).
Returns
void
restoreDistillState()
protected restoreDistillState(lastDistillAt, eligibleOutcomes): void;
Defined in: packages/nexus-agents/src/learning/strategy-distiller.ts:358
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:204
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:208
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:216
Explanation of reward computation
reward
readonly reward: number;
Defined in: packages/nexus-agents/src/learning/outcome-feedback-types.ts:206
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: RoutingArmId;
Defined in: packages/nexus-agents/src/learning/strategy-distiller-types.ts:36
Which routing arm (CLI slot or API/endpoint arm) this rule applies to (#6555)
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).
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:73
Configuration for the strategy distiller.
Properties
failureRateThreshold
readonly failureRateThreshold: number;
Defined in: packages/nexus-agents/src/learning/strategy-distiller-types.ts:81
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:85
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:87
Maximum number of rules to store (default: 90)
minObservationsForActive
readonly minObservationsForActive: number;
Defined in: packages/nexus-agents/src/learning/strategy-distiller-types.ts:79
Minimum observations before activating a rule (default: 5)
minObservationsForDraft
readonly minObservationsForDraft: number;
Defined in: packages/nexus-agents/src/learning/strategy-distiller-types.ts:77
Minimum observations before creating a draft rule (default: 3)
ruleExpiryMs
readonly ruleExpiryMs: number;
Defined in: packages/nexus-agents/src/learning/strategy-distiller-types.ts:89
Rule expiry time in ms (default: 24h)
successRateThreshold
readonly successRateThreshold: number;
Defined in: packages/nexus-agents/src/learning/strategy-distiller-types.ts:83
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:75
Distill every N outcomes (default: 50)
DistillerStats
Defined in: packages/nexus-agents/src/learning/strategy-distiller-types.ts:111
Statistics returned by StrategyDistiller.getStats().
Properties
eligibleOutcomesAtLastDistill?
readonly eligibleOutcomesAtLastDistill?: number;
Defined in: packages/nexus-agents/src/learning/strategy-distiller-types.ts:125
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:117
Epoch ms of last distillation run
outcomesSinceLastDistill
readonly outcomesSinceLastDistill: number;
Defined in: packages/nexus-agents/src/learning/strategy-distiller-types.ts:119
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:113
Number of rules in each status
totalRules
readonly totalRules: number;
Defined in: packages/nexus-agents/src/learning/strategy-distiller-types.ts:115
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 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:177
Whether experiment has enough data for valid conclusions
recommendedSampleSize
readonly recommendedSampleSize: number;
Defined in: packages/nexus-agents/src/learning/validation-stats-types.ts:179
Minimum recommended sample size per group
recommendedSampleSizeMeasured
readonly recommendedSampleSizeMeasured: boolean;
Defined in: packages/nexus-agents/src/learning/validation-stats-types.ts:195
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 whether relativeImprovement is non-null:
the ratio over a zero control rate is undefined (#5857).
relativeImprovement
readonly relativeImprovement: number | null;
Defined in: packages/nexus-agents/src/learning/validation-stats-types.ts:175
Relative improvement (treatment vs control), or null when control has no
samples or its measured success rate is zero (the ratio is undefined).
Inspect control.n: zero means no samples; a positive count with null
lift means a measured zero baseline, including unbounded lift when the
treatment rate is positive. A measured zero lift remains numeric 0.
Render null as ‘-’ rather than as 0% improvement.
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:248
Configuration for the feedback collector.
Properties
efficiencyWeight
readonly efficiencyWeight: number;
Defined in: packages/nexus-agents/src/learning/outcome-feedback-types.ts:260
Weight for efficiency in reward computation
enableAutoReward
readonly enableAutoReward: boolean;
Defined in: packages/nexus-agents/src/learning/outcome-feedback-types.ts:254
Enable automatic reward computation
maxHistorySize
readonly maxHistorySize: number;
Defined in: packages/nexus-agents/src/learning/outcome-feedback-types.ts:268
Maximum history entries (outcomes + decisions) to retain
maxPendingDecisions
readonly maxPendingDecisions: number;
Defined in: packages/nexus-agents/src/learning/outcome-feedback-types.ts:250
Maximum pending decisions to track
pendingTimeoutMs
readonly pendingTimeoutMs: number;
Defined in: packages/nexus-agents/src/learning/outcome-feedback-types.ts:252
Timeout for pending decisions (ms)
qualityWeight
readonly qualityWeight: number;
Defined in: packages/nexus-agents/src/learning/outcome-feedback-types.ts:256
Weight for quality in reward computation
retryPenalty
readonly retryPenalty: number;
Defined in: packages/nexus-agents/src/learning/outcome-feedback-types.ts:262
Penalty per retry in reward computation
speedWeight
readonly speedWeight: number;
Defined in: packages/nexus-agents/src/learning/outcome-feedback-types.ts:258
Weight for speed in reward computation
targetDurationMs
readonly targetDurationMs: number;
Defined in: packages/nexus-agents/src/learning/outcome-feedback-types.ts:264
Target duration for speed bonus (ms)
targetTokenUsage
readonly targetTokenUsage: number;
Defined in: packages/nexus-agents/src/learning/outcome-feedback-types.ts:266
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 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 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 logger?: ILogger;
Defined in: packages/nexus-agents/src/learning/feedback-integration-types.ts:63
Logger instance
outcomeStorage?
readonly 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:222
Feedback loop statistics.
Properties
avgQualityScore
readonly avgQualityScore: number;
Defined in: packages/nexus-agents/src/learning/outcome-feedback-types.ts:232
Average quality score
avgReward
readonly avgReward: number;
Defined in: packages/nexus-agents/src/learning/outcome-feedback-types.ts:234
Average reward computed
decisionsByRouter
readonly decisionsByRouter: Record<RouterType, number>;
Defined in: packages/nexus-agents/src/learning/outcome-feedback-types.ts:240
Decisions by router type. The unattributed bucket includes explicit
unattributed labels and legacy rows with false or absent measurement
evidence. Empty decision history gives zero in every bucket.
lastUpdatedAt
readonly lastUpdatedAt: string;
Defined in: packages/nexus-agents/src/learning/outcome-feedback-types.ts:242
Last update timestamp
outcomesByClass
readonly outcomesByClass: Record<OutcomeClass, number>;
Defined in: packages/nexus-agents/src/learning/outcome-feedback-types.ts:230
Outcomes by classification
pendingOutcomes
readonly pendingOutcomes: number;
Defined in: packages/nexus-agents/src/learning/outcome-feedback-types.ts:228
Decisions pending outcome
totalDecisions
readonly totalDecisions: number;
Defined in: packages/nexus-agents/src/learning/outcome-feedback-types.ts:224
Total routing decisions recorded
totalOutcomes
readonly totalOutcomes: number;
Defined in: packages/nexus-agents/src/learning/outcome-feedback-types.ts:226
Total outcomes recorded
FeedbackRoutingDecision
Defined in: packages/nexus-agents/src/learning/outcome-feedback-types.ts:88
Recorded routing decision for feedback tracking.
Properties
armIndex?
readonly armIndex?: number;
Defined in: packages/nexus-agents/src/learning/outcome-feedback-types.ts:112
Arm index for LinUCB bandit
banditContext?
readonly banditContext?: BanditContext;
Defined in: packages/nexus-agents/src/learning/outcome-feedback-types.ts:114
Bandit context (for LinUCB decisions)
confidence?
readonly confidence?: number;
Defined in: packages/nexus-agents/src/learning/outcome-feedback-types.ts:120
Confidence score
domain?
readonly domain?: string;
Defined in: packages/nexus-agents/src/learning/outcome-feedback-types.ts:124
Task domain classification
id
readonly id: string;
Defined in: packages/nexus-agents/src/learning/outcome-feedback-types.ts:90
Unique decision ID
query
readonly query: string;
Defined in: packages/nexus-agents/src/learning/outcome-feedback-types.ts:94
Original routed task text; empty means unavailable and skips preference training.
queryFeatures?
readonly queryFeatures?: QueryFeatures;
Defined in: packages/nexus-agents/src/learning/outcome-feedback-types.ts:116
Query features (for preference routing)
routerType
readonly routerType: RouterType;
Defined in: packages/nexus-agents/src/learning/outcome-feedback-types.ts:96
Type of router used
routerTypeMeasured?
readonly routerTypeMeasured?: boolean;
Defined in: packages/nexus-agents/src/learning/outcome-feedback-types.ts:106
Persisted evidence that a scoring stage attributed this decision (#5915).
New fallback decisions use unattributed and false. This field remains
necessary for legacy labels: stored topsis may have been a fallback,
and its label is preserved because historical attribution is unknowable.
true means measured; false or absent means unmeasured. Never infer
measurement from a legacy label when this evidence is absent.
selectedModel
readonly selectedModel: string;
Defined in: packages/nexus-agents/src/learning/outcome-feedback-types.ts:108
Selected model/adapter name
selectedTier?
readonly selectedTier?: "strong" | "weak";
Defined in: packages/nexus-agents/src/learning/outcome-feedback-types.ts:110
Selected model tier (strong/weak for preference routing)
timestamp
readonly timestamp: string;
Defined in: packages/nexus-agents/src/learning/outcome-feedback-types.ts:92
Timestamp of decision
traceId
readonly traceId: string;
Defined in: packages/nexus-agents/src/learning/outcome-feedback-types.ts:122
Trace ID to correlate with SwarmObserver events
ucbScore?
readonly ucbScore?: number;
Defined in: packages/nexus-agents/src/learning/outcome-feedback-types.ts:118
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
exportData()
exportData(): ExperimentExport;
Defined in: packages/nexus-agents/src/learning/ab-test-types.ts:181
Export all experiment data.
Returns
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?
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
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:130
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:136
Get current size of decision map
Returns
number
getEvictedEntryCount()
getEvictedEntryCount(): number;
Defined in: packages/nexus-agents/src/learning/feedback-integration-types.ts:133
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:118
Get feedback statistics
Returns
onOutcomeProcessed()
onOutcomeProcessed(callback): () => void;
Defined in: packages/nexus-agents/src/learning/feedback-integration-types.ts:121
Subscribe to outcome processed events
Parameters
callback
Returns
() => void
recordOutcome()
recordOutcome(params): void;
Defined in: packages/nexus-agents/src/learning/feedback-integration-types.ts:115
Record a generic task outcome
Parameters
params
Returns
void
recordRoutingDecision()
recordRoutingDecision(
decision,
traceId?,
options?
): string;
Defined in: packages/nexus-agents/src/learning/feedback-integration-types.ts:100
Record a routing decision; omitted task text skips preference training.
Parameters
decision
traceId?
string
options?
query?
string
Returns
string
recordStepOutcome()
recordStepOutcome(
routingDecisionId,
stepResult,
durationMs,
tokenUsage
): void;
Defined in: packages/nexus-agents/src/learning/feedback-integration-types.ts:107
Record a step outcome from workflow execution
Parameters
routingDecisionId
string
stepResult
durationMs
number
tokenUsage
number
Returns
void
registerCompositeRouter()
registerCompositeRouter(router): void;
Defined in: packages/nexus-agents/src/learning/feedback-integration-types.ts:124
Register CompositeRouter for bi-directional feedback
Parameters
router
Returns
void
reset()
reset(): void;
Defined in: packages/nexus-agents/src/learning/feedback-integration-types.ts:127
Reset all collected data
Returns
void
IOutcomeFeedback
Defined in: packages/nexus-agents/src/learning/outcome-feedback-types.ts:306
Interface for outcome feedback collector.
Methods
clearExpiredDecisions()
clearExpiredDecisions(): number;
Defined in: packages/nexus-agents/src/learning/outcome-feedback-types.ts:340
Clear expired pending decisions.
Returns
number
computeReward()
computeReward(outcome): ComputedReward;
Defined in: packages/nexus-agents/src/learning/outcome-feedback-types.ts:325
Compute reward from an outcome.
Parameters
outcome
Returns
getPendingDecisions()
getPendingDecisions(): readonly FeedbackRoutingDecision[];
Defined in: packages/nexus-agents/src/learning/outcome-feedback-types.ts:335
Get pending decisions (waiting for outcomes).
Returns
readonly FeedbackRoutingDecision[]
getStats()
getStats(): FeedbackLoopStats;
Defined in: packages/nexus-agents/src/learning/outcome-feedback-types.ts:330
Get feedback loop statistics.
Returns
processOutcome()
processOutcome(traceId, outcome): void;
Defined in: packages/nexus-agents/src/learning/outcome-feedback-types.ts:320
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:315
Record an outcome for a routing decision.
Parameters
outcome
Returns
void
recordRoutingDecision()
recordRoutingDecision(decision): void;
Defined in: packages/nexus-agents/src/learning/outcome-feedback-types.ts:310
Record a routing decision for tracking.
Parameters
decision
Returns
void
reset()
reset(): void;
Defined in: packages/nexus-agents/src/learning/outcome-feedback-types.ts:345
Reset all state.
Returns
void
IOutcomeStorage
Defined in: packages/nexus-agents/src/learning/outcome-storage-types.ts:194
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:250
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:213
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:238
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:225
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:218
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:230
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:245
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:198
Store a routing decision.
Parameters
decision
Returns
Promise<Result<void, OutcomeStorageError>>
storeOutcome()
storeOutcome(outcome): Promise<Result<void, OutcomeStorageError>>;
Defined in: packages/nexus-agents/src/learning/outcome-storage-types.ts:203
Store a task outcome.
Parameters
outcome
Returns
Promise<Result<void, OutcomeStorageError>>
storeReward()
storeReward(reward): Promise<Result<void, OutcomeStorageError>>;
Defined in: packages/nexus-agents/src/learning/outcome-storage-types.ts:208
Store a computed reward.
Parameters
reward
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
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:262
Configuration for SQLite outcome storage.
Properties
autoPruneInterval?
autoPruneInterval?: number;
Defined in: packages/nexus-agents/src/learning/outcome-storage-types.ts:270
Auto-prune interval in ms (default: 3600000 = 1 hour)
dbPath
dbPath: string;
Defined in: packages/nexus-agents/src/learning/outcome-storage-types.ts:264
Path to SQLite database file
logger?
logger?: ILogger;
Defined in: packages/nexus-agents/src/learning/outcome-storage-types.ts:266
Optional logger instance
maxRecords?
maxRecords?: number;
Defined in: packages/nexus-agents/src/learning/outcome-storage-types.ts:268
Maximum records to retain (default: 100000)
PerformanceMatrixEntry
Defined in: packages/nexus-agents/src/learning/validation-stats-types.ts:201
Model performance matrix entry (model × task type).
Properties
avgLatencyMs
readonly avgLatencyMs: number;
Defined in: packages/nexus-agents/src/learning/validation-stats-types.ts:207
avgReward
readonly avgReward: number;
Defined in: packages/nexus-agents/src/learning/validation-stats-types.ts:206
model
readonly model: string;
Defined in: packages/nexus-agents/src/learning/validation-stats-types.ts:202
n
readonly n: number;
Defined in: packages/nexus-agents/src/learning/validation-stats-types.ts:204
successRate
readonly successRate: number;
Defined in: packages/nexus-agents/src/learning/validation-stats-types.ts:205
successRateCI
readonly successRateCI: ConfidenceInterval;
Defined in: packages/nexus-agents/src/learning/validation-stats-types.ts:208
taskType
readonly taskType: string;
Defined in: packages/nexus-agents/src/learning/validation-stats-types.ts:203
PersistentDistillerConfig
Defined in: packages/nexus-agents/src/learning/strategy-distiller-persistence.ts:115
Learning exports - Closed-loop feedback and routing improvement Split from index.ts for file size compliance (Issue #285)
Properties
dataDir?
readonly dataDir?: string;
Defined in: packages/nexus-agents/src/learning/strategy-distiller-persistence.ts:119
Override the data directory (useful for testing).
filePath?
readonly filePath?: string;
Defined in: packages/nexus-agents/src/learning/strategy-distiller-persistence.ts:117
Override the file path (useful for testing).
QualitySignals
Defined in: packages/nexus-agents/src/learning/outcome-feedback-types.ts:55
Quality signals extracted from task execution.
Properties
coherenceScore?
readonly coherenceScore?: number;
Defined in: packages/nexus-agents/src/learning/outcome-feedback-types.ts:69
Response coherence score (0-1)
completionRatio
readonly completionRatio: number;
Defined in: packages/nexus-agents/src/learning/outcome-feedback-types.ts:65
Task completion percentage (0-1)
lintErrors?
readonly lintErrors?: number;
Defined in: packages/nexus-agents/src/learning/outcome-feedback-types.ts:59
Number of lint errors (for code tasks)
retryCount
readonly retryCount: number;
Defined in: packages/nexus-agents/src/learning/outcome-feedback-types.ts:63
Number of retries required
testsPass?
readonly testsPass?: boolean;
Defined in: packages/nexus-agents/src/learning/outcome-feedback-types.ts:57
Whether code tests passed (for code tasks)
userApproved?
readonly userApproved?: boolean;
Defined in: packages/nexus-agents/src/learning/outcome-feedback-types.ts:61
Explicit user approval/rejection
validStructure?
readonly validStructure?: boolean;
Defined in: packages/nexus-agents/src/learning/outcome-feedback-types.ts:67
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 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 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 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:214
Options for statistical calculations.
Properties
alpha?
readonly alpha?: number;
Defined in: packages/nexus-agents/src/learning/validation-stats-types.ts:218
Alpha level for significance testing (default: 0.05)
confidence?
readonly confidence?: number;
Defined in: packages/nexus-agents/src/learning/validation-stats-types.ts:216
Confidence level for intervals (default: 0.95)
minSampleSize?
readonly minSampleSize?: number;
Defined in: packages/nexus-agents/src/learning/validation-stats-types.ts:220
Minimum sample size for valid inference (default: 30)
useContinuityCorrection?
readonly useContinuityCorrection?: boolean;
Defined in: packages/nexus-agents/src/learning/validation-stats-types.ts:222
Use continuity correction for proportions (default: true)
StoredModelStats
Defined in: packages/nexus-agents/src/learning/outcome-storage-types.ts:103
Aggregated model statistics from stored data.
Each average/rate is null when its own inputs are empty. Reward can be unmeasured even when outcomes exist. Null must not be ranked as zero; exclude unmeasured values or place them after measured values.
Properties
avgLatencyMs
readonly avgLatencyMs: number | null;
Defined in: packages/nexus-agents/src/learning/outcome-storage-types.ts:109
avgQualityScore
readonly avgQualityScore: number | null;
Defined in: packages/nexus-agents/src/learning/outcome-storage-types.ts:108
avgReward
readonly avgReward: number | null;
Defined in: packages/nexus-agents/src/learning/outcome-storage-types.ts:107
model
readonly model: "claude" | "gemini" | "codex" | "opencode";
Defined in: packages/nexus-agents/src/learning/outcome-storage-types.ts:104
successRate
readonly successRate: number | null;
Defined in: packages/nexus-agents/src/learning/outcome-storage-types.ts:110
totalDecisions
readonly totalDecisions: number;
Defined in: packages/nexus-agents/src/learning/outcome-storage-types.ts:105
totalOutcomes
readonly totalOutcomes: number;
Defined in: packages/nexus-agents/src/learning/outcome-storage-types.ts:106
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 RoutingArmId[];
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 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 routerTypeMeasured?: boolean;
Defined in: packages/nexus-agents/src/learning/outcome-storage-types.ts:65
Persisted attribution evidence (#5915), retained for legacy router labels.
Old topsis labels stay topsis because they may be measured or fallback;
the label alone cannot recover attribution. NULL or absent database evidence
reads back as false. An omitted field on input is stored as unmeasured.
selectedModel
readonly selectedModel: RoutingArmId;
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 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:162
Task outcome for a routing decision.
Properties
durationMs
readonly durationMs: number;
Defined in: packages/nexus-agents/src/learning/outcome-feedback-types.ts:174
Execution duration in milliseconds
errorMessage?
readonly errorMessage?: string;
Defined in: packages/nexus-agents/src/learning/outcome-feedback-types.ts:178
Error message if failed
outcomeClass
readonly outcomeClass: OutcomeClass;
Defined in: packages/nexus-agents/src/learning/outcome-feedback-types.ts:168
Outcome classification
qualityScore
readonly qualityScore: number;
Defined in: packages/nexus-agents/src/learning/outcome-feedback-types.ts:172
Quality score (0-1)
qualitySignals
readonly qualitySignals: QualitySignals;
Defined in: packages/nexus-agents/src/learning/outcome-feedback-types.ts:180
Extracted quality signals
routingDecisionId
readonly routingDecisionId: string;
Defined in: packages/nexus-agents/src/learning/outcome-feedback-types.ts:164
Reference to the routing decision
success
readonly success: boolean;
Defined in: packages/nexus-agents/src/learning/outcome-feedback-types.ts:170
Overall success indicator
timestamp
readonly timestamp: string;
Defined in: packages/nexus-agents/src/learning/outcome-feedback-types.ts:166
Timestamp of outcome
tokenUsage
readonly tokenUsage: number;
Defined in: packages/nexus-agents/src/learning/outcome-feedback-types.ts:176
Token usage
traceId
readonly traceId: string;
Defined in: packages/nexus-agents/src/learning/outcome-feedback-types.ts:182
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:93
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:50
Task outcome classification.
OutcomeProcessedCallback
type OutcomeProcessedCallback = (decision, outcome, reward) => void;
Defined in: packages/nexus-agents/src/learning/outcome-feedback-types.ts:351
Callback for when an outcome is processed.
Parameters
decision
outcome
reward
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" | "cascade" | "topsis" | "unattributed";
Defined in: packages/nexus-agents/src/learning/outcome-feedback-types.ts:25
Router type that made the routing decision, or unattributed when no
scoring stage explains it. The producerless quality member is removed.
Legacy stored quality labels migrate to unattributed. Stored topsis
labels remain topsis: before this change the fallback used the same label
as measured TOPSIS, so the label alone cannot recover historical attribution.
Retain routerTypeMeasured as the persisted evidence for those rows (#5915).
RulesSnapshot
type RulesSnapshot = z.infer<typeof RulesSnapshotSchema>;
Defined in: packages/nexus-agents/src/learning/strategy-distiller-persistence.ts:71
Learning exports - Closed-loop feedback and routing improvement Split from index.ts for file size compliance (Issue #285)
RuleStatus
type RuleStatus = "draft" | "active" | "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:99
Default distiller configuration.
DEFAULT_FEEDBACK_COLLECTOR_CONFIG
const DEFAULT_FEEDBACK_COLLECTOR_CONFIG: FeedbackCollectorConfig;
Defined in: packages/nexus-agents/src/learning/outcome-feedback-types.ts:274
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:285
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:228
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:290
Zod schema for feedback collector configuration.
FeedbackRoutingDecisionSchema
const FeedbackRoutingDecisionSchema: ZodIntersection<ZodObject<{
armIndex: ZodOptional<ZodNumber>;
banditContext: ZodOptional<ZodRecord<ZodString, ZodUnknown>>;
confidence: ZodOptional<ZodNumber>;
domain: ZodOptional<ZodString>;
id: ZodUUID;
query: ZodString;
queryFeatures: ZodOptional<ZodRecord<ZodString, ZodUnknown>>;
selectedModel: ZodString;
selectedTier: ZodOptional<ZodEnum<{
strong: "strong";
weak: "weak";
}>>;
timestamp: ZodISODateTime;
traceId: ZodString;
ucbScore: ZodOptional<ZodNumber>;
}, $strip>, ZodPipe<ZodObject<{
routerType: ZodEnum<{
cascade: "cascade";
linucb: "linucb";
preference: "preference";
quality: "quality";
topsis: "topsis";
unattributed: "unattributed";
}>;
routerTypeMeasured: ZodOptional<ZodBoolean>;
}, $strip>, ZodTransform<{
routerType: RouterType;
routerTypeMeasured?: boolean;
}, {
routerType: | "topsis"
| "linucb"
| "preference"
| "quality"
| "cascade"
| "unattributed";
routerTypeMeasured?: boolean;
}>>>;
Defined in: packages/nexus-agents/src/learning/outcome-feedback-types.ts:136
Zod schema for feedback 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:276
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:75
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: ZodUnion<readonly [ZodEnum<{
claude: "claude";
codex: "codex";
gemini: "gemini";
opencode: "opencode";
}>, ZodTemplateLiteral<`api:${string}`>]>;
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>;
updatedAt: ZodNumber;
}, $strip>>;
savedAt: ZodString;
version: ZodLiteral<1>;
}, $strip>;
Defined in: packages/nexus-agents/src/learning/strategy-distiller-persistence.ts:60
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:188
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
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
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
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
computeOutcomeReward()
function computeOutcomeReward(collector, outcome): ComputedReward;
Defined in: packages/nexus-agents/src/learning/feedback-integration.ts:511
Helper to compute reward from outcome.
Parameters
collector
outcome
Returns
createAbTestTracker()
function createAbTestTracker(): IAbTestTracker;
Defined in: packages/nexus-agents/src/learning/ab-test-tracker.ts:413
Create a default A/B test tracker instance.
Returns
createFeedbackIntegration()
function createFeedbackIntegration(config?, collector?): IFeedbackIntegration;
Defined in: packages/nexus-agents/src/learning/feedback-integration.ts:501
Creates a FeedbackIntegration instance.
Parameters
config?
Partial<FeedbackIntegrationConfig>
collector?
Returns
createOutcomeFeedbackCollector()
function createOutcomeFeedbackCollector(config?): OutcomeFeedbackCollector;
Defined in: packages/nexus-agents/src/learning/outcome-feedback.ts:406
Create an OutcomeFeedbackCollector instance.
Parameters
config?
Partial<FeedbackCollectorConfig>
Returns
createOutcomeStorage()
function createOutcomeStorage(config): SQLiteOutcomeStorage;
Defined in: packages/nexus-agents/src/learning/outcome-storage.ts:374
Create an SQLite outcome storage instance.
Parameters
config
Returns
createRoutingDecision()
function createRoutingDecision(params): FeedbackRoutingDecision;
Defined in: packages/nexus-agents/src/learning/outcome-feedback-helpers.ts:115
Create a routing decision record.
Parameters
params
Omit<FeedbackRoutingDecision, "id" | "timestamp">
Returns
createStrategyDistiller()
function createStrategyDistiller(
outcomeStore,
logger?,
config?
): StrategyDistiller;
Defined in: packages/nexus-agents/src/learning/strategy-distiller.ts:459
Factory function for creating StrategyDistiller.
Parameters
outcomeStore
logger?
config?
Partial<DistillerConfig>
Returns
createTaskOutcome()
function createTaskOutcome(params): TaskOutcome;
Defined in: packages/nexus-agents/src/learning/outcome-feedback-helpers.ts:128
Create a task outcome record.
Parameters
params
Omit<TaskOutcome, "timestamp">
Returns
detectFailurePatterns()
function detectFailurePatterns(groups, threshold): DetectedPattern[];
Defined in: packages/nexus-agents/src/learning/strategy-distiller.ts:136
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:182
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:159
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:67
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
metric
number
thresholds
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
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
sigmoidConfidence()
function sigmoidConfidence(observations, center?): number;
Defined in: packages/nexus-agents/src/learning/strategy-distiller.ts:43
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