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/next.js
CHANGED
|
@@ -10,7 +10,7 @@ import { dirname } from "path";
|
|
|
10
10
|
|
|
11
11
|
// ../shared/dist/actors.js
|
|
12
12
|
import { z } from "zod";
|
|
13
|
-
var ACTOR_TYPES = ["
|
|
13
|
+
var ACTOR_TYPES = ["workspace_member", "site_member", "agent", "system"];
|
|
14
14
|
var actorTypeSchema = z.enum(ACTOR_TYPES);
|
|
15
15
|
|
|
16
16
|
// ../shared/dist/analytics-defaults.js
|
|
@@ -593,7 +593,7 @@ var bookingAvailabilityIntervalsSchema = z8.array(z8.object({
|
|
|
593
593
|
});
|
|
594
594
|
var bookingPublicConfigSchema = z8.object({
|
|
595
595
|
site: z8.object({
|
|
596
|
-
|
|
596
|
+
displayName: z8.string().trim().min(1),
|
|
597
597
|
timezone: z8.string().trim().min(1),
|
|
598
598
|
locale: z8.string().trim().min(2),
|
|
599
599
|
bookingPageSlug: z8.string().regex(/^[a-z0-9]+(?:-[a-z0-9]+)*$/).min(2).max(64),
|
|
@@ -1213,6 +1213,9 @@ var CONTINUE_SITE_SETUP_MAX_ITEMS = 50;
|
|
|
1213
1213
|
var CONTINUE_SITE_SETUP_RENDERED_PATH_MAX_BYTES = 512;
|
|
1214
1214
|
var CONTINUE_SITE_SETUP_VISIBLE_VALUE_MAX_BYTES = 256;
|
|
1215
1215
|
var CONTINUE_SITE_SETUP_LOCATOR_HINT_MAX_BYTES = 512;
|
|
1216
|
+
var CONTINUE_SITE_SETUP_REQUESTED_LABEL_MAX_BYTES = 120;
|
|
1217
|
+
var CONTINUE_SITE_SETUP_REQUESTED_SECTION_MAX_BYTES = 120;
|
|
1218
|
+
var CONTINUE_SITE_SETUP_REQUESTED_SUBSECTION_MAX_BYTES = 120;
|
|
1216
1219
|
var CONTINUE_SITE_SETUP_ITEMS_MAX_BYTES = 32 * 1024;
|
|
1217
1220
|
var CONTINUE_SITE_SETUP_HTTP_BODY_MAX_BYTES = 64 * 1024;
|
|
1218
1221
|
var siteSetupRunStatusSchema = z14.enum(SITE_SETUP_RUN_STATUSES);
|
|
@@ -1221,6 +1224,7 @@ var siteSetupErrorCodeSchema = z14.enum(SITE_SETUP_ERROR_CODES);
|
|
|
1221
1224
|
var editorFieldSchema = z14.object({
|
|
1222
1225
|
fieldId: fieldIdSchema,
|
|
1223
1226
|
label: z14.string().trim().min(1),
|
|
1227
|
+
subsection: z14.string().trim().min(1).optional(),
|
|
1224
1228
|
description: z14.string().trim().min(1).optional(),
|
|
1225
1229
|
required: z14.boolean().optional(),
|
|
1226
1230
|
maxLength: z14.number().int().positive().optional()
|
|
@@ -1228,7 +1232,24 @@ var editorFieldSchema = z14.object({
|
|
|
1228
1232
|
var editorSectionSchema = z14.object({
|
|
1229
1233
|
label: z14.string().trim().min(1),
|
|
1230
1234
|
fields: z14.array(editorFieldSchema).min(1)
|
|
1231
|
-
}).strict()
|
|
1235
|
+
}).strict().superRefine((section, context) => {
|
|
1236
|
+
const closedSubsections = /* @__PURE__ */ new Set();
|
|
1237
|
+
let currentSubsection;
|
|
1238
|
+
for (const [index, field] of section.fields.entries()) {
|
|
1239
|
+
if (field.subsection === currentSubsection)
|
|
1240
|
+
continue;
|
|
1241
|
+
if (currentSubsection)
|
|
1242
|
+
closedSubsections.add(currentSubsection);
|
|
1243
|
+
currentSubsection = field.subsection;
|
|
1244
|
+
if (currentSubsection && closedSubsections.has(currentSubsection)) {
|
|
1245
|
+
context.addIssue({
|
|
1246
|
+
code: "custom",
|
|
1247
|
+
message: `Subgroup fields must stay contiguous: ${currentSubsection}`,
|
|
1248
|
+
path: ["fields", index, "subsection"]
|
|
1249
|
+
});
|
|
1250
|
+
}
|
|
1251
|
+
}
|
|
1252
|
+
});
|
|
1232
1253
|
var editorRouteSchema = z14.object({
|
|
1233
1254
|
routeKey: siteFieldRouteKeySchema,
|
|
1234
1255
|
label: z14.string().trim().min(1),
|
|
@@ -1308,13 +1329,34 @@ function normalizedSafeTextSchema(maxBytes, label) {
|
|
|
1308
1329
|
var correctionItemBase = {
|
|
1309
1330
|
renderedPath: renderedPathSchema,
|
|
1310
1331
|
visibleValue: normalizedSafeTextSchema(CONTINUE_SITE_SETUP_VISIBLE_VALUE_MAX_BYTES, "visibleValue"),
|
|
1311
|
-
locatorHint: normalizedSafeTextSchema(CONTINUE_SITE_SETUP_LOCATOR_HINT_MAX_BYTES, "locatorHint")
|
|
1332
|
+
locatorHint: normalizedSafeTextSchema(CONTINUE_SITE_SETUP_LOCATOR_HINT_MAX_BYTES, "locatorHint"),
|
|
1333
|
+
requestedLabel: normalizedSafeTextSchema(CONTINUE_SITE_SETUP_REQUESTED_LABEL_MAX_BYTES, "requestedLabel").optional(),
|
|
1334
|
+
requestedSection: normalizedSafeTextSchema(CONTINUE_SITE_SETUP_REQUESTED_SECTION_MAX_BYTES, "requestedSection").optional(),
|
|
1335
|
+
requestedSubsection: normalizedSafeTextSchema(CONTINUE_SITE_SETUP_REQUESTED_SUBSECTION_MAX_BYTES, "requestedSubsection").optional(),
|
|
1336
|
+
requestedSortOrder: z14.number().int().nonnegative().optional()
|
|
1312
1337
|
};
|
|
1313
1338
|
var setupCorrectionItemSchema = z14.discriminatedUnion("kind", [
|
|
1314
1339
|
z14.object({ kind: z14.literal("text"), ...correctionItemBase }).strict(),
|
|
1315
1340
|
z14.object({ kind: z14.literal("link"), ...correctionItemBase }).strict(),
|
|
1316
1341
|
z14.object({ kind: z14.literal("image"), ...correctionItemBase }).strict()
|
|
1317
|
-
])
|
|
1342
|
+
]).superRefine((item, context) => {
|
|
1343
|
+
if (item.requestedSubsection && !item.requestedSection) {
|
|
1344
|
+
context.addIssue({
|
|
1345
|
+
code: "custom",
|
|
1346
|
+
message: "requestedSubsection requires requestedSection.",
|
|
1347
|
+
path: ["requestedSubsection"]
|
|
1348
|
+
});
|
|
1349
|
+
}
|
|
1350
|
+
});
|
|
1351
|
+
var setupCorrectionItemsSchema = z14.array(setupCorrectionItemSchema).max(CONTINUE_SITE_SETUP_MAX_ITEMS).superRefine((items, context) => {
|
|
1352
|
+
const bytes = utf8Bytes(stableJsonStringify(items));
|
|
1353
|
+
if (bytes > CONTINUE_SITE_SETUP_ITEMS_MAX_BYTES) {
|
|
1354
|
+
context.addIssue({
|
|
1355
|
+
code: "custom",
|
|
1356
|
+
message: "Correction items exceed the 32 KiB canonical payload limit."
|
|
1357
|
+
});
|
|
1358
|
+
}
|
|
1359
|
+
});
|
|
1318
1360
|
var canonicalHashSchema = z14.string().regex(/^sha256:[0-9a-f]{64}$/iu);
|
|
1319
1361
|
var deploymentRevisionSchema = normalizedSafeTextSchema(256, "deploymentRevision");
|
|
1320
1362
|
var continueSiteSetupInputSchema = z14.object({
|
|
@@ -1322,17 +1364,8 @@ var continueSiteSetupInputSchema = z14.object({
|
|
|
1322
1364
|
runId: z14.string().uuid(),
|
|
1323
1365
|
expectedFieldContractHash: canonicalHashSchema,
|
|
1324
1366
|
expectedDeploymentRevision: deploymentRevisionSchema,
|
|
1325
|
-
correctionItems:
|
|
1326
|
-
}).strict()
|
|
1327
|
-
const bytes = utf8Bytes(stableJsonStringify(input.correctionItems));
|
|
1328
|
-
if (bytes > CONTINUE_SITE_SETUP_ITEMS_MAX_BYTES) {
|
|
1329
|
-
context.addIssue({
|
|
1330
|
-
code: "custom",
|
|
1331
|
-
message: "Correction items exceed the 32 KiB canonical payload limit.",
|
|
1332
|
-
path: ["correctionItems"]
|
|
1333
|
-
});
|
|
1334
|
-
}
|
|
1335
|
-
});
|
|
1367
|
+
correctionItems: setupCorrectionItemsSchema
|
|
1368
|
+
}).strict();
|
|
1336
1369
|
var siteSetupContextInputSchema = z14.object({}).strict();
|
|
1337
1370
|
var siteSetupApplyInputSchema = z14.object({
|
|
1338
1371
|
fieldContract: siteFieldContractV1Schema,
|
|
@@ -1426,25 +1459,8 @@ var completeSiteSetupInputSchema = z14.object({
|
|
|
1426
1459
|
runId: z14.string().uuid(),
|
|
1427
1460
|
expectedFieldContractHash: canonicalHashSchema,
|
|
1428
1461
|
expectedDeploymentRevision: deploymentRevisionSchema,
|
|
1429
|
-
|
|
1430
|
-
|
|
1431
|
-
defaultCanPublish: z14.boolean()
|
|
1432
|
-
}).strict().superRefine((input, context) => {
|
|
1433
|
-
if (input.accessMode === "fallback" && input.siteDomainId) {
|
|
1434
|
-
context.addIssue({
|
|
1435
|
-
code: "custom",
|
|
1436
|
-
message: "Fallback access cannot use a custom domain.",
|
|
1437
|
-
path: ["siteDomainId"]
|
|
1438
|
-
});
|
|
1439
|
-
}
|
|
1440
|
-
if (input.accessMode === "custom_domain" && !input.siteDomainId) {
|
|
1441
|
-
context.addIssue({
|
|
1442
|
-
code: "custom",
|
|
1443
|
-
message: "Custom-domain access requires a site domain.",
|
|
1444
|
-
path: ["siteDomainId"]
|
|
1445
|
-
});
|
|
1446
|
-
}
|
|
1447
|
-
});
|
|
1462
|
+
expectedReadyFingerprint: canonicalHashSchema
|
|
1463
|
+
}).strict();
|
|
1448
1464
|
var refreshSiteSetupDeploymentInputSchema = z14.object({
|
|
1449
1465
|
siteId: z14.string().uuid(),
|
|
1450
1466
|
deploymentUrl: z14.string().url().refine((value) => value.startsWith("https://")),
|
|
@@ -1469,7 +1485,7 @@ function utf8Bytes(value) {
|
|
|
1469
1485
|
}
|
|
1470
1486
|
|
|
1471
1487
|
// ../shared/dist/bridge-protocol.js
|
|
1472
|
-
var BRIDGE_PROTOCOL_VERSION =
|
|
1488
|
+
var BRIDGE_PROTOCOL_VERSION = 2;
|
|
1473
1489
|
var bridgeRectSchema = z15.object({
|
|
1474
1490
|
x: z15.number(),
|
|
1475
1491
|
y: z15.number(),
|
|
@@ -1496,6 +1512,12 @@ var bridgePreviewValueSchema = z15.discriminatedUnion("fieldType", [
|
|
|
1496
1512
|
previewLinkValueSchema,
|
|
1497
1513
|
previewImageValueSchema
|
|
1498
1514
|
]);
|
|
1515
|
+
var fieldSelectionModeSchema = z15.enum(["replace", "range", "toggle"]);
|
|
1516
|
+
var fieldBridgeMissingContentActionSchema = z15.enum([
|
|
1517
|
+
"add",
|
|
1518
|
+
"select",
|
|
1519
|
+
"remove"
|
|
1520
|
+
]);
|
|
1499
1521
|
var FIELD_BRIDGE_MESSAGE_TYPES = [
|
|
1500
1522
|
"siteplane:field-bridge:init",
|
|
1501
1523
|
"siteplane:field-bridge:ready",
|
|
@@ -1505,11 +1527,12 @@ var FIELD_BRIDGE_MESSAGE_TYPES = [
|
|
|
1505
1527
|
"siteplane:field-bridge:apply-preview-values",
|
|
1506
1528
|
"siteplane:field-bridge:test-preview-values",
|
|
1507
1529
|
"siteplane:field-bridge:preview-ack",
|
|
1508
|
-
"siteplane:field-bridge:set-
|
|
1530
|
+
"siteplane:field-bridge:set-visual-control-state",
|
|
1509
1531
|
"siteplane:field-bridge:missing-content",
|
|
1510
1532
|
"siteplane:field-bridge:error"
|
|
1511
1533
|
];
|
|
1512
1534
|
var canonicalFieldContractHashSchema = z15.string().regex(/^sha256:[0-9a-f]{64}$/u);
|
|
1535
|
+
var bridgeSectionSchema = z15.string().trim().min(1).max(256);
|
|
1513
1536
|
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.");
|
|
1514
1537
|
var fieldBridgeIdentitySchema = z15.object({
|
|
1515
1538
|
publicRuntimeKeyId: z15.string().uuid(),
|
|
@@ -1555,7 +1578,7 @@ var fieldBridgeReadyMessageSchema = fieldBridgeBaseSchema.extend({
|
|
|
1555
1578
|
z15.literal("field_selection"),
|
|
1556
1579
|
z15.literal("preview_values"),
|
|
1557
1580
|
z15.literal("field_evidence"),
|
|
1558
|
-
z15.literal("
|
|
1581
|
+
z15.literal("visual_field_control")
|
|
1559
1582
|
])
|
|
1560
1583
|
}).strict()
|
|
1561
1584
|
});
|
|
@@ -1568,14 +1591,33 @@ var fieldBridgeFieldsMessageSchema = fieldBridgeBaseSchema.extend({
|
|
|
1568
1591
|
});
|
|
1569
1592
|
var fieldBridgeSelectFieldMessageSchema = fieldBridgeBaseSchema.extend({
|
|
1570
1593
|
type: z15.literal("siteplane:field-bridge:select-field"),
|
|
1571
|
-
payload: z15.object({
|
|
1594
|
+
payload: z15.object({
|
|
1595
|
+
fieldId: fieldIdSchema,
|
|
1596
|
+
selectionMode: fieldSelectionModeSchema
|
|
1597
|
+
}).strict()
|
|
1572
1598
|
});
|
|
1573
1599
|
var fieldBridgeSetSelectedFieldMessageSchema = fieldBridgeBaseSchema.extend({
|
|
1574
1600
|
type: z15.literal("siteplane:field-bridge:set-selected-field"),
|
|
1575
1601
|
payload: z15.object({
|
|
1576
|
-
|
|
1602
|
+
fieldIds: z15.array(fieldIdSchema).max(200),
|
|
1603
|
+
primaryFieldId: fieldIdSchema.nullable(),
|
|
1577
1604
|
scrollIntoView: z15.boolean().optional()
|
|
1578
|
-
}).strict()
|
|
1605
|
+
}).strict().superRefine((value, context) => {
|
|
1606
|
+
if (value.fieldIds.length > 0 && value.primaryFieldId === null) {
|
|
1607
|
+
context.addIssue({
|
|
1608
|
+
code: "custom",
|
|
1609
|
+
message: "A non-empty selection needs a primary field.",
|
|
1610
|
+
path: ["primaryFieldId"]
|
|
1611
|
+
});
|
|
1612
|
+
}
|
|
1613
|
+
if (value.primaryFieldId !== null && !value.fieldIds.includes(value.primaryFieldId)) {
|
|
1614
|
+
context.addIssue({
|
|
1615
|
+
code: "custom",
|
|
1616
|
+
message: "The primary field must be part of the selection.",
|
|
1617
|
+
path: ["primaryFieldId"]
|
|
1618
|
+
});
|
|
1619
|
+
}
|
|
1620
|
+
})
|
|
1579
1621
|
});
|
|
1580
1622
|
var fieldBridgeApplyPreviewValuesMessageSchema = fieldBridgeBaseSchema.extend({
|
|
1581
1623
|
type: z15.literal("siteplane:field-bridge:apply-preview-values"),
|
|
@@ -1594,13 +1636,28 @@ var fieldBridgePreviewAckMessageSchema = fieldBridgeBaseSchema.extend({
|
|
|
1594
1636
|
fieldIds: z15.array(fieldIdSchema).max(200)
|
|
1595
1637
|
}).strict()
|
|
1596
1638
|
});
|
|
1597
|
-
var
|
|
1598
|
-
type: z15.literal("siteplane:field-bridge:set-
|
|
1599
|
-
payload: z15.object({
|
|
1639
|
+
var fieldBridgeSetVisualControlStateMessageSchema = fieldBridgeBaseSchema.extend({
|
|
1640
|
+
type: z15.literal("siteplane:field-bridge:set-visual-control-state"),
|
|
1641
|
+
payload: z15.object({
|
|
1642
|
+
enabled: z15.boolean(),
|
|
1643
|
+
fieldProximityEnabled: z15.boolean(),
|
|
1644
|
+
pendingKeys: z15.array(z15.string().trim().min(1).max(2048)).max(50),
|
|
1645
|
+
activeFieldIds: z15.array(fieldIdSchema),
|
|
1646
|
+
fieldSections: z15.record(fieldIdSchema, bridgeSectionSchema),
|
|
1647
|
+
selectedPending: z15.array(z15.object({
|
|
1648
|
+
key: z15.string().trim().min(1).max(2048),
|
|
1649
|
+
locatorHint: z15.string().trim().min(1).max(2048)
|
|
1650
|
+
}).strict()).max(50),
|
|
1651
|
+
scrollPendingIntoView: z15.boolean().optional()
|
|
1652
|
+
}).strict()
|
|
1600
1653
|
});
|
|
1601
1654
|
var fieldBridgeMissingContentMessageSchema = fieldBridgeBaseSchema.extend({
|
|
1602
1655
|
type: z15.literal("siteplane:field-bridge:missing-content"),
|
|
1603
|
-
payload: z15.object({
|
|
1656
|
+
payload: z15.object({
|
|
1657
|
+
action: fieldBridgeMissingContentActionSchema,
|
|
1658
|
+
item: setupCorrectionItemSchema,
|
|
1659
|
+
suggestedSection: bridgeSectionSchema.optional()
|
|
1660
|
+
}).strict()
|
|
1604
1661
|
});
|
|
1605
1662
|
var fieldBridgeErrorMessageSchema = fieldBridgeBaseSchema.extend({
|
|
1606
1663
|
type: z15.literal("siteplane:field-bridge:error"),
|
|
@@ -1619,7 +1676,7 @@ var fieldBridgeMessageSchema = z15.discriminatedUnion("type", [
|
|
|
1619
1676
|
fieldBridgeApplyPreviewValuesMessageSchema,
|
|
1620
1677
|
fieldBridgeTestPreviewValuesMessageSchema,
|
|
1621
1678
|
fieldBridgePreviewAckMessageSchema,
|
|
1622
|
-
|
|
1679
|
+
fieldBridgeSetVisualControlStateMessageSchema,
|
|
1623
1680
|
fieldBridgeMissingContentMessageSchema,
|
|
1624
1681
|
fieldBridgeErrorMessageSchema
|
|
1625
1682
|
]);
|
|
@@ -1630,8 +1687,8 @@ import { z as z17 } from "zod";
|
|
|
1630
1687
|
// ../shared/dist/errors.js
|
|
1631
1688
|
import { z as z16 } from "zod";
|
|
1632
1689
|
var UI_ERROR_CATEGORIES = [
|
|
1633
|
-
"
|
|
1634
|
-
"
|
|
1690
|
+
"site_member",
|
|
1691
|
+
"workspace_member",
|
|
1635
1692
|
"internal"
|
|
1636
1693
|
];
|
|
1637
1694
|
var uiErrorCategorySchema = z16.enum(UI_ERROR_CATEGORIES);
|
|
@@ -1656,52 +1713,79 @@ var commandResultSchema = z17.discriminatedUnion("ok", [
|
|
|
1656
1713
|
commandErrorSchema
|
|
1657
1714
|
]);
|
|
1658
1715
|
|
|
1659
|
-
// ../shared/dist/
|
|
1716
|
+
// ../shared/dist/editor-settings.js
|
|
1660
1717
|
import { z as z18 } from "zod";
|
|
1661
|
-
var
|
|
1662
|
-
|
|
1718
|
+
var editorColorSchemeSchema = z18.enum([
|
|
1719
|
+
"paper",
|
|
1720
|
+
"slate",
|
|
1721
|
+
"siteplane",
|
|
1722
|
+
"bloom"
|
|
1723
|
+
]);
|
|
1724
|
+
var editorColorSchemes = editorColorSchemeSchema.options;
|
|
1725
|
+
var editorColorModeSchema = z18.enum(["light", "dark"]);
|
|
1726
|
+
var editorColorModes = editorColorModeSchema.options;
|
|
1663
1727
|
|
|
1664
|
-
// ../shared/dist/
|
|
1728
|
+
// ../shared/dist/site-slug.js
|
|
1665
1729
|
import { z as z19 } from "zod";
|
|
1666
|
-
var
|
|
1667
|
-
|
|
1668
|
-
|
|
1669
|
-
|
|
1670
|
-
|
|
1671
|
-
|
|
1672
|
-
|
|
1673
|
-
|
|
1674
|
-
|
|
1675
|
-
|
|
1676
|
-
|
|
1677
|
-
|
|
1678
|
-
|
|
1679
|
-
|
|
1680
|
-
|
|
1681
|
-
|
|
1682
|
-
|
|
1683
|
-
|
|
1684
|
-
|
|
1685
|
-
|
|
1686
|
-
|
|
1730
|
+
var SITE_SLUG_PATTERN = /^[a-z0-9]+(?:-[a-z0-9]+)*$/;
|
|
1731
|
+
var RESERVED_SITE_SLUGS = /* @__PURE__ */ new Set([
|
|
1732
|
+
"account",
|
|
1733
|
+
"admin",
|
|
1734
|
+
"api",
|
|
1735
|
+
"app",
|
|
1736
|
+
"auth",
|
|
1737
|
+
"book",
|
|
1738
|
+
"claim",
|
|
1739
|
+
"dev",
|
|
1740
|
+
"login",
|
|
1741
|
+
"new",
|
|
1742
|
+
"portal",
|
|
1743
|
+
"support",
|
|
1744
|
+
"workspace"
|
|
1745
|
+
]);
|
|
1746
|
+
var siteSlugSchema = z19.string().regex(SITE_SLUG_PATTERN, "Invalid site slug").refine((value) => !RESERVED_SITE_SLUGS.has(value), "Reserved site slug");
|
|
1747
|
+
|
|
1748
|
+
// ../shared/dist/entitlements.js
|
|
1749
|
+
import { z as z20 } from "zod";
|
|
1750
|
+
var entitlementSnapshotSchema = z20.object({
|
|
1751
|
+
planKey: z20.string().trim().min(1),
|
|
1752
|
+
sitesLimit: z20.number().int().positive(),
|
|
1753
|
+
siteMembersPerSiteLimit: z20.number().int().positive(),
|
|
1754
|
+
customAdminDomainsEnabled: z20.boolean(),
|
|
1755
|
+
agentMcpEnabled: z20.boolean(),
|
|
1756
|
+
emailNotificationsEnabled: z20.boolean(),
|
|
1757
|
+
analyticsEnabled: z20.boolean(),
|
|
1758
|
+
analyticsSitesLimit: z20.number().int().min(0),
|
|
1759
|
+
analyticsPortalPerformanceEnabled: z20.boolean(),
|
|
1760
|
+
analyticsMonthlyReportsEnabled: z20.boolean(),
|
|
1761
|
+
analyticsAiSummaryEnabled: z20.boolean(),
|
|
1762
|
+
analyticsRawEventRetentionDays: z20.number().int().min(1).max(ANALYTICS_RETENTION_DEFAULTS.maxRawEventRetentionDaysWithoutAdr),
|
|
1763
|
+
analyticsMonthlyEventLimit: z20.number().int().min(0),
|
|
1764
|
+
bookingEnabled: z20.boolean().default(false),
|
|
1765
|
+
bookingSitesLimit: z20.number().int().min(0).default(0),
|
|
1766
|
+
bookingPortalManagementEnabled: z20.boolean().default(false),
|
|
1767
|
+
bookingResourcesPerSiteLimit: z20.number().int().min(0).default(0),
|
|
1768
|
+
bookingServicesPerSiteLimit: z20.number().int().min(0).default(0),
|
|
1769
|
+
bookingMonthlyBookingsLimit: z20.number().int().min(0).default(0),
|
|
1770
|
+
bookingRemindersEnabled: z20.boolean().default(false)
|
|
1687
1771
|
});
|
|
1688
1772
|
var EARLY_ACCESS_PLAN = {
|
|
1689
1773
|
planKey: "early_access_2026",
|
|
1690
1774
|
sitesLimit: 3,
|
|
1691
|
-
|
|
1775
|
+
siteMembersPerSiteLimit: 5,
|
|
1692
1776
|
customAdminDomainsEnabled: true,
|
|
1693
1777
|
agentMcpEnabled: true,
|
|
1694
1778
|
emailNotificationsEnabled: true,
|
|
1695
1779
|
analyticsEnabled: false,
|
|
1696
1780
|
analyticsSitesLimit: 0,
|
|
1697
|
-
|
|
1781
|
+
analyticsPortalPerformanceEnabled: false,
|
|
1698
1782
|
analyticsMonthlyReportsEnabled: false,
|
|
1699
1783
|
analyticsAiSummaryEnabled: false,
|
|
1700
1784
|
analyticsRawEventRetentionDays: ANALYTICS_RETENTION_DEFAULTS.enabledRawEventRetentionDays,
|
|
1701
1785
|
analyticsMonthlyEventLimit: 0,
|
|
1702
1786
|
bookingEnabled: true,
|
|
1703
1787
|
bookingSitesLimit: 3,
|
|
1704
|
-
|
|
1788
|
+
bookingPortalManagementEnabled: true,
|
|
1705
1789
|
bookingResourcesPerSiteLimit: 10,
|
|
1706
1790
|
bookingServicesPerSiteLimit: 50,
|
|
1707
1791
|
bookingMonthlyBookingsLimit: 0,
|
|
@@ -1709,7 +1793,7 @@ var EARLY_ACCESS_PLAN = {
|
|
|
1709
1793
|
};
|
|
1710
1794
|
|
|
1711
1795
|
// ../shared/dist/readiness.js
|
|
1712
|
-
import { z as
|
|
1796
|
+
import { z as z21 } from "zod";
|
|
1713
1797
|
var READINESS_CHECK_KEYS = [
|
|
1714
1798
|
"agent_instructions_installed",
|
|
1715
1799
|
"runtime_package_connected",
|
|
@@ -1724,19 +1808,19 @@ var READINESS_STATUSES = [
|
|
|
1724
1808
|
"failing",
|
|
1725
1809
|
"warning"
|
|
1726
1810
|
];
|
|
1727
|
-
var readinessCheckKeySchema =
|
|
1728
|
-
var readinessStatusSchema =
|
|
1811
|
+
var readinessCheckKeySchema = z21.enum(READINESS_CHECK_KEYS);
|
|
1812
|
+
var readinessStatusSchema = z21.enum(READINESS_STATUSES);
|
|
1729
1813
|
|
|
1730
1814
|
// ../shared/dist/site.js
|
|
1731
|
-
import { z as
|
|
1815
|
+
import { z as z22 } from "zod";
|
|
1732
1816
|
var SITE_STATUSES = [
|
|
1733
1817
|
"setup",
|
|
1734
|
-
"
|
|
1818
|
+
"active",
|
|
1735
1819
|
"disabled",
|
|
1736
1820
|
"archived"
|
|
1737
1821
|
];
|
|
1738
|
-
var siteStatusSchema =
|
|
1739
|
-
var websiteUrlSchema =
|
|
1822
|
+
var siteStatusSchema = z22.enum(SITE_STATUSES);
|
|
1823
|
+
var websiteUrlSchema = z22.string().trim().url().refine((value) => value.startsWith("https://") || value.startsWith("http://"), "Website URL must use http or https");
|
|
1740
1824
|
|
|
1741
1825
|
// ../cli/dist/analytics/static-scan.js
|
|
1742
1826
|
import ts from "typescript";
|
|
@@ -1774,16 +1858,16 @@ ${analyticsRulesTemplate}`;
|
|
|
1774
1858
|
import { createHash } from "crypto";
|
|
1775
1859
|
|
|
1776
1860
|
// ../cli/dist/commands/analytics/public-key.js
|
|
1777
|
-
import { z as
|
|
1778
|
-
var responseSchema =
|
|
1779
|
-
ok:
|
|
1780
|
-
data:
|
|
1781
|
-
rawPublicKey:
|
|
1861
|
+
import { z as z23 } from "zod";
|
|
1862
|
+
var responseSchema = z23.object({
|
|
1863
|
+
ok: z23.literal(true),
|
|
1864
|
+
data: z23.object({
|
|
1865
|
+
rawPublicKey: z23.string().regex(/^pk_siteplane_[A-Za-z0-9_-]{16}_[A-Za-z0-9_-]{43}$/)
|
|
1782
1866
|
})
|
|
1783
1867
|
});
|
|
1784
|
-
var errorResponseSchema =
|
|
1785
|
-
error:
|
|
1786
|
-
code:
|
|
1868
|
+
var errorResponseSchema = z23.object({
|
|
1869
|
+
error: z23.object({
|
|
1870
|
+
code: z23.string().regex(/^[a-z][a-z0-9_.-]+$/u)
|
|
1787
1871
|
})
|
|
1788
1872
|
});
|
|
1789
1873
|
|
|
@@ -1813,28 +1897,15 @@ alwaysApply: true
|
|
|
1813
1897
|
|
|
1814
1898
|
${bookingRulesTemplate}`;
|
|
1815
1899
|
|
|
1816
|
-
// ../cli/dist/
|
|
1817
|
-
import {
|
|
1818
|
-
import {
|
|
1819
|
-
import { join as join3 } from "path";
|
|
1820
|
-
import { z as z23 } from "zod";
|
|
1821
|
-
var siteplaneProjectConfigSchema = z23.object({
|
|
1822
|
-
version: z23.literal(1),
|
|
1823
|
-
apiBaseUrl: z23.string().url(),
|
|
1824
|
-
siteId: z23.string().uuid(),
|
|
1825
|
-
publicSiteKeyId: z23.string().uuid(),
|
|
1826
|
-
publicSiteKey: z23.string().trim().min(1),
|
|
1827
|
-
fieldContractHash: z23.string().regex(/^sha256:[0-9a-f]{64}$/iu).optional()
|
|
1828
|
-
}).strict();
|
|
1829
|
-
async function readProjectConfig(projectDir) {
|
|
1830
|
-
return siteplaneProjectConfigSchema.parse(JSON.parse(await readFile5(join3(projectDir, "siteplane.config.json"), "utf8")));
|
|
1831
|
-
}
|
|
1900
|
+
// ../cli/dist/commands/connect.js
|
|
1901
|
+
import { randomBytes } from "crypto";
|
|
1902
|
+
import { z as z27 } from "zod";
|
|
1832
1903
|
|
|
1833
1904
|
// ../cli/dist/config/credentials.js
|
|
1834
1905
|
import { execFile } from "child_process";
|
|
1835
|
-
import { randomUUID as
|
|
1836
|
-
import { chmod
|
|
1837
|
-
import { dirname as dirname5, join as
|
|
1906
|
+
import { randomUUID as randomUUID2 } from "crypto";
|
|
1907
|
+
import { chmod, mkdir as mkdir5, open, readFile as readFile5, rename, rm } from "fs/promises";
|
|
1908
|
+
import { dirname as dirname5, join as join3, relative } from "path";
|
|
1838
1909
|
import { promisify } from "util";
|
|
1839
1910
|
import { z as z24 } from "zod";
|
|
1840
1911
|
var siteplaneCredentialsSchema = z24.object({
|
|
@@ -1843,32 +1914,66 @@ var siteplaneCredentialsSchema = z24.object({
|
|
|
1843
1914
|
}).strict();
|
|
1844
1915
|
var execFileAsync = promisify(execFile);
|
|
1845
1916
|
|
|
1846
|
-
// ../cli/dist/
|
|
1847
|
-
import {
|
|
1917
|
+
// ../cli/dist/config/project-config.js
|
|
1918
|
+
import { access, chmod as chmod2, open as open2, readFile as readFile6, rename as rename2, rm as rm2 } from "fs/promises";
|
|
1919
|
+
import { randomUUID as randomUUID3 } from "crypto";
|
|
1920
|
+
import { join as join4 } from "path";
|
|
1848
1921
|
import { z as z25 } from "zod";
|
|
1849
|
-
var
|
|
1850
|
-
|
|
1922
|
+
var siteplaneProjectConfigSchema = z25.object({
|
|
1923
|
+
version: z25.literal(1),
|
|
1851
1924
|
apiBaseUrl: z25.string().url(),
|
|
1852
1925
|
siteId: z25.string().uuid(),
|
|
1853
1926
|
publicSiteKeyId: z25.string().uuid(),
|
|
1854
1927
|
publicSiteKey: z25.string().trim().min(1),
|
|
1855
|
-
|
|
1856
|
-
siteRevalidationSecret: z25.string().regex(/^[A-Za-z0-9_-]{43}$/u)
|
|
1928
|
+
fieldContractHash: z25.string().regex(/^sha256:[0-9a-f]{64}$/iu).optional()
|
|
1857
1929
|
}).strict();
|
|
1858
|
-
|
|
1859
|
-
|
|
1860
|
-
|
|
1861
|
-
|
|
1862
|
-
|
|
1930
|
+
async function readProjectConfig(projectDir) {
|
|
1931
|
+
return siteplaneProjectConfigSchema.parse(JSON.parse(await readFile6(join4(projectDir, "siteplane.config.json"), "utf8")));
|
|
1932
|
+
}
|
|
1933
|
+
|
|
1934
|
+
// ../cli/dist/commands/init.js
|
|
1935
|
+
import { join as join5 } from "path";
|
|
1936
|
+
import { z as z26 } from "zod";
|
|
1937
|
+
var siteSetupBootstrapDataSchema = z26.object({
|
|
1938
|
+
credentialPurpose: z26.literal("site_setup"),
|
|
1939
|
+
apiBaseUrl: z26.string().url(),
|
|
1940
|
+
siteId: z26.string().uuid(),
|
|
1941
|
+
publicSiteKeyId: z26.string().uuid(),
|
|
1942
|
+
publicSiteKey: z26.string().trim().min(1),
|
|
1943
|
+
accessToken: z26.string().trim().min(1),
|
|
1944
|
+
siteRevalidationSecret: z26.string().regex(/^[A-Za-z0-9_-]{43}$/u)
|
|
1863
1945
|
}).strict();
|
|
1864
|
-
var
|
|
1865
|
-
|
|
1866
|
-
|
|
1946
|
+
var featureBootstrapDataSchema = z26.object({
|
|
1947
|
+
credentialPurpose: z26.enum(["analytics", "booking"]),
|
|
1948
|
+
apiBaseUrl: z26.string().url(),
|
|
1949
|
+
siteId: z26.string().uuid(),
|
|
1950
|
+
accessToken: z26.string().trim().min(1)
|
|
1951
|
+
}).strict();
|
|
1952
|
+
var bootstrapResponseSchema = z26.object({
|
|
1953
|
+
ok: z26.literal(true),
|
|
1954
|
+
data: z26.discriminatedUnion("credentialPurpose", [
|
|
1867
1955
|
siteSetupBootstrapDataSchema,
|
|
1868
1956
|
featureBootstrapDataSchema
|
|
1869
1957
|
])
|
|
1870
1958
|
}).strict();
|
|
1871
1959
|
|
|
1960
|
+
// ../cli/dist/commands/connect.js
|
|
1961
|
+
var claimResponseSchema = z27.object({
|
|
1962
|
+
ok: z27.literal(true),
|
|
1963
|
+
data: z27.object({
|
|
1964
|
+
pairingId: z27.string().uuid(),
|
|
1965
|
+
status: z27.literal("approval_required")
|
|
1966
|
+
}).passthrough()
|
|
1967
|
+
}).strict();
|
|
1968
|
+
var waitingResponseSchema = z27.object({
|
|
1969
|
+
ok: z27.literal(true),
|
|
1970
|
+
data: z27.object({ status: z27.literal("approval_required") }).strict()
|
|
1971
|
+
}).strict();
|
|
1972
|
+
var bootstrapResponseSchema2 = z27.object({
|
|
1973
|
+
ok: z27.literal(true),
|
|
1974
|
+
data: siteSetupBootstrapDataSchema
|
|
1975
|
+
}).strict();
|
|
1976
|
+
|
|
1872
1977
|
// ../cli/dist/commands/scan.js
|
|
1873
1978
|
import { readdir } from "fs/promises";
|
|
1874
1979
|
import { extname, join as join6 } from "path";
|
|
@@ -1914,7 +2019,7 @@ async function collectSourceFiles(directory) {
|
|
|
1914
2019
|
import { execFile as execFile2 } from "child_process";
|
|
1915
2020
|
import { readFile as readFile7 } from "fs/promises";
|
|
1916
2021
|
import { promisify as promisify2 } from "util";
|
|
1917
|
-
import { z as
|
|
2022
|
+
import { z as z28 } from "zod";
|
|
1918
2023
|
|
|
1919
2024
|
// ../cli/dist/scan/next-source-scan.js
|
|
1920
2025
|
import ts2 from "typescript";
|
|
@@ -2581,49 +2686,52 @@ function isPositionalFieldReference(value) {
|
|
|
2581
2686
|
|
|
2582
2687
|
// ../cli/dist/commands/site-setup.js
|
|
2583
2688
|
var execFileAsync2 = promisify2(execFile2);
|
|
2584
|
-
var safeErrorSchema =
|
|
2585
|
-
code:
|
|
2586
|
-
message:
|
|
2689
|
+
var safeErrorSchema = z28.object({
|
|
2690
|
+
code: z28.string().trim().min(1),
|
|
2691
|
+
message: z28.string().trim().min(1)
|
|
2587
2692
|
}).passthrough();
|
|
2588
|
-
var errorResponseSchema2 =
|
|
2589
|
-
var contextDataSchema =
|
|
2590
|
-
site:
|
|
2591
|
-
run:
|
|
2592
|
-
runId:
|
|
2593
|
-
mode:
|
|
2594
|
-
status:
|
|
2693
|
+
var errorResponseSchema2 = z28.object({ ok: z28.literal(false), error: safeErrorSchema }).passthrough();
|
|
2694
|
+
var contextDataSchema = z28.object({
|
|
2695
|
+
site: z28.object({ siteId: z28.string().uuid(), portalPath: z28.string() }),
|
|
2696
|
+
run: z28.object({
|
|
2697
|
+
runId: z28.string().uuid(),
|
|
2698
|
+
mode: z28.enum(["initial", "update"]),
|
|
2699
|
+
status: z28.enum([
|
|
2595
2700
|
"waiting_for_agent",
|
|
2596
2701
|
"working",
|
|
2597
2702
|
"action_required",
|
|
2598
2703
|
"ready_for_review"
|
|
2599
2704
|
]),
|
|
2600
|
-
fieldContractHash:
|
|
2601
|
-
deploymentOrigin:
|
|
2602
|
-
deploymentRevision:
|
|
2603
|
-
errorCode:
|
|
2604
|
-
errorMessage:
|
|
2705
|
+
fieldContractHash: z28.string().nullable(),
|
|
2706
|
+
deploymentOrigin: z28.string().nullable(),
|
|
2707
|
+
deploymentRevision: z28.string().nullable(),
|
|
2708
|
+
errorCode: z28.string().nullable(),
|
|
2709
|
+
errorMessage: z28.string().nullable()
|
|
2605
2710
|
}),
|
|
2606
|
-
|
|
2607
|
-
|
|
2711
|
+
structureHandoff: z28.object({
|
|
2712
|
+
pendingFields: z28.array(setupCorrectionItemSchema).min(1).max(50)
|
|
2713
|
+
}).strict().nullable(),
|
|
2714
|
+
allowedTasks: z28.array(z28.string()),
|
|
2715
|
+
requiredEnvironmentNames: z28.array(z28.string())
|
|
2608
2716
|
}).strict();
|
|
2609
|
-
var contextResponseSchema =
|
|
2610
|
-
var applyDataSchema =
|
|
2611
|
-
status:
|
|
2612
|
-
runId:
|
|
2613
|
-
contractVersionId:
|
|
2614
|
-
fieldContractHash:
|
|
2615
|
-
editorDefinitionHash:
|
|
2616
|
-
fieldCount:
|
|
2617
|
-
routeCount:
|
|
2717
|
+
var contextResponseSchema = z28.object({ ok: z28.literal(true), data: contextDataSchema }).strict();
|
|
2718
|
+
var applyDataSchema = z28.object({
|
|
2719
|
+
status: z28.enum(["applied", "ready_for_review"]),
|
|
2720
|
+
runId: z28.string().uuid().optional(),
|
|
2721
|
+
contractVersionId: z28.string().uuid().optional(),
|
|
2722
|
+
fieldContractHash: z28.string().regex(/^sha256:[0-9a-f]{64}$/u),
|
|
2723
|
+
editorDefinitionHash: z28.string().regex(/^sha256:[0-9a-f]{64}$/u).optional(),
|
|
2724
|
+
fieldCount: z28.number().int().nonnegative().optional(),
|
|
2725
|
+
routeCount: z28.number().int().nonnegative().optional()
|
|
2618
2726
|
}).strict();
|
|
2619
|
-
var applyResponseSchema =
|
|
2620
|
-
var verifyDataSchema =
|
|
2621
|
-
status:
|
|
2622
|
-
runId:
|
|
2623
|
-
deploymentOrigin:
|
|
2624
|
-
deploymentRevision:
|
|
2727
|
+
var applyResponseSchema = z28.object({ ok: z28.literal(true), data: applyDataSchema }).strict();
|
|
2728
|
+
var verifyDataSchema = z28.object({
|
|
2729
|
+
status: z28.literal("ready_for_review"),
|
|
2730
|
+
runId: z28.string().uuid().optional(),
|
|
2731
|
+
deploymentOrigin: z28.string().url().optional(),
|
|
2732
|
+
deploymentRevision: z28.string().optional()
|
|
2625
2733
|
}).strict();
|
|
2626
|
-
var verifyResponseSchema =
|
|
2734
|
+
var verifyResponseSchema = z28.object({ ok: z28.literal(true), data: verifyDataSchema }).strict();
|
|
2627
2735
|
|
|
2628
2736
|
// src/next.ts
|
|
2629
2737
|
var SiteplaneNextContractError = class extends Error {
|