@vectoriox/iox-ui 5.53.0 → 5.55.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -2331,6 +2331,52 @@ declare class PathIssueCollector<C extends string> {
2331
2331
  unique(values: Array<string | null>, path: (i: number) => string, what: string): void;
2332
2332
  }
2333
2333
 
2334
+ /**
2335
+ * The ONE set of builders every structured-output format is written with (AI plan §3c, M0-5 / M1-1 / M1-3 / M1-5):
2336
+ * the SiteAnalysis, the reading, the Site Plan and the plan edits. Each object is built FROM a documented shape table
2337
+ * (`shape-check`): its keys are the table's keys, the required ones are the table's required ones, each described in
2338
+ * the table's own words — and a builder handed a key list that disagrees with its table THROWS, so a shape that gains
2339
+ * a key cannot ship a format that silently lacks it. The subset is the strictest both providers' native strict modes
2340
+ * accept (Anthropic `output_config.format`, OpenRouter `json_schema` + `strict`): every object closed
2341
+ * (`additionalProperties: false`), unions as `anyOf`, single values as a one-entry `enum`, no length / count / number
2342
+ * bounds, no `$ref`. The format is a hint the provider enforces; the shared validator stays the gate.
2343
+ */
2344
+ type JsonSchema = {
2345
+ [key: string]: unknown;
2346
+ };
2347
+ declare class JsonSchemaShapeError extends Error {
2348
+ }
2349
+ declare const jsonText: () => JsonSchema;
2350
+ declare const jsonBoolean: () => JsonSchema;
2351
+ declare const jsonInteger: () => JsonSchema;
2352
+ declare const jsonOneOf: (values: ReadonlyArray<string>) => JsonSchema;
2353
+ declare const jsonListOf: (items: JsonSchema) => JsonSchema;
2354
+ declare const jsonAnyOf: (options: ReadonlyArray<JsonSchema>) => JsonSchema;
2355
+ /** A closed object with exactly these properties. */
2356
+ declare function jsonClosedObject(properties: Record<string, JsonSchema>, required: ReadonlyArray<string>, description?: string): JsonSchema;
2357
+ /** The table's own words for a key (`key` or `key?`). */
2358
+ declare function describeShapeKey(entry: ShapeEntry, key: string): string;
2359
+ /** An entry's `[name]` keys (the object's own field names) written as ONE list on the wire — no strict mode can say
2360
+ * "any key", so the map travels as `[{ name, value }]` under `key` and the decoder turns it back. */
2361
+ interface DynamicKeysAsList {
2362
+ /** The wire key holding the list. */
2363
+ key: string;
2364
+ /** The list's schema. */
2365
+ schema: JsonSchema;
2366
+ }
2367
+ /**
2368
+ * An object of one shape-table entry: exactly its fixed keys, its required keys required, each described by the
2369
+ * table; an entry's `[name]` keys are not object keys — `dynamic` writes them as one list. Throws when the properties
2370
+ * given are not the table's keys.
2371
+ */
2372
+ declare function jsonShapedObject(entry: ShapeEntry, properties: Record<string, JsonSchema>, name?: string, dynamic?: DynamicKeysAsList): JsonSchema;
2373
+ /** Every keyword a schema uses — what a spec checks against the strict subset. */
2374
+ declare function jsonSchemaKeywords(node: unknown, out?: Set<string>): Set<string>;
2375
+ /** The keywords the strict subset never uses. */
2376
+ declare const JSON_SCHEMA_BANNED_KEYWORDS: ReadonlyArray<string>;
2377
+ /** Every object node of a schema (through properties, items and anyOf). */
2378
+ declare function jsonSchemaObjects(node: unknown, out?: JsonSchema[]): JsonSchema[];
2379
+
2334
2380
  /**
2335
2381
  * The Site Plan validator — the gate in front of the composer. The wizard's plan and (later) the AI's
2336
2382
  * plan go through the SAME checks: an unknown pattern, a slot the pattern does not declare, a source
@@ -3031,6 +3077,8 @@ declare function buildStepFacts(plan: SitePlan, actions?: Readonly<Record<string
3031
3077
  * list with its price per token class, the one cost → credits rule (1 credit = 1 US cent of what the AI cost, D4),
3032
3078
  * the refusals (board 11) and a generation's stages. ONE definition: iox-cms meters and refuses with it, the
3033
3079
  * Settings ▸ AI screen and the wizard show it. Pure types, enums and helpers; no transport, no prices typed here.
3080
+ * The step and capability spellings are the control plane's (`GET /instances/me/entitlements`, AI plan "M0 control
3081
+ * plane — the instance-route contract") — the platform has ONE spelling of each.
3034
3082
  */
3035
3083
  declare enum AiProviderId {
3036
3084
  Anthropic = "anthropic",
@@ -3043,18 +3091,20 @@ declare enum AiKeyMode {
3043
3091
  }
3044
3092
  /** The steps a model works on (board 9's rows), in screen order. */
3045
3093
  declare enum AiStep {
3046
- ReadMessage = "read",
3094
+ ReadMessage = "analysis",
3047
3095
  PlanSite = "plan",
3048
- ChangePlan = "change",
3049
- MakePictures = "pictures",
3050
- NameStructures = "scan"
3096
+ ChangePlan = "planEdit",
3097
+ MakePictures = "image",
3098
+ NameStructures = "scanNaming"
3051
3099
  }
3052
3100
  declare const AI_STEPS: ReadonlyArray<AiStep>;
3101
+ /** Each step's name on the wire (the control plane's `label`, the console) — the screens translate their own. */
3102
+ declare const AI_STEP_LABELS: Readonly<Record<AiStep, string>>;
3053
3103
  /** What a model must be able to do for a step to run on it. */
3054
3104
  declare enum AiCapability {
3055
- StructuredOutput = "structured-output",
3056
- ImageInput = "image-input",
3057
- ImageOutput = "image-output"
3105
+ StructuredOutput = "structuredOutputs",
3106
+ ImageInput = "imageInput",
3107
+ ImageOutput = "imageOutput"
3058
3108
  }
3059
3109
  declare const AI_STEP_NEEDS: Readonly<Record<AiStep, ReadonlyArray<AiCapability>>>;
3060
3110
  /** Tokens a typical use of a step reads and writes (plan §3d "Where credits go") — what a shown estimate is made of. */
@@ -3067,6 +3117,8 @@ interface AiTokenCounts {
3067
3117
  cacheWrite: number;
3068
3118
  /** Read from the prompt cache (priced well below input). */
3069
3119
  cacheRead: number;
3120
+ /** Image tokens written (a picture step) — priced at `imageOutput`. */
3121
+ imageOutput?: number;
3070
3122
  }
3071
3123
  /** US dollars per million tokens, per class. A class without a price is priced as input. */
3072
3124
  interface AiTokenPrice {
@@ -3074,6 +3126,8 @@ interface AiTokenPrice {
3074
3126
  output: number;
3075
3127
  cacheWrite?: number;
3076
3128
  cacheRead?: number;
3129
+ /** Image-output tokens; a model without the price is priced at `output`. */
3130
+ imageOutput?: number;
3077
3131
  }
3078
3132
  /** A model of the vetted list (served by the control plane with the entitlements, §3n) — its price travels with it. */
3079
3133
  interface AiModelEntry {
@@ -3084,6 +3138,8 @@ interface AiModelEntry {
3084
3138
  steps: ReadonlyArray<`${AiStep}`>;
3085
3139
  /** The steps it is the default for (board 9's "recommended"). */
3086
3140
  recommendedFor?: ReadonlyArray<`${AiStep}`>;
3141
+ /** The steps it runs when the default is not available (the control plane's `fallbackModel`). */
3142
+ fallbackFor?: ReadonlyArray<`${AiStep}`>;
3087
3143
  capabilities: ReadonlyArray<`${AiCapability}`>;
3088
3144
  /** Null when the provider reports each call's cost itself and the list carries no price. */
3089
3145
  price: AiTokenPrice | null;
@@ -3169,5 +3225,253 @@ declare enum AiCallStatus {
3169
3225
  Interrupted = "interrupted"
3170
3226
  }
3171
3227
 
3172
- export { ACTIVE_BUILD_STATUSES, AI_REFUSAL_NEXT, AI_REFUSAL_STATUS, AI_STEPS, AI_STEP_NEEDS, AI_STEP_TYPICAL_TOKENS, AiCallStatus, AiCapability, AiGenerationStage, AiKeyMode, AiNextKind, AiProviderId, AiRefusalCode, AiStep, BAR_ITEMS_MAX, BAR_ITEMS_MIN, BASELINE_ROLES, BUILD_STEPS, BaselineRole, BindScope, BuildNoticeCode, BuildStep, CREDITS_PER_USD, CardBindTarget, ComposeError, ComposeIssueCode, ContentTypeAction, CreatedKind, DANGLING_LINK_CODES, DEFAULT_PHONE_MENU_BREAKPOINT, ENTRANCE_EASING, ENTRANCE_ORIGIN_LOOK, ENTRANCE_TRIGGER, EntrancePart, FACT_KEYS, FINAL_GENERATION_STAGES, GlobalSlot, KeptReason, NAV_PART_LABELS, NAV_SHAPE_COPY, NEUTRAL_STYLE_PROPS, NODE_BASELINES, NO_TOKENS, NavPagesSource, NavRole, NavShape, NavShapeError, PRICING_PATTERN, PUBLISH_BLOCKING_PLACEHOLDERS, PageDataKind, PathIssueCollector, PatternDirective, PatternGlobalPosition, PatternOpens, PatternPlaceholder, PatternRecipe, PhoneMenuBreakpoint, PlaceholderKind, PlanDataSourceMode, PlanDataSourceType, PreflightRefusalCode, RelativeOp, SAMPLE_IMAGE_REF, SITE_FACT_LABELS, SITE_HEADER_PATTERN, SITE_PATTERNS, SITE_PLAN_VERSION, SITE_TEMPLATES, SPEC_SITE_FACTS, SPEC_SITE_LIBRARY, SPEC_SITE_PATTERNS, SPEC_SITE_PLAN_SHAPE, SPEC_SITE_TEMPLATES, STUDIO_TEMPLATE, SiteBuildKind, SiteBuildStatus, SitePlanError, SitePlanIssueCode, SitePlanSourceKind, SiteTemplateError, SiteTemplateId, StepState, addBarItem, altSourceScopes, assertStyleSlots, assertValidSitePlan, barIconForRoute, blocksPublish, buildKeys, buildStepFacts, builtHomePageId, composeNavHeader, composeSection, composeSite, costUsd, createSerializedNode, creditsOfUsd, describePlanData, entranceAction, entranceInteraction, estimateStepCredits, failedBuildStep, findNavRoot, isActiveBuild, isNonEmptyString, isPlainObject, modelCanDo, moveBarItem, navPages, navShapeBreakpoint, navShapeOf, nextSourceOf, nodeBindPaths, parseSampleImageRef, pathAt, patternById, patternNeedsBinding, patternNodes, patternOptionalParts, patternScopes, patternSlots, patternTakesBinding, phoneMenuPages, planFromTemplate, planNavShape, releasedLayoutDefaults, removeBarItem, requiredShapeKeys, routeParams, sampleImageRef, sectionEntrances, setStyleProps, shapeKeys, siteNavPages, staggerDelay, validateSitePlan, walkSerialized };
3173
- export type { AddBarItemResult, AiMeter, AiModelEntry, AiRefusal, AiTokenCounts, AiTokenPrice, BarItemsEditResult, BuildNotice, BuildStepError, BuildStepFacts, BuildStepRecord, CmsDataSourcePlan, ComposeContext, ComposeIssue, ComposedDataSource, ComposedItem, ComposedNavHeader, ComposedPage, ComposedPlaceholder, ComposedRoute, ComposedSection, ComposedSite, ContentFieldPlan, ContentSeedPlan, ContentTypePlan, CreateNodeOptions, CreatedRecord, DataSourcePlan, EntranceAction, EntranceInteraction, EntranceSpec, FactKey, NavHeaderInput, NavHeaderOptions, NavPage, NavShapeOptions, NavShapeResult, NodeBaseline, PageData, PageDataLine, PagePlan, PageSectionPlan, PathIssue, PatternNode, PlainObject, PreflightRefusal, RelativeDataSourcePlan, SectionEntrances, SectionInput, SectionOptions, SerializedBinding, SerializedNode, SerializedResponsive, ShapeEntry, ShapeIssueCodes, SiteBuildRun, SiteBusiness, SitePageRef, SitePattern, SitePlan, SitePlanIssue, SitePlanSource, SitePlanValidation, SiteTemplate, TemplatePlanInput, UndoKept, UndoPreview, UndoRecord };
3228
+ /**
3229
+ * The structured-output format a model writes a Site Plan in (AI plan §3d step 4, M1-3) — built from the SAME shape
3230
+ * table `validateSitePlan` reads (`SPEC_SITE_PLAN_SHAPE`) and the SAME pattern library, so the plan a model is told
3231
+ * about is the plan the gate refuses. ONE source: a key the table gains breaks this builder until it is written here.
3232
+ *
3233
+ * Two maps of the shape are written as LISTS on the wire, because no strict mode can say "any key": a section's
3234
+ * `slots` (`[{ slot, text }]`, the slot names closed per pattern) and a seed's field values (`values: [{ field,
3235
+ * value }]`). `sitePlanFromWire` turns them back; nothing else differs. Every section is one `anyOf` branch per
3236
+ * pattern — its id, its declared slots, its optional parts, a binding only when it takes one — and the design, the
3237
+ * source and the version are PINNED to the owner's pick and this run (one-value enums), so the provider cannot let
3238
+ * a model change the look. The gate still checks both (`plan.design` deep-equals the pick).
3239
+ */
3240
+ declare const SITE_PLAN_SCHEMA_NAME = "site_plan";
3241
+ /** The wire keys of the two maps written as lists. */
3242
+ declare enum SitePlanWireKey {
3243
+ SlotName = "slot",
3244
+ SlotText = "text",
3245
+ SeedValues = "values",
3246
+ SeedField = "field",
3247
+ SeedValue = "value"
3248
+ }
3249
+ interface SitePlanSchemaPin {
3250
+ /** The owner's pick, verbatim — every design key becomes a one-value enum. */
3251
+ design: DesignChoices;
3252
+ /** This generation. */
3253
+ source: SitePlanSource;
3254
+ }
3255
+ /** A content type's field. */
3256
+ declare function fieldJsonSchema(): JsonSchema;
3257
+ /** A content type, its seed's field values as a list (`values: [{ field, value }]`). */
3258
+ declare function contentTypeJsonSchema(): JsonSchema;
3259
+ /** A data source: a cms list / single item, or a relative one. */
3260
+ declare function dataSourceJsonSchema(): JsonSchema;
3261
+ /** The patterns a page section may use (every non-global one), in library order. */
3262
+ declare function sectionPatternIds(): string[];
3263
+ /** A page section: one branch per pattern. */
3264
+ declare function sectionJsonSchema(): JsonSchema;
3265
+ /** A page. */
3266
+ declare function pageJsonSchema(): JsonSchema;
3267
+ /** The Site Plan format, pinned to the owner's pick and this run. */
3268
+ declare function sitePlanJsonSchema(pin: SitePlanSchemaPin): JsonSchema;
3269
+ /** A section off the wire: its slots back to a map; a key the pattern has nothing for (`{}`) dropped. */
3270
+ declare function sectionFromWire(section: unknown): unknown;
3271
+ /** A content type off the wire: its seed's `values` list back to field keys. */
3272
+ declare function contentTypeFromWire(type: unknown): unknown;
3273
+ /**
3274
+ * A model's answer → a Site Plan: the two listed maps back to maps, nothing else touched. Never repairs — whatever the
3275
+ * answer got wrong is still wrong, for `validateSitePlan` to refuse with a path.
3276
+ */
3277
+ declare function sitePlanFromWire(wire: unknown): SitePlan | unknown;
3278
+ /** The plan → the wire (what a re-ask shows the model, and what the plan edits' prompt carries). */
3279
+ declare function sitePlanToWire(plan: SitePlan): PlainObject;
3280
+
3281
+ /**
3282
+ * Changing a plan by sentence (AI plan §3d "The Plan prompt box", M1-5; reused by M2 after a build): the CLOSED list
3283
+ * of operations (N-D6) a model may write against the current plan, and the ONE pure `applyPlanEdits` that carries them
3284
+ * out. Nothing is written until Build, so an edit is a plan → plan function; the result goes through
3285
+ * `validateSitePlan` like any plan. Pages are named by `key`, sections by their index on the page. A set of edits is
3286
+ * applied whole or not at all: one edit that cannot apply refuses the set, with a path, and the plan is unchanged.
3287
+ */
3288
+ declare enum PlanEditOp {
3289
+ AddPage = "addPage",
3290
+ RemovePage = "removePage",
3291
+ RenamePage = "renamePage",
3292
+ MergePages = "mergePages",
3293
+ /** Its place in the menu (the plan's page order). */
3294
+ MovePage = "movePage",
3295
+ AddSection = "addSection",
3296
+ RemoveSection = "removeSection",
3297
+ MoveSection = "moveSection",
3298
+ SwapPattern = "swapPattern",
3299
+ SetSlot = "setSlot",
3300
+ AddContentType = "addContentType",
3301
+ AddField = "addField",
3302
+ SetSectionData = "setSectionData"
3303
+ }
3304
+ type PlanEdit = {
3305
+ op: `${PlanEditOp.AddPage}`;
3306
+ page: PagePlan;
3307
+ after?: string;
3308
+ } | {
3309
+ op: `${PlanEditOp.RemovePage}`;
3310
+ page: string;
3311
+ } | {
3312
+ op: `${PlanEditOp.RenamePage}`;
3313
+ page: string;
3314
+ name?: string;
3315
+ route?: string;
3316
+ } | {
3317
+ op: `${PlanEditOp.MergePages}`;
3318
+ into: string;
3319
+ from: string;
3320
+ } | {
3321
+ op: `${PlanEditOp.MovePage}`;
3322
+ page: string;
3323
+ to: number;
3324
+ } | {
3325
+ op: `${PlanEditOp.AddSection}`;
3326
+ page: string;
3327
+ section: PageSectionPlan;
3328
+ at?: number;
3329
+ } | {
3330
+ op: `${PlanEditOp.RemoveSection}`;
3331
+ page: string;
3332
+ index: number;
3333
+ } | {
3334
+ op: `${PlanEditOp.MoveSection}`;
3335
+ page: string;
3336
+ from: number;
3337
+ to: number;
3338
+ } | {
3339
+ op: `${PlanEditOp.SwapPattern}`;
3340
+ page: string;
3341
+ index: number;
3342
+ pattern: string;
3343
+ } | {
3344
+ op: `${PlanEditOp.SetSlot}`;
3345
+ page: string;
3346
+ index: number;
3347
+ slot: string;
3348
+ text: string;
3349
+ } | {
3350
+ op: `${PlanEditOp.AddContentType}`;
3351
+ contentType: ContentTypePlan;
3352
+ dataSources?: DataSourcePlan[];
3353
+ } | {
3354
+ op: `${PlanEditOp.AddField}`;
3355
+ contentType: string;
3356
+ field: ContentFieldPlan;
3357
+ sample?: string | string[];
3358
+ } | {
3359
+ op: `${PlanEditOp.SetSectionData}`;
3360
+ page: string;
3361
+ index: number;
3362
+ binding: string;
3363
+ };
3364
+ /**
3365
+ * Every op's keys, explained — what the format is built from and what `validatePlanEdits` reads (`key?` optional).
3366
+ * A page is named by its `key`; a section by its 0-based `index` on that page.
3367
+ */
3368
+ declare const PLAN_EDIT_SHAPE: Readonly<Record<`${PlanEditOp}`, ShapeEntry>>;
3369
+ declare enum PlanChangeKind {
3370
+ Page = "page",
3371
+ Section = "section",
3372
+ ContentType = "contentType",
3373
+ Field = "field",
3374
+ DataSource = "dataSource"
3375
+ }
3376
+ declare enum PlanChangeAction {
3377
+ Added = "added",
3378
+ Removed = "removed",
3379
+ Changed = "changed",
3380
+ Moved = "moved"
3381
+ }
3382
+ /** What an edit changed — the Plan map marks it. `index` is the section's index in the RESULT (or before, when removed). */
3383
+ interface PlanChange {
3384
+ kind: `${PlanChangeKind}`;
3385
+ action: `${PlanChangeAction}`;
3386
+ page?: string;
3387
+ index?: number;
3388
+ name?: string;
3389
+ }
3390
+ declare enum PlanEditIssueCode {
3391
+ Shape = "shape",
3392
+ UnknownKey = "unknown-key",
3393
+ Duplicate = "duplicate",
3394
+ UnknownOp = "unknown-op",
3395
+ UnknownPage = "unknown-page",
3396
+ UnknownSection = "unknown-section",
3397
+ UnknownPattern = "unknown-pattern",
3398
+ UnknownSlot = "unknown-slot",
3399
+ UnknownContentType = "unknown-content-type",
3400
+ UnknownDataSource = "unknown-data-source",
3401
+ /** The home page stays (a plan has exactly one). */
3402
+ HomePage = "home-page",
3403
+ /** A template page (one item per route) and a plain page cannot be merged. */
3404
+ MergeTemplate = "merge-template"
3405
+ }
3406
+ type PlanEditIssue = PathIssue<PlanEditIssueCode>;
3407
+ interface PlanEditResult {
3408
+ plan: SitePlan;
3409
+ changed: PlanChange[];
3410
+ /** Non-empty: nothing was applied (`plan` is the input). */
3411
+ issues: PlanEditIssue[];
3412
+ }
3413
+ /** The edits' structure: a known op, its keys (`PLAN_EDIT_SHAPE`), integers where an index is. Never repairs. */
3414
+ declare function validatePlanEdits(edits: unknown): {
3415
+ valid: boolean;
3416
+ issues: PlanEditIssue[];
3417
+ };
3418
+ /**
3419
+ * Apply a set of edits to a plan — all of them, or none (any issue refuses the set and returns the plan unchanged). The
3420
+ * sources only removed pages and sections read are dropped with them; sources nothing read before are kept.
3421
+ * The result still has to pass `validateSitePlan`.
3422
+ */
3423
+ declare function applyPlanEdits(plan: SitePlan, edits: ReadonlyArray<PlanEdit>): PlanEditResult;
3424
+ declare const PLAN_EDITS_SCHEMA_NAME = "plan_edits";
3425
+ /** A sentence's answer: the edits, or why the ops cannot say it (one line, in the owner's language). */
3426
+ declare enum PlanEditsOutcome {
3427
+ Edits = "edits",
3428
+ Cannot = "cannot"
3429
+ }
3430
+ interface PlanEditsAnswer {
3431
+ outcome: `${PlanEditsOutcome}`;
3432
+ edits: PlanEdit[];
3433
+ /** `cannot`: the one line the owner reads. `edits`: empty. */
3434
+ reason: string;
3435
+ }
3436
+ /** The answer's own keys, explained. */
3437
+ declare const PLAN_EDITS_ANSWER_SHAPE: ShapeEntry;
3438
+ /** The format a sentence's answer is written in: the outcome, the edits (one `anyOf` branch per op), the reason. */
3439
+ declare function planEditsJsonSchema(): JsonSchema;
3440
+ /** A model's answer → edits (sections and content types off the wire); never repaired. */
3441
+ declare function planEditsFromWire(answer: unknown): PlanEditsAnswer | unknown;
3442
+
3443
+ /**
3444
+ * The plan stage's word checks (AI plan §3d / §3h, M1-3): every text a model WROTE into a plan — the tagline, page
3445
+ * names, section slots, content-type labels, sample values — scanned for the words the owner and their kind of
3446
+ * business must not use (`avoidWords`, the analysis's + the type's `words`), and for a fact the owner never gave
3447
+ * (an email, phone number, price or opening time that is not one of the owner's own facts). A finding is a refusal
3448
+ * with a path — the model rewrites; nothing here repairs a word. Pure.
3449
+ */
3450
+ declare enum PlanWordIssueCode {
3451
+ /** A word the owner (or their kind of business) must not use. */
3452
+ AvoidWord = "avoid-word",
3453
+ /** Something that looks like a fact — an email, phone, price or time — that is not one of the owner's facts. */
3454
+ InventedFact = "invented-fact",
3455
+ /** `business.facts` holds a fact the owner did not give, or not in the owner's words. */
3456
+ FactNotTheOwners = "fact-not-the-owners"
3457
+ }
3458
+ type PlanWordIssue = PathIssue<PlanWordIssueCode>;
3459
+ interface PlanWordContext {
3460
+ avoidWords: ReadonlyArray<string>;
3461
+ /** The owner's own facts (the analysis's, as corrected) — the only ones a plan may carry. */
3462
+ facts: Readonly<Partial<Record<FactKey, string>>>;
3463
+ }
3464
+ /** A text a model wrote, and where. */
3465
+ interface WrittenText {
3466
+ path: string;
3467
+ text: string;
3468
+ }
3469
+ /** Every text in a plan a model writes (never ids, routes, field names or pattern ids). */
3470
+ declare function writtenTexts(plan: SitePlan): WrittenText[];
3471
+ /** A word (or phrase) as a whole-word pattern; Hebrew allows its one-letter prefixes. */
3472
+ declare function wordPattern(word: string): RegExp;
3473
+ /** The words to avoid and the facts never given, in every written text of the plan. */
3474
+ declare function planWordIssues(plan: SitePlan, ctx: PlanWordContext): PlanWordIssue[];
3475
+
3476
+ export { ACTIVE_BUILD_STATUSES, AI_REFUSAL_NEXT, AI_REFUSAL_STATUS, AI_STEPS, AI_STEP_LABELS, AI_STEP_NEEDS, AI_STEP_TYPICAL_TOKENS, AiCallStatus, AiCapability, AiGenerationStage, AiKeyMode, AiNextKind, AiProviderId, AiRefusalCode, AiStep, BAR_ITEMS_MAX, BAR_ITEMS_MIN, BASELINE_ROLES, BUILD_STEPS, BaselineRole, BindScope, BuildNoticeCode, BuildStep, CREDITS_PER_USD, CardBindTarget, ComposeError, ComposeIssueCode, ContentTypeAction, CreatedKind, DANGLING_LINK_CODES, DEFAULT_PHONE_MENU_BREAKPOINT, ENTRANCE_EASING, ENTRANCE_ORIGIN_LOOK, ENTRANCE_TRIGGER, EntrancePart, FACT_KEYS, FINAL_GENERATION_STAGES, GlobalSlot, JSON_SCHEMA_BANNED_KEYWORDS, JsonSchemaShapeError, KeptReason, NAV_PART_LABELS, NAV_SHAPE_COPY, NEUTRAL_STYLE_PROPS, NODE_BASELINES, NO_TOKENS, NavPagesSource, NavRole, NavShape, NavShapeError, PLAN_EDITS_ANSWER_SHAPE, PLAN_EDITS_SCHEMA_NAME, PLAN_EDIT_SHAPE, PRICING_PATTERN, PUBLISH_BLOCKING_PLACEHOLDERS, PageDataKind, PathIssueCollector, PatternDirective, PatternGlobalPosition, PatternOpens, PatternPlaceholder, PatternRecipe, PhoneMenuBreakpoint, PlaceholderKind, PlanChangeAction, PlanChangeKind, PlanDataSourceMode, PlanDataSourceType, PlanEditIssueCode, PlanEditOp, PlanEditsOutcome, PlanWordIssueCode, PreflightRefusalCode, RelativeOp, SAMPLE_IMAGE_REF, SITE_FACT_LABELS, SITE_HEADER_PATTERN, SITE_PATTERNS, SITE_PLAN_SCHEMA_NAME, SITE_PLAN_VERSION, SITE_TEMPLATES, SPEC_SITE_FACTS, SPEC_SITE_LIBRARY, SPEC_SITE_PATTERNS, SPEC_SITE_PLAN_SHAPE, SPEC_SITE_TEMPLATES, STUDIO_TEMPLATE, SiteBuildKind, SiteBuildStatus, SitePlanError, SitePlanIssueCode, SitePlanSourceKind, SitePlanWireKey, SiteTemplateError, SiteTemplateId, StepState, addBarItem, altSourceScopes, applyPlanEdits, assertStyleSlots, assertValidSitePlan, barIconForRoute, blocksPublish, buildKeys, buildStepFacts, builtHomePageId, composeNavHeader, composeSection, composeSite, contentTypeFromWire, contentTypeJsonSchema, costUsd, createSerializedNode, creditsOfUsd, dataSourceJsonSchema, describePlanData, describeShapeKey, entranceAction, entranceInteraction, estimateStepCredits, failedBuildStep, fieldJsonSchema, findNavRoot, isActiveBuild, isNonEmptyString, isPlainObject, jsonAnyOf, jsonBoolean, jsonClosedObject, jsonInteger, jsonListOf, jsonOneOf, jsonSchemaKeywords, jsonSchemaObjects, jsonShapedObject, jsonText, modelCanDo, moveBarItem, navPages, navShapeBreakpoint, navShapeOf, nextSourceOf, nodeBindPaths, pageJsonSchema, parseSampleImageRef, pathAt, patternById, patternNeedsBinding, patternNodes, patternOptionalParts, patternScopes, patternSlots, patternTakesBinding, phoneMenuPages, planEditsFromWire, planEditsJsonSchema, planFromTemplate, planNavShape, planWordIssues, releasedLayoutDefaults, removeBarItem, requiredShapeKeys, routeParams, sampleImageRef, sectionEntrances, sectionFromWire, sectionJsonSchema, sectionPatternIds, setStyleProps, shapeKeys, siteNavPages, sitePlanFromWire, sitePlanJsonSchema, sitePlanToWire, staggerDelay, validatePlanEdits, validateSitePlan, walkSerialized, wordPattern, writtenTexts };
3477
+ export type { AddBarItemResult, AiMeter, AiModelEntry, AiRefusal, AiTokenCounts, AiTokenPrice, BarItemsEditResult, BuildNotice, BuildStepError, BuildStepFacts, BuildStepRecord, CmsDataSourcePlan, ComposeContext, ComposeIssue, ComposedDataSource, ComposedItem, ComposedNavHeader, ComposedPage, ComposedPlaceholder, ComposedRoute, ComposedSection, ComposedSite, ContentFieldPlan, ContentSeedPlan, ContentTypePlan, CreateNodeOptions, CreatedRecord, DataSourcePlan, DynamicKeysAsList, EntranceAction, EntranceInteraction, EntranceSpec, FactKey, JsonSchema, NavHeaderInput, NavHeaderOptions, NavPage, NavShapeOptions, NavShapeResult, NodeBaseline, PageData, PageDataLine, PagePlan, PageSectionPlan, PathIssue, PatternNode, PlainObject, PlanChange, PlanEdit, PlanEditIssue, PlanEditResult, PlanEditsAnswer, PlanWordContext, PlanWordIssue, PreflightRefusal, RelativeDataSourcePlan, SectionEntrances, SectionInput, SectionOptions, SerializedBinding, SerializedNode, SerializedResponsive, ShapeEntry, ShapeIssueCodes, SiteBuildRun, SiteBusiness, SitePageRef, SitePattern, SitePlan, SitePlanIssue, SitePlanSchemaPin, SitePlanSource, SitePlanValidation, SiteTemplate, TemplatePlanInput, UndoKept, UndoPreview, UndoRecord, WrittenText };