/** * Job status types */ export type JobStatus = "pending" | "processing" | "completed" | "failed"; /** * Paso que un job esta ejecutando, como identificador estable. * * Es un union cerrado a proposito: `updateProgress` toma `JobProgress`, asi * que un productor nuevo que invente un paso no compila hasta declararlo * aqui. Eso mantiene el vocabulario publicado y el schema de * `content-jobs-manage` sincronizados sin depender de que alguien se * acuerde. */ export type JobStep = "copying_entries"; /** * Job progress information * * `step` reemplaza al `message?: string` que existia hasta #206. Ese campo * llevaba prosa —"Copying entries: 40/100"— y era justo el `message` que * #104 saca de todo `data` publicado. La prosa no aportaba informacion * nueva: los dos numeros ya viajan en `current` y `total`, asi que lo unico * que quedaba por estructurar era *cual* paso, y eso es `step`. */ export interface JobProgress { /** * Current progress count */ current: number; /** * Total items to process */ total: number; /** * Paso en curso, como identificador estable (nunca prosa). */ step?: JobStep; /** * Percentage complete (0-100) */ percentage?: number; } /** * Job metadata */ export interface Job { /** * Unique job identifier */ id: string; /** * Job type (e.g., 'space-copy', 'bulk-upload') */ type: string; /** * Current job status */ status: JobStatus; /** * Progress information */ progress?: JobProgress; /** * Job result (when completed) */ result?: TResult; /** * Error information (when failed) */ error?: TError; /** * Job creation timestamp */ createdAt: string; /** * Last update timestamp */ updatedAt: string; /** * Additional job-specific data */ metadata?: Record; } /** * Simple file-based job manager * * Stores jobs in ~/.modyo-mcp/jobs.db as JSON * Used for async job tracking in single-tenant mode. */ export declare class JobManager { private dbPath; private jobs; constructor(); /** * Load jobs from disk */ private loadJobs; /** * Save jobs to disk */ private saveJobs; /** * Create a new job * * @param type - Job type identifier * @param metadata - Additional job-specific data * @returns Created job with unique ID */ createJob(type: string, metadata?: Record): Job; /** * Get a job by ID * * @param jobId - Job identifier * @returns Job or undefined if not found */ getJob(jobId: string): Job | undefined; /** * Get all jobs * * @param filter - Optional filter by type or status * @returns Array of jobs */ getJobs(filter?: { type?: string; status?: JobStatus; }): Job[]; /** * Update job status * * @param jobId - Job identifier * @param status - New status */ updateStatus(jobId: string, status: JobStatus): void; /** * Update job progress * * @param jobId - Job identifier * @param progress - Progress information */ updateProgress(jobId: string, progress: JobProgress): void; /** * Complete a job with result * * @param jobId - Job identifier * @param result - Job result data */ completeJob(jobId: string, result: TResult): void; /** * Fail a job with error * * @param jobId - Job identifier * @param error - Error information */ failJob(jobId: string, error: TError): void; /** * Delete a job * * @param jobId - Job identifier * @returns True if deleted, false if not found */ deleteJob(jobId: string): boolean; /** * Clean up old completed/failed jobs * * @param olderThanDays - Delete jobs older than this many days (default: 7) * @returns Number of jobs deleted */ cleanupOldJobs(olderThanDays?: number): number; } /** * Global job manager instance */ export declare const jobManager: JobManager; //# sourceMappingURL=jobManager.d.ts.map