/** * Zoe CLI — System Prompts * * Two system prompts, selected by launch mode: * - non-interactive (headless / piped / docker / --no-interactive): * the Docker-native "worker unit" prompt — byte-identical to the * historical CLI system prompt. * - interactive (TTY + interactive flag): a general-purpose agent * prompt tuned for a live terminal session (the TUI, or * interactive readline). * * Mode detection reuses the CLI's existing signals — Commander's * `options.interactive` (`--no-interactive`) and `isNonInteractive()` * (TTY / docker / env). Core's `runAgentLoop` stays mode-agnostic: it * only receives the selected prompt string. */ export type LaunchMode = 'interactive' | 'non-interactive'; /** * Shared, runtime-derived environment block embedded in every prompt. * Leading and trailing newlines are intentional — callers interpolate it * between section headers. */ export declare function buildSystemInfoBlock(): string; /** * Non-interactive / Docker / headless prompt. * Byte-identical to the historical CLI system prompt. */ export declare function buildSystemPrompt(): string; /** * Interactive prompt for terminal sessions (TUI or interactive readline). * * Role, tool list, numbered process, and output format follow the * interactive-agent conventions shared by tools like Command Code; the * working principles mirror this project's own engineering standards * (think before acting, surgical changes, simplicity, goal-driven). */ export declare function buildInteractiveSystemPrompt(): string; /** * Resolve launch mode from the CLI's two existing interactive signals. * * A session is interactive only when the Commander interactive flag is on * (i.e. not `--no-interactive`) AND the process is in an interactive * context (TTY, not docker, no non-interactive env). This matches every * documented launch path: * - plain `zoe` in a TTY -> interactive * - `zoe -n` / `--no-interactive` -> non-interactive * - piped stdin -> non-interactive * - `zoe --docker` -> non-interactive */ export declare function resolveLaunchMode(options: { interactive?: boolean; }): LaunchMode; /** * Select the system prompt for a launch mode. */ export declare function selectSystemPrompt(mode: LaunchMode): string;