60 lines
1.5 KiB
TypeScript
60 lines
1.5 KiB
TypeScript
import fs from 'fs';
|
|
import path from 'path';
|
|
|
|
import {
|
|
resolveGroupIpcPath,
|
|
resolveTaskRuntimeIpcPath,
|
|
} from './group-folder.js';
|
|
|
|
export function writeTasksSnapshot(
|
|
groupFolder: string,
|
|
isMain: boolean,
|
|
tasks: Array<{
|
|
id: string;
|
|
groupFolder: string;
|
|
prompt: string;
|
|
schedule_type: string;
|
|
schedule_value: string;
|
|
status: string;
|
|
next_run: string | null;
|
|
}>,
|
|
runtimeTaskId?: string,
|
|
): void {
|
|
const groupIpcDir = runtimeTaskId
|
|
? resolveTaskRuntimeIpcPath(groupFolder, runtimeTaskId)
|
|
: resolveGroupIpcPath(groupFolder);
|
|
fs.mkdirSync(groupIpcDir, { recursive: true });
|
|
const filteredTasks = isMain
|
|
? tasks
|
|
: tasks.filter((t) => t.groupFolder === groupFolder);
|
|
const tasksFile = path.join(groupIpcDir, 'current_tasks.json');
|
|
fs.writeFileSync(tasksFile, JSON.stringify(filteredTasks, null, 2));
|
|
}
|
|
|
|
export interface AvailableGroup {
|
|
jid: string;
|
|
name: string;
|
|
lastActivity: string;
|
|
isRegistered: boolean;
|
|
}
|
|
|
|
export function writeGroupsSnapshot(
|
|
groupFolder: string,
|
|
isMain: boolean,
|
|
groups: AvailableGroup[],
|
|
_registeredJids?: Set<string>,
|
|
): void {
|
|
const groupIpcDir = resolveGroupIpcPath(groupFolder);
|
|
fs.mkdirSync(groupIpcDir, { recursive: true });
|
|
const visibleGroups = isMain ? groups : [];
|
|
const groupsFile = path.join(groupIpcDir, 'available_groups.json');
|
|
fs.writeFileSync(
|
|
groupsFile,
|
|
JSON.stringify(
|
|
{ groups: visibleGroups, lastSync: new Date().toISOString() },
|
|
null,
|
|
2,
|
|
),
|
|
);
|
|
}
|