import type { UiAgentProviderKind, EffortLevel } from "./providers.js";
export interface CronAction {
    type: "start_session" | "send_message";
    prompt?: string;
    folder?: string;
    maxTurns?: number;
    /**
     * Agent provider to run this action against. Omit (undefined) to use the
     * agent's default — typically Claude Code unless the agent has been
     * configured otherwise. Persisted as part of CronAction so each cron job
     * can independently target Claude Code or OpenRouter.
     */
    provider?: UiAgentProviderKind;
    /**
     * Model for the action's provider — an OR slug/alias when {@link provider}
     * is "openrouter", an Anthropic model alias ("opus", "sonnet", "haiku",
     * "opusplan") or full model ID when "claude-code". Empty/undefined falls
     * through to the provider's global default in Settings → API.
     */
    model?: string;
    /**
     * OpenRouter reasoning-effort level. Only honored when {@link provider}
     * is "openrouter". `undefined` skips the `reasoning` payload entirely.
     */
    effort?: EffortLevel;
    /**
     * Require the spawned session to explicitly call the objective_complete
     * tool before it is considered done. If the session's message stream ends
     * without the call, it is re-prompted to continue (up to a cap). Default:
     * false — the session ends when the stream ends (current behavior).
     */
    requireExplicitCompletion?: boolean;
}
export interface QuietHours {
    enabled: boolean;
    start: string;
    end: string;
}
export interface CronJob {
    id: string;
    name: string;
    schedule: string;
    type: "one-off" | "recurring" | "indefinite";
    status: "active" | "paused" | "completed";
    lastRun?: number;
    nextRun?: number;
    description: string;
    action: CronAction;
    isDefault?: boolean;
    skipIfRunning?: boolean;
    quietHours?: QuietHours;
}
export interface EventSubscription {
    connectionAlias: string;
    enabled: boolean;
}
export interface FilterCondition {
    field: string;
    operator: "equals" | "contains" | "matches" | "exists" | "not_exists";
    value?: string;
}
export interface TriggerFilter {
    source?: string;
    eventType?: string;
    conditions?: FilterCondition[];
}
export interface TriggerDebounce {
    enabled: boolean;
    windowMs: number;
    maxWaitMs?: number;
}
export interface Trigger {
    id: string;
    name: string;
    description: string;
    status: "active" | "paused";
    filter: TriggerFilter;
    action: CronAction;
    lastTriggered?: number;
    triggerCount: number;
    quietHours?: QuietHours;
    debounce?: TriggerDebounce;
}
export interface ActivityEntry {
    id: string;
    type: "chat" | "event" | "cron" | "connection" | "system" | "trigger";
    message: string;
    timestamp: number;
    metadata?: Record<string, unknown>;
}
//# sourceMappingURL=agentFeatures.d.ts.map