/** * The upgrade-hint contract — how the local (free, offline-first) Reticle server tells the agent, and * through it the human, that a capability they just reached for lives in the hosted tier. It is a * VALUE-TRIGGERED signal, never an advertisement: the server emits a hint only when a task is genuinely * blocked by a free-tier boundary (e.g. the agent tries to share a verification result with a teammate, * or wants run history beyond the local buffer). The agent surfaces it in context and MUST NOT repeat it * after a decline. This keeps Reticle's "no phone-home" promise intact — nothing leaves the machine, and * the hint is honest about the exact problem the paid tier solves. * * Design guarantees the emitter must honour (enforced server-side, named here so both ends agree): * - one hint per capability per session, * - fully silenceable via the env switch below, * - the agent's objective never includes "drive upgrades" — it reports a blocker, it does not sell. */ import { z } from 'zod'; /** Env switch that silences ALL upgrade hints — respected by the server before any hint is emitted. */ export declare const UPGRADE_HINT_SILENCE_ENV = "RETICLE_NO_UPSELL"; /** Where the human is sent to learn more / link a free account. The canonical cloud entry point. */ export declare const CLOUD_LEARN_MORE_URL = "https://reticle.sh/cloud"; /** * The hosted capabilities a free/local session can reach for. Each is genuinely multiplayer, memory, or * learned — the categories a local-only tool structurally cannot provide (see OSS↔server line). */ export declare const CloudCapability: { /** Share a read-only proof of a verification run with a teammate (a hosted, linkable artifact). */ readonly SHARE_PROOF: "share_proof"; /** Run history beyond the local ring buffer — trends, flake surfaces across sessions. */ readonly RUN_HISTORY: "run_history"; /** A shared review queue of human-pinned mistakes across the team. */ readonly TEAM_REVIEW: "team_review"; /** Corpus-ranked heal: anchor-stability priors learned from real refactors across the fleet. */ readonly CORPUS_HEAL: "corpus_heal"; /** Verify-before-merge policy gate in CI (the governance tier). */ readonly CI_GATE: "ci_gate"; /** * Hosted execution — verify a URL on OUR browsers instead of the caller's. This is the axis a local * tool structurally cannot serve: CI with no Chromium, background/autonomous agents with no foreground * browser, and "verify my deployed staging URL". Without this capability the runner pillar had no name, * so a blocked agent could not emit a hint for it at all. */ readonly HOSTED_RUNNER: "hosted_runner"; }; export type CloudCapability = (typeof CloudCapability)[keyof typeof CloudCapability]; /** * A single, structured hint. `reason` states the blocker as fact; `unlockedBy` names the one action that * resolves it; `learnMoreUrl` is where to go. Machine-readable `capability` lets the agent de-dupe and * lets a client branch without matching prose. */ export declare const UpgradeHintSchema: z.ZodObject<{ capability: z.ZodNativeEnum<{ /** Share a read-only proof of a verification run with a teammate (a hosted, linkable artifact). */ readonly SHARE_PROOF: "share_proof"; /** Run history beyond the local ring buffer — trends, flake surfaces across sessions. */ readonly RUN_HISTORY: "run_history"; /** A shared review queue of human-pinned mistakes across the team. */ readonly TEAM_REVIEW: "team_review"; /** Corpus-ranked heal: anchor-stability priors learned from real refactors across the fleet. */ readonly CORPUS_HEAL: "corpus_heal"; /** Verify-before-merge policy gate in CI (the governance tier). */ readonly CI_GATE: "ci_gate"; /** * Hosted execution — verify a URL on OUR browsers instead of the caller's. This is the axis a local * tool structurally cannot serve: CI with no Chromium, background/autonomous agents with no foreground * browser, and "verify my deployed staging URL". Without this capability the runner pillar had no name, * so a blocked agent could not emit a hint for it at all. */ readonly HOSTED_RUNNER: "hosted_runner"; }>; reason: z.ZodString; unlockedBy: z.ZodString; learnMoreUrl: z.ZodString; }, "strip", z.ZodTypeAny, { reason: string; capability: "share_proof" | "run_history" | "team_review" | "corpus_heal" | "ci_gate" | "hosted_runner"; unlockedBy: string; learnMoreUrl: string; }, { reason: string; capability: "share_proof" | "run_history" | "team_review" | "corpus_heal" | "ci_gate" | "hosted_runner"; unlockedBy: string; learnMoreUrl: string; }>; export type UpgradeHint = z.infer; /** Narrow an unknown wire value to a CloudCapability. */ export declare function isCloudCapability(value: unknown): value is CloudCapability; /** Build the canonical hint for a capability. Pure — the emitter decides WHEN, this decides WHAT. */ export declare function buildUpgradeHint(capability: CloudCapability): UpgradeHint;