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/bin/siteplane.js +459 -230
- package/dist/index.js +349 -237
- package/dist/next.js +266 -158
- 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,75 +1989,48 @@ 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
|
-
// ../cli/dist/config/
|
|
1930
|
-
import {
|
|
1996
|
+
// ../cli/dist/config/credentials.js
|
|
1997
|
+
import { execFile } from "child_process";
|
|
1931
1998
|
import { randomUUID as randomUUID2 } from "crypto";
|
|
1932
|
-
import {
|
|
1933
|
-
import {
|
|
1934
|
-
|
|
1935
|
-
|
|
1936
|
-
|
|
1937
|
-
|
|
1938
|
-
|
|
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
|
|
1943
|
-
|
|
1944
|
-
|
|
1945
|
-
|
|
1946
|
-
|
|
1947
|
-
|
|
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
|
-
|
|
1951
|
-
"
|
|
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
|
|
2017
|
+
return path;
|
|
1962
2018
|
}
|
|
1963
|
-
async function
|
|
1964
|
-
const path =
|
|
1965
|
-
const parsed =
|
|
1966
|
-
await
|
|
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
|
|
1970
|
-
return
|
|
2026
|
+
async function readLocalCredentials(projectDir) {
|
|
2027
|
+
return siteplaneCredentialsSchema.parse(JSON.parse(await readFile5(join3(projectDir, ".siteplane/credentials.json"), "utf8")));
|
|
1971
2028
|
}
|
|
1972
|
-
async function
|
|
2029
|
+
async function writeCredentialsAtomically(path, credentials) {
|
|
1973
2030
|
const temporaryPath = `${path}.${randomUUID2()}.tmp`;
|
|
1974
|
-
const file = await open(temporaryPath, "wx",
|
|
2031
|
+
const file = await open(temporaryPath, "wx", 384);
|
|
1975
2032
|
try {
|
|
1976
|
-
await file.writeFile(`${JSON.stringify(
|
|
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,
|
|
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/
|
|
1995
|
-
import {
|
|
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 {
|
|
1998
|
-
import {
|
|
1999
|
-
|
|
2000
|
-
|
|
2001
|
-
|
|
2002
|
-
|
|
2003
|
-
|
|
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
|
|
2006
|
-
|
|
2007
|
-
|
|
2008
|
-
|
|
2009
|
-
|
|
2010
|
-
|
|
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
|
-
|
|
2013
|
-
|
|
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
|
-
|
|
2016
|
-
|
|
2017
|
-
|
|
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
|
|
2021
|
-
return
|
|
2101
|
+
async function readProjectConfig(projectDir) {
|
|
2102
|
+
return siteplaneProjectConfigSchema.parse(JSON.parse(await readFile6(join4(projectDir, "siteplane.config.json"), "utf8")));
|
|
2022
2103
|
}
|
|
2023
|
-
async function
|
|
2104
|
+
async function writeJsonAtomically(path, value, mode) {
|
|
2024
2105
|
const temporaryPath = `${path}.${randomUUID3()}.tmp`;
|
|
2025
|
-
const file = await open2(temporaryPath, "wx",
|
|
2106
|
+
const file = await open2(temporaryPath, "wx", mode);
|
|
2026
2107
|
try {
|
|
2027
|
-
await file.writeFile(`${JSON.stringify(
|
|
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,
|
|
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
|
|
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 =
|
|
2078
|
-
credentialPurpose:
|
|
2079
|
-
apiBaseUrl:
|
|
2080
|
-
siteId:
|
|
2081
|
-
publicSiteKeyId:
|
|
2082
|
-
publicSiteKey:
|
|
2083
|
-
accessToken:
|
|
2084
|
-
siteRevalidationSecret:
|
|
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 =
|
|
2087
|
-
credentialPurpose:
|
|
2088
|
-
apiBaseUrl:
|
|
2089
|
-
siteId:
|
|
2090
|
-
accessToken:
|
|
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 =
|
|
2093
|
-
ok:
|
|
2094
|
-
data:
|
|
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
|
|
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 =
|
|
2211
|
-
code:
|
|
2212
|
-
message:
|
|
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 =
|
|
2215
|
-
var contextDataSchema =
|
|
2216
|
-
site:
|
|
2217
|
-
run:
|
|
2218
|
-
runId:
|
|
2219
|
-
mode:
|
|
2220
|
-
status:
|
|
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:
|
|
2227
|
-
deploymentOrigin:
|
|
2228
|
-
deploymentRevision:
|
|
2229
|
-
errorCode:
|
|
2230
|
-
errorMessage:
|
|
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
|
-
|
|
2233
|
-
|
|
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 =
|
|
2236
|
-
var applyDataSchema =
|
|
2237
|
-
status:
|
|
2238
|
-
runId:
|
|
2239
|
-
contractVersionId:
|
|
2240
|
-
fieldContractHash:
|
|
2241
|
-
editorDefinitionHash:
|
|
2242
|
-
fieldCount:
|
|
2243
|
-
routeCount:
|
|
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 =
|
|
2246
|
-
var verifyDataSchema =
|
|
2247
|
-
status:
|
|
2248
|
-
runId:
|
|
2249
|
-
deploymentOrigin:
|
|
2250
|
-
deploymentRevision:
|
|
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 =
|
|
2364
|
+
var verifyResponseSchema = z28.object({ ok: z28.literal(true), data: verifyDataSchema }).strict();
|
|
2253
2365
|
export {
|
|
2254
2366
|
bookingCheckCommand,
|
|
2255
2367
|
bookingInitCommand,
|