/** * The prompt side of a verification: what the user asked for, relayed by the agent, and every * statement in it and in the agent's declared intents, classified and attributed. Daemon-side only: * a run carries it loosely (`context`), so it adds nothing to what a page downloads. */ import { z } from 'zod'; /** What a statement in the prompt context is, so a reader can tell a goal from a preference. */ export declare const StatementKind: { /** What the product should do for its users: the reason the work exists. */ readonly BUSINESS_INTENT: "business-intent"; /** What to change in the code: implement, fix, refactor, rename, test. */ readonly CODING_INTENT: "coding-intent"; /** How it must look or feel: layout, spacing, mobile, accessibility. */ readonly UX_EXPECTATION: "ux-expectation"; /** Who may see or do what, and what must never leak. */ readonly SECURITY: "security-requirement"; readonly ACCEPTANCE: "acceptance-criterion"; readonly CONSTRAINT: "technical-constraint"; readonly PREFERENCE: "preference"; /** What not to touch, or not now. */ readonly OUT_OF_SCOPE: "out-of-scope"; }; export type StatementKind = (typeof StatementKind)[keyof typeof StatementKind]; /** Who said it. The user's words reach Reticle through the agent, so `user` means relayed verbatim. */ export declare const StatementSource: { readonly USER: "user"; readonly AGENT: "agent"; }; export type StatementSource = (typeof StatementSource)[keyof typeof StatementSource]; /** * A statement's kind, by the words in it. * * ponytail: keyword rules, not a model. Good enough to separate "the checkout must show the total" * from "use the existing Button" from "I prefer it darker"; a model classifier can replace this * function without changing what is stored. */ export declare function classifyStatement(text: string): StatementKind; /** A request split into the sentences a reader would weigh one at a time. */ export declare function splitStatements(text: string): string[]; /** * The prompt side of a verification: what the user asked for (relayed by the agent), and each * statement in it and in the agent's declared intents, classified and attributed. * * `shared` decides whether it leaves this machine. A linked project shares it by default, so the * platform can read what each run was for; `"shareRequests": false` in .reticle.json keeps it here, * and an unlinked project has nowhere to send it. See `shareableRun`. */ export declare const PromptContextSchema: z.ZodObject<{ /** The whole prompt, redacted. Long prompts are the useful ones, so the cap is generous. */ request: z.ZodOptional; statements: z.ZodDefault; source: z.ZodNativeEnum<{ readonly USER: "user"; readonly AGENT: "agent"; }>; }, "strip", z.ZodTypeAny, { text: string; kind: "business-intent" | "coding-intent" | "ux-expectation" | "security-requirement" | "acceptance-criterion" | "technical-constraint" | "preference" | "out-of-scope"; source: "agent" | "user"; }, { text: string; kind: "business-intent" | "coding-intent" | "ux-expectation" | "security-requirement" | "acceptance-criterion" | "technical-constraint" | "preference" | "out-of-scope"; source: "agent" | "user"; }>, "many">>; /** When the request was given, epoch ms. A run long after it is not about it. */ at: z.ZodOptional; shared: z.ZodOptional; }, "strip", z.ZodTypeAny, { statements: { text: string; kind: "business-intent" | "coding-intent" | "ux-expectation" | "security-requirement" | "acceptance-criterion" | "technical-constraint" | "preference" | "out-of-scope"; source: "agent" | "user"; }[]; at?: number | undefined; request?: string | undefined; shared?: boolean | undefined; }, { at?: number | undefined; request?: string | undefined; statements?: { text: string; kind: "business-intent" | "coding-intent" | "ux-expectation" | "security-requirement" | "acceptance-criterion" | "technical-constraint" | "preference" | "out-of-scope"; source: "agent" | "user"; }[] | undefined; shared?: boolean | undefined; }>; export type PromptContext = z.infer; /** A run as it may leave this machine: its prompt context only when the project shares it. */ export declare function shareableRun(run: unknown): unknown;