ncm_desire_engine
NCM Recursive Desire Engine — implements the Recursive Desire Framework (RDF).
Wires the Desire Wander Protocol into Star’s exhale() pipeline: - Pre-emotion: pulse vector → response mode → desire drift - Post-emotion: bind desire to dominant emotion → commit recursion state
The engine maintains a desire state machine per channel and surfaces desire_text + response_mode for prompt injection.
- Position in pipeline: inhale → decay → desire_pre → cascades →
homeostasis → desire_post → exhale output
- class ncm_desire_engine.ResponseMode(*values)[source]
Bases:
EnumResponseMode (inherits from Enum).
- REACT = 'REACT'
- RESPOND = 'RESPOND'
- RESONATE = 'RESONATE'
- class ncm_desire_engine.WantingState(*values)[source]
Bases:
EnumWantingState (inherits from Enum).
- CURIOUS_DRIFT = 'Curious Drift'
- CRAVE = 'Crave'
- INFATUATION = 'Infatuation'
- VOIDLUST = 'Voidlust'
- MIMETIC_MELT = 'Mimetic Melt'
- RESONATE = 'Resonate'
- NABLA3 = '∇³'
- class ncm_desire_engine.PulseVector(energy=0.5, urgency=0.3, valence=0.0, novelty=0.3, intimacy=0.3, trust=0.5)[source]
Bases:
objectRDF pulse — computed from Star’s NCM vector each turn.
- Parameters:
- class ncm_desire_engine.DesireState(wanting=WantingState.CURIOUS_DRIFT, response_mode=ResponseMode.RESPOND, desire_text='', last_pulse=None, last_emotion='', turn_count=0, resonance_streak=0, attractors=<factory>, desire_history=<factory>)[source]
Bases:
objectTracked per channel — the current desire recursion state.
- Parameters:
wanting (WantingState)
response_mode (ResponseMode)
desire_text (str)
last_pulse (PulseVector | None)
last_emotion (str)
turn_count (int)
resonance_streak (int)
- wanting: WantingState = 'Curious Drift'
- response_mode: ResponseMode = 'RESPOND'
- last_pulse: PulseVector | None = None
- class ncm_desire_engine.DesireEngine[source]
Bases:
objectRecursive Desire Framework engine.
Manages desire state per channel and provides pre/post emotion hooks for the exhale() pipeline.
- pre_emotion(channel_id, vector, active_emotions, user_message='')[source]
Pre-emotion hook: compute pulse, select mode, begin desire wander.
Returns dict with: response_mode, wanting_state, bias_vector, pulse
- post_emotion(channel_id, vector, dominant_emotion)[source]
Post-emotion hook: bind desire to emotion, commit recursion state.
Returns dict with: desire_text (final), response_mode