/** * The Harness's map of an app: the pages a survey reached before a drive, and what each showed. * * Built on the daemon with no model (the survey clicks nav links and toggles, never a field and never * a write), kept in `.reticle/harness-map.json`, refreshed from what each drive reads, and sent to the * platform when a drive starts. A drive that misses its goal on one page looks it up here instead of * guessing, and the search before grading starts from it. */ import { z } from 'zod'; /** Bounds on what one map holds: a dashboard's pages, not its rows. */ export declare const HarnessMapLimit: { readonly PAGES: 40; readonly TEXTS: 60; readonly CONTROLS: 40; readonly TEXT: 200; }; export declare const HarnessMapPageSchema: z.ZodObject<{ /** The page's path (and hash), without its query or Reticle's own parameters. */ route: z.ZodString; /** Its first heading, when it has one. */ heading: z.ZodOptional; /** The words it showed: headings, labels and text, in reading order. */ texts: z.ZodArray; /** Its controls, as `role "name"`. */ controls: z.ZodArray; /** How the survey got here: the control on the start page, or absent for the start page. */ reachedBy: z.ZodOptional; /** When this page was last read (epoch ms, injected). */ at: z.ZodNumber; }, "strip", z.ZodTypeAny, { route: string; at: number; texts: string[]; controls: string[]; heading?: string | undefined; reachedBy?: string | undefined; }, { route: string; at: number; texts: string[]; controls: string[]; heading?: string | undefined; reachedBy?: string | undefined; }>; export type HarnessMapPage = z.infer; export declare const HarnessMapSchema: z.ZodObject<{ /** When the survey last ran (epoch ms, injected); a drive's own reads refresh pages, not this. */ surveyedAt: z.ZodNumber; pages: z.ZodArray; /** The words it showed: headings, labels and text, in reading order. */ texts: z.ZodArray; /** Its controls, as `role "name"`. */ controls: z.ZodArray; /** How the survey got here: the control on the start page, or absent for the start page. */ reachedBy: z.ZodOptional; /** When this page was last read (epoch ms, injected). */ at: z.ZodNumber; }, "strip", z.ZodTypeAny, { route: string; at: number; texts: string[]; controls: string[]; heading?: string | undefined; reachedBy?: string | undefined; }, { route: string; at: number; texts: string[]; controls: string[]; heading?: string | undefined; reachedBy?: string | undefined; }>, "many">; }, "strip", z.ZodTypeAny, { surveyedAt: number; pages: { route: string; at: number; texts: string[]; controls: string[]; heading?: string | undefined; reachedBy?: string | undefined; }[]; }, { surveyedAt: number; pages: { route: string; at: number; texts: string[]; controls: string[]; heading?: string | undefined; reachedBy?: string | undefined; }[]; }>; export type HarnessMap = z.infer;