import { type AftConfig } from "./config.js"; export interface WorkflowHintsOpts { /** `tool_surface` setting — controls which tools are registered. */ toolSurface: "minimal" | "recommended" | "all"; /** `hoist_builtin_tools` setting — affects tool name (read vs aft_read). */ hoistBuiltins: boolean; /** `experimental.semantic_search` — gates `aft_search` mention. */ semanticEnabled: boolean; /** `bash.background` — gates background-bash paragraph. */ bashBackgroundEnabled: boolean; /** Resolved bash compression flag. */ bashCompressionEnabled: boolean; /** Set of disabled tool names (after surface filtering). */ disabledTools: Set; } /** * Build the workflow hints block. Returns `null` when no hints are * applicable for the configured surface (e.g. `tool_surface: "minimal"` * with no aft_outline/aft_zoom available — only safety tool is registered). */ export declare function buildWorkflowHints(opts: WorkflowHintsOpts): string | null; /** * Resolve workflow-hints opts from a loaded AftConfig and the active * disabled-tools set computed at registration time. * * Background-bash gating reads the resolved bash config so the graduated * `bash.background` setting controls whether the hint appears. */ export declare function buildHintsFromConfig(config: AftConfig, disabledTools: Set): string | null; /** * Fold the hints block into a host `system[]` array in place. * * Each `system[]` entry becomes its own `role:"system"` message on the wire, * and Qwen-family chat templates (vLLM/SGLang, and LiteLLM fronting them) * reject any system message past index 0 — so the block must extend the * existing entry rather than arrive as a second message. Exported separately * from the plugin wiring so the single-message property is unit-testable. */ export declare function appendHintsToSystem(system: string[], hintsBlock: string): void; //# sourceMappingURL=workflow-hints.d.ts.map