/** * The real candidate sources behind `/workflow` completion (spec §14.6/§14.7) — the only part of the * feature that touches a disk, so completions.ts can stay pure. * * Both sources run on a keystroke, which dictates their shape: * * - **Installed workflow identity comes from filenames, never an import.** Completion and run lookup * share the same cheap directory enumeration, so a completed suggestion names the exact file the * command will load. Declared definition names remain internal to workflow composition. * - **The run listing is memoized for one second.** Listing parses every run's log, so a burst of * keystrokes must cost one read; one second is short enough that nothing has to invalidate it after a * run starts, is cancelled, or is deleted (spec §14.6). * * The location is captured rather than resolved per call because the completion callback is handed no * context at all — no `cwd`, no session manager, no store (spec §14.2). It captures BOTH values the * command handler builds its store from (spec §14.7): authored workflows are keyed by project root * (§6.8) and a run's artifacts by the harness's session directory (§8.9), and `runArtifactsDir` needs * the pair to resolve either way. The extension re-captures them from every `session_start`; this copy * exists for completion only, and the handlers keep resolving from their own invocation's context. */ import type { CompletionSources } from "./completions.ts"; /** Completion sources bound to a location the extension re-points on every session start. */ export interface ProjectCompletionSources extends CompletionSources { /** Point the sources at the project and session directory of the session that just started (spec §14.7). */ setProject(cwd: string, sessionDir: string): void; } export declare function createCompletionSources(): ProjectCompletionSources; //# sourceMappingURL=completion-sources.d.ts.map