export declare const ROOM_SUFFIX = "room"; /** Reply text limit, matching hq.chat_messages.body. */ export declare const REPLY_MAX = 4000; /** * OUTSIDE ~/.decibel on purpose: the deny list blocks Read(~/.decibel/**) to * protect the daemon's secrets, and a worktree under it could not read its own * files (first live run, 2026-10-19). */ export declare function roomsRoot(): string; export declare function roomMcpConfigPath(projectKey: string): string; export declare function roomWorktree(projectKey: string): string; export declare function roomHooksDir(projectKey: string): string; export declare function roomBranch(projectKey: string): string; export declare function roomSessionName(projectKey: string): string; export declare function roomAgentName(projectKey: string): string; /** The project key a path's room worktree belongs to, or null if it isn't one. */ export declare function roomProjectOf(cwd: string | null | undefined): string | null; /** * Claude Code deny rules for a room session. Recorded with every dispatched * room command, so the audit shows what the agent ran under. */ export declare const ROOM_DENY: readonly string[]; /** The standing rules, in the system prompt, where room text cannot reach. */ export declare const ROOM_SYSTEM_PROMPT: string; export declare function roomClaudeArgs(mcpConfigPath: string): string[]; /** The only MCP servers a room session gets. */ export declare const ROOM_MCP_ALLOW: readonly string[]; /** * Copy the allowlisted servers out of the user's Claude config into the room's * own MCP config (mode 0600, denied to the agent). Credential-looking env vars * are dropped from each entry, as for spawned sessions (ISS-0225). Returns the * file path. Throws if decibel-tools isn't configured: a room session without * it cannot reply into the room. */ export declare function writeRoomMcpConfig(projectKey: string, claudeConfig?: string): string; /** * The room worktree for a project, created on first use. The pre-push hook is * set per WORKTREE (extensions.worktreeConfig), so it never touches Ben's checkout. */ export declare function ensureRoomWorktree(projectKey: string, projectPath: string): Promise; export interface RoomPayload { project_key?: unknown; room_id?: unknown; message_id?: unknown; text?: unknown; from?: { user_id?: unknown; name?: unknown; email?: unknown; outside_owner_org?: unknown; } | null; policy?: { build?: unknown; ship?: unknown; reply?: unknown; } | null; } /** * What the room session receives. The person's text is fenced and labelled as * data. policy is shown as a hint; the rules that bind live in the system * prompt and the deny list, not here. */ export declare function frameRoomMessage(commandId: string, p: RoomPayload): string; //# sourceMappingURL=rooms.d.ts.map