/** Where to send instructional and prompt text. */ export interface InitIO { /** Display a line to the user (stdout in interactive use). */ print(line: string): void; /** Display a diagnostic warning (stderr — must NEVER pollute stdout when --json is in play). */ warn?(line: string): void; /** Read one line of input (or undefined when stream closed/non-interactive). */ ask(prompt: string): Promise; } export interface InitOptions { io: InitIO; /** Override the user's home directory (tests). */ homeDir?: string; /** Use these answers verbatim — skips prompts (`--non-interactive` mode). */ answers?: Partial; /** When true, overwrite an existing ~/.omp/.env without asking. */ force?: boolean; } export interface InitAnswers { slackBotToken: string; slackAppToken: string; copilotTmuxSession: string; slackAllowedUsers: string; /** * Default Slack target for `omp gateway notify` and `/slack send`. Channel * ID (`C…`/`G…`/`D…`) or user ID (`U…`). Optional — when unset, all notify * calls must pass an explicit `--target`. */ slackHomeChannel: string; } export interface InitResult { /** Whether the file was written. False when the user aborted. */ ok: boolean; /** Resolved file path. */ path: string; /** Reason when ok=false. */ reason?: string; } /** * Slack app manifest pre-configured for the omp gateway bridge. Includes the * bot scopes Slack requires before letting you install the app, plus event * subscriptions for DMs and @mentions, plus Socket Mode (no public URL). * * Keep this in sync with docs/slack-setup.md. If you change one, change both. */ export declare const SLACK_APP_MANIFEST_YAML = "display_information:\n name: omp-copilot\n description: Bridge to a local GitHub Copilot CLI session\nfeatures:\n bot_user:\n display_name: omp-copilot\n always_online: true\n app_home:\n messages_tab_enabled: true\n messages_tab_read_only_enabled: false\noauth_config:\n scopes:\n bot:\n - app_mentions:read\n - chat:write\n - im:history\n - im:read\n - im:write\nsettings:\n event_subscriptions:\n bot_events:\n - app_mention\n - message.im\n interactivity:\n is_enabled: false\n org_deploy_enabled: false\n socket_mode_enabled: true\n"; /** * Run the interactive setup. Idempotent — re-running shows masked existing * values and offers to overwrite (or pass `force: true`). * * Validation: * - bot token must start with `xoxb-` (we re-prompt up to 2 times) * - app token must start with `xapp-` (we re-prompt up to 2 times) * - empty bot/app token in non-interactive mode is an error */ export declare function runEnvInit(opts: InitOptions): Promise;