siteplane 0.1.36 → 0.1.38

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.
package/dist/index.js CHANGED
@@ -4,7 +4,7 @@ import { dirname } from "path";
4
4
 
5
5
  // ../shared/dist/actors.js
6
6
  import { z } from "zod";
7
- var ACTOR_TYPES = ["developer", "client", "agent", "system"];
7
+ var ACTOR_TYPES = ["workspace_member", "site_member", "agent", "system"];
8
8
  var actorTypeSchema = z.enum(ACTOR_TYPES);
9
9
 
10
10
  // ../shared/dist/analytics-defaults.js
@@ -587,7 +587,7 @@ var bookingAvailabilityIntervalsSchema = z8.array(z8.object({
587
587
  });
588
588
  var bookingPublicConfigSchema = z8.object({
589
589
  site: z8.object({
590
- name: z8.string().trim().min(1),
590
+ displayName: z8.string().trim().min(1),
591
591
  timezone: z8.string().trim().min(1),
592
592
  locale: z8.string().trim().min(2),
593
593
  bookingPageSlug: z8.string().regex(/^[a-z0-9]+(?:-[a-z0-9]+)*$/).min(2).max(64),
@@ -1011,6 +1011,9 @@ var CONTINUE_SITE_SETUP_MAX_ITEMS = 50;
1011
1011
  var CONTINUE_SITE_SETUP_RENDERED_PATH_MAX_BYTES = 512;
1012
1012
  var CONTINUE_SITE_SETUP_VISIBLE_VALUE_MAX_BYTES = 256;
1013
1013
  var CONTINUE_SITE_SETUP_LOCATOR_HINT_MAX_BYTES = 512;
1014
+ var CONTINUE_SITE_SETUP_REQUESTED_LABEL_MAX_BYTES = 120;
1015
+ var CONTINUE_SITE_SETUP_REQUESTED_SECTION_MAX_BYTES = 120;
1016
+ var CONTINUE_SITE_SETUP_REQUESTED_SUBSECTION_MAX_BYTES = 120;
1014
1017
  var CONTINUE_SITE_SETUP_ITEMS_MAX_BYTES = 32 * 1024;
1015
1018
  var CONTINUE_SITE_SETUP_HTTP_BODY_MAX_BYTES = 64 * 1024;
1016
1019
  var siteSetupRunStatusSchema = z14.enum(SITE_SETUP_RUN_STATUSES);
@@ -1019,6 +1022,7 @@ var siteSetupErrorCodeSchema = z14.enum(SITE_SETUP_ERROR_CODES);
1019
1022
  var editorFieldSchema = z14.object({
1020
1023
  fieldId: fieldIdSchema,
1021
1024
  label: z14.string().trim().min(1),
1025
+ subsection: z14.string().trim().min(1).optional(),
1022
1026
  description: z14.string().trim().min(1).optional(),
1023
1027
  required: z14.boolean().optional(),
1024
1028
  maxLength: z14.number().int().positive().optional()
@@ -1026,7 +1030,24 @@ var editorFieldSchema = z14.object({
1026
1030
  var editorSectionSchema = z14.object({
1027
1031
  label: z14.string().trim().min(1),
1028
1032
  fields: z14.array(editorFieldSchema).min(1)
1029
- }).strict();
1033
+ }).strict().superRefine((section, context) => {
1034
+ const closedSubsections = /* @__PURE__ */ new Set();
1035
+ let currentSubsection;
1036
+ for (const [index, field] of section.fields.entries()) {
1037
+ if (field.subsection === currentSubsection)
1038
+ continue;
1039
+ if (currentSubsection)
1040
+ closedSubsections.add(currentSubsection);
1041
+ currentSubsection = field.subsection;
1042
+ if (currentSubsection && closedSubsections.has(currentSubsection)) {
1043
+ context.addIssue({
1044
+ code: "custom",
1045
+ message: `Subgroup fields must stay contiguous: ${currentSubsection}`,
1046
+ path: ["fields", index, "subsection"]
1047
+ });
1048
+ }
1049
+ }
1050
+ });
1030
1051
  var editorRouteSchema = z14.object({
1031
1052
  routeKey: siteFieldRouteKeySchema,
1032
1053
  label: z14.string().trim().min(1),
@@ -1106,13 +1127,34 @@ function normalizedSafeTextSchema(maxBytes, label) {
1106
1127
  var correctionItemBase = {
1107
1128
  renderedPath: renderedPathSchema,
1108
1129
  visibleValue: normalizedSafeTextSchema(CONTINUE_SITE_SETUP_VISIBLE_VALUE_MAX_BYTES, "visibleValue"),
1109
- locatorHint: normalizedSafeTextSchema(CONTINUE_SITE_SETUP_LOCATOR_HINT_MAX_BYTES, "locatorHint")
1130
+ locatorHint: normalizedSafeTextSchema(CONTINUE_SITE_SETUP_LOCATOR_HINT_MAX_BYTES, "locatorHint"),
1131
+ requestedLabel: normalizedSafeTextSchema(CONTINUE_SITE_SETUP_REQUESTED_LABEL_MAX_BYTES, "requestedLabel").optional(),
1132
+ requestedSection: normalizedSafeTextSchema(CONTINUE_SITE_SETUP_REQUESTED_SECTION_MAX_BYTES, "requestedSection").optional(),
1133
+ requestedSubsection: normalizedSafeTextSchema(CONTINUE_SITE_SETUP_REQUESTED_SUBSECTION_MAX_BYTES, "requestedSubsection").optional(),
1134
+ requestedSortOrder: z14.number().int().nonnegative().optional()
1110
1135
  };
1111
1136
  var setupCorrectionItemSchema = z14.discriminatedUnion("kind", [
1112
1137
  z14.object({ kind: z14.literal("text"), ...correctionItemBase }).strict(),
1113
1138
  z14.object({ kind: z14.literal("link"), ...correctionItemBase }).strict(),
1114
1139
  z14.object({ kind: z14.literal("image"), ...correctionItemBase }).strict()
1115
- ]);
1140
+ ]).superRefine((item, context) => {
1141
+ if (item.requestedSubsection && !item.requestedSection) {
1142
+ context.addIssue({
1143
+ code: "custom",
1144
+ message: "requestedSubsection requires requestedSection.",
1145
+ path: ["requestedSubsection"]
1146
+ });
1147
+ }
1148
+ });
1149
+ var setupCorrectionItemsSchema = z14.array(setupCorrectionItemSchema).max(CONTINUE_SITE_SETUP_MAX_ITEMS).superRefine((items, context) => {
1150
+ const bytes = utf8Bytes(stableJsonStringify(items));
1151
+ if (bytes > CONTINUE_SITE_SETUP_ITEMS_MAX_BYTES) {
1152
+ context.addIssue({
1153
+ code: "custom",
1154
+ message: "Correction items exceed the 32 KiB canonical payload limit."
1155
+ });
1156
+ }
1157
+ });
1116
1158
  var canonicalHashSchema = z14.string().regex(/^sha256:[0-9a-f]{64}$/iu);
1117
1159
  var deploymentRevisionSchema = normalizedSafeTextSchema(256, "deploymentRevision");
1118
1160
  var continueSiteSetupInputSchema = z14.object({
@@ -1120,17 +1162,8 @@ var continueSiteSetupInputSchema = z14.object({
1120
1162
  runId: z14.string().uuid(),
1121
1163
  expectedFieldContractHash: canonicalHashSchema,
1122
1164
  expectedDeploymentRevision: deploymentRevisionSchema,
1123
- correctionItems: z14.array(setupCorrectionItemSchema).max(CONTINUE_SITE_SETUP_MAX_ITEMS)
1124
- }).strict().superRefine((input, context) => {
1125
- const bytes = utf8Bytes(stableJsonStringify(input.correctionItems));
1126
- if (bytes > CONTINUE_SITE_SETUP_ITEMS_MAX_BYTES) {
1127
- context.addIssue({
1128
- code: "custom",
1129
- message: "Correction items exceed the 32 KiB canonical payload limit.",
1130
- path: ["correctionItems"]
1131
- });
1132
- }
1133
- });
1165
+ correctionItems: setupCorrectionItemsSchema
1166
+ }).strict();
1134
1167
  var siteSetupContextInputSchema = z14.object({}).strict();
1135
1168
  var siteSetupApplyInputSchema = z14.object({
1136
1169
  fieldContract: siteFieldContractV1Schema,
@@ -1224,25 +1257,8 @@ var completeSiteSetupInputSchema = z14.object({
1224
1257
  runId: z14.string().uuid(),
1225
1258
  expectedFieldContractHash: canonicalHashSchema,
1226
1259
  expectedDeploymentRevision: deploymentRevisionSchema,
1227
- accessMode: z14.enum(["fallback", "custom_domain"]),
1228
- siteDomainId: z14.string().uuid().optional(),
1229
- defaultCanPublish: z14.boolean()
1230
- }).strict().superRefine((input, context) => {
1231
- if (input.accessMode === "fallback" && input.siteDomainId) {
1232
- context.addIssue({
1233
- code: "custom",
1234
- message: "Fallback access cannot use a custom domain.",
1235
- path: ["siteDomainId"]
1236
- });
1237
- }
1238
- if (input.accessMode === "custom_domain" && !input.siteDomainId) {
1239
- context.addIssue({
1240
- code: "custom",
1241
- message: "Custom-domain access requires a site domain.",
1242
- path: ["siteDomainId"]
1243
- });
1244
- }
1245
- });
1260
+ expectedReadyFingerprint: canonicalHashSchema
1261
+ }).strict();
1246
1262
  var refreshSiteSetupDeploymentInputSchema = z14.object({
1247
1263
  siteId: z14.string().uuid(),
1248
1264
  deploymentUrl: z14.string().url().refine((value) => value.startsWith("https://")),
@@ -1267,7 +1283,7 @@ function utf8Bytes(value) {
1267
1283
  }
1268
1284
 
1269
1285
  // ../shared/dist/bridge-protocol.js
1270
- var BRIDGE_PROTOCOL_VERSION = 1;
1286
+ var BRIDGE_PROTOCOL_VERSION = 2;
1271
1287
  var bridgeRectSchema = z15.object({
1272
1288
  x: z15.number(),
1273
1289
  y: z15.number(),
@@ -1294,6 +1310,12 @@ var bridgePreviewValueSchema = z15.discriminatedUnion("fieldType", [
1294
1310
  previewLinkValueSchema,
1295
1311
  previewImageValueSchema
1296
1312
  ]);
1313
+ var fieldSelectionModeSchema = z15.enum(["replace", "range", "toggle"]);
1314
+ var fieldBridgeMissingContentActionSchema = z15.enum([
1315
+ "add",
1316
+ "select",
1317
+ "remove"
1318
+ ]);
1297
1319
  var FIELD_BRIDGE_MESSAGE_TYPES = [
1298
1320
  "siteplane:field-bridge:init",
1299
1321
  "siteplane:field-bridge:ready",
@@ -1303,11 +1325,12 @@ var FIELD_BRIDGE_MESSAGE_TYPES = [
1303
1325
  "siteplane:field-bridge:apply-preview-values",
1304
1326
  "siteplane:field-bridge:test-preview-values",
1305
1327
  "siteplane:field-bridge:preview-ack",
1306
- "siteplane:field-bridge:set-editability-review",
1328
+ "siteplane:field-bridge:set-visual-control-state",
1307
1329
  "siteplane:field-bridge:missing-content",
1308
1330
  "siteplane:field-bridge:error"
1309
1331
  ];
1310
1332
  var canonicalFieldContractHashSchema = z15.string().regex(/^sha256:[0-9a-f]{64}$/u);
1333
+ var bridgeSectionSchema = z15.string().trim().min(1).max(256);
1311
1334
  var realRenderedPathSchema = z15.string().trim().refine((value) => value.startsWith("/") && value !== "$global" && !value.includes("?") && !value.includes("#"), "A field bridge rendered path must be a real canonical path.");
1312
1335
  var fieldBridgeIdentitySchema = z15.object({
1313
1336
  publicRuntimeKeyId: z15.string().uuid(),
@@ -1353,7 +1376,7 @@ var fieldBridgeReadyMessageSchema = fieldBridgeBaseSchema.extend({
1353
1376
  z15.literal("field_selection"),
1354
1377
  z15.literal("preview_values"),
1355
1378
  z15.literal("field_evidence"),
1356
- z15.literal("editability_review")
1379
+ z15.literal("visual_field_control")
1357
1380
  ])
1358
1381
  }).strict()
1359
1382
  });
@@ -1366,14 +1389,33 @@ var fieldBridgeFieldsMessageSchema = fieldBridgeBaseSchema.extend({
1366
1389
  });
1367
1390
  var fieldBridgeSelectFieldMessageSchema = fieldBridgeBaseSchema.extend({
1368
1391
  type: z15.literal("siteplane:field-bridge:select-field"),
1369
- payload: z15.object({ fieldId: fieldIdSchema }).strict()
1392
+ payload: z15.object({
1393
+ fieldId: fieldIdSchema,
1394
+ selectionMode: fieldSelectionModeSchema
1395
+ }).strict()
1370
1396
  });
1371
1397
  var fieldBridgeSetSelectedFieldMessageSchema = fieldBridgeBaseSchema.extend({
1372
1398
  type: z15.literal("siteplane:field-bridge:set-selected-field"),
1373
1399
  payload: z15.object({
1374
- fieldId: fieldIdSchema.nullable(),
1400
+ fieldIds: z15.array(fieldIdSchema).max(200),
1401
+ primaryFieldId: fieldIdSchema.nullable(),
1375
1402
  scrollIntoView: z15.boolean().optional()
1376
- }).strict()
1403
+ }).strict().superRefine((value, context) => {
1404
+ if (value.fieldIds.length > 0 && value.primaryFieldId === null) {
1405
+ context.addIssue({
1406
+ code: "custom",
1407
+ message: "A non-empty selection needs a primary field.",
1408
+ path: ["primaryFieldId"]
1409
+ });
1410
+ }
1411
+ if (value.primaryFieldId !== null && !value.fieldIds.includes(value.primaryFieldId)) {
1412
+ context.addIssue({
1413
+ code: "custom",
1414
+ message: "The primary field must be part of the selection.",
1415
+ path: ["primaryFieldId"]
1416
+ });
1417
+ }
1418
+ })
1377
1419
  });
1378
1420
  var fieldBridgeApplyPreviewValuesMessageSchema = fieldBridgeBaseSchema.extend({
1379
1421
  type: z15.literal("siteplane:field-bridge:apply-preview-values"),
@@ -1392,13 +1434,28 @@ var fieldBridgePreviewAckMessageSchema = fieldBridgeBaseSchema.extend({
1392
1434
  fieldIds: z15.array(fieldIdSchema).max(200)
1393
1435
  }).strict()
1394
1436
  });
1395
- var fieldBridgeSetEditabilityReviewMessageSchema = fieldBridgeBaseSchema.extend({
1396
- type: z15.literal("siteplane:field-bridge:set-editability-review"),
1397
- payload: z15.object({ enabled: z15.boolean() }).strict()
1437
+ var fieldBridgeSetVisualControlStateMessageSchema = fieldBridgeBaseSchema.extend({
1438
+ type: z15.literal("siteplane:field-bridge:set-visual-control-state"),
1439
+ payload: z15.object({
1440
+ enabled: z15.boolean(),
1441
+ fieldProximityEnabled: z15.boolean(),
1442
+ pendingKeys: z15.array(z15.string().trim().min(1).max(2048)).max(50),
1443
+ activeFieldIds: z15.array(fieldIdSchema),
1444
+ fieldSections: z15.record(fieldIdSchema, bridgeSectionSchema),
1445
+ selectedPending: z15.array(z15.object({
1446
+ key: z15.string().trim().min(1).max(2048),
1447
+ locatorHint: z15.string().trim().min(1).max(2048)
1448
+ }).strict()).max(50),
1449
+ scrollPendingIntoView: z15.boolean().optional()
1450
+ }).strict()
1398
1451
  });
1399
1452
  var fieldBridgeMissingContentMessageSchema = fieldBridgeBaseSchema.extend({
1400
1453
  type: z15.literal("siteplane:field-bridge:missing-content"),
1401
- payload: z15.object({ item: setupCorrectionItemSchema }).strict()
1454
+ payload: z15.object({
1455
+ action: fieldBridgeMissingContentActionSchema,
1456
+ item: setupCorrectionItemSchema,
1457
+ suggestedSection: bridgeSectionSchema.optional()
1458
+ }).strict()
1402
1459
  });
1403
1460
  var fieldBridgeErrorMessageSchema = fieldBridgeBaseSchema.extend({
1404
1461
  type: z15.literal("siteplane:field-bridge:error"),
@@ -1417,7 +1474,7 @@ var fieldBridgeMessageSchema = z15.discriminatedUnion("type", [
1417
1474
  fieldBridgeApplyPreviewValuesMessageSchema,
1418
1475
  fieldBridgeTestPreviewValuesMessageSchema,
1419
1476
  fieldBridgePreviewAckMessageSchema,
1420
- fieldBridgeSetEditabilityReviewMessageSchema,
1477
+ fieldBridgeSetVisualControlStateMessageSchema,
1421
1478
  fieldBridgeMissingContentMessageSchema,
1422
1479
  fieldBridgeErrorMessageSchema
1423
1480
  ]);
@@ -1428,8 +1485,8 @@ import { z as z17 } from "zod";
1428
1485
  // ../shared/dist/errors.js
1429
1486
  import { z as z16 } from "zod";
1430
1487
  var UI_ERROR_CATEGORIES = [
1431
- "client",
1432
- "developer",
1488
+ "site_member",
1489
+ "workspace_member",
1433
1490
  "internal"
1434
1491
  ];
1435
1492
  var uiErrorCategorySchema = z16.enum(UI_ERROR_CATEGORIES);
@@ -1454,52 +1511,79 @@ var commandResultSchema = z17.discriminatedUnion("ok", [
1454
1511
  commandErrorSchema
1455
1512
  ]);
1456
1513
 
1457
- // ../shared/dist/fallback-portal.js
1514
+ // ../shared/dist/editor-settings.js
1458
1515
  import { z as z18 } from "zod";
1459
- var FALLBACK_PORTAL_SLUG_PATTERN = /^[a-z0-9]+(?:-[a-z0-9]+)*$/;
1460
- var fallbackPortalSlugSchema = z18.string().regex(FALLBACK_PORTAL_SLUG_PATTERN, "Invalid fallback portal slug");
1516
+ var editorColorSchemeSchema = z18.enum([
1517
+ "paper",
1518
+ "slate",
1519
+ "siteplane",
1520
+ "bloom"
1521
+ ]);
1522
+ var editorColorSchemes = editorColorSchemeSchema.options;
1523
+ var editorColorModeSchema = z18.enum(["light", "dark"]);
1524
+ var editorColorModes = editorColorModeSchema.options;
1461
1525
 
1462
- // ../shared/dist/entitlements.js
1526
+ // ../shared/dist/site-slug.js
1463
1527
  import { z as z19 } from "zod";
1464
- var entitlementSnapshotSchema = z19.object({
1465
- planKey: z19.string().trim().min(1),
1466
- sitesLimit: z19.number().int().positive(),
1467
- clientAccountsPerSiteLimit: z19.number().int().positive(),
1468
- customAdminDomainsEnabled: z19.boolean(),
1469
- agentMcpEnabled: z19.boolean(),
1470
- emailNotificationsEnabled: z19.boolean(),
1471
- analyticsEnabled: z19.boolean(),
1472
- analyticsSitesLimit: z19.number().int().min(0),
1473
- analyticsClientPerformanceEnabled: z19.boolean(),
1474
- analyticsMonthlyReportsEnabled: z19.boolean(),
1475
- analyticsAiSummaryEnabled: z19.boolean(),
1476
- analyticsRawEventRetentionDays: z19.number().int().min(1).max(ANALYTICS_RETENTION_DEFAULTS.maxRawEventRetentionDaysWithoutAdr),
1477
- analyticsMonthlyEventLimit: z19.number().int().min(0),
1478
- bookingEnabled: z19.boolean().default(false),
1479
- bookingSitesLimit: z19.number().int().min(0).default(0),
1480
- bookingClientManagementEnabled: z19.boolean().default(false),
1481
- bookingResourcesPerSiteLimit: z19.number().int().min(0).default(0),
1482
- bookingServicesPerSiteLimit: z19.number().int().min(0).default(0),
1483
- bookingMonthlyBookingsLimit: z19.number().int().min(0).default(0),
1484
- bookingRemindersEnabled: z19.boolean().default(false)
1528
+ var SITE_SLUG_PATTERN = /^[a-z0-9]+(?:-[a-z0-9]+)*$/;
1529
+ var RESERVED_SITE_SLUGS = /* @__PURE__ */ new Set([
1530
+ "account",
1531
+ "admin",
1532
+ "api",
1533
+ "app",
1534
+ "auth",
1535
+ "book",
1536
+ "claim",
1537
+ "dev",
1538
+ "login",
1539
+ "new",
1540
+ "portal",
1541
+ "support",
1542
+ "workspace"
1543
+ ]);
1544
+ var siteSlugSchema = z19.string().regex(SITE_SLUG_PATTERN, "Invalid site slug").refine((value) => !RESERVED_SITE_SLUGS.has(value), "Reserved site slug");
1545
+
1546
+ // ../shared/dist/entitlements.js
1547
+ import { z as z20 } from "zod";
1548
+ var entitlementSnapshotSchema = z20.object({
1549
+ planKey: z20.string().trim().min(1),
1550
+ sitesLimit: z20.number().int().positive(),
1551
+ siteMembersPerSiteLimit: z20.number().int().positive(),
1552
+ customAdminDomainsEnabled: z20.boolean(),
1553
+ agentMcpEnabled: z20.boolean(),
1554
+ emailNotificationsEnabled: z20.boolean(),
1555
+ analyticsEnabled: z20.boolean(),
1556
+ analyticsSitesLimit: z20.number().int().min(0),
1557
+ analyticsPortalPerformanceEnabled: z20.boolean(),
1558
+ analyticsMonthlyReportsEnabled: z20.boolean(),
1559
+ analyticsAiSummaryEnabled: z20.boolean(),
1560
+ analyticsRawEventRetentionDays: z20.number().int().min(1).max(ANALYTICS_RETENTION_DEFAULTS.maxRawEventRetentionDaysWithoutAdr),
1561
+ analyticsMonthlyEventLimit: z20.number().int().min(0),
1562
+ bookingEnabled: z20.boolean().default(false),
1563
+ bookingSitesLimit: z20.number().int().min(0).default(0),
1564
+ bookingPortalManagementEnabled: z20.boolean().default(false),
1565
+ bookingResourcesPerSiteLimit: z20.number().int().min(0).default(0),
1566
+ bookingServicesPerSiteLimit: z20.number().int().min(0).default(0),
1567
+ bookingMonthlyBookingsLimit: z20.number().int().min(0).default(0),
1568
+ bookingRemindersEnabled: z20.boolean().default(false)
1485
1569
  });
1486
1570
  var EARLY_ACCESS_PLAN = {
1487
1571
  planKey: "early_access_2026",
1488
1572
  sitesLimit: 3,
1489
- clientAccountsPerSiteLimit: 5,
1573
+ siteMembersPerSiteLimit: 5,
1490
1574
  customAdminDomainsEnabled: true,
1491
1575
  agentMcpEnabled: true,
1492
1576
  emailNotificationsEnabled: true,
1493
1577
  analyticsEnabled: false,
1494
1578
  analyticsSitesLimit: 0,
1495
- analyticsClientPerformanceEnabled: false,
1579
+ analyticsPortalPerformanceEnabled: false,
1496
1580
  analyticsMonthlyReportsEnabled: false,
1497
1581
  analyticsAiSummaryEnabled: false,
1498
1582
  analyticsRawEventRetentionDays: ANALYTICS_RETENTION_DEFAULTS.enabledRawEventRetentionDays,
1499
1583
  analyticsMonthlyEventLimit: 0,
1500
1584
  bookingEnabled: true,
1501
1585
  bookingSitesLimit: 3,
1502
- bookingClientManagementEnabled: true,
1586
+ bookingPortalManagementEnabled: true,
1503
1587
  bookingResourcesPerSiteLimit: 10,
1504
1588
  bookingServicesPerSiteLimit: 50,
1505
1589
  bookingMonthlyBookingsLimit: 0,
@@ -1507,7 +1591,7 @@ var EARLY_ACCESS_PLAN = {
1507
1591
  };
1508
1592
 
1509
1593
  // ../shared/dist/readiness.js
1510
- import { z as z20 } from "zod";
1594
+ import { z as z21 } from "zod";
1511
1595
  var READINESS_CHECK_KEYS = [
1512
1596
  "agent_instructions_installed",
1513
1597
  "runtime_package_connected",
@@ -1522,19 +1606,19 @@ var READINESS_STATUSES = [
1522
1606
  "failing",
1523
1607
  "warning"
1524
1608
  ];
1525
- var readinessCheckKeySchema = z20.enum(READINESS_CHECK_KEYS);
1526
- var readinessStatusSchema = z20.enum(READINESS_STATUSES);
1609
+ var readinessCheckKeySchema = z21.enum(READINESS_CHECK_KEYS);
1610
+ var readinessStatusSchema = z21.enum(READINESS_STATUSES);
1527
1611
 
1528
1612
  // ../shared/dist/site.js
1529
- import { z as z21 } from "zod";
1613
+ import { z as z22 } from "zod";
1530
1614
  var SITE_STATUSES = [
1531
1615
  "setup",
1532
- "client_ready",
1616
+ "active",
1533
1617
  "disabled",
1534
1618
  "archived"
1535
1619
  ];
1536
- var siteStatusSchema = z21.enum(SITE_STATUSES);
1537
- var websiteUrlSchema = z21.string().trim().url().refine((value) => value.startsWith("https://") || value.startsWith("http://"), "Website URL must use http or https");
1620
+ var siteStatusSchema = z22.enum(SITE_STATUSES);
1621
+ var websiteUrlSchema = z22.string().trim().url().refine((value) => value.startsWith("https://") || value.startsWith("http://"), "Website URL must use http or https");
1538
1622
 
1539
1623
  // ../cli/dist/analytics/static-scan.js
1540
1624
  import ts from "typescript";
@@ -1725,16 +1809,16 @@ ${analyticsRulesTemplate}`;
1725
1809
  import { createHash } from "crypto";
1726
1810
 
1727
1811
  // ../cli/dist/commands/analytics/public-key.js
1728
- import { z as z22 } from "zod";
1729
- var responseSchema = z22.object({
1730
- ok: z22.literal(true),
1731
- data: z22.object({
1732
- rawPublicKey: z22.string().regex(/^pk_siteplane_[A-Za-z0-9_-]{16}_[A-Za-z0-9_-]{43}$/)
1812
+ import { z as z23 } from "zod";
1813
+ var responseSchema = z23.object({
1814
+ ok: z23.literal(true),
1815
+ data: z23.object({
1816
+ rawPublicKey: z23.string().regex(/^pk_siteplane_[A-Za-z0-9_-]{16}_[A-Za-z0-9_-]{43}$/)
1733
1817
  })
1734
1818
  });
1735
- var errorResponseSchema = z22.object({
1736
- error: z22.object({
1737
- code: z22.string().regex(/^[a-z][a-z0-9_.-]+$/u)
1819
+ var errorResponseSchema = z23.object({
1820
+ error: z23.object({
1821
+ code: z23.string().regex(/^[a-z][a-z0-9_.-]+$/u)
1738
1822
  })
1739
1823
  });
1740
1824
 
@@ -1905,75 +1989,48 @@ async function bookingTestCommand(input) {
1905
1989
  });
1906
1990
  }
1907
1991
 
1908
- // ../cli/dist/commands/export.js
1909
- async function exportCommand(input) {
1910
- requireContentExportScope(input.tokenScopes);
1911
- const values = await input.readPublishedValues();
1912
- if (input.format === "prompt") {
1913
- return {
1914
- kind: "prompt",
1915
- output: Object.entries(values).map(([fieldId, value]) => `${fieldId}: ${JSON.stringify(value)}`).join("\n")
1916
- };
1917
- }
1918
- return {
1919
- kind: "json",
1920
- values
1921
- };
1922
- }
1923
- function requireContentExportScope(scopes) {
1924
- if (!scopes?.includes("content:export")) {
1925
- throw new Error("A Project Connection with content:export is required.");
1926
- }
1927
- }
1992
+ // ../cli/dist/commands/connect.js
1993
+ import { randomBytes } from "crypto";
1994
+ import { z as z27 } from "zod";
1928
1995
 
1929
- // ../cli/dist/config/project-config.js
1930
- import { access, chmod, open, readFile as readFile5, rename, rm } from "fs/promises";
1996
+ // ../cli/dist/config/credentials.js
1997
+ import { execFile } from "child_process";
1931
1998
  import { randomUUID as randomUUID2 } from "crypto";
1932
- import { join as join3 } from "path";
1933
- import { z as z23 } from "zod";
1934
- var siteplaneProjectConfigSchema = z23.object({
1935
- version: z23.literal(1),
1936
- apiBaseUrl: z23.string().url(),
1937
- siteId: z23.string().uuid(),
1938
- publicSiteKeyId: z23.string().uuid(),
1939
- publicSiteKey: z23.string().trim().min(1),
1940
- fieldContractHash: z23.string().regex(/^sha256:[0-9a-f]{64}$/iu).optional()
1999
+ import { chmod, mkdir as mkdir5, open, readFile as readFile5, rename, rm } from "fs/promises";
2000
+ import { dirname as dirname5, join as join3, relative } from "path";
2001
+ import { promisify } from "util";
2002
+ import { z as z24 } from "zod";
2003
+ var siteplaneCredentialsSchema = z24.object({
2004
+ accessToken: z24.string().trim().min(1),
2005
+ siteRevalidationSecret: z24.string().trim().min(1)
1941
2006
  }).strict();
1942
- async function readProjectPackageJson(projectDir) {
1943
- return JSON.parse(await readFile5(join3(projectDir, "package.json"), "utf8"));
1944
- }
1945
- async function detectNextProject(projectDir) {
1946
- const packageJson = await readProjectPackageJson(projectDir).catch(() => null);
1947
- if (packageJson?.dependencies?.next || packageJson?.devDependencies?.next) {
1948
- return true;
2007
+ async function assertLocalCredentialsPathSafe(projectDir, options = {}) {
2008
+ const path = join3(projectDir, ".siteplane/credentials.json");
2009
+ const isTrackedFile = options.isTrackedFile ?? ((targetPath) => gitPathMatches(projectDir, targetPath, "ls-files"));
2010
+ const isIgnoredFile = options.isIgnoredFile ?? ((targetPath) => gitPathMatches(projectDir, targetPath, "check-ignore"));
2011
+ if (await isTrackedFile(path)) {
2012
+ throw new Error("Refusing to write Siteplane credentials into a tracked file.");
1949
2013
  }
1950
- for (const fileName of [
1951
- "next.config.js",
1952
- "next.config.mjs",
1953
- "next.config.ts"
1954
- ]) {
1955
- try {
1956
- await access(join3(projectDir, fileName));
1957
- return true;
1958
- } catch {
1959
- }
2014
+ if (!await isIgnoredFile(path)) {
2015
+ throw new Error("Add .siteplane/credentials.json to .gitignore before running Siteplane connect.");
1960
2016
  }
1961
- return false;
2017
+ return path;
1962
2018
  }
1963
- async function writeProjectConfig(projectDir, config) {
1964
- const path = join3(projectDir, "siteplane.config.json");
1965
- const parsed = siteplaneProjectConfigSchema.parse(config);
1966
- await writeJsonAtomically(path, parsed, 420);
2019
+ async function writeLocalCredentials(projectDir, credentials, options = {}) {
2020
+ const path = await assertLocalCredentialsPathSafe(projectDir, options);
2021
+ const parsed = siteplaneCredentialsSchema.parse(credentials);
2022
+ await mkdir5(dirname5(path), { recursive: true, mode: 448 });
2023
+ await writeCredentialsAtomically(path, parsed);
1967
2024
  return path;
1968
2025
  }
1969
- async function readProjectConfig(projectDir) {
1970
- return siteplaneProjectConfigSchema.parse(JSON.parse(await readFile5(join3(projectDir, "siteplane.config.json"), "utf8")));
2026
+ async function readLocalCredentials(projectDir) {
2027
+ return siteplaneCredentialsSchema.parse(JSON.parse(await readFile5(join3(projectDir, ".siteplane/credentials.json"), "utf8")));
1971
2028
  }
1972
- async function writeJsonAtomically(path, value, mode) {
2029
+ async function writeCredentialsAtomically(path, credentials) {
1973
2030
  const temporaryPath = `${path}.${randomUUID2()}.tmp`;
1974
- const file = await open(temporaryPath, "wx", mode);
2031
+ const file = await open(temporaryPath, "wx", 384);
1975
2032
  try {
1976
- await file.writeFile(`${JSON.stringify(value, null, 2)}
2033
+ await file.writeFile(`${JSON.stringify(credentials, null, 2)}
1977
2034
  `, "utf8");
1978
2035
  await file.sync();
1979
2036
  } catch (error) {
@@ -1984,47 +2041,71 @@ async function writeJsonAtomically(path, value, mode) {
1984
2041
  await file.close();
1985
2042
  try {
1986
2043
  await rename(temporaryPath, path);
1987
- await chmod(path, mode);
2044
+ await chmod(path, 384);
1988
2045
  } catch (error) {
1989
2046
  await rm(temporaryPath, { force: true });
1990
2047
  throw error;
1991
2048
  }
1992
2049
  }
2050
+ var execFileAsync = promisify(execFile);
2051
+ async function gitPathMatches(projectDir, path, command) {
2052
+ const args = command === "check-ignore" ? ["check-ignore", "--quiet", relative(projectDir, path)] : ["ls-files", "--error-unmatch", relative(projectDir, path)];
2053
+ try {
2054
+ await execFileAsync("git", args, { cwd: projectDir });
2055
+ return true;
2056
+ } catch {
2057
+ return false;
2058
+ }
2059
+ }
1993
2060
 
1994
- // ../cli/dist/config/credentials.js
1995
- import { execFile } from "child_process";
2061
+ // ../cli/dist/config/project-config.js
2062
+ import { access, chmod as chmod2, open as open2, readFile as readFile6, rename as rename2, rm as rm2 } from "fs/promises";
1996
2063
  import { randomUUID as randomUUID3 } from "crypto";
1997
- import { chmod as chmod2, mkdir as mkdir5, open as open2, readFile as readFile6, rename as rename2, rm as rm2 } from "fs/promises";
1998
- import { dirname as dirname5, join as join4, relative } from "path";
1999
- import { promisify } from "util";
2000
- import { z as z24 } from "zod";
2001
- var siteplaneCredentialsSchema = z24.object({
2002
- accessToken: z24.string().trim().min(1),
2003
- siteRevalidationSecret: z24.string().trim().min(1)
2064
+ import { join as join4 } from "path";
2065
+ import { z as z25 } from "zod";
2066
+ var siteplaneProjectConfigSchema = z25.object({
2067
+ version: z25.literal(1),
2068
+ apiBaseUrl: z25.string().url(),
2069
+ siteId: z25.string().uuid(),
2070
+ publicSiteKeyId: z25.string().uuid(),
2071
+ publicSiteKey: z25.string().trim().min(1),
2072
+ fieldContractHash: z25.string().regex(/^sha256:[0-9a-f]{64}$/iu).optional()
2004
2073
  }).strict();
2005
- async function writeLocalCredentials(projectDir, credentials, options = {}) {
2006
- const path = join4(projectDir, ".siteplane/credentials.json");
2007
- const isTrackedFile = options.isTrackedFile ?? ((targetPath) => gitPathMatches(projectDir, targetPath, "ls-files"));
2008
- const isIgnoredFile = options.isIgnoredFile ?? ((targetPath) => gitPathMatches(projectDir, targetPath, "check-ignore"));
2009
- if (await isTrackedFile(path)) {
2010
- throw new Error("Refusing to write Siteplane credentials into a tracked file.");
2074
+ async function readProjectPackageJson(projectDir) {
2075
+ return JSON.parse(await readFile6(join4(projectDir, "package.json"), "utf8"));
2076
+ }
2077
+ async function detectNextProject(projectDir) {
2078
+ const packageJson = await readProjectPackageJson(projectDir).catch(() => null);
2079
+ if (packageJson?.dependencies?.next || packageJson?.devDependencies?.next) {
2080
+ return true;
2011
2081
  }
2012
- if (!await isIgnoredFile(path)) {
2013
- throw new Error("Add .siteplane/credentials.json to .gitignore before running siteplane init.");
2082
+ for (const fileName of [
2083
+ "next.config.js",
2084
+ "next.config.mjs",
2085
+ "next.config.ts"
2086
+ ]) {
2087
+ try {
2088
+ await access(join4(projectDir, fileName));
2089
+ return true;
2090
+ } catch {
2091
+ }
2014
2092
  }
2015
- const parsed = siteplaneCredentialsSchema.parse(credentials);
2016
- await mkdir5(dirname5(path), { recursive: true, mode: 448 });
2017
- await writeCredentialsAtomically(path, parsed);
2093
+ return false;
2094
+ }
2095
+ async function writeProjectConfig(projectDir, config) {
2096
+ const path = join4(projectDir, "siteplane.config.json");
2097
+ const parsed = siteplaneProjectConfigSchema.parse(config);
2098
+ await writeJsonAtomically(path, parsed, 420);
2018
2099
  return path;
2019
2100
  }
2020
- async function readLocalCredentials(projectDir) {
2021
- return siteplaneCredentialsSchema.parse(JSON.parse(await readFile6(join4(projectDir, ".siteplane/credentials.json"), "utf8")));
2101
+ async function readProjectConfig(projectDir) {
2102
+ return siteplaneProjectConfigSchema.parse(JSON.parse(await readFile6(join4(projectDir, "siteplane.config.json"), "utf8")));
2022
2103
  }
2023
- async function writeCredentialsAtomically(path, credentials) {
2104
+ async function writeJsonAtomically(path, value, mode) {
2024
2105
  const temporaryPath = `${path}.${randomUUID3()}.tmp`;
2025
- const file = await open2(temporaryPath, "wx", 384);
2106
+ const file = await open2(temporaryPath, "wx", mode);
2026
2107
  try {
2027
- await file.writeFile(`${JSON.stringify(credentials, null, 2)}
2108
+ await file.writeFile(`${JSON.stringify(value, null, 2)}
2028
2109
  `, "utf8");
2029
2110
  await file.sync();
2030
2111
  } catch (error) {
@@ -2035,26 +2116,16 @@ async function writeCredentialsAtomically(path, credentials) {
2035
2116
  await file.close();
2036
2117
  try {
2037
2118
  await rename2(temporaryPath, path);
2038
- await chmod2(path, 384);
2119
+ await chmod2(path, mode);
2039
2120
  } catch (error) {
2040
2121
  await rm2(temporaryPath, { force: true });
2041
2122
  throw error;
2042
2123
  }
2043
2124
  }
2044
- var execFileAsync = promisify(execFile);
2045
- async function gitPathMatches(projectDir, path, command) {
2046
- const args = command === "check-ignore" ? ["check-ignore", "--quiet", relative(projectDir, path)] : ["ls-files", "--error-unmatch", relative(projectDir, path)];
2047
- try {
2048
- await execFileAsync("git", args, { cwd: projectDir });
2049
- return true;
2050
- } catch {
2051
- return false;
2052
- }
2053
- }
2054
2125
 
2055
2126
  // ../cli/dist/commands/init.js
2056
2127
  import { join as join5 } from "path";
2057
- import { z as z25 } from "zod";
2128
+ import { z as z26 } from "zod";
2058
2129
  async function initCommand(input) {
2059
2130
  if (!input.setupToken.trim()) {
2060
2131
  throw new Error("A Siteplane setup token is required.");
@@ -2074,24 +2145,24 @@ async function initCommand(input) {
2074
2145
  ]
2075
2146
  };
2076
2147
  }
2077
- var siteSetupBootstrapDataSchema = z25.object({
2078
- credentialPurpose: z25.literal("site_setup"),
2079
- apiBaseUrl: z25.string().url(),
2080
- siteId: z25.string().uuid(),
2081
- publicSiteKeyId: z25.string().uuid(),
2082
- publicSiteKey: z25.string().trim().min(1),
2083
- accessToken: z25.string().trim().min(1),
2084
- siteRevalidationSecret: z25.string().regex(/^[A-Za-z0-9_-]{43}$/u)
2148
+ var siteSetupBootstrapDataSchema = z26.object({
2149
+ credentialPurpose: z26.literal("site_setup"),
2150
+ apiBaseUrl: z26.string().url(),
2151
+ siteId: z26.string().uuid(),
2152
+ publicSiteKeyId: z26.string().uuid(),
2153
+ publicSiteKey: z26.string().trim().min(1),
2154
+ accessToken: z26.string().trim().min(1),
2155
+ siteRevalidationSecret: z26.string().regex(/^[A-Za-z0-9_-]{43}$/u)
2085
2156
  }).strict();
2086
- var featureBootstrapDataSchema = z25.object({
2087
- credentialPurpose: z25.enum(["analytics", "booking"]),
2088
- apiBaseUrl: z25.string().url(),
2089
- siteId: z25.string().uuid(),
2090
- accessToken: z25.string().trim().min(1)
2157
+ var featureBootstrapDataSchema = z26.object({
2158
+ credentialPurpose: z26.enum(["analytics", "booking"]),
2159
+ apiBaseUrl: z26.string().url(),
2160
+ siteId: z26.string().uuid(),
2161
+ accessToken: z26.string().trim().min(1)
2091
2162
  }).strict();
2092
- var bootstrapResponseSchema = z25.object({
2093
- ok: z25.literal(true),
2094
- data: z25.discriminatedUnion("credentialPurpose", [
2163
+ var bootstrapResponseSchema = z26.object({
2164
+ ok: z26.literal(true),
2165
+ data: z26.discriminatedUnion("credentialPurpose", [
2095
2166
  siteSetupBootstrapDataSchema,
2096
2167
  featureBootstrapDataSchema
2097
2168
  ])
@@ -2189,6 +2260,44 @@ function readErrorMessage(payload) {
2189
2260
  return null;
2190
2261
  }
2191
2262
 
2263
+ // ../cli/dist/commands/connect.js
2264
+ var claimResponseSchema = z27.object({
2265
+ ok: z27.literal(true),
2266
+ data: z27.object({
2267
+ pairingId: z27.string().uuid(),
2268
+ status: z27.literal("approval_required")
2269
+ }).passthrough()
2270
+ }).strict();
2271
+ var waitingResponseSchema = z27.object({
2272
+ ok: z27.literal(true),
2273
+ data: z27.object({ status: z27.literal("approval_required") }).strict()
2274
+ }).strict();
2275
+ var bootstrapResponseSchema2 = z27.object({
2276
+ ok: z27.literal(true),
2277
+ data: siteSetupBootstrapDataSchema
2278
+ }).strict();
2279
+
2280
+ // ../cli/dist/commands/export.js
2281
+ async function exportCommand(input) {
2282
+ requireContentExportScope(input.tokenScopes);
2283
+ const values = await input.readPublishedValues();
2284
+ if (input.format === "prompt") {
2285
+ return {
2286
+ kind: "prompt",
2287
+ output: Object.entries(values).map(([fieldId, value]) => `${fieldId}: ${JSON.stringify(value)}`).join("\n")
2288
+ };
2289
+ }
2290
+ return {
2291
+ kind: "json",
2292
+ values
2293
+ };
2294
+ }
2295
+ function requireContentExportScope(scopes) {
2296
+ if (!scopes?.includes("content:export")) {
2297
+ throw new Error("A Project Connection with content:export is required.");
2298
+ }
2299
+ }
2300
+
2192
2301
  // ../cli/dist/commands/scan.js
2193
2302
  import { readdir } from "fs/promises";
2194
2303
  import { extname, join as join6 } from "path";
@@ -2197,7 +2306,7 @@ import { extname, join as join6 } from "path";
2197
2306
  import { execFile as execFile2 } from "child_process";
2198
2307
  import { readFile as readFile7 } from "fs/promises";
2199
2308
  import { promisify as promisify2 } from "util";
2200
- import { z as z26 } from "zod";
2309
+ import { z as z28 } from "zod";
2201
2310
 
2202
2311
  // ../cli/dist/scan/next-source-scan.js
2203
2312
  import ts2 from "typescript";
@@ -2207,49 +2316,52 @@ var editableComponentNames = new Set(["Image", "Text", "LongText", "Link"].map((
2207
2316
 
2208
2317
  // ../cli/dist/commands/site-setup.js
2209
2318
  var execFileAsync2 = promisify2(execFile2);
2210
- var safeErrorSchema = z26.object({
2211
- code: z26.string().trim().min(1),
2212
- message: z26.string().trim().min(1)
2319
+ var safeErrorSchema = z28.object({
2320
+ code: z28.string().trim().min(1),
2321
+ message: z28.string().trim().min(1)
2213
2322
  }).passthrough();
2214
- var errorResponseSchema2 = z26.object({ ok: z26.literal(false), error: safeErrorSchema }).passthrough();
2215
- var contextDataSchema = z26.object({
2216
- site: z26.object({ siteId: z26.string().uuid(), websiteUrl: z26.string().url() }),
2217
- run: z26.object({
2218
- runId: z26.string().uuid(),
2219
- mode: z26.enum(["initial", "update"]),
2220
- status: z26.enum([
2323
+ var errorResponseSchema2 = z28.object({ ok: z28.literal(false), error: safeErrorSchema }).passthrough();
2324
+ var contextDataSchema = z28.object({
2325
+ site: z28.object({ siteId: z28.string().uuid(), portalPath: z28.string() }),
2326
+ run: z28.object({
2327
+ runId: z28.string().uuid(),
2328
+ mode: z28.enum(["initial", "update"]),
2329
+ status: z28.enum([
2221
2330
  "waiting_for_agent",
2222
2331
  "working",
2223
2332
  "action_required",
2224
2333
  "ready_for_review"
2225
2334
  ]),
2226
- fieldContractHash: z26.string().nullable(),
2227
- deploymentOrigin: z26.string().nullable(),
2228
- deploymentRevision: z26.string().nullable(),
2229
- errorCode: z26.string().nullable(),
2230
- errorMessage: z26.string().nullable()
2335
+ fieldContractHash: z28.string().nullable(),
2336
+ deploymentOrigin: z28.string().nullable(),
2337
+ deploymentRevision: z28.string().nullable(),
2338
+ errorCode: z28.string().nullable(),
2339
+ errorMessage: z28.string().nullable()
2231
2340
  }),
2232
- allowedTasks: z26.array(z26.string()),
2233
- requiredEnvironmentNames: z26.array(z26.string())
2341
+ structureHandoff: z28.object({
2342
+ pendingFields: z28.array(setupCorrectionItemSchema).min(1).max(50)
2343
+ }).strict().nullable(),
2344
+ allowedTasks: z28.array(z28.string()),
2345
+ requiredEnvironmentNames: z28.array(z28.string())
2234
2346
  }).strict();
2235
- var contextResponseSchema = z26.object({ ok: z26.literal(true), data: contextDataSchema }).strict();
2236
- var applyDataSchema = z26.object({
2237
- status: z26.enum(["applied", "ready_for_review"]),
2238
- runId: z26.string().uuid().optional(),
2239
- contractVersionId: z26.string().uuid().optional(),
2240
- fieldContractHash: z26.string().regex(/^sha256:[0-9a-f]{64}$/u),
2241
- editorDefinitionHash: z26.string().regex(/^sha256:[0-9a-f]{64}$/u).optional(),
2242
- fieldCount: z26.number().int().nonnegative().optional(),
2243
- routeCount: z26.number().int().nonnegative().optional()
2347
+ var contextResponseSchema = z28.object({ ok: z28.literal(true), data: contextDataSchema }).strict();
2348
+ var applyDataSchema = z28.object({
2349
+ status: z28.enum(["applied", "ready_for_review"]),
2350
+ runId: z28.string().uuid().optional(),
2351
+ contractVersionId: z28.string().uuid().optional(),
2352
+ fieldContractHash: z28.string().regex(/^sha256:[0-9a-f]{64}$/u),
2353
+ editorDefinitionHash: z28.string().regex(/^sha256:[0-9a-f]{64}$/u).optional(),
2354
+ fieldCount: z28.number().int().nonnegative().optional(),
2355
+ routeCount: z28.number().int().nonnegative().optional()
2244
2356
  }).strict();
2245
- var applyResponseSchema = z26.object({ ok: z26.literal(true), data: applyDataSchema }).strict();
2246
- var verifyDataSchema = z26.object({
2247
- status: z26.literal("ready_for_review"),
2248
- runId: z26.string().uuid().optional(),
2249
- deploymentOrigin: z26.string().url().optional(),
2250
- deploymentRevision: z26.string().optional()
2357
+ var applyResponseSchema = z28.object({ ok: z28.literal(true), data: applyDataSchema }).strict();
2358
+ var verifyDataSchema = z28.object({
2359
+ status: z28.literal("ready_for_review"),
2360
+ runId: z28.string().uuid().optional(),
2361
+ deploymentOrigin: z28.string().url().optional(),
2362
+ deploymentRevision: z28.string().optional()
2251
2363
  }).strict();
2252
- var verifyResponseSchema = z26.object({ ok: z26.literal(true), data: verifyDataSchema }).strict();
2364
+ var verifyResponseSchema = z28.object({ ok: z28.literal(true), data: verifyDataSchema }).strict();
2253
2365
  export {
2254
2366
  bookingCheckCommand,
2255
2367
  bookingInitCommand,