import { type LabConfig } from "./lab-config.js"; export { LAB_CONFIG_SCHEMA } from "./lab-config.js"; export type { LabConfig } from "./lab-config.js"; export declare const LAB_LIST_SCHEMA = "humanish.lab-list.v1"; export declare const LAB_INSPECT_SCHEMA = "humanish.lab-inspect.v1"; export type LabOrigin = "committed" | "ignored" | "explicit"; export interface ResolvedLabConfig { config: LabConfig; origin: LabOrigin; path: string; warnings: string[]; } export interface LabResolveFailure { ok: false; cwd: string; lab: string; error: { code: "HUMANISH_LAB_NOT_FOUND" | "HUMANISH_LAB_INVALID"; message: string; }; warnings: string[]; } export type LabResolveResult = ({ ok: true; } & ResolvedLabConfig) | LabResolveFailure; export interface LabListEntry { id: string; source: LabConfig["subject"]["source"]; origin: LabOrigin; path: string; title?: string; /** * The manifest's own first sentence. The list is where someone decides which study to open, and a * list of names cannot answer "what is this one" for a project with twenty labs in it — the * stakeholder feedback that added this was, verbatim, "so i know wtf they are". */ description?: string; } export interface LabListResult { schema: typeof LAB_LIST_SCHEMA; ok: true; cwd: string; labs: LabListEntry[]; warnings: string[]; } export interface LabInspectResult { schema: typeof LAB_INSPECT_SCHEMA; ok: boolean; cwd: string; lab: string; config?: LabConfig; origin?: LabOrigin; path?: string; error?: LabResolveFailure["error"]; warnings: string[]; } export declare function resolveLabManifest(cwd: string, lab: string): Promise; export declare function listLabManifests(cwd: string): Promise; export declare function inspectLabManifest(cwd: string, lab: string): Promise;