/** * @license * Copyright 2025 Vybestack LLC * SPDX-License-Identifier: Apache-2.0 */ /** * @plan PLAN-20260130-ASYNCTASK.P18 * @plan PLAN-20260130-ASYNCTASK.P20 * @requirement REQ-ASYNC-010, REQ-ASYNC-011 */ import type { AsyncTaskManager, AsyncTaskInfo } from './asyncTaskManager.js'; import type { AsyncTaskReminderService } from './asyncTaskReminderService.js'; /** * Auto-triggers agent turns when async tasks complete and the agent is idle. * Subscribes to task completion/failure events from AsyncTaskManager. * @pseudocode auto-trigger.md */ export declare class AsyncTaskAutoTrigger { private readonly taskManager; private readonly reminderService; private isTriggering; private isAgentBusy; private triggerAgentTurn; constructor(taskManager: AsyncTaskManager, reminderService: AsyncTaskReminderService, isAgentBusy: () => boolean, triggerAgentTurn: (message: string) => Promise); /** * Replace the callbacks with fresh closures (called on React re-renders). */ updateCallbacks(isAgentBusy: () => boolean, triggerAgentTurn: (message: string) => Promise): void; /** * Called when an async task completes. * Schedules an auto-trigger check. */ onTaskCompleted(_task: AsyncTaskInfo): void; /** * Called when an async task fails. * Schedules an auto-trigger check (same logic as completion). */ onTaskFailed(_task: AsyncTaskInfo): void; /** * Set up subscriptions to AsyncTaskManager events. * Returns an unsubscribe function. */ subscribe(): () => void; /** * Check if auto-trigger should run and execute if so. * Serializes triggers: only one in flight at a time. * @requirement REQ-ASYNC-010, REQ-ASYNC-011 */ private maybeAutoTrigger; }