Skip to content

API Reference ​

GESA TypeScript API ​

Complete interface definitions for implementing GESA in TypeScript or JavaScript.


Core Interfaces ​

GESARecommendation ​

The output of every GESA cycle. Every field is observable and traceable.

typescript
interface GESARecommendation {
  // What to do
  strategy:               string

  // How confident GESA is (0–100)
  confidence:             number

  // How many similar historical episodes support this recommendation
  episodicSupport:        number

  // Current annealing temperature at time of recommendation
  temperature:            number

  // true = generated under high temperature (novel/less-proven)
  // false = generated under low temperature (validated/conservative)
  explorationBias:        boolean

  // Human-readable explanation of why this strategy was recommended
  reasoning:              string

  // IDs of the specific episodes that support this recommendation
  episodeRefs:            string[]

  // How many candidate strategies were evaluated before selecting this one
  alternativesConsidered: number

  // Rate of change of DRIFT across recent episodes
  // Negative = gap closing, Zero = stuck, Positive = widening
  gapVelocity:            number
}

GESAConfig ​

typescript
interface GESAConfig {
  // Temperature profile for this GESA instance
  temperatureProfile:    'fast' | 'standard' | 'slow' | 'adaptive'

  // Initial temperature (default: 100)
  T0:                    number

  // How many episodes to retrieve per cycle (default: 10)
  retrievalLimit:        number

  // Minimum episodes before GESA recommendations are returned
  // (below this, falls back to Fetch recommendation)
  coldStartThreshold:    number

  // Domain configuration
  domain:                string
  decayConstant:         number  // milliseconds

  // Similarity weight overrides (default weights sum to 1.0)
  similarityWeights?: {
    domainMatch:         number  // default: 0.30
    driftProximity:      number  // default: 0.25
    dimensionMatch:      number  // default: 0.20
    temperatureProximity: number // default: 0.15
    outcomePolarity:     number  // default: 0.10
  }
}

Core Functions ​

gesa.cycle() ​

Run one complete GESA optimization cycle (steps 1–5).

typescript
async function cycle(
  context: EpisodeContext
): Promise<GESARecommendation | null>

Returns null if episode store is below cold start threshold.

Example:

typescript
const recommendation = await gesa.cycle({
  domain: 'workplace',
  dimension: 'D6_Operational',
  driftScore: 42,
  driftSign: 'positive',
  gapVelocity: +2.1,
  fetchScore: 1340,
  chirp: 85,
  perch: 72,
  wake: 68,
  tags: ['pain_streak', 'high_load'],
  metadata: {
    teamId: 'team-alpha',
    sprintPhase: 'mid',
    cognitiveLoad: 88
  }
})

gesa.storeOutcome() ​

Store the outcome of a previous action (steps 7–8).

typescript
async function storeOutcome(
  episodeId: string,
  outcome: EpisodeOutcome
): Promise<void>

This call also advances the temperature (COOL step).

Example:

typescript
await gesa.storeOutcome('ep_0234', {
  driftAfter: 28,
  gapChange: 14,        // 42 - 28 = 14 point improvement
  timeToResolve: 6,     // 6 days
  success: true,
  notes: 'WIP reduction effective — pain streak resolved by day 6',
  observedAt: new Date(),
  confidence: 90
})

gesa.captureAction() ​

Record that an action was taken (before outcome is known).

typescript
async function captureAction(
  context: EpisodeContext,
  action: EpisodeAction
): Promise<string>  // Returns episode ID for later outcome update

gesa.analysePatterns() ​

Retrieve pattern analysis across the episode store for a domain.

typescript
async function analysePatterns(params: {
  domain:             string
  dimension?:         string
  minEpisodicSupport: number
}): Promise<PatternAnalysis[]>

interface PatternAnalysis {
  pattern:           string    // The action type or cascade path pattern
  frequency:         number    // How often this pattern appears
  successRate:       number    // 0–1
  avgGapClosure:     number    // Average DRIFT points closed
  avgTimeToResolve:  number    // Average time to resolution
  temperatureRange:  [number, number]  // Temperature range when effective
}

Temperature API ​

typescript
class GESATemperature {
  readonly current: number
  readonly profile: 'fast' | 'standard' | 'slow' | 'adaptive'
  readonly episodeCount: number

  cool(): void                    // Advance by one cooling step
  reset(T0?: number): void        // Reset to initial temperature
  setProfile(p: string): void     // Change cooling profile
  estimateEpisodesTo(T: number): number  // How many episodes until T?
}

Episode Store Interface ​

GESA requires any storage backend to implement:

typescript
interface EpisodeStore {
  // Write a new episode (without outcome)
  write(episode: Omit<Episode, 'outcome' | 'driftAfter'>): Promise<string>

  // Update episode with outcome (immutable pattern: creates updated record)
  updateOutcome(id: string, outcome: EpisodeOutcome): Promise<void>

  // Retrieve episodes by similarity (implementation-specific)
  query(context: EpisodeContext, limit: number): Promise<Episode[]>

  // Get all completed episodes for a domain
  getCompleted(domain: string): Promise<Episode[]>

  // Count episodes for a domain
  count(domain: string): Promise<number>
}

Constants ​

typescript
// Default similarity weights
const DEFAULT_SIMILARITY_WEIGHTS = {
  domainMatch:          0.30,
  driftProximity:       0.25,
  dimensionMatch:       0.20,
  temperatureProximity: 0.15,
  outcomePolarity:      0.10
}

// Default cooling rates
const COOLING_RATES = {
  fast:     0.85,
  standard: 0.95,
  slow:     0.99
}

// Default decay constants (milliseconds)
const DECAY_CONSTANTS = {
  content:     30  * 86400 * 1000,
  trading:     30  * 86400 * 1000,
  browser:     14  * 86400 * 1000,
  product:     90  * 86400 * 1000,
  workplace:   180 * 86400 * 1000,
  business_6d: 180 * 86400 * 1000
}

// Default cold start threshold
const COLD_START_THRESHOLD = 20  // episodes per domain

// Initial temperature
const DEFAULT_T0 = 100

→ Research & References