import type { ExtensionAPI } from "@earendil-works/pi-coding-agent"; import type { AftConfig } from "./config.js"; export interface WorkflowHintsOpts { toolSurface: "minimal" | "recommended" | "all"; hoistBuiltins: boolean; semanticEnabled: boolean; bashBackgroundEnabled: boolean; bashCompressionEnabled: boolean; /** Set of tool names KNOWN-ABSENT from the registered surface. */ absentTools: Set; /** Whether the hashline `edit` arm is the one actually registered. */ hashlineEffective?: boolean; } /** * Routing rule for hashline sessions. Kept byte-identical to the OpenCode copy. * * Navigation tools return source that looks edit-ready but never publishes a * snapshot, so an agent that inspects a symbol and then patches it is refused * for a tag it believes it already has. */ export declare const HASHLINE_TAG_SOURCE_HINT = "**Hashline edit tags**: Only `read` (and accepted AFT `cat`/`head`/`tail` rewrites) mint hashline tags. `aft_zoom`, `aft_outline`, `grep`, `aft_search`, and conflict snippets do not. After navigation, call `read` on every file and range the patch addresses."; export declare function buildWorkflowHints(opts: WorkflowHintsOpts): string | null; export declare function buildHintsFromConfig(config: AftConfig, absentTools: Set, hoistBuiltins: boolean, hashlineEffective?: boolean): string | null; interface ToolSurfaceFlags { outline: boolean; zoom: boolean; semantic: boolean; navigate: boolean; inspect: boolean; hoistBuiltinTools: boolean; hoistGrep: boolean; hoistBash: boolean; hoistEdit: boolean; hoistRead: boolean; } /** * Register the workflow-hints extension on Pi via `before_agent_start`. * * Pi assembles a fresh system prompt for every turn, then fires * `before_agent_start` with the assembled prompt. Our handler appends the * AFT workflow hints block to that prompt. If multiple extensions return a * `systemPrompt`, Pi chains them — so we always append (never replace). */ export declare function registerWorkflowHints(pi: ExtensionAPI, config: AftConfig, surface: ToolSurfaceFlags): void; export {}; //# sourceMappingURL=workflow-hints.d.ts.map