feat: first round of mcp standalone server

This commit is contained in:
2026-02-28 21:23:22 +01:00
parent 1fc2003260
commit c358e1b11c
67 changed files with 3426 additions and 901 deletions

View File

@@ -11,8 +11,8 @@ import { eq, and } from 'drizzle-orm';
import { getDatabase } from '../database';
import { posts, media } from '../database/schema';
import { readPostFile, PostFileData } from './postFileUtils';
import { getPostEngine } from './PostEngine';
import { taskManager } from './TaskManager';
import type { PostEngine } from './PostEngine';
/**
* A difference in a specific metadata field
@@ -77,6 +77,10 @@ export interface TableStats {
export class MetadataDiffEngine extends EventEmitter {
private currentProjectId = 'default';
constructor(private readonly postEngine?: PostEngine) {
super();
}
private async runSyncLoop(
postIds: string[],
onProgress: ((percent: number, message: string) => void) | undefined,
@@ -363,7 +367,8 @@ export class MetadataDiffEngine extends EventEmitter {
postIds: string[],
onProgress?: (percent: number, message: string) => void
): Promise<{ success: number; failed: number }> {
const postEngine = getPostEngine();
const postEngine = this.postEngine;
if (!postEngine) throw new Error('MetadataDiffEngine: postEngine not injected');
return this.runSyncLoop(
postIds,
onProgress,
@@ -483,12 +488,4 @@ export class MetadataDiffEngine extends EventEmitter {
}
}
// Singleton instance
let metadataDiffEngineInstance: MetadataDiffEngine | null = null;
export function getMetadataDiffEngine(): MetadataDiffEngine {
if (!metadataDiffEngineInstance) {
metadataDiffEngineInstance = new MetadataDiffEngine();
}
return metadataDiffEngineInstance;
}