/**
 * chat_watcher_autostart (T-CHAT-REALTIME) — make SessionStart actually SET UP
 * chat, instead of only claiming the lease.
 *
 * The gap: SessionStart's only chat action was `claimUmbrellaLeaseForSession`.
 * It never started the inbound watcher, so a fresh/restarted session received
 * Telegram messages ONLY at a turn boundary (the Stop-hook drive) — an idle
 * session never got them, and a restart "did nothing" for chat. This primitive,
 * dispatched on `session_start`, returns an `inject_context` directive telling
 * the agent to start the real-time inbound watcher (`opensquid chat watch` under
 * the `Monitor` tool) IF the umbrella has a chat channel configured. The watcher
 * streams each inbound message to the agent the instant it lands (OS file-events,
 * push — not a busy-poll), so an idle session wakes and replies in real time,
 * with NO `--channels` dev flag.
 *
 * Only the AGENT can call `Monitor`, so a hook can only DIRECT it — this is that
 * directive. Gated on a resolvable umbrella + a configured telegram channel so it
 * is silent for sessions with no chat. Fail-open: any error → null (a health
 * primitive must never block a session begin).
 *
 * Imports from: zod, ../runtime/result.js, ../channels/routing.js.
 * Imported by: src/runtime/bootstrap.ts (registry wiring).
 */
import { z } from 'zod';
import type { FunctionDef } from './registry.js';
declare const NoArgs: z.ZodObject<{}, "strict", z.ZodTypeAny, {}, {}>;
interface AutostartResult {
    kind: 'inject_context';
    content: string;
}
export declare const ChatWatcherAutostart: FunctionDef<z.input<typeof NoArgs>, AutostartResult | null>;
export {};
//# sourceMappingURL=chat_watcher_autostart.d.ts.map