@sschepis/resolang
Version:
ResoLang - Core quantum resonance computation library for browser and Node.js
365 lines (299 loc) • 10.7 kB
text/typescript
/**
* Agent Pipeline
*
* Complete autonomous agent that combines all pipeline capabilities.
* This is the turnkey solution for a fully-featured sentient observer.
*/
import { SemanticPipeline } from './semantic';
import { CognitivePipeline } from './cognitive';
import { MemoryPipeline } from './memory';
import { EmbeddingPipeline } from './embedding';
import { BasePipeline, ISemanticCapable, ICognitiveCapable, IMemoryCapable, IEmbeddingCapable } from './base';
import { PipelineConfig, PipelineEventType, PipelineState, SemanticResult, CognitiveResult, MemoryResult, EmbeddingResult } from './types';
import { JSONBuilder } from '../core/serialization';
import { SentientCore } from '../sentient';
/**
* AgentPipeline - Complete autonomous agent
*
* Combines:
* - SemanticPipeline for text/concept encoding
* - CognitivePipeline for pattern recognition
* - MemoryPipeline for episodic memory
* - EmbeddingPipeline for vector embeddings
* - SentientCore for full integration
*
* This is the recommended entry point for most use cases.
*/
export class AgentPipeline extends BasePipeline implements ISemanticCapable, ICognitiveCapable, IMemoryCapable, IEmbeddingCapable {
// Sub-pipelines - initialized with defaults
private semantic: SemanticPipeline = new SemanticPipeline(null);
private cognitive: CognitivePipeline = new CognitivePipeline(null);
private memory: MemoryPipeline = new MemoryPipeline(null);
private embedding: EmbeddingPipeline = new EmbeddingPipeline(null);
// Core integration
private core: SentientCore = new SentientCore(16);
constructor(config: PipelineConfig | null = null) {
super(config);
// Re-create sub-pipelines with shared config
this.semantic = new SemanticPipeline(this.config);
this.cognitive = new CognitivePipeline(this.config);
this.memory = new MemoryPipeline(this.config);
this.embedding = new EmbeddingPipeline(this.config);
// Create core integration
this.core = new SentientCore(this.config.numPrimes);
}
getName(): string {
return "AgentPipeline";
}
protected onInitialize(): void {
this.semantic.initialize();
this.cognitive.initialize();
this.memory.initialize();
this.embedding.initialize();
}
protected onStart(): void {
const timestamp = this.state.timestamp;
this.semantic.start(timestamp);
this.cognitive.start(timestamp);
this.memory.start(timestamp);
this.embedding.start(timestamp);
this.core.start(timestamp);
}
protected onStop(): void {
this.semantic.stop();
this.cognitive.stop();
this.memory.stop();
this.embedding.stop();
this.core.stop();
}
protected onTick(dt: f64, timestamp: i64): void {
// Tick all sub-pipelines
this.semantic.tick(dt, timestamp);
this.cognitive.tick(dt, timestamp);
this.memory.tick(dt, timestamp);
this.embedding.tick(dt, timestamp);
// Tick core
this.core.tick(dt, timestamp);
// Forward events from sub-pipelines
this.forwardSubPipelineEvents();
// Check for significant state changes
this.checkStateEvents();
}
protected onReset(): void {
this.semantic.reset();
this.cognitive.reset();
this.memory.reset();
this.embedding.reset();
this.core.reset();
}
protected collectState(): void {
// Aggregate state from all sub-pipelines
const semanticState = this.semantic.getState();
const cognitiveState = this.cognitive.getState();
const memoryState = this.memory.getState();
const embeddingState = this.embedding.getState();
// Use semantic coherence and entropy as primary
this.state.coherence = semanticState.coherence;
this.state.entropy = semanticState.entropy;
this.state.collapseProbability = semanticState.collapseProbability;
// Combine states into JSON
this.state.smfState = semanticState.smfState;
this.state.oscillatorState = cognitiveState.oscillatorState;
this.state.memoryState = memoryState.memoryState;
}
private forwardSubPipelineEvents(): void {
// Forward recent events from sub-pipelines
const semanticEvents = this.semantic.getEvents().getRecentEvents(5);
const cognitiveEvents = this.cognitive.getEvents().getRecentEvents(5);
const memoryEvents = this.memory.getEvents().getRecentEvents(5);
// Re-emit with agent context
for (let i = 0; i < semanticEvents.length; i++) {
const e = semanticEvents[i];
if (e.eventType == PipelineEventType.COLLAPSE) {
this.emitEvent(PipelineEventType.COLLAPSE, `{"source":"semantic","data":${e.data}}`);
}
}
for (let i = 0; i < cognitiveEvents.length; i++) {
const e = cognitiveEvents[i];
if (e.eventType == PipelineEventType.ENTANGLEMENT) {
this.emitEvent(PipelineEventType.ENTANGLEMENT, `{"source":"cognitive","data":${e.data}}`);
}
}
for (let i = 0; i < memoryEvents.length; i++) {
const e = memoryEvents[i];
if (e.eventType == PipelineEventType.PHASE_LOCK) {
this.emitEvent(PipelineEventType.PHASE_LOCK, `{"source":"memory","data":${e.data}}`);
}
}
}
private checkStateEvents(): void {
// Check for coherence changes
const coherence = this.state.coherence;
if (coherence > 0.9) {
this.emitResonance(`{"coherence":${coherence},"type":"high_coherence"}`);
} else if (coherence < 0.3) {
this.emitEvent(PipelineEventType.STATE_CHANGE, `{"coherence":${coherence},"type":"low_coherence"}`);
}
}
// ISemanticCapable implementation (delegated to semantic pipeline)
encodeText(text: string): Float64Array {
return this.semantic.encodeText(text);
}
getSMFAxes(): Float64Array {
return this.semantic.getSMFAxes();
}
getCoherence(): f64 {
return this.semantic.getCoherence();
}
getEntropy(): f64 {
return this.semantic.getEntropy();
}
// ICognitiveCapable implementation (delegated to cognitive pipeline)
getPhases(): Float64Array {
return this.cognitive.getPhases();
}
getAmplitudes(): Float64Array {
return this.cognitive.getAmplitudes();
}
exciteOscillator(index: i32, amplitude: f64): void {
this.cognitive.exciteOscillator(index, amplitude);
}
getEntanglementMatrix(): Float64Array {
return this.cognitive.getEntanglementMatrix();
}
// IMemoryCapable implementation (delegated to memory pipeline)
store(content: Float64Array, significance: f64): i32 {
return this.memory.store(content, significance);
}
recall(query: Float64Array, maxResults: i32): Array<i32> {
return this.memory.recall(query, maxResults);
}
spreadActivation(traceId: i32, depth: i32): Array<i32> {
return this.memory.spreadActivation(traceId, depth);
}
getMomentCount(): i32 {
return this.memory.getMomentCount();
}
// IEmbeddingCapable implementation (delegated to embedding pipeline)
embed(input: string): Float64Array {
return this.embedding.embed(input);
}
embedValues(values: Float64Array): Float64Array {
return this.embedding.embedValues(values);
}
similarity(a: Float64Array, b: Float64Array): f64 {
return this.embedding.similarity(a, b);
}
// Unified Agent Methods
/**
* Process text input through all pipelines
*/
process(text: string): AgentResult {
const result = new AgentResult();
// Encode semantically
result.semanticAxes = this.encodeText(text);
result.coherence = this.getCoherence();
result.entropy = this.getEntropy();
// Create embedding
result.embedding = this.embed(text);
// Store in memory
result.memoryId = this.store(result.embedding, result.coherence);
// Get cognitive state
result.phases = this.getPhases();
return result;
}
/**
* Query agent for similar content
*/
query(text: string, maxResults: i32 = 5): Array<i32> {
const embedding = this.embed(text);
return this.recall(embedding, maxResults);
}
/**
* Get full agent state summary
*/
getAgentState(): AgentState {
const state = new AgentState();
state.coherence = this.getCoherence();
state.entropy = this.getEntropy();
state.momentCount = this.getMomentCount();
state.traceCount = this.memory.getTraceCount();
state.synchronization = this.memory.getSynchronization();
state.totalEntanglement = this.cognitive.getTotalEntanglement();
state.isStable = this.cognitive.isStable();
state.collapseCount = this.state.collapseCount;
return state;
}
/**
* Get semantic result
*/
getSemanticResult(): SemanticResult {
return this.semantic.getSemanticResult();
}
/**
* Get cognitive result
*/
getCognitiveResult(): CognitiveResult {
return this.cognitive.getCognitiveResult();
}
/**
* Get dominant semantic axis
*/
getDominantAxis(): i32 {
return this.semantic.getDominantAxis();
}
/**
* Get most entangled pair
*/
getMostEntangledPair(): Int32Array {
return this.cognitive.getMostEntangledPair();
}
toJSON(): string {
const builder = new JSONBuilder();
builder.startObject()
.addStringField("name", this.getName())
.addBooleanField("running", this.running)
.addNumberField("tickCount", f64(this.state.tickCount))
.addNumberField("coherence", this.getCoherence())
.addNumberField("entropy", this.getEntropy())
.addNumberField("momentCount", f64(this.getMomentCount()))
.addNumberField("collapseCount", f64(this.state.collapseCount))
.addBooleanField("isStable", this.cognitive.isStable())
.addRawField("semantic", this.semantic.toJSON())
.addRawField("cognitive", this.cognitive.toJSON())
.addRawField("memory", this.memory.toJSON())
.addRawField("embedding", this.embedding.toJSON())
.endObject();
return builder.build();
}
}
/**
* Agent processing result
*/
export class AgentResult {
semanticAxes: Float64Array = new Float64Array(0);
embedding: Float64Array = new Float64Array(0);
phases: Float64Array = new Float64Array(0);
coherence: f64 = 0.0;
entropy: f64 = 0.0;
memoryId: i32 = -1;
}
/**
* Agent state summary
*/
export class AgentState {
coherence: f64 = 0.0;
entropy: f64 = 0.0;
momentCount: i32 = 0;
traceCount: i32 = 0;
synchronization: f64 = 0.0;
totalEntanglement: f64 = 0.0;
isStable: bool = false;
collapseCount: i32 = 0;
}
// Factory function
export function createAgentPipeline(config: PipelineConfig | null = null): AgentPipeline {
const pipeline = new AgentPipeline(config);
pipeline.initialize();
return pipeline;
}