File size: 1,893 Bytes
c7d34c1
 
 
 
 
 
 
 
96bdf6c
 
 
 
c7d34c1
 
96bdf6c
c7d34c1
96bdf6c
 
c7d34c1
96bdf6c
 
 
 
 
 
 
 
 
704e84f
 
 
 
 
 
 
 
 
 
 
c7d34c1
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
type StartupRecoveryDeps = {
    recoverAgentStateOnStartup: () => Promise<number>;
    appLogger: {
        info(message: string, context?: unknown): void;
        error(message: string, context?: unknown): void;
    };
};

type ServerStartupDeps = StartupRecoveryDeps & {
    startWebuiImageCleanupScheduler: () => Promise<unknown>;
};

export async function register() {
    if (process.env.NEXT_RUNTIME !== 'nodejs') return;
    const [{ recoverAgentStateOnStartup }, { appLogger }, { startWebuiImageCleanupScheduler }] = await Promise.all([
        import('./lib/agent-state-runtime'),
        import('./lib/app-logger'),
        import('./lib/webui-image-cleanup-runtime')
    ]);
    await runServerStartup({
        recoverAgentStateOnStartup,
        startWebuiImageCleanupScheduler,
        appLogger
    });
}

export async function runServerStartup(deps: ServerStartupDeps): Promise<void> {
    await runAgentStateStartupRecovery(deps);
    startWebuiImageCleanupScheduler(deps);
}

function startWebuiImageCleanupScheduler(deps: ServerStartupDeps): void {
    deps.appLogger.info('开始启动 WebUI 图片自动清理。');
    void Promise.resolve()
        .then(async () => await deps.startWebuiImageCleanupScheduler())
        .then(
            () => deps.appLogger.info('WebUI 图片自动清理启动完成。'),
            (error) => deps.appLogger.error('WebUI 图片自动清理启动失败。', error)
        );
}

export async function runAgentStateStartupRecovery(deps: StartupRecoveryDeps): Promise<void> {
    try {
        deps.appLogger.info('开始执行 Agent 状态启动恢复。');
        const recovered = await deps.recoverAgentStateOnStartup();
        deps.appLogger.info('Agent 状态启动恢复完成。', { recovered });
    } catch (error) {
        deps.appLogger.error('Agent 状态启动恢复失败。', error);
        throw error;
    }
}