siteplane 0.1.36 → 0.1.37
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/bin/siteplane.js +388 -167
- package/dist/index.js +282 -174
- package/dist/next.js +262 -154
- package/package.json +1 -1
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 = ["
|
|
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
|
-
|
|
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:
|
|
1124
|
-
}).strict()
|
|
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
|
-
|
|
1228
|
-
|
|
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 =
|
|
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-
|
|
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("
|
|
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({
|
|
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
|
-
|
|
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
|
|
1396
|
-
type: z15.literal("siteplane:field-bridge:set-
|
|
1397
|
-
payload: z15.object({
|
|
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({
|
|
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
|
-
|
|
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
|
-
"
|
|
1432
|
-
"
|
|
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/
|
|
1514
|
+
// ../shared/dist/editor-settings.js
|
|
1458
1515
|
import { z as z18 } from "zod";
|
|
1459
|
-
var
|
|
1460
|
-
|
|
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/
|
|
1526
|
+
// ../shared/dist/site-slug.js
|
|
1463
1527
|
import { z as z19 } from "zod";
|
|
1464
|
-
var
|
|
1465
|
-
|
|
1466
|
-
|
|
1467
|
-
|
|
1468
|
-
|
|
1469
|
-
|
|
1470
|
-
|
|
1471
|
-
|
|
1472
|
-
|
|
1473
|
-
|
|
1474
|
-
|
|
1475
|
-
|
|
1476
|
-
|
|
1477
|
-
|
|
1478
|
-
|
|
1479
|
-
|
|
1480
|
-
|
|
1481
|
-
|
|
1482
|
-
|
|
1483
|
-
|
|
1484
|
-
|
|
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
|
-
|
|
1573
|
+
siteMembersPerSiteLimit: 5,
|
|
1490
1574
|
customAdminDomainsEnabled: true,
|
|
1491
1575
|
agentMcpEnabled: true,
|
|
1492
1576
|
emailNotificationsEnabled: true,
|
|
1493
1577
|
analyticsEnabled: false,
|
|
1494
1578
|
analyticsSitesLimit: 0,
|
|
1495
|
-
|
|
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
|
-
|
|
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
|
|
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 =
|
|
1526
|
-
var readinessStatusSchema =
|
|
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
|
|
1613
|
+
import { z as z22 } from "zod";
|
|
1530
1614
|
var SITE_STATUSES = [
|
|
1531
1615
|
"setup",
|
|
1532
|
-
"
|
|
1616
|
+
"active",
|
|
1533
1617
|
"disabled",
|
|
1534
1618
|
"archived"
|
|
1535
1619
|
];
|
|
1536
|
-
var siteStatusSchema =
|
|
1537
|
-
var websiteUrlSchema =
|
|
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
|
|
1729
|
-
var responseSchema =
|
|
1730
|
-
ok:
|
|
1731
|
-
data:
|
|
1732
|
-
rawPublicKey:
|
|
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 =
|
|
1736
|
-
error:
|
|
1737
|
-
code:
|
|
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,39 +1989,22 @@ async function bookingTestCommand(input) {
|
|
|
1905
1989
|
});
|
|
1906
1990
|
}
|
|
1907
1991
|
|
|
1908
|
-
// ../cli/dist/commands/
|
|
1909
|
-
|
|
1910
|
-
|
|
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
1996
|
// ../cli/dist/config/project-config.js
|
|
1930
1997
|
import { access, chmod, open, readFile as readFile5, rename, rm } from "fs/promises";
|
|
1931
1998
|
import { randomUUID as randomUUID2 } from "crypto";
|
|
1932
1999
|
import { join as join3 } from "path";
|
|
1933
|
-
import { z as
|
|
1934
|
-
var siteplaneProjectConfigSchema =
|
|
1935
|
-
version:
|
|
1936
|
-
apiBaseUrl:
|
|
1937
|
-
siteId:
|
|
1938
|
-
publicSiteKeyId:
|
|
1939
|
-
publicSiteKey:
|
|
1940
|
-
fieldContractHash:
|
|
2000
|
+
import { z as z24 } from "zod";
|
|
2001
|
+
var siteplaneProjectConfigSchema = z24.object({
|
|
2002
|
+
version: z24.literal(1),
|
|
2003
|
+
apiBaseUrl: z24.string().url(),
|
|
2004
|
+
siteId: z24.string().uuid(),
|
|
2005
|
+
publicSiteKeyId: z24.string().uuid(),
|
|
2006
|
+
publicSiteKey: z24.string().trim().min(1),
|
|
2007
|
+
fieldContractHash: z24.string().regex(/^sha256:[0-9a-f]{64}$/iu).optional()
|
|
1941
2008
|
}).strict();
|
|
1942
2009
|
async function readProjectPackageJson(projectDir) {
|
|
1943
2010
|
return JSON.parse(await readFile5(join3(projectDir, "package.json"), "utf8"));
|
|
@@ -1997,10 +2064,10 @@ import { randomUUID as randomUUID3 } from "crypto";
|
|
|
1997
2064
|
import { chmod as chmod2, mkdir as mkdir5, open as open2, readFile as readFile6, rename as rename2, rm as rm2 } from "fs/promises";
|
|
1998
2065
|
import { dirname as dirname5, join as join4, relative } from "path";
|
|
1999
2066
|
import { promisify } from "util";
|
|
2000
|
-
import { z as
|
|
2001
|
-
var siteplaneCredentialsSchema =
|
|
2002
|
-
accessToken:
|
|
2003
|
-
siteRevalidationSecret:
|
|
2067
|
+
import { z as z25 } from "zod";
|
|
2068
|
+
var siteplaneCredentialsSchema = z25.object({
|
|
2069
|
+
accessToken: z25.string().trim().min(1),
|
|
2070
|
+
siteRevalidationSecret: z25.string().trim().min(1)
|
|
2004
2071
|
}).strict();
|
|
2005
2072
|
async function writeLocalCredentials(projectDir, credentials, options = {}) {
|
|
2006
2073
|
const path = join4(projectDir, ".siteplane/credentials.json");
|
|
@@ -2054,7 +2121,7 @@ async function gitPathMatches(projectDir, path, command) {
|
|
|
2054
2121
|
|
|
2055
2122
|
// ../cli/dist/commands/init.js
|
|
2056
2123
|
import { join as join5 } from "path";
|
|
2057
|
-
import { z as
|
|
2124
|
+
import { z as z26 } from "zod";
|
|
2058
2125
|
async function initCommand(input) {
|
|
2059
2126
|
if (!input.setupToken.trim()) {
|
|
2060
2127
|
throw new Error("A Siteplane setup token is required.");
|
|
@@ -2074,24 +2141,24 @@ async function initCommand(input) {
|
|
|
2074
2141
|
]
|
|
2075
2142
|
};
|
|
2076
2143
|
}
|
|
2077
|
-
var siteSetupBootstrapDataSchema =
|
|
2078
|
-
credentialPurpose:
|
|
2079
|
-
apiBaseUrl:
|
|
2080
|
-
siteId:
|
|
2081
|
-
publicSiteKeyId:
|
|
2082
|
-
publicSiteKey:
|
|
2083
|
-
accessToken:
|
|
2084
|
-
siteRevalidationSecret:
|
|
2144
|
+
var siteSetupBootstrapDataSchema = z26.object({
|
|
2145
|
+
credentialPurpose: z26.literal("site_setup"),
|
|
2146
|
+
apiBaseUrl: z26.string().url(),
|
|
2147
|
+
siteId: z26.string().uuid(),
|
|
2148
|
+
publicSiteKeyId: z26.string().uuid(),
|
|
2149
|
+
publicSiteKey: z26.string().trim().min(1),
|
|
2150
|
+
accessToken: z26.string().trim().min(1),
|
|
2151
|
+
siteRevalidationSecret: z26.string().regex(/^[A-Za-z0-9_-]{43}$/u)
|
|
2085
2152
|
}).strict();
|
|
2086
|
-
var featureBootstrapDataSchema =
|
|
2087
|
-
credentialPurpose:
|
|
2088
|
-
apiBaseUrl:
|
|
2089
|
-
siteId:
|
|
2090
|
-
accessToken:
|
|
2153
|
+
var featureBootstrapDataSchema = z26.object({
|
|
2154
|
+
credentialPurpose: z26.enum(["analytics", "booking"]),
|
|
2155
|
+
apiBaseUrl: z26.string().url(),
|
|
2156
|
+
siteId: z26.string().uuid(),
|
|
2157
|
+
accessToken: z26.string().trim().min(1)
|
|
2091
2158
|
}).strict();
|
|
2092
|
-
var bootstrapResponseSchema =
|
|
2093
|
-
ok:
|
|
2094
|
-
data:
|
|
2159
|
+
var bootstrapResponseSchema = z26.object({
|
|
2160
|
+
ok: z26.literal(true),
|
|
2161
|
+
data: z26.discriminatedUnion("credentialPurpose", [
|
|
2095
2162
|
siteSetupBootstrapDataSchema,
|
|
2096
2163
|
featureBootstrapDataSchema
|
|
2097
2164
|
])
|
|
@@ -2189,6 +2256,44 @@ function readErrorMessage(payload) {
|
|
|
2189
2256
|
return null;
|
|
2190
2257
|
}
|
|
2191
2258
|
|
|
2259
|
+
// ../cli/dist/commands/connect.js
|
|
2260
|
+
var claimResponseSchema = z27.object({
|
|
2261
|
+
ok: z27.literal(true),
|
|
2262
|
+
data: z27.object({
|
|
2263
|
+
pairingId: z27.string().uuid(),
|
|
2264
|
+
status: z27.literal("approval_required")
|
|
2265
|
+
}).passthrough()
|
|
2266
|
+
}).strict();
|
|
2267
|
+
var waitingResponseSchema = z27.object({
|
|
2268
|
+
ok: z27.literal(true),
|
|
2269
|
+
data: z27.object({ status: z27.literal("approval_required") }).strict()
|
|
2270
|
+
}).strict();
|
|
2271
|
+
var bootstrapResponseSchema2 = z27.object({
|
|
2272
|
+
ok: z27.literal(true),
|
|
2273
|
+
data: siteSetupBootstrapDataSchema
|
|
2274
|
+
}).strict();
|
|
2275
|
+
|
|
2276
|
+
// ../cli/dist/commands/export.js
|
|
2277
|
+
async function exportCommand(input) {
|
|
2278
|
+
requireContentExportScope(input.tokenScopes);
|
|
2279
|
+
const values = await input.readPublishedValues();
|
|
2280
|
+
if (input.format === "prompt") {
|
|
2281
|
+
return {
|
|
2282
|
+
kind: "prompt",
|
|
2283
|
+
output: Object.entries(values).map(([fieldId, value]) => `${fieldId}: ${JSON.stringify(value)}`).join("\n")
|
|
2284
|
+
};
|
|
2285
|
+
}
|
|
2286
|
+
return {
|
|
2287
|
+
kind: "json",
|
|
2288
|
+
values
|
|
2289
|
+
};
|
|
2290
|
+
}
|
|
2291
|
+
function requireContentExportScope(scopes) {
|
|
2292
|
+
if (!scopes?.includes("content:export")) {
|
|
2293
|
+
throw new Error("A Project Connection with content:export is required.");
|
|
2294
|
+
}
|
|
2295
|
+
}
|
|
2296
|
+
|
|
2192
2297
|
// ../cli/dist/commands/scan.js
|
|
2193
2298
|
import { readdir } from "fs/promises";
|
|
2194
2299
|
import { extname, join as join6 } from "path";
|
|
@@ -2197,7 +2302,7 @@ import { extname, join as join6 } from "path";
|
|
|
2197
2302
|
import { execFile as execFile2 } from "child_process";
|
|
2198
2303
|
import { readFile as readFile7 } from "fs/promises";
|
|
2199
2304
|
import { promisify as promisify2 } from "util";
|
|
2200
|
-
import { z as
|
|
2305
|
+
import { z as z28 } from "zod";
|
|
2201
2306
|
|
|
2202
2307
|
// ../cli/dist/scan/next-source-scan.js
|
|
2203
2308
|
import ts2 from "typescript";
|
|
@@ -2207,49 +2312,52 @@ var editableComponentNames = new Set(["Image", "Text", "LongText", "Link"].map((
|
|
|
2207
2312
|
|
|
2208
2313
|
// ../cli/dist/commands/site-setup.js
|
|
2209
2314
|
var execFileAsync2 = promisify2(execFile2);
|
|
2210
|
-
var safeErrorSchema =
|
|
2211
|
-
code:
|
|
2212
|
-
message:
|
|
2315
|
+
var safeErrorSchema = z28.object({
|
|
2316
|
+
code: z28.string().trim().min(1),
|
|
2317
|
+
message: z28.string().trim().min(1)
|
|
2213
2318
|
}).passthrough();
|
|
2214
|
-
var errorResponseSchema2 =
|
|
2215
|
-
var contextDataSchema =
|
|
2216
|
-
site:
|
|
2217
|
-
run:
|
|
2218
|
-
runId:
|
|
2219
|
-
mode:
|
|
2220
|
-
status:
|
|
2319
|
+
var errorResponseSchema2 = z28.object({ ok: z28.literal(false), error: safeErrorSchema }).passthrough();
|
|
2320
|
+
var contextDataSchema = z28.object({
|
|
2321
|
+
site: z28.object({ siteId: z28.string().uuid(), websiteUrl: z28.string().url(), portalPath: z28.string() }),
|
|
2322
|
+
run: z28.object({
|
|
2323
|
+
runId: z28.string().uuid(),
|
|
2324
|
+
mode: z28.enum(["initial", "update"]),
|
|
2325
|
+
status: z28.enum([
|
|
2221
2326
|
"waiting_for_agent",
|
|
2222
2327
|
"working",
|
|
2223
2328
|
"action_required",
|
|
2224
2329
|
"ready_for_review"
|
|
2225
2330
|
]),
|
|
2226
|
-
fieldContractHash:
|
|
2227
|
-
deploymentOrigin:
|
|
2228
|
-
deploymentRevision:
|
|
2229
|
-
errorCode:
|
|
2230
|
-
errorMessage:
|
|
2331
|
+
fieldContractHash: z28.string().nullable(),
|
|
2332
|
+
deploymentOrigin: z28.string().nullable(),
|
|
2333
|
+
deploymentRevision: z28.string().nullable(),
|
|
2334
|
+
errorCode: z28.string().nullable(),
|
|
2335
|
+
errorMessage: z28.string().nullable()
|
|
2231
2336
|
}),
|
|
2232
|
-
|
|
2233
|
-
|
|
2337
|
+
structureHandoff: z28.object({
|
|
2338
|
+
pendingFields: z28.array(setupCorrectionItemSchema).min(1).max(50)
|
|
2339
|
+
}).strict().nullable(),
|
|
2340
|
+
allowedTasks: z28.array(z28.string()),
|
|
2341
|
+
requiredEnvironmentNames: z28.array(z28.string())
|
|
2234
2342
|
}).strict();
|
|
2235
|
-
var contextResponseSchema =
|
|
2236
|
-
var applyDataSchema =
|
|
2237
|
-
status:
|
|
2238
|
-
runId:
|
|
2239
|
-
contractVersionId:
|
|
2240
|
-
fieldContractHash:
|
|
2241
|
-
editorDefinitionHash:
|
|
2242
|
-
fieldCount:
|
|
2243
|
-
routeCount:
|
|
2343
|
+
var contextResponseSchema = z28.object({ ok: z28.literal(true), data: contextDataSchema }).strict();
|
|
2344
|
+
var applyDataSchema = z28.object({
|
|
2345
|
+
status: z28.enum(["applied", "ready_for_review"]),
|
|
2346
|
+
runId: z28.string().uuid().optional(),
|
|
2347
|
+
contractVersionId: z28.string().uuid().optional(),
|
|
2348
|
+
fieldContractHash: z28.string().regex(/^sha256:[0-9a-f]{64}$/u),
|
|
2349
|
+
editorDefinitionHash: z28.string().regex(/^sha256:[0-9a-f]{64}$/u).optional(),
|
|
2350
|
+
fieldCount: z28.number().int().nonnegative().optional(),
|
|
2351
|
+
routeCount: z28.number().int().nonnegative().optional()
|
|
2244
2352
|
}).strict();
|
|
2245
|
-
var applyResponseSchema =
|
|
2246
|
-
var verifyDataSchema =
|
|
2247
|
-
status:
|
|
2248
|
-
runId:
|
|
2249
|
-
deploymentOrigin:
|
|
2250
|
-
deploymentRevision:
|
|
2353
|
+
var applyResponseSchema = z28.object({ ok: z28.literal(true), data: applyDataSchema }).strict();
|
|
2354
|
+
var verifyDataSchema = z28.object({
|
|
2355
|
+
status: z28.literal("ready_for_review"),
|
|
2356
|
+
runId: z28.string().uuid().optional(),
|
|
2357
|
+
deploymentOrigin: z28.string().url().optional(),
|
|
2358
|
+
deploymentRevision: z28.string().optional()
|
|
2251
2359
|
}).strict();
|
|
2252
|
-
var verifyResponseSchema =
|
|
2360
|
+
var verifyResponseSchema = z28.object({ ok: z28.literal(true), data: verifyDataSchema }).strict();
|
|
2253
2361
|
export {
|
|
2254
2362
|
bookingCheckCommand,
|
|
2255
2363
|
bookingInitCommand,
|