import type { ElevatedLevel, ReasoningLevel } from "./directives.js"; export const SYSTEM_MARK = "⚙️"; export const formatDirectiveAck = (text: string): string => { if (!text) return text; if (text.startsWith(SYSTEM_MARK)) return text; return `${SYSTEM_MARK} ${text}`; }; export const formatOptionsLine = (options: string) => `Options: ${options}.`; export const withOptions = (line: string, options: string) => `${line}\n${formatOptionsLine(options)}`; export const formatElevatedRuntimeHint = () => `${SYSTEM_MARK} Runtime is direct; sandboxing does not apply.`; export const formatElevatedEvent = (level: ElevatedLevel) => level === "on" ? "Elevated ON — exec runs on host; set elevated:false to stay sandboxed." : "Elevated OFF — exec stays in sandbox."; export const formatReasoningEvent = (level: ReasoningLevel) => { if (level === "stream") return "Reasoning STREAM — emit live ."; if (level === "on") return "Reasoning ON — include ."; return "Reasoning OFF — hide ."; }; export function formatElevatedUnavailableText(params: { runtimeSandboxed: boolean; failures?: Array<{ gate: string; key: string }>; sessionKey?: string; }): string { const lines: string[] = []; lines.push( `elevated is not available right now (runtime=${params.runtimeSandboxed ? "sandboxed" : "direct"}).`, ); const failures = params.failures ?? []; if (failures.length > 0) { lines.push(`Failing gates: ${failures.map((f) => `${f.gate} (${f.key})`).join(", ")}`); } else { lines.push( "Fix-it keys: tools.elevated.enabled, tools.elevated.allowFrom., agents.list[].tools.elevated.*", ); } if (params.sessionKey) { lines.push(`See: clawdbot sandbox explain --session ${params.sessionKey}`); } return lines.join("\n"); }