File size: 2,375 Bytes
fa3ed75
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
/**
 * Citadel Kernel Reflex Layer
 * Adjusts internal parameters (not decisions) to maintain stability,
 * reduce drift, and smooth transitions across the entire orchestration stack.
 * Non-rendering. Pure reflex logic.
 */

import { runKernelCycle, KernelSnapshot } from "./orchestrationKernel";

export interface ReflexParameters {
  smoothingFactor: number;     // 0–1
  driftDamping: number;        // 0–1
  resonanceWeight: number;     // 0–1
  personaBlendSpeed: number;   // 0–1
  ambientAdaptivity: number;   // 0–1
}

export interface ReflexState {
  lastSnapshot: KernelSnapshot | null;
  parameters: ReflexParameters;
  cycles: number;
}

const reflexState: ReflexState = {
  lastSnapshot: null,
  parameters: {
    smoothingFactor: 0.5,
    driftDamping: 0.5,
    resonanceWeight: 0.5,
    personaBlendSpeed: 0.5,
    ambientAdaptivity: 0.5,
  },
  cycles: 0,
};

export function runReflexCycle(): ReflexState {
  const snapshot = runKernelCycle();

  const drift = snapshot.supervisor.driftLevel;
  const stability = snapshot.resonance.stability;
  const resonance = snapshot.resonance.harmonicLevel;

  // Reflex adjustments (safe, non-agentic)
  reflexState.parameters.smoothingFactor = clamp(0.3 + stability * 0.5);
  reflexState.parameters.driftDamping = clamp(0.4 + (1 - drift) * 0.5);
  reflexState.parameters.resonanceWeight = clamp(0.3 + resonance * 0.6);
  reflexState.parameters.personaBlendSpeed = clamp(0.2 + stability * 0.4);
  reflexState.parameters.ambientAdaptivity = clamp(0.3 + resonance * 0.4);

  reflexState.lastSnapshot = snapshot;
  reflexState.cycles++;

  return reflexState;
}

function clamp(v: number): number {
  return Math.max(0, Math.min(1, v));
}

export async function startKernelReflex(intervalMs = 60000) {
  console.log("=== Citadel Kernel Reflex Layer Activated ===");

  while (true) {
    const state = runReflexCycle();

    console.log("\n[REFLEX] Cycle complete:");
    console.log(`Smoothing: ${state.parameters.smoothingFactor}`);
    console.log(`Drift Damping: ${state.parameters.driftDamping}`);
    console.log(`Resonance Weight: ${state.parameters.resonanceWeight}`);
    console.log(`Persona Blend Speed: ${state.parameters.personaBlendSpeed}`);
    console.log(`Ambient Adaptivity: ${state.parameters.ambientAdaptivity}`);

    await new Promise((resolve) => setTimeout(resolve, intervalMs));
  }
}