/** * `CampaignRecipe` — the declarative definition of a Sitecore * Orchestrate campaign (a `project`, with its nested deliverables and * tasks). * * This schema is the single source of truth for the `campaign` recipe * kind: it validates recipe files, drives the `sync` CLI, and becomes * the MCP tool input schema. Keep the `.describe()` text accurate — the * model reads it. See docs/recipe-sync-architecture.md. */ import { z } from "zod"; /** * Server enum values **confirmed by observation** in HAR captures of the * Sitecore Content Operations UI driving the Orchestrate API. Other * values likely exist in the server's enum — `recipe pull` from a tenant * with a live `IN_PROGRESS` campaign must still round-trip cleanly — so * the schema accepts the known set as a strong hint and falls back to * `z.string()`. JSON Schema renders this as `anyOf: [{ enum: [...] }, { type: * "string" }]`, which the model reads as "prefer one of these values; new * uppercase enums are acceptable too". * * Update the lists when more values are observed; the trailing * `z.string()` keeps the schema permissive in the meantime. */ export declare const KNOWN_CAMPAIGN_STATUSES: readonly ["NOT_STARTED"]; export declare const KNOWN_CAMPAIGN_FUNNEL_STAGES: readonly ["TOP"]; /** * A task — the leaf work item of a campaign. Owned by a deliverable. * Identified within its deliverable by `name`; server ids are dropped * from a captured recipe. */ export declare const CampaignTaskSchema: z.ZodObject<{ handle: z.ZodOptional; sitecoreId: z.ZodOptional; name: z.ZodString; status: z.ZodOptional, z.ZodString]>>; dueDate: z.ZodOptional; priority: z.ZodOptional; description: z.ZodOptional; assignee: z.ZodOptional; labels: z.ZodDefault>; dependencies: z.ZodDefault>; }, z.core.$strip>; /** * A deliverable — a funnel-stage grouping of tasks under a campaign. * Matched within its campaign by `handle` (stamped into the wire's * `labels` array as `handle:`) when present, falling back to * `name`. Stable handles keep re-syncs idempotent even when the LLM * picks different display names between story regenerates. */ export declare const CampaignDeliverableSchema: z.ZodObject<{ handle: z.ZodOptional; sitecoreId: z.ZodOptional; name: z.ZodString; status: z.ZodOptional, z.ZodString]>>; dueDate: z.ZodOptional; funnelStage: z.ZodOptional, z.ZodString]>>; funnelTactics: z.ZodDefault>; labels: z.ZodDefault>; tasks: z.ZodDefault; sitecoreId: z.ZodOptional; name: z.ZodString; status: z.ZodOptional, z.ZodString]>>; dueDate: z.ZodOptional; priority: z.ZodOptional; description: z.ZodOptional; assignee: z.ZodOptional; labels: z.ZodDefault>; dependencies: z.ZodDefault>; }, z.core.$strip>>>; }, z.core.$strip>; /** * A campaign member — a tenant user attached to the project with a * role. Verified roles (TestDemo 2026-06-03): `ADMIN`, `EDITOR`, * `VIEWER`, `MEMBER`. The `role` field is omittable; the server * default behaviour is captured in the project's UI permissions * model and not yet documented here. */ export declare const CampaignMemberSchema: z.ZodObject<{ authorId: z.ZodString; role: z.ZodOptional>; }, z.core.$strip>; /** The full campaign recipe — a project plus its nested deliverables. */ export declare const CampaignRecipeSchema: z.ZodObject<{ handle: z.ZodOptional; sitecoreId: z.ZodOptional; name: z.ZodString; description: z.ZodOptional; status: z.ZodOptional, z.ZodString]>>; startDate: z.ZodOptional; dueDate: z.ZodOptional; brandKitId: z.ZodOptional; thumbnailUrl: z.ZodOptional; labels: z.ZodDefault>; members: z.ZodDefault>; }, z.core.$strip>>>; deliverables: z.ZodDefault; sitecoreId: z.ZodOptional; name: z.ZodString; status: z.ZodOptional, z.ZodString]>>; dueDate: z.ZodOptional; funnelStage: z.ZodOptional, z.ZodString]>>; funnelTactics: z.ZodDefault>; labels: z.ZodDefault>; tasks: z.ZodDefault; sitecoreId: z.ZodOptional; name: z.ZodString; status: z.ZodOptional, z.ZodString]>>; dueDate: z.ZodOptional; priority: z.ZodOptional; description: z.ZodOptional; assignee: z.ZodOptional; labels: z.ZodDefault>; dependencies: z.ZodDefault>; }, z.core.$strip>>>; }, z.core.$strip>>>; }, z.core.$strip>; /** A validated campaign recipe. */ export type CampaignRecipe = z.infer; /** A deliverable within a campaign recipe. */ export type CampaignDeliverable = z.infer; /** A task within a campaign recipe. */ export type CampaignTask = z.infer;