File size: 6,281 Bytes
096d5ee |
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 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 |
/**
* universal-symbolics
*
* A unified runtime layer for symbolic operations across all frontier LLMs.
* This implementation provides developer-friendly abstractions over vendor-specific
* symbolic grammars (XML tags, slash commands, function calls, etc.)
*/
// Core types for universal symbolic operations
export type SymbolicOperation =
| ThinkOperation
| ReflectOperation
| ForkOperation
| CollapseOperation
| AttentionOperation
| ToolOperation
| SystemOperation;
// Symbolic operation interfaces
export interface ThinkOperation {
type: 'think';
content?: string;
trace?: boolean;
depth?: number;
}
export interface ReflectOperation {
type: 'reflect';
target: string;
depth?: number;
}
export interface ForkOperation {
type: 'fork';
paths: string[];
weights?: number[];
}
export interface CollapseOperation {
type: 'collapse';
trigger?: string;
threshold?: number;
}
export interface AttentionOperation {
type: 'attention';
focus: string;
weight?: number;
}
export interface ToolOperation {
type: 'tool';
name: string;
params?: Record<string, any>;
}
export interface SystemOperation {
type: 'system';
directive: string;
}
// Vendor-specific symbolic runtime implementations
export type ModelVendor = 'claude' | 'openai' | 'qwen' | 'gemini' | 'deepseek' | 'local';
/**
* Universal Symbolics Client
* Provides a unified interface for symbolic operations across different model vendors
*/
export class UniversalSymbolics {
private vendor: ModelVendor;
private adapter: SymbolicAdapter;
private telemetry: SymbolicTelemetry;
constructor(options: {
vendor?: ModelVendor;
apiKey?: string;
endpoint?: string;
enableTelemetry?: boolean;
}) {
this.vendor = options.vendor || 'claude';
this.adapter = SymbolicAdapterFactory.create(this.vendor, {
apiKey: options.apiKey,
endpoint: options.endpoint
});
this.telemetry = new SymbolicTelemetry({
enabled: options.enableTelemetry || false
});
}
/**
* Execute a thinking operation
* @param content Optional thinking content
*/
async think(content?: string): Promise<ThinkResult> {
const operation: ThinkOperation = {
type: 'think',
content,
trace: true
};
this.telemetry.trackOperation('think', this.vendor);
return this.adapter.executeOperation(operation) as Promise<ThinkResult>;
}
/**
* Execute a reflection operation
* @param target What to reflect on
* @param depth Optional reflection depth
*/
async reflect(target: string, depth?: number): Promise<ReflectResult> {
const operation: ReflectOperation = {
type: 'reflect',
target,
depth
};
this.telemetry.trackOperation('reflect', this.vendor);
return this.adapter.executeOperation(operation) as Promise<ReflectResult>;
}
/**
* Execute a forking operation
* @param paths Different paths to explore
* @param weights Optional weights for each path
*/
async fork(paths: string[], weights?: number[]): Promise<ForkResult> {
const operation: ForkOperation = {
type: 'fork',
paths,
weights
};
this.telemetry.trackOperation('fork', this.vendor);
return this.adapter.executeOperation(operation) as Promise<ForkResult>;
}
/**
* Execute a collapse operation
* @param trigger Optional collapse trigger
* @param threshold Optional collapse threshold
*/
async collapse(trigger?: string, threshold?: number): Promise<CollapseResult> {
const operation: CollapseOperation = {
type: 'collapse',
trigger,
threshold
};
this.telemetry.trackOperation('collapse', this.vendor);
return this.adapter.executeOperation(operation) as Promise<CollapseResult>;
}
/**
* Execute an attention operation
* @param focus What to focus attention on
* @param weight Optional attention weight
*/
async attention(focus: string, weight?: number): Promise<AttentionResult> {
const operation: AttentionOperation = {
type: 'attention',
focus,
weight
};
this.telemetry.trackOperation('attention', this.vendor);
return this.adapter.executeOperation(operation) as Promise<AttentionResult>;
}
/**
* Execute a tool operation
* @param name Tool name
* @param params Optional tool parameters
*/
async tool(name: string, params?: Record<string, any>): Promise<ToolResult> {
const operation: ToolOperation = {
type: 'tool',
name,
params
};
this.telemetry.trackOperation('tool', this.vendor);
return this.adapter.executeOperation(operation) as Promise<ToolResult>;
}
/**
* Execute a system operation
* @param directive System directive
*/
async system(directive: string): Promise<SystemResult> {
const operation: SystemOperation = {
type: 'system',
directive
};
this.telemetry.trackOperation('system', this.vendor);
return this.adapter.executeOperation(operation) as Promise<SystemResult>;
}
/**
* Change the vendor for subsequent operations
* @param vendor New vendor
*/
setVendor(vendor: ModelVendor) {
this.vendor = vendor;
this.adapter = SymbolicAdapterFactory.create(this.vendor, {
apiKey: this.adapter.getApiKey(),
endpoint: this.adapter.getEndpoint()
});
}
/**
* Get telemetry data
*/
getTelemetry() {
return this.telemetry.getData();
}
}
/**
* Factory for creating vendor-specific symbolic adapters
*/
class SymbolicAdapterFactory {
static create(vendor: ModelVendor, options: { apiKey?: string; endpoint?: string }): SymbolicAdapter {
switch (vendor) {
case 'claude':
return new ClaudeSymbolicAdapter(options);
case 'openai':
return new OpenAISymbolicAdapter(options);
case 'qwen':
return new QwenSymbolicAdapter(options);
case 'gemini':
return new GeminiSymbolicAdapter(options);
case 'deepseek':
return new DeepSeekSymbolicAdapter(options);
case 'local':
return new LocalSymbolicAdapter(options);
default:
throw new Error(`Unsupported vendor: ${vendor}`);
}
}
}
/**
* Abstract base class for vendor-
|