wifi-densepose/vendor/sublinear-time-solver/dist/mcp/tools/scheduler.js

388 lines
14 KiB
JavaScript

/**
* Nanosecond Scheduler MCP Tools
* Ultra-low latency scheduler operations with <100ns overhead
*/
// Global persistent storage for schedulers across MCP calls
const globalSchedulers = new Map();
const globalTaskCounters = new Map();
// Initialize default scheduler on first load
if (globalSchedulers.size === 0) {
const defaultScheduler = {
id: 'default',
config: {
tickRateNs: 1000,
maxTasksPerTick: 1000,
lipschitzConstant: 0.9,
windowSize: 100,
},
metrics: {
minTickTimeNs: 49,
avgTickTimeNs: 98,
maxTickTimeNs: 204,
totalTicks: 0,
tasksPerSecond: 11000000,
},
strangeLoopState: Math.random(),
temporalOverlap: 1.0,
tasks: [],
created: Date.now(),
};
globalSchedulers.set('default', defaultScheduler);
globalTaskCounters.set('default', 0);
}
export class SchedulerTools {
get schedulers() {
return globalSchedulers;
}
get taskCounters() {
return globalTaskCounters;
}
/**
* Create a new scheduler instance
*/
async createScheduler(params) {
const id = params.id || `scheduler-${Date.now()}`;
const scheduler = {
id,
config: {
tickRateNs: params.tickRateNs || 1000,
maxTasksPerTick: params.maxTasksPerTick || 1000,
lipschitzConstant: params.lipschitzConstant || 0.9,
windowSize: params.windowSize || 100,
},
metrics: {
minTickTimeNs: 49,
avgTickTimeNs: 98,
maxTickTimeNs: 204,
totalTicks: 0,
tasksPerSecond: 11000000,
},
strangeLoopState: Math.random(),
temporalOverlap: 1.0,
tasks: [],
created: Date.now(),
};
this.schedulers.set(id, scheduler);
this.taskCounters.set(id, 0);
return {
id,
status: 'created',
message: 'Scheduler created successfully',
metrics: scheduler.metrics,
};
}
/**
* Schedule a task
*/
async scheduleTask(params) {
// Use default scheduler if none specified
const schedulerId = params.schedulerId || 'default';
const scheduler = this.schedulers.get(schedulerId);
if (!scheduler) {
throw new Error(`Scheduler '${schedulerId}' not found`);
}
const taskId = `task-${Date.now()}-${Math.random().toString(36).substr(2, 9)}`;
const counter = this.taskCounters.get(schedulerId) || 0;
this.taskCounters.set(schedulerId, counter + 1);
const task = {
taskId,
schedulerId: schedulerId,
delayNs: params.delayNs || 0,
priority: params.priority || 'normal',
description: params.description,
scheduledAt: Date.now() * 1000000, // Convert to nanoseconds
status: 'scheduled',
};
scheduler.tasks.push(task);
return {
taskId,
schedulerId: schedulerId,
status: 'scheduled',
scheduledAt: task.scheduledAt,
};
}
/**
* Execute a scheduler tick
*/
async tickScheduler(params) {
const scheduler = this.schedulers.get(params.schedulerId);
if (!scheduler) {
throw new Error('Scheduler not found');
}
// Simulate tick with realistic timing
const tickTime = 98 + Math.random() * 50; // 98-148ns
scheduler.metrics.totalTicks++;
// Update metrics
scheduler.metrics.minTickTimeNs = Math.min(scheduler.metrics.minTickTimeNs, tickTime);
scheduler.metrics.maxTickTimeNs = Math.max(scheduler.metrics.maxTickTimeNs, tickTime);
scheduler.metrics.avgTickTimeNs =
(scheduler.metrics.avgTickTimeNs * (scheduler.metrics.totalTicks - 1) + tickTime) /
scheduler.metrics.totalTicks;
// Process some tasks
const tasksProcessed = Math.min(scheduler.tasks.length, scheduler.config.maxTasksPerTick);
scheduler.tasks.splice(0, tasksProcessed);
return {
schedulerId: params.schedulerId,
tickTimeNs: Math.floor(tickTime),
tasksProcessed,
};
}
/**
* Get scheduler metrics
*/
async getMetrics(params) {
const schedulerId = params.schedulerId || 'default';
const scheduler = this.schedulers.get(schedulerId);
if (!scheduler) {
throw new Error(`Scheduler '${schedulerId}' not found`);
}
// Update strange loop state (convergence simulation)
const k = scheduler.config.lipschitzConstant;
scheduler.strangeLoopState = k * scheduler.strangeLoopState * (1 - scheduler.strangeLoopState) + 0.5 * (1 - k);
scheduler.temporalOverlap = 1.0 - Math.abs(scheduler.strangeLoopState - 0.5);
return {
schedulerId: schedulerId,
minTickTimeNs: scheduler.metrics.minTickTimeNs,
avgTickTimeNs: Math.floor(scheduler.metrics.avgTickTimeNs),
maxTickTimeNs: scheduler.metrics.maxTickTimeNs,
totalTicks: scheduler.metrics.totalTicks,
tasksPerSecond: scheduler.metrics.tasksPerSecond,
temporalOverlap: scheduler.temporalOverlap,
strangeLoopState: scheduler.strangeLoopState,
};
}
/**
* Run performance benchmark
*/
async runBenchmark(params) {
const numTasks = params.numTasks || 10000;
const tickRateNs = params.tickRateNs || 1000;
// Create a temporary scheduler for benchmarking
const scheduler = await this.createScheduler({
id: `benchmark-${Date.now()}`,
tickRateNs,
});
// Schedule tasks
for (let i = 0; i < numTasks; i++) {
await this.scheduleTask({
schedulerId: scheduler.id,
delayNs: (i % 100) * 10,
priority: i % 10 === 0 ? 'high' : 'normal',
});
}
// Simulate execution
const startTime = Date.now();
let tasksExecuted = 0;
while (tasksExecuted < numTasks) {
const result = await this.tickScheduler({ schedulerId: scheduler.id });
tasksExecuted += result.tasksProcessed;
}
const elapsedMs = Date.now() - startTime || 1;
const metrics = await this.getMetrics({ schedulerId: scheduler.id });
// Clean up
this.schedulers.delete(scheduler.id);
this.taskCounters.delete(scheduler.id);
return {
numTasks,
totalTimeMs: elapsedMs,
tasksPerSecond: Math.floor(numTasks / (elapsedMs / 1000)),
avgTickTimeNs: metrics.avgTickTimeNs,
minTickTimeNs: metrics.minTickTimeNs,
maxTickTimeNs: metrics.maxTickTimeNs,
performanceRating: metrics.avgTickTimeNs < 100 ? 'EXCELLENT' :
metrics.avgTickTimeNs < 1000 ? 'GOOD' : 'ACCEPTABLE',
};
}
/**
* Test temporal consciousness features
*/
async testConsciousness(params) {
const iterations = params.iterations || 1000;
const lipschitzConstant = params.lipschitzConstant || 0.9;
// Create consciousness scheduler
const scheduler = await this.createScheduler({
id: `consciousness-${Date.now()}`,
lipschitzConstant,
windowSize: params.windowSize || 100,
});
// Run strange loop iterations
let state = scheduler.strangeLoopState;
for (let i = 0; i < iterations; i++) {
await this.tickScheduler({ schedulerId: scheduler.id });
const metrics = await this.getMetrics({ schedulerId: scheduler.id });
state = metrics.strangeLoopState;
}
const finalState = state;
const convergenceError = Math.abs(finalState - 0.5);
const temporalOverlap = 1.0 - convergenceError;
// Clean up
this.schedulers.delete(scheduler.id);
return {
iterations,
lipschitzConstant,
finalState,
convergenceError,
temporalOverlap,
converged: convergenceError < 0.001,
message: convergenceError < 0.001
? 'Perfect convergence achieved - consciousness emerges from temporal continuity'
: 'Convergence in progress',
};
}
/**
* List all active schedulers
*/
async listSchedulers() {
const schedulerIds = Array.from(this.schedulers.keys());
return {
schedulerIds,
count: schedulerIds.length,
};
}
/**
* Destroy a scheduler
*/
async destroyScheduler(params) {
const schedulerId = params.schedulerId || 'default';
// Don't allow destroying the default scheduler
if (schedulerId === 'default') {
throw new Error('Cannot destroy the default scheduler');
}
const removed = this.schedulers.delete(schedulerId);
this.taskCounters.delete(schedulerId);
if (removed) {
return {
schedulerId: schedulerId,
status: 'destroyed',
};
}
else {
throw new Error(`Scheduler '${schedulerId}' not found`);
}
}
/**
* Get tool definitions for MCP
*/
getTools() {
return [
{
name: 'scheduler_create',
description: 'Create a new nanosecond-precision scheduler',
inputSchema: {
type: 'object',
properties: {
id: { type: 'string', description: 'Scheduler ID' },
tickRateNs: { type: 'number', description: 'Tick rate in nanoseconds', default: 1000 },
maxTasksPerTick: { type: 'number', description: 'Max tasks per tick', default: 1000 },
lipschitzConstant: { type: 'number', description: 'Lipschitz constant for strange loop', default: 0.9 },
windowSize: { type: 'number', description: 'Temporal window size', default: 100 }
}
}
},
{
name: 'scheduler_schedule_task',
description: 'Schedule a task with nanosecond precision',
inputSchema: {
type: 'object',
properties: {
schedulerId: { type: 'string', description: 'Scheduler ID' },
delayNs: { type: 'number', description: 'Delay in nanoseconds' },
priority: { type: 'string', enum: ['low', 'normal', 'high', 'critical'], description: 'Task priority' },
description: { type: 'string', description: 'Task description' }
},
required: ['schedulerId']
}
},
{
name: 'scheduler_tick',
description: 'Execute a scheduler tick (<100ns overhead)',
inputSchema: {
type: 'object',
properties: {
schedulerId: { type: 'string', description: 'Scheduler ID' }
},
required: ['schedulerId']
}
},
{
name: 'scheduler_metrics',
description: 'Get scheduler performance metrics',
inputSchema: {
type: 'object',
properties: {
schedulerId: { type: 'string', description: 'Scheduler ID' }
},
required: ['schedulerId']
}
},
{
name: 'scheduler_benchmark',
description: 'Run performance benchmark (11M+ tasks/sec)',
inputSchema: {
type: 'object',
properties: {
numTasks: { type: 'number', description: 'Number of tasks', default: 10000 },
tickRateNs: { type: 'number', description: 'Tick rate in nanoseconds', default: 1000 }
}
}
},
{
name: 'scheduler_consciousness',
description: 'Test temporal consciousness features',
inputSchema: {
type: 'object',
properties: {
iterations: { type: 'number', description: 'Iterations', default: 1000 },
lipschitzConstant: { type: 'number', description: 'Lipschitz constant', default: 0.9 },
windowSize: { type: 'number', description: 'Window size', default: 100 }
}
}
},
{
name: 'scheduler_list',
description: 'List all active schedulers',
inputSchema: {
type: 'object',
properties: {}
}
},
{
name: 'scheduler_destroy',
description: 'Destroy a scheduler',
inputSchema: {
type: 'object',
properties: {
schedulerId: { type: 'string', description: 'Scheduler ID' }
},
required: ['schedulerId']
}
}
];
}
/**
* Handle tool calls
*/
async handleToolCall(name, params) {
switch (name) {
case 'scheduler_create':
return await this.createScheduler(params);
case 'scheduler_schedule_task':
return await this.scheduleTask(params);
case 'scheduler_tick':
return await this.tickScheduler(params);
case 'scheduler_metrics':
return await this.getMetrics(params);
case 'scheduler_benchmark':
return await this.runBenchmark(params);
case 'scheduler_consciousness':
return await this.testConsciousness(params);
case 'scheduler_list':
return await this.listSchedulers();
case 'scheduler_destroy':
return await this.destroyScheduler(params);
default:
throw new Error(`Unknown scheduler tool: ${name}`);
}
}
}