/** * settings.ts — Where the channel's files live, and what it was configured * with. * * Everything here is decided once, when pi loads the extension, and never * changes again: it is the boot-time half of what used to be 160 lines at * the top of index.ts, in front of the state machines that are the actual * subject of that file. * * Where the files live is `paths.ts` (shared with the worker); this module * re-exports it so call sites still read every boot-time constant from one * import. * * Two kinds of value live here, and the line between them is load-bearing: * * - **Preferences** come from `config.ts`'s defaults, overlaid by * `~/.pi/wechat/config.json`. They are named as `const`s so call sites * read the same as they always did. * - **Protocol timings** stay in source, deliberately. The delivery * invariants in CLAUDE.md depend on the *relationships* between them * (ack timeout vs. retry delay vs. park timeout, shutdown grace vs. the * worker's read loop), and a config file that can desynchronise them * breaks replies in ways no error message explains. * * Nothing is logged from here. The warnings are handed to index.ts, which * owns the logger and also has to notify the operator about them — a * rejected setting that leaves no trace on screen is indistinguishable * from a setting that does nothing. */ import { type ChannelConfig } from './config.js'; import { CONFIG_FILE, LOG_FILE, MEDIA_DIR, OWNER_FILE, STATE_FILE, WECHAT_HOME } from './paths.js'; export { WECHAT_HOME, MEDIA_DIR, LOG_FILE, CONFIG_FILE, OWNER_FILE, STATE_FILE }; export declare const LEGACY_QUEUE_FILE: string; /** * The effective settings, and the keys that were ignored getting there. * * The warnings are kept, not just logged: a rejected value or a misspelled * key in a file nobody opens is how someone spends an afternoon wondering * why their setting does nothing. `/wechat config` prints them, and * `/wechat status` says how many there are. */ export declare const CONFIG: ChannelConfig, CONFIG_WARNINGS: string[]; export declare const OWNER_USER_ID: string; export declare const AI_PREFIX: string; export declare const MERGE_DEBOUNCE_MS: number; export declare const MAX_MERGE_MESSAGES: number; export declare const RATE_LIMIT_MAX: number; export declare const RATE_LIMIT_WINDOW_MS: number; export declare const AGENT_TIMEOUT_MS: number; export declare const PRESERVE_MARKDOWN: boolean; export declare const AUTO_LOGIN: boolean; export declare const PROGRESS_UPDATES: boolean; export declare const PROGRESS_INTERVAL_MS: number; export declare const NOTIFY_FAILURES: boolean; export declare const CHANNEL_COMMAND_PREFIX: string; export declare const INLINE_IMAGES: boolean; export declare const MAX_INLINE_IMAGE_BYTES: number; export declare const STEER_WHILE_BUSY: boolean; /** Tools that must not run on a turn this channel dispatched. */ export declare const TERMINAL_ONLY_TOOLS: string[]; export declare const MAX_DELIVERY_ATTEMPTS: number; export declare const DELIVERY_PARK_TIMEOUT_MS: number; /** How often to re-assert "typing..." while the agent works. */ export declare const TYPING_REFRESH_MS = 10000; export declare const HEARTBEAT_INTERVAL_MS = 30000; export declare const HEARTBEAT_TIMEOUT_MS = 90000; export declare const WORKER_READY_TIMEOUT_MS = 10000; export declare const QR_URL_TIMEOUT_MS = 30000; export declare const MAX_DEDUP_SET = 100; export declare const MAX_RESTART_INTERVAL_MS = 60000; export declare const WORKER_SHUTDOWN_GRACE_MS = 400; export declare const RELOGIN_DELAY_MS = 5000; export declare const MAX_RELOGIN_ATTEMPTS = 5; export declare const MAX_DEFERRED_NOTICES = 5; export declare const DELIVERY_RETRY_DELAY_MS = 2000; /** * Longest gap between two look-ins at a parked answer. The park timeout * itself is configurable and can be long; this bounds how stale the * channel's own view gets, because the events that would otherwise wake a * parked delivery (`Worker ready`, `login_success`) are exactly the ones * that may never fire again. */ export declare const DELIVERY_PARK_RECHECK_MS = 30000; export declare const STATE_PERSIST_DEBOUNCE_MS = 250; //# sourceMappingURL=settings.d.ts.map