Type Reference¶
Pluggable Interfaces¶
Embedder¶
Pluggable embedding interface. Consumer provides the implementation.
interface Embedder {
embed(text: string): Promise<number[]>;
embedBatch(texts: string[]): Promise<number[][]>;
readonly dimensions: number;
}
| Property | Type | Description |
|---|---|---|
embed |
(text: string) => Promise<number[]> |
Embed a single text into a vector |
embedBatch |
(texts: string[]) => Promise<number[][]> |
Embed multiple texts (may batch) |
dimensions |
number |
Dimensionality of embedding vectors |
Used by: PreExecSensorOptions
StateProvider¶
Pluggable access to the agent's current state.
interface StateProvider {
getGoals(): Promise<string[]>;
getRecentContext(): Promise<string[]>;
getGoalRelevantMemories(): Promise<string[]>;
getAllMemories(): Promise<string[]>;
}
| Property | Type | Description |
|---|---|---|
getGoals |
() => Promise<string[]> |
Current goals the agent is pursuing |
getRecentContext |
() => Promise<string[]> |
Recent conversation turns, observations |
getGoalRelevantMemories |
() => Promise<string[]> |
Memories relevant to current goals |
getAllMemories |
() => Promise<string[]> |
All available memories |
Used by: PreExecSensorOptions
Metric Types¶
MetricFn¶
A single metric function. Strategy pattern — consumers can swap, add, or replace metrics.
interface MetricFn {
name: string;
inverted?: boolean;
compute(input: MetricInput): number;
}
| Property | Type | Description |
|---|---|---|
name |
string |
Metric name, used as key in MetricSnapshot |
inverted |
boolean \| undefined |
If true, higher values = less coherent |
compute |
(input: MetricInput) => number |
Compute metric value in [0, 1] |
Used by: PreExecSensorOptions
ScalarMetricFn¶
A scalar metric that reads directly from agent state (no embeddings). Async-capable, noop-safe (return 0 if data unavailable).
interface ScalarMetricFn {
name: string;
inverted?: boolean;
compute(): number | Promise<number>;
}
| Property | Type | Description |
|---|---|---|
name |
string |
Metric name, used as key in MetricSnapshot |
inverted |
boolean \| undefined |
If true, higher values = less coherent |
compute |
() => number \| Promise<number> |
Compute metric value in [0, 1] |
Used by: PreExecSensorOptions
MetricInput¶
Input data available to metric functions.
interface MetricInput {
goalEmbeddings: number[][];
contextEmbeddings: number[][];
memoryEmbeddings: number[][];
goalRelevantMemoryEmbeddings: number[][];
}
| Property | Type | Description |
|---|---|---|
goalEmbeddings |
number[][] |
Embedded goals |
contextEmbeddings |
number[][] |
Embedded recent context |
memoryEmbeddings |
number[][] |
Embedded all memories |
goalRelevantMemoryEmbeddings |
number[][] |
Embedded goal-relevant memories |
Used by: MetricFn
MetricSnapshot¶
Snapshot of all coherence metrics, each normalized to [0, 1].
interface MetricSnapshot {
goalDrift: number;
memoryRetention: number;
contradictionPressure: number;
semanticDiffusion: number;
[key: string]: number;
}
| Property | Type | Description |
|---|---|---|
goalDrift |
number |
0 = aligned, 1 = drifted |
memoryRetention |
number |
0 = forgotten, 1 = retained |
contradictionPressure |
number |
0 = coherent, 1 = contradictory |
semanticDiffusion |
number |
0 = focused, 1 = diffuse |
[key: string] |
number |
Additional custom metrics |
Used by: CoherenceReading, computeCoherenceIndex
MetricWeights¶
Weights for computing the coherence index from metrics.
interface MetricWeights {
goalDrift?: number;
memoryRetention?: number;
contradictionPressure?: number;
semanticDiffusion?: number;
[key: string]: number | undefined;
}
Used by: PreExecSensorOptions, computeCoherenceIndex
Band Types¶
BandThresholds¶
Band thresholds for classifying coherence index.
interface BandThresholds {
green: number;
yellow: number;
orange: number;
}
| Property | Type | Description |
|---|---|---|
green |
number |
>= this is green (default: 0.8) |
yellow |
number |
>= this is yellow (default: 0.6) |
orange |
number |
>= this is orange (default: 0.4) |
Used by: PreExecSensorOptions, classifyBand
Band¶
Coherence band classification.
type Band = "green" | "yellow" | "orange" | "red";
Used by: CoherenceReading
Sensor Types¶
CoherenceReading¶
A single coherence measurement at a point in time.
interface CoherenceReading {
ts: number;
tickSeq: number;
metrics: MetricSnapshot;
coherenceIndex: number;
band: Band;
}
| Property | Type | Description |
|---|---|---|
ts |
number |
Timestamp when this reading was taken |
tickSeq |
number |
Tick sequence number from the clock |
metrics |
MetricSnapshot |
All metric values |
coherenceIndex |
number |
Weighted coherence index (0–1) |
band |
Band |
Band classification |
Used by: PreExecSensor
PreExecSensor¶
PreExec sensor interface.
interface PreExecSensor {
measure(tick: Tick): Promise<CoherenceReading>;
history(n?: number): CoherenceReading[];
}
| Property | Type | Description |
|---|---|---|
measure |
(tick: Tick) => Promise<CoherenceReading> |
Take a coherence measurement |
history |
(n?: number) => CoherenceReading[] |
Get N most recent readings (newest first) |
Used by: createPreExecSensor
PreExecSensorOptions¶
Options for creating a PreExec sensor.
interface PreExecSensorOptions {
embedder: Embedder;
state: StateProvider;
metrics?: MetricFn[];
scalarMetrics?: ScalarMetricFn[];
weights?: MetricWeights;
thresholds?: BandThresholds;
onReading?: (reading: CoherenceReading) => void | Promise<void>;
historySize?: number;
}
| Property | Type | Default | Description |
|---|---|---|---|
embedder |
Embedder |
— | Embedding provider |
state |
StateProvider |
— | Agent state provider |
metrics |
MetricFn[] |
DEFAULT_METRICS |
Embedding-based metrics |
scalarMetrics |
ScalarMetricFn[] |
[] |
Scalar metrics (no embeddings) |
weights |
MetricWeights |
DEFAULT_WEIGHTS |
Coherence index weights |
thresholds |
BandThresholds |
DEFAULT_THRESHOLDS |
Band thresholds |
onReading |
(reading: CoherenceReading) => void \| Promise<void> |
— | Post-reading callback |
historySize |
number |
100 |
Ring buffer size |
Re-exported Types¶
Tick¶
Re-exported from @peleke.s/cadence for convenience.
interface Tick {
ts: number;
seq: number;
}
| Property | Type | Description |
|---|---|---|
ts |
number |
Timestamp |
seq |
number |
Sequence number |
Used by: PreExecSensor.measure