Initial meta MCP server scaffold
This commit is contained in:
41
src/storage.ts
Normal file
41
src/storage.ts
Normal file
@@ -0,0 +1,41 @@
|
||||
import { randomUUID } from 'crypto';
|
||||
import type { MetaRequest, MetaResponse } from './types.js';
|
||||
|
||||
export type Job = {
|
||||
id: string;
|
||||
request: MetaRequest;
|
||||
createdAt: number;
|
||||
updatedAt: number;
|
||||
response: MetaResponse;
|
||||
};
|
||||
|
||||
const jobs = new Map<string, Job>();
|
||||
|
||||
export function createJob(request: MetaRequest): Job {
|
||||
const id = randomUUID();
|
||||
const now = Date.now();
|
||||
const response: MetaResponse = {
|
||||
status: 'queued',
|
||||
message: 'Request received. Preparing build pipeline.',
|
||||
jobId: id,
|
||||
};
|
||||
const job: Job = { id, request, createdAt: now, updatedAt: now, response };
|
||||
jobs.set(id, job);
|
||||
return job;
|
||||
}
|
||||
|
||||
export function updateJob(id: string, patch: Partial<MetaResponse>): Job | null {
|
||||
const job = jobs.get(id);
|
||||
if (!job) return null;
|
||||
job.updatedAt = Date.now();
|
||||
job.response = { ...job.response, ...patch };
|
||||
return job;
|
||||
}
|
||||
|
||||
export function getJob(id: string): Job | null {
|
||||
return jobs.get(id) ?? null;
|
||||
}
|
||||
|
||||
export function listJobs(): Job[] {
|
||||
return [...jobs.values()].sort((a, b) => b.createdAt - a.createdAt);
|
||||
}
|
||||
Reference in New Issue
Block a user