@getrheo/rheo-skill 1.0.1 → 2.0.1
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/package.json +3 -3
- package/rheo/SKILL.md +1 -1
- package/rheo/rheo-flow-import/scripts/lib/rheo-cli.mjs +80 -1315
|
@@ -4089,8 +4089,6 @@ var parseHyperlinkHref = (raw) => {
|
|
|
4089
4089
|
};
|
|
4090
4090
|
|
|
4091
4091
|
// ../contracts/src/constants/index.ts
|
|
4092
|
-
var ENVIRONMENTS = ["test", "live"];
|
|
4093
|
-
var ROLES = ["owner", "editor"];
|
|
4094
4092
|
var FIELD_CLASSIFICATIONS = ["safe", "sensitive"];
|
|
4095
4093
|
var MEDIA_TYPES = ["image", "font", "lottie", "video"];
|
|
4096
4094
|
var MAX_IMAGE_BYTES = 5 * 1024 * 1024;
|
|
@@ -6407,87 +6405,7 @@ var AttributionProviderSignalResponseSchema = external_exports.object({
|
|
|
6407
6405
|
lastSeenAt: external_exports.string().nullable()
|
|
6408
6406
|
});
|
|
6409
6407
|
|
|
6410
|
-
// ../contracts/src/
|
|
6411
|
-
var CanvasEditorGatesResolvedSchema = external_exports.object({
|
|
6412
|
-
lottie: external_exports.boolean(),
|
|
6413
|
-
oauthLogin: external_exports.boolean(),
|
|
6414
|
-
oauthProviderPreset: external_exports.boolean(),
|
|
6415
|
-
oauthProviderCustom: external_exports.boolean(),
|
|
6416
|
-
emailPasswordAuth: external_exports.boolean(),
|
|
6417
|
-
emailPasswordField: external_exports.boolean(),
|
|
6418
|
-
emailPasswordSubmit: external_exports.boolean(),
|
|
6419
|
-
requestOsPermission: external_exports.boolean()
|
|
6420
|
-
});
|
|
6421
|
-
var ALL_TRUE = {
|
|
6422
|
-
lottie: true,
|
|
6423
|
-
oauthLogin: true,
|
|
6424
|
-
oauthProviderPreset: true,
|
|
6425
|
-
oauthProviderCustom: true,
|
|
6426
|
-
emailPasswordAuth: true,
|
|
6427
|
-
emailPasswordField: true,
|
|
6428
|
-
emailPasswordSubmit: true,
|
|
6429
|
-
requestOsPermission: true
|
|
6430
|
-
};
|
|
6431
|
-
var CanvasEditorGatesPatchSchema = external_exports.object({
|
|
6432
|
-
lottie: external_exports.boolean().optional(),
|
|
6433
|
-
oauthLogin: external_exports.boolean().optional(),
|
|
6434
|
-
oauthProviderPreset: external_exports.boolean().optional(),
|
|
6435
|
-
oauthProviderCustom: external_exports.boolean().optional(),
|
|
6436
|
-
emailPasswordAuth: external_exports.boolean().optional(),
|
|
6437
|
-
emailPasswordField: external_exports.boolean().optional(),
|
|
6438
|
-
emailPasswordSubmit: external_exports.boolean().optional(),
|
|
6439
|
-
requestOsPermission: external_exports.boolean().optional()
|
|
6440
|
-
}).strict();
|
|
6441
|
-
var parseCanvasEditorGates = (raw) => {
|
|
6442
|
-
if (raw == null) return { ...ALL_TRUE };
|
|
6443
|
-
const parsed = CanvasEditorGatesPatchSchema.safeParse(raw);
|
|
6444
|
-
if (!parsed.success) return { ...ALL_TRUE };
|
|
6445
|
-
return { ...ALL_TRUE, ...parsed.data };
|
|
6446
|
-
};
|
|
6447
|
-
var layerViolationMessage = (screenId, layerId, label) => `Screen "${screenId}": ${label} (layer "${layerId}") is disabled for this app in canvas editor settings.`;
|
|
6448
|
-
var buttonOsPermissionMessage = (screenId, layerId) => `Screen "${screenId}": request OS permission button actions are disabled for this app (layer "${layerId}").`;
|
|
6449
|
-
var collectCanvasGateViolations = (manifest, gates) => {
|
|
6450
|
-
const issues = [];
|
|
6451
|
-
for (const screen of manifest.screens) {
|
|
6452
|
-
walkScreenLayers(screen, (l) => {
|
|
6453
|
-
if ((l.kind === "lottie" || l.kind === "video") && !gates.lottie) {
|
|
6454
|
-
issues.push(
|
|
6455
|
-
layerViolationMessage(
|
|
6456
|
-
screen.id,
|
|
6457
|
-
l.id,
|
|
6458
|
-
l.kind === "video" ? "Video layers" : "Lottie layers"
|
|
6459
|
-
)
|
|
6460
|
-
);
|
|
6461
|
-
}
|
|
6462
|
-
if (l.kind === "oauth_login" && !gates.oauthLogin) {
|
|
6463
|
-
issues.push(layerViolationMessage(screen.id, l.id, "OAuth login layers"));
|
|
6464
|
-
}
|
|
6465
|
-
if (l.kind === "oauth_provider") {
|
|
6466
|
-
if (l.variant === "preset" && !gates.oauthProviderPreset) {
|
|
6467
|
-
issues.push(layerViolationMessage(screen.id, l.id, "OAuth provider (preset) layers"));
|
|
6468
|
-
}
|
|
6469
|
-
if (l.variant === "custom" && !gates.oauthProviderCustom) {
|
|
6470
|
-
issues.push(layerViolationMessage(screen.id, l.id, "OAuth provider (custom) layers"));
|
|
6471
|
-
}
|
|
6472
|
-
}
|
|
6473
|
-
if (l.kind === "email_password_auth" && !gates.emailPasswordAuth) {
|
|
6474
|
-
issues.push(layerViolationMessage(screen.id, l.id, "Email/password auth layers"));
|
|
6475
|
-
}
|
|
6476
|
-
if (l.kind === "email_password_field" && !gates.emailPasswordField) {
|
|
6477
|
-
issues.push(layerViolationMessage(screen.id, l.id, "Email/password field layers"));
|
|
6478
|
-
}
|
|
6479
|
-
if (l.kind === "email_password_submit" && !gates.emailPasswordSubmit) {
|
|
6480
|
-
issues.push(layerViolationMessage(screen.id, l.id, "Email/password submit layers"));
|
|
6481
|
-
}
|
|
6482
|
-
if (l.kind === "button" && l.action.kind === "request_os_permission" && !gates.requestOsPermission) {
|
|
6483
|
-
issues.push(buttonOsPermissionMessage(screen.id, l.id));
|
|
6484
|
-
}
|
|
6485
|
-
});
|
|
6486
|
-
}
|
|
6487
|
-
return issues;
|
|
6488
|
-
};
|
|
6489
|
-
|
|
6490
|
-
// ../contracts/src/dashboard/appBranding.ts
|
|
6408
|
+
// ../contracts/src/branding.ts
|
|
6491
6409
|
var HEX = /^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})$/;
|
|
6492
6410
|
var BrandColorSchema = external_exports.object({
|
|
6493
6411
|
id: external_exports.string().uuid(),
|
|
@@ -6538,1233 +6456,6 @@ var BrandingSchema = external_exports.object({
|
|
|
6538
6456
|
gradientPresets: external_exports.array(BrandGradientSchema),
|
|
6539
6457
|
fontFamilies: external_exports.array(FontFamilySchema)
|
|
6540
6458
|
});
|
|
6541
|
-
var StoreListingInputSchema = external_exports.object({
|
|
6542
|
-
platform: external_exports.enum(["ios", "android"]),
|
|
6543
|
-
applicationId: external_exports.string().trim().min(1).max(200)
|
|
6544
|
-
});
|
|
6545
|
-
var StoreListingLookupResponseSchema = external_exports.object({
|
|
6546
|
-
found: external_exports.boolean(),
|
|
6547
|
-
platform: external_exports.enum(["ios", "android"]),
|
|
6548
|
-
applicationId: external_exports.string(),
|
|
6549
|
-
name: external_exports.string().optional(),
|
|
6550
|
-
iconUrl: external_exports.string().url().optional()
|
|
6551
|
-
});
|
|
6552
|
-
var AppSchema = external_exports.object({
|
|
6553
|
-
id: external_exports.string().uuid(),
|
|
6554
|
-
orgId: external_exports.string().uuid(),
|
|
6555
|
-
name: external_exports.string().min(1).max(100),
|
|
6556
|
-
branding: BrandingSchema.optional(),
|
|
6557
|
-
/** Resolved flags; all true when unset in storage. */
|
|
6558
|
-
canvasEditorGates: CanvasEditorGatesResolvedSchema,
|
|
6559
|
-
/** Resolved per-provider integration toggles + settings. */
|
|
6560
|
-
integrations: ResolvedAppIntegrationsSchema,
|
|
6561
|
-
archivedAt: external_exports.string().datetime().nullable().optional(),
|
|
6562
|
-
createdAt: external_exports.string().datetime()
|
|
6563
|
-
});
|
|
6564
|
-
var CreateAppRequestSchema = external_exports.object({
|
|
6565
|
-
name: external_exports.string().min(1).max(100),
|
|
6566
|
-
/** When set, the server resolves artwork from the store after the app row exists. */
|
|
6567
|
-
storeListing: StoreListingInputSchema.optional()
|
|
6568
|
-
});
|
|
6569
|
-
var UpdateAppRequestSchema = external_exports.object({
|
|
6570
|
-
name: external_exports.string().min(1).max(100).optional(),
|
|
6571
|
-
/** Full replace for the JSON column when set; omit to leave unchanged. */
|
|
6572
|
-
canvasEditorGates: CanvasEditorGatesResolvedSchema.optional(),
|
|
6573
|
-
/** Per-provider integration toggles + settings. Full replace semantics when set. */
|
|
6574
|
-
integrations: AppIntegrationsSchema.optional()
|
|
6575
|
-
});
|
|
6576
|
-
var UpdateAppBrandingRequestSchema = external_exports.object({
|
|
6577
|
-
branding: BrandingSchema
|
|
6578
|
-
});
|
|
6579
|
-
var DeleteAppRequestSchema = external_exports.object({
|
|
6580
|
-
/** User must type the app's exact name to confirm destructive deletion. */
|
|
6581
|
-
confirmName: external_exports.string().min(1)
|
|
6582
|
-
});
|
|
6583
|
-
var DeleteAppResponseSchema = external_exports.object({
|
|
6584
|
-
mode: external_exports.enum(["hard", "soft"]),
|
|
6585
|
-
reason: external_exports.enum(["has_events", "clickhouse_unavailable"]).optional()
|
|
6586
|
-
});
|
|
6587
|
-
var PublishableKeySchema = external_exports.object({
|
|
6588
|
-
id: external_exports.string().uuid(),
|
|
6589
|
-
environment: external_exports.enum(ENVIRONMENTS),
|
|
6590
|
-
/**
|
|
6591
|
-
* Full publishable key. Always returned to dashboard users since publishable
|
|
6592
|
-
* keys are non-secret and meant to ship in mobile clients.
|
|
6593
|
-
*/
|
|
6594
|
-
plaintext: external_exports.string(),
|
|
6595
|
-
prefix: external_exports.string(),
|
|
6596
|
-
lastFour: external_exports.string(),
|
|
6597
|
-
revokedAt: external_exports.string().datetime().nullable().optional(),
|
|
6598
|
-
createdAt: external_exports.string().datetime()
|
|
6599
|
-
});
|
|
6600
|
-
var CreateAppResponseSchema = external_exports.object({
|
|
6601
|
-
app: AppSchema,
|
|
6602
|
-
keys: external_exports.array(PublishableKeySchema)
|
|
6603
|
-
});
|
|
6604
|
-
|
|
6605
|
-
// ../contracts/src/dashboard/tags.ts
|
|
6606
|
-
var DASHBOARD_MAX_TAGS = 20;
|
|
6607
|
-
var DASHBOARD_MAX_TAG_LEN = 64;
|
|
6608
|
-
var normalizeDashboardTags = (raw) => {
|
|
6609
|
-
const out = [];
|
|
6610
|
-
const seen = /* @__PURE__ */ new Set();
|
|
6611
|
-
for (const s of raw) {
|
|
6612
|
-
const t = s.trim().toLowerCase();
|
|
6613
|
-
if (t.length === 0 || t.length > DASHBOARD_MAX_TAG_LEN) continue;
|
|
6614
|
-
if (seen.has(t)) continue;
|
|
6615
|
-
seen.add(t);
|
|
6616
|
-
out.push(t);
|
|
6617
|
-
if (out.length >= DASHBOARD_MAX_TAGS) break;
|
|
6618
|
-
}
|
|
6619
|
-
return out;
|
|
6620
|
-
};
|
|
6621
|
-
var TagsSchema = external_exports.array(external_exports.string()).max(DASHBOARD_MAX_TAGS).superRefine((arr, ctx) => {
|
|
6622
|
-
arr.forEach((s, i) => {
|
|
6623
|
-
const t = s.trim().toLowerCase();
|
|
6624
|
-
if (t.length > DASHBOARD_MAX_TAG_LEN) {
|
|
6625
|
-
ctx.addIssue({
|
|
6626
|
-
code: external_exports.ZodIssueCode.custom,
|
|
6627
|
-
message: `Tag exceeds ${DASHBOARD_MAX_TAG_LEN} characters`,
|
|
6628
|
-
path: [i]
|
|
6629
|
-
});
|
|
6630
|
-
}
|
|
6631
|
-
});
|
|
6632
|
-
}).transform((arr) => normalizeDashboardTags(arr));
|
|
6633
|
-
var TagsSchemaOptional = TagsSchema.optional();
|
|
6634
|
-
|
|
6635
|
-
// ../contracts/src/flowTemplates.ts
|
|
6636
|
-
var FLOW_TEMPLATE_IDS = [
|
|
6637
|
-
"stories",
|
|
6638
|
-
"language_learning",
|
|
6639
|
-
"fitness",
|
|
6640
|
-
"win_back",
|
|
6641
|
-
"feedback",
|
|
6642
|
-
"word_learning",
|
|
6643
|
-
"journal_onboarding"
|
|
6644
|
-
];
|
|
6645
|
-
var FlowTemplateIdSchema = external_exports.enum(FLOW_TEMPLATE_IDS);
|
|
6646
|
-
|
|
6647
|
-
// ../contracts/src/dashboard/flows.ts
|
|
6648
|
-
var FlowStatusSchema = external_exports.enum(["draft", "published_test", "published_live"]);
|
|
6649
|
-
var FlowPreviewSchema = external_exports.object({
|
|
6650
|
-
nodes: external_exports.array(
|
|
6651
|
-
external_exports.object({
|
|
6652
|
-
id: external_exports.string(),
|
|
6653
|
-
x: external_exports.number(),
|
|
6654
|
-
y: external_exports.number(),
|
|
6655
|
-
isEntry: external_exports.boolean().optional()
|
|
6656
|
-
})
|
|
6657
|
-
),
|
|
6658
|
-
edges: external_exports.array(
|
|
6659
|
-
external_exports.object({
|
|
6660
|
-
source: external_exports.string(),
|
|
6661
|
-
target: external_exports.string(),
|
|
6662
|
-
branching: external_exports.boolean().optional()
|
|
6663
|
-
})
|
|
6664
|
-
)
|
|
6665
|
-
});
|
|
6666
|
-
var FlowSummarySchema = external_exports.object({
|
|
6667
|
-
id: external_exports.string().uuid(),
|
|
6668
|
-
appId: external_exports.string().uuid(),
|
|
6669
|
-
name: external_exports.string().min(1),
|
|
6670
|
-
status: FlowStatusSchema,
|
|
6671
|
-
archivedAt: external_exports.string().datetime().nullable().optional(),
|
|
6672
|
-
updatedAt: external_exports.string().datetime(),
|
|
6673
|
-
createdAt: external_exports.string().datetime(),
|
|
6674
|
-
/** Dashboard user who created the flow (null for legacy rows). */
|
|
6675
|
-
createdByUserId: external_exports.string().uuid().nullable().optional(),
|
|
6676
|
-
/** Number of published immutable versions (each publish appends one). */
|
|
6677
|
-
versionCount: external_exports.number().int().nonnegative(),
|
|
6678
|
-
screenCount: external_exports.number().int().nonnegative().optional(),
|
|
6679
|
-
preview: FlowPreviewSchema.optional(),
|
|
6680
|
-
tags: external_exports.array(external_exports.string())
|
|
6681
|
-
});
|
|
6682
|
-
var CREATE_FLOW_AI_PROMPT_MAX = 8e3;
|
|
6683
|
-
var AiFlowPromptSchema = external_exports.string().trim().min(1).max(CREATE_FLOW_AI_PROMPT_MAX);
|
|
6684
|
-
var CreateFlowRequestSchema = external_exports.object({
|
|
6685
|
-
name: external_exports.string().min(1).max(100),
|
|
6686
|
-
tags: TagsSchemaOptional,
|
|
6687
|
-
/** When set, seeds the draft with a multi-screen onboarding manifest. Omit for a blank flow. */
|
|
6688
|
-
flowTemplateId: FlowTemplateIdSchema.optional(),
|
|
6689
|
-
/** When set, starts multi-step AI expansion after seeding a blank manifest. Mutually exclusive with `flowTemplateId`. */
|
|
6690
|
-
aiPrompt: AiFlowPromptSchema.optional(),
|
|
6691
|
-
/** Imported manifest JSON from the rheo skill flow-import workflow. Mutually exclusive with template and AI generation. */
|
|
6692
|
-
importManifest: external_exports.unknown().optional()
|
|
6693
|
-
}).superRefine((data, ctx) => {
|
|
6694
|
-
const selected = [data.flowTemplateId, data.aiPrompt, data.importManifest].filter(
|
|
6695
|
-
(v) => v !== void 0
|
|
6696
|
-
);
|
|
6697
|
-
if (selected.length > 1) {
|
|
6698
|
-
ctx.addIssue({
|
|
6699
|
-
code: external_exports.ZodIssueCode.custom,
|
|
6700
|
-
message: "Pick only one start mode: catalog template, Generate with AI, or Import manifest.",
|
|
6701
|
-
path: ["importManifest"]
|
|
6702
|
-
});
|
|
6703
|
-
}
|
|
6704
|
-
});
|
|
6705
|
-
var FlowAiGenerationRunStatusSchema = external_exports.enum([
|
|
6706
|
-
"queued",
|
|
6707
|
-
"running",
|
|
6708
|
-
"completed",
|
|
6709
|
-
"failed"
|
|
6710
|
-
]);
|
|
6711
|
-
var FlowAiGenerationRunStatusResponseSchema = external_exports.object({
|
|
6712
|
-
id: external_exports.string().uuid(),
|
|
6713
|
-
flowId: external_exports.string().uuid(),
|
|
6714
|
-
status: FlowAiGenerationRunStatusSchema,
|
|
6715
|
-
stepIndex: external_exports.number().int().nonnegative(),
|
|
6716
|
-
lastError: external_exports.string().nullable().optional()
|
|
6717
|
-
});
|
|
6718
|
-
var StartAiFlowGenerationRequestSchema = external_exports.object({
|
|
6719
|
-
aiPrompt: AiFlowPromptSchema
|
|
6720
|
-
});
|
|
6721
|
-
var RHEO_AGENT_IMAGE_MIME_TYPES = ["image/png", "image/jpeg", "image/webp"];
|
|
6722
|
-
var RHEO_AGENT_MAX_IMAGE_ATTACHMENTS = 4;
|
|
6723
|
-
var estimateBase64DecodedBytes = (dataBase64) => {
|
|
6724
|
-
const len = dataBase64.length;
|
|
6725
|
-
const padding = dataBase64.endsWith("==") ? 2 : dataBase64.endsWith("=") ? 1 : 0;
|
|
6726
|
-
return Math.max(0, Math.floor(len * 3 / 4) - padding);
|
|
6727
|
-
};
|
|
6728
|
-
var RheoAgentImageAttachmentSchema = external_exports.object({
|
|
6729
|
-
mimeType: external_exports.enum(RHEO_AGENT_IMAGE_MIME_TYPES),
|
|
6730
|
-
dataBase64: external_exports.string().min(1)
|
|
6731
|
-
}).superRefine((attachment, ctx) => {
|
|
6732
|
-
const bytes = estimateBase64DecodedBytes(attachment.dataBase64);
|
|
6733
|
-
if (bytes > MAX_IMAGE_BYTES) {
|
|
6734
|
-
ctx.addIssue({
|
|
6735
|
-
code: external_exports.ZodIssueCode.custom,
|
|
6736
|
-
message: "Image exceeds 5 MB limit"
|
|
6737
|
-
});
|
|
6738
|
-
}
|
|
6739
|
-
});
|
|
6740
|
-
var RheoAgentMessageSchema = external_exports.object({
|
|
6741
|
-
role: external_exports.enum(["user", "assistant"]),
|
|
6742
|
-
content: external_exports.string(),
|
|
6743
|
-
attachments: external_exports.array(RheoAgentImageAttachmentSchema).max(RHEO_AGENT_MAX_IMAGE_ATTACHMENTS).optional()
|
|
6744
|
-
}).superRefine((message, ctx) => {
|
|
6745
|
-
if (message.role === "assistant" && message.attachments?.length) {
|
|
6746
|
-
ctx.addIssue({
|
|
6747
|
-
code: external_exports.ZodIssueCode.custom,
|
|
6748
|
-
message: "Assistant messages cannot include attachments"
|
|
6749
|
-
});
|
|
6750
|
-
}
|
|
6751
|
-
if (message.role === "user" && !message.content.trim() && !(message.attachments && message.attachments.length > 0)) {
|
|
6752
|
-
ctx.addIssue({
|
|
6753
|
-
code: external_exports.ZodIssueCode.custom,
|
|
6754
|
-
message: "User message must include text or at least one image"
|
|
6755
|
-
});
|
|
6756
|
-
}
|
|
6757
|
-
});
|
|
6758
|
-
var RheoAgentSelectionSchema = external_exports.object({
|
|
6759
|
-
screenId: external_exports.string().optional(),
|
|
6760
|
-
screenIds: external_exports.array(external_exports.string()).min(1).optional(),
|
|
6761
|
-
layerId: external_exports.string().optional(),
|
|
6762
|
-
decisionId: external_exports.string().optional(),
|
|
6763
|
-
decisionIds: external_exports.array(external_exports.string()).min(1).optional(),
|
|
6764
|
-
externalSurfaceId: external_exports.string().optional()
|
|
6765
|
-
}).optional();
|
|
6766
|
-
var RheoAgentChatRequestSchema = external_exports.object({
|
|
6767
|
-
messages: external_exports.array(RheoAgentMessageSchema).min(1),
|
|
6768
|
-
selection: RheoAgentSelectionSchema
|
|
6769
|
-
});
|
|
6770
|
-
var RheoAgentTextDeltaEventSchema = external_exports.object({
|
|
6771
|
-
type: external_exports.literal("text-delta"),
|
|
6772
|
-
delta: external_exports.string()
|
|
6773
|
-
});
|
|
6774
|
-
var RheoAgentApplyingManifestEventSchema = external_exports.object({
|
|
6775
|
-
type: external_exports.literal("applying-manifest")
|
|
6776
|
-
});
|
|
6777
|
-
var RheoAgentManifestEventSchema = external_exports.object({
|
|
6778
|
-
type: external_exports.literal("manifest"),
|
|
6779
|
-
manifest: FlowManifestSchema
|
|
6780
|
-
});
|
|
6781
|
-
var RheoAgentErrorEventSchema = external_exports.object({
|
|
6782
|
-
type: external_exports.literal("error"),
|
|
6783
|
-
message: external_exports.string()
|
|
6784
|
-
});
|
|
6785
|
-
var RheoAgentDoneEventSchema = external_exports.object({
|
|
6786
|
-
type: external_exports.literal("done"),
|
|
6787
|
-
ok: external_exports.boolean()
|
|
6788
|
-
});
|
|
6789
|
-
var RheoAgentAttemptEventSchema = external_exports.object({
|
|
6790
|
-
type: external_exports.literal("attempt"),
|
|
6791
|
-
/** 1-based attempt index shown in the builder debug UI. */
|
|
6792
|
-
attempt: external_exports.number().int().min(1),
|
|
6793
|
-
maxAttempts: external_exports.number().int().min(1),
|
|
6794
|
-
phase: external_exports.enum(["stream", "repair"])
|
|
6795
|
-
});
|
|
6796
|
-
var RheoAgentStreamEventSchema = external_exports.discriminatedUnion("type", [
|
|
6797
|
-
RheoAgentTextDeltaEventSchema,
|
|
6798
|
-
RheoAgentApplyingManifestEventSchema,
|
|
6799
|
-
RheoAgentManifestEventSchema,
|
|
6800
|
-
RheoAgentErrorEventSchema,
|
|
6801
|
-
RheoAgentDoneEventSchema,
|
|
6802
|
-
RheoAgentAttemptEventSchema
|
|
6803
|
-
]);
|
|
6804
|
-
var CreateFlowResponseSchema = external_exports.object({
|
|
6805
|
-
flow: FlowSummarySchema,
|
|
6806
|
-
/** Present when `CreateFlowRequest` included `aiPrompt`. */
|
|
6807
|
-
generationRunId: external_exports.string().uuid().optional()
|
|
6808
|
-
});
|
|
6809
|
-
var UpdateFlowRequestSchema = external_exports.object({
|
|
6810
|
-
name: external_exports.string().min(1).max(100).optional(),
|
|
6811
|
-
tags: TagsSchema.optional()
|
|
6812
|
-
}).refine((o) => o.name !== void 0 || o.tags !== void 0, {
|
|
6813
|
-
message: "Provide at least one of name or tags"
|
|
6814
|
-
});
|
|
6815
|
-
var DuplicateFlowRequestSchema = external_exports.object({
|
|
6816
|
-
name: external_exports.string().min(1).max(100).optional(),
|
|
6817
|
-
targetAppId: external_exports.string().uuid().optional()
|
|
6818
|
-
});
|
|
6819
|
-
var FlowDraftSchema = external_exports.object({
|
|
6820
|
-
flowId: external_exports.string().uuid(),
|
|
6821
|
-
name: external_exports.string().min(1),
|
|
6822
|
-
tags: external_exports.array(external_exports.string()),
|
|
6823
|
-
manifest: FlowManifestSchema,
|
|
6824
|
-
autosaveVersion: external_exports.number().int().nonnegative(),
|
|
6825
|
-
updatedAt: external_exports.string().datetime()
|
|
6826
|
-
});
|
|
6827
|
-
var AutosaveDraftRequestSchema = external_exports.object({
|
|
6828
|
-
manifest: FlowManifestSchema,
|
|
6829
|
-
autosaveVersion: external_exports.number().int().nonnegative()
|
|
6830
|
-
});
|
|
6831
|
-
var AutosaveDraftResponseSchema = external_exports.object({
|
|
6832
|
-
flowId: external_exports.string().uuid(),
|
|
6833
|
-
autosaveVersion: external_exports.number().int().nonnegative(),
|
|
6834
|
-
updatedAt: external_exports.string().datetime()
|
|
6835
|
-
});
|
|
6836
|
-
var PublishRequestSchema = external_exports.object({
|
|
6837
|
-
label: external_exports.string().trim().max(120).optional()
|
|
6838
|
-
});
|
|
6839
|
-
var PublishValidationErrorSchema = external_exports.object({
|
|
6840
|
-
stepId: external_exports.string().nullable().optional(),
|
|
6841
|
-
path: external_exports.array(external_exports.union([external_exports.string(), external_exports.number()])).optional(),
|
|
6842
|
-
message: external_exports.string(),
|
|
6843
|
-
code: external_exports.string()
|
|
6844
|
-
});
|
|
6845
|
-
var FlowVersionSchema = external_exports.object({
|
|
6846
|
-
id: external_exports.string().uuid(),
|
|
6847
|
-
flowId: external_exports.string().uuid(),
|
|
6848
|
-
versionNumber: external_exports.number().int().positive(),
|
|
6849
|
-
label: external_exports.string().nullable().optional(),
|
|
6850
|
-
createdAt: external_exports.string().datetime(),
|
|
6851
|
-
publishedByUserId: external_exports.string().uuid().nullable().optional()
|
|
6852
|
-
});
|
|
6853
|
-
var FlowVersionWithManifestSchema = FlowVersionSchema.extend({
|
|
6854
|
-
manifest: FlowManifestSchema
|
|
6855
|
-
});
|
|
6856
|
-
var PublishResponseSchema = external_exports.object({
|
|
6857
|
-
version: FlowVersionSchema
|
|
6858
|
-
});
|
|
6859
|
-
var ListVersionsResponseSchema = external_exports.object({
|
|
6860
|
-
items: external_exports.array(FlowVersionSchema)
|
|
6861
|
-
});
|
|
6862
|
-
|
|
6863
|
-
// ../contracts/src/dashboard/channels.ts
|
|
6864
|
-
var ChannelAssignmentKindSchema = external_exports.enum(["direct", "experiment"]);
|
|
6865
|
-
var ChannelDirectAssignmentSchema = external_exports.object({
|
|
6866
|
-
kind: external_exports.literal("direct"),
|
|
6867
|
-
flowId: external_exports.string().uuid(),
|
|
6868
|
-
versionId: external_exports.string().uuid()
|
|
6869
|
-
});
|
|
6870
|
-
var ChannelExperimentAssignmentSchema = external_exports.object({
|
|
6871
|
-
kind: external_exports.literal("experiment"),
|
|
6872
|
-
experimentId: external_exports.string().uuid()
|
|
6873
|
-
});
|
|
6874
|
-
var ChannelAssignmentRequestSchema = external_exports.discriminatedUnion("kind", [
|
|
6875
|
-
ChannelDirectAssignmentSchema,
|
|
6876
|
-
ChannelExperimentAssignmentSchema
|
|
6877
|
-
]);
|
|
6878
|
-
var ChannelSchema = external_exports.object({
|
|
6879
|
-
id: external_exports.string().uuid(),
|
|
6880
|
-
publicId: external_exports.string(),
|
|
6881
|
-
appId: external_exports.string().uuid(),
|
|
6882
|
-
environment: external_exports.enum(ENVIRONMENTS),
|
|
6883
|
-
name: external_exports.string(),
|
|
6884
|
-
archivedAt: external_exports.string().datetime().nullable(),
|
|
6885
|
-
createdAt: external_exports.string().datetime(),
|
|
6886
|
-
assignmentKind: ChannelAssignmentKindSchema.nullable(),
|
|
6887
|
-
assignmentVersion: external_exports.number().int().nonnegative(),
|
|
6888
|
-
assignmentUpdatedAt: external_exports.string().datetime().nullable(),
|
|
6889
|
-
pinned: external_exports.object({
|
|
6890
|
-
flowId: external_exports.string().uuid(),
|
|
6891
|
-
flowName: external_exports.string(),
|
|
6892
|
-
versionId: external_exports.string().uuid(),
|
|
6893
|
-
versionNumber: external_exports.number().int().positive(),
|
|
6894
|
-
versionLabel: external_exports.string().nullable().optional()
|
|
6895
|
-
}).nullable(),
|
|
6896
|
-
experimentId: external_exports.string().uuid().nullable()
|
|
6897
|
-
});
|
|
6898
|
-
var ListChannelsResponseSchema = external_exports.object({
|
|
6899
|
-
items: external_exports.array(ChannelSchema)
|
|
6900
|
-
});
|
|
6901
|
-
var CreateChannelRequestSchema = external_exports.object({
|
|
6902
|
-
name: external_exports.string().min(1).max(64),
|
|
6903
|
-
environment: external_exports.enum(ENVIRONMENTS)
|
|
6904
|
-
});
|
|
6905
|
-
var RenameChannelRequestSchema = external_exports.object({
|
|
6906
|
-
name: external_exports.string().min(1).max(64)
|
|
6907
|
-
});
|
|
6908
|
-
var ArchiveChannelRequestSchema = external_exports.object({
|
|
6909
|
-
confirmName: external_exports.string().min(1)
|
|
6910
|
-
});
|
|
6911
|
-
var UnarchiveChannelResponseSchema = external_exports.object({
|
|
6912
|
-
channel: ChannelSchema,
|
|
6913
|
-
restored: external_exports.boolean(),
|
|
6914
|
-
restoreWarning: external_exports.string().nullable()
|
|
6915
|
-
});
|
|
6916
|
-
|
|
6917
|
-
// ../contracts/src/dashboard/channelHistory.ts
|
|
6918
|
-
var ChannelEventTypeSchema = external_exports.enum([
|
|
6919
|
-
"channel_created",
|
|
6920
|
-
"channel_renamed",
|
|
6921
|
-
"channel_archived",
|
|
6922
|
-
"channel_unarchived",
|
|
6923
|
-
"direct_pinned",
|
|
6924
|
-
"experiment_assigned",
|
|
6925
|
-
"assignment_cleared",
|
|
6926
|
-
"experiment_stopped_repinned",
|
|
6927
|
-
"experiment_winner_promoted",
|
|
6928
|
-
"rollout_requested",
|
|
6929
|
-
"rollout_rejected",
|
|
6930
|
-
"rollout_cancelled"
|
|
6931
|
-
]);
|
|
6932
|
-
var ChannelHistoryFlowVersionSnapshotSchema = external_exports.object({
|
|
6933
|
-
flowId: external_exports.string().uuid(),
|
|
6934
|
-
flowName: external_exports.string(),
|
|
6935
|
-
versionId: external_exports.string().uuid(),
|
|
6936
|
-
versionNumber: external_exports.number().int().positive(),
|
|
6937
|
-
versionLabel: external_exports.string().nullable().optional()
|
|
6938
|
-
});
|
|
6939
|
-
var ChannelHistoryExperimentSnapshotSchema = external_exports.object({
|
|
6940
|
-
experimentId: external_exports.string().uuid(),
|
|
6941
|
-
experimentName: external_exports.string(),
|
|
6942
|
-
variantCount: external_exports.number().int().nonnegative().optional()
|
|
6943
|
-
});
|
|
6944
|
-
var ChannelHistoryPreviousAssignmentSchema = external_exports.object({
|
|
6945
|
-
kind: external_exports.enum(["direct", "experiment"]).nullable(),
|
|
6946
|
-
pinned: ChannelHistoryFlowVersionSnapshotSchema.nullable().optional(),
|
|
6947
|
-
experiment: ChannelHistoryExperimentSnapshotSchema.nullable().optional()
|
|
6948
|
-
});
|
|
6949
|
-
var ChannelCreatedPayloadSchema = external_exports.object({
|
|
6950
|
-
type: external_exports.literal("channel_created"),
|
|
6951
|
-
environment: external_exports.enum(ENVIRONMENTS),
|
|
6952
|
-
name: external_exports.string()
|
|
6953
|
-
});
|
|
6954
|
-
var ChannelRenamedPayloadSchema = external_exports.object({
|
|
6955
|
-
type: external_exports.literal("channel_renamed"),
|
|
6956
|
-
previousName: external_exports.string(),
|
|
6957
|
-
newName: external_exports.string()
|
|
6958
|
-
});
|
|
6959
|
-
var ChannelArchivedPayloadSchema = external_exports.object({
|
|
6960
|
-
type: external_exports.literal("channel_archived"),
|
|
6961
|
-
name: external_exports.string()
|
|
6962
|
-
});
|
|
6963
|
-
var ChannelUnarchivedPayloadSchema = external_exports.object({
|
|
6964
|
-
type: external_exports.literal("channel_unarchived"),
|
|
6965
|
-
assignmentRestored: external_exports.boolean(),
|
|
6966
|
-
restoreWarning: external_exports.string().nullable(),
|
|
6967
|
-
assignmentCleared: external_exports.boolean().optional()
|
|
6968
|
-
});
|
|
6969
|
-
var DirectPinnedPayloadSchema = external_exports.object({
|
|
6970
|
-
type: external_exports.literal("direct_pinned"),
|
|
6971
|
-
flowId: external_exports.string().uuid(),
|
|
6972
|
-
flowName: external_exports.string(),
|
|
6973
|
-
versionId: external_exports.string().uuid(),
|
|
6974
|
-
versionNumber: external_exports.number().int().positive(),
|
|
6975
|
-
versionLabel: external_exports.string().nullable().optional(),
|
|
6976
|
-
source: external_exports.enum(["direct", "rollout"]),
|
|
6977
|
-
rolloutRequestId: external_exports.string().uuid().optional(),
|
|
6978
|
-
previous: ChannelHistoryPreviousAssignmentSchema.optional()
|
|
6979
|
-
});
|
|
6980
|
-
var ExperimentAssignedPayloadSchema = external_exports.object({
|
|
6981
|
-
type: external_exports.literal("experiment_assigned"),
|
|
6982
|
-
experimentId: external_exports.string().uuid(),
|
|
6983
|
-
experimentName: external_exports.string(),
|
|
6984
|
-
variantCount: external_exports.number().int().nonnegative(),
|
|
6985
|
-
previous: ChannelHistoryPreviousAssignmentSchema.optional()
|
|
6986
|
-
});
|
|
6987
|
-
var AssignmentClearedPayloadSchema = external_exports.object({
|
|
6988
|
-
type: external_exports.literal("assignment_cleared"),
|
|
6989
|
-
previous: ChannelHistoryPreviousAssignmentSchema,
|
|
6990
|
-
reason: external_exports.enum(["manual", "unarchive_restore_failed"]).optional()
|
|
6991
|
-
});
|
|
6992
|
-
var ExperimentStoppedRepinnedPayloadSchema = external_exports.object({
|
|
6993
|
-
type: external_exports.literal("experiment_stopped_repinned"),
|
|
6994
|
-
experimentId: external_exports.string().uuid(),
|
|
6995
|
-
experimentName: external_exports.string(),
|
|
6996
|
-
pinned: ChannelHistoryFlowVersionSnapshotSchema
|
|
6997
|
-
});
|
|
6998
|
-
var ExperimentWinnerPromotedPayloadSchema = external_exports.object({
|
|
6999
|
-
type: external_exports.literal("experiment_winner_promoted"),
|
|
7000
|
-
experimentId: external_exports.string().uuid(),
|
|
7001
|
-
experimentName: external_exports.string(),
|
|
7002
|
-
pinned: ChannelHistoryFlowVersionSnapshotSchema,
|
|
7003
|
-
wasPendingDecision: external_exports.boolean()
|
|
7004
|
-
});
|
|
7005
|
-
var RolloutFlowPayloadSchema = external_exports.object({
|
|
7006
|
-
type: external_exports.enum(["rollout_requested", "rollout_rejected", "rollout_cancelled"]),
|
|
7007
|
-
rolloutRequestId: external_exports.string().uuid(),
|
|
7008
|
-
flow: ChannelHistoryFlowVersionSnapshotSchema
|
|
7009
|
-
});
|
|
7010
|
-
var ChannelEventPayloadSchema = external_exports.discriminatedUnion("type", [
|
|
7011
|
-
ChannelCreatedPayloadSchema,
|
|
7012
|
-
ChannelRenamedPayloadSchema,
|
|
7013
|
-
ChannelArchivedPayloadSchema,
|
|
7014
|
-
ChannelUnarchivedPayloadSchema,
|
|
7015
|
-
DirectPinnedPayloadSchema,
|
|
7016
|
-
ExperimentAssignedPayloadSchema,
|
|
7017
|
-
AssignmentClearedPayloadSchema,
|
|
7018
|
-
ExperimentStoppedRepinnedPayloadSchema,
|
|
7019
|
-
ExperimentWinnerPromotedPayloadSchema,
|
|
7020
|
-
RolloutFlowPayloadSchema
|
|
7021
|
-
]);
|
|
7022
|
-
var ChannelEventSchema = external_exports.object({
|
|
7023
|
-
id: external_exports.string().uuid(),
|
|
7024
|
-
type: ChannelEventTypeSchema,
|
|
7025
|
-
actorUserId: external_exports.string().uuid().nullable(),
|
|
7026
|
-
actorLabel: external_exports.string().nullable(),
|
|
7027
|
-
occurredAt: external_exports.string().datetime(),
|
|
7028
|
-
payload: external_exports.record(external_exports.unknown())
|
|
7029
|
-
});
|
|
7030
|
-
var ListChannelHistoryResponseSchema = external_exports.object({
|
|
7031
|
-
items: external_exports.array(ChannelEventSchema),
|
|
7032
|
-
total: external_exports.number().int().nonnegative()
|
|
7033
|
-
});
|
|
7034
|
-
|
|
7035
|
-
// ../contracts/src/dashboard/rollouts.ts
|
|
7036
|
-
var RolloutRequestStatusSchema = external_exports.enum([
|
|
7037
|
-
"pending",
|
|
7038
|
-
"approved",
|
|
7039
|
-
"rejected",
|
|
7040
|
-
"cancelled"
|
|
7041
|
-
]);
|
|
7042
|
-
var RolloutCommentKindSchema = external_exports.enum(["comment", "system"]);
|
|
7043
|
-
var CreateRolloutRequestsBodySchema = external_exports.object({
|
|
7044
|
-
appId: external_exports.string().uuid(),
|
|
7045
|
-
versionId: external_exports.string().uuid(),
|
|
7046
|
-
channelIds: external_exports.array(external_exports.string().uuid()).min(1),
|
|
7047
|
-
/** PR-style summary: what changed, why, risk notes (first activity comment). */
|
|
7048
|
-
description: external_exports.string().trim().min(1).max(8e3)
|
|
7049
|
-
});
|
|
7050
|
-
var RolloutPolicyResponseSchema = external_exports.object({
|
|
7051
|
-
enabled: external_exports.boolean(),
|
|
7052
|
-
environments: external_exports.array(external_exports.enum(ENVIRONMENTS)),
|
|
7053
|
-
approverUserIds: external_exports.array(external_exports.string().uuid())
|
|
7054
|
-
});
|
|
7055
|
-
var PatchRolloutPolicySchema = external_exports.object({
|
|
7056
|
-
enabled: external_exports.boolean(),
|
|
7057
|
-
environments: external_exports.array(external_exports.enum(ENVIRONMENTS)),
|
|
7058
|
-
approverUserIds: external_exports.array(external_exports.string().uuid())
|
|
7059
|
-
});
|
|
7060
|
-
var RolloutCommentMentionUserSchema = external_exports.object({
|
|
7061
|
-
userId: external_exports.string().uuid(),
|
|
7062
|
-
label: external_exports.string()
|
|
7063
|
-
});
|
|
7064
|
-
var RolloutRequestCommentSchema = external_exports.object({
|
|
7065
|
-
id: external_exports.string().uuid(),
|
|
7066
|
-
authorUserId: external_exports.string().uuid(),
|
|
7067
|
-
body: external_exports.string(),
|
|
7068
|
-
kind: RolloutCommentKindSchema,
|
|
7069
|
-
createdAt: external_exports.string().datetime(),
|
|
7070
|
-
mentions: external_exports.array(RolloutCommentMentionUserSchema)
|
|
7071
|
-
});
|
|
7072
|
-
var RolloutRequestSummarySchema = external_exports.object({
|
|
7073
|
-
id: external_exports.string().uuid(),
|
|
7074
|
-
orgId: external_exports.string().uuid(),
|
|
7075
|
-
channelId: external_exports.string().uuid(),
|
|
7076
|
-
channelName: external_exports.string(),
|
|
7077
|
-
channelPublicId: external_exports.string(),
|
|
7078
|
-
channelEnvironment: external_exports.enum(ENVIRONMENTS),
|
|
7079
|
-
appId: external_exports.string().uuid(),
|
|
7080
|
-
appName: external_exports.string(),
|
|
7081
|
-
flowId: external_exports.string().uuid(),
|
|
7082
|
-
flowName: external_exports.string(),
|
|
7083
|
-
flowVersionId: external_exports.string().uuid(),
|
|
7084
|
-
versionNumber: external_exports.number().int().positive(),
|
|
7085
|
-
versionLabel: external_exports.string().nullable().optional(),
|
|
7086
|
-
requestedByUserId: external_exports.string().uuid(),
|
|
7087
|
-
requestedByEmail: external_exports.string(),
|
|
7088
|
-
/** Display: full name, else username, else email. */
|
|
7089
|
-
requestedByLabel: external_exports.string(),
|
|
7090
|
-
status: RolloutRequestStatusSchema,
|
|
7091
|
-
decidedByUserId: external_exports.string().uuid().nullable().optional(),
|
|
7092
|
-
decidedAt: external_exports.string().datetime().nullable().optional(),
|
|
7093
|
-
createdAt: external_exports.string().datetime()
|
|
7094
|
-
});
|
|
7095
|
-
var RolloutRequestDetailSchema = RolloutRequestSummarySchema.extend({
|
|
7096
|
-
comments: external_exports.array(RolloutRequestCommentSchema)
|
|
7097
|
-
});
|
|
7098
|
-
var CreateRolloutRequestsResponseSchema = external_exports.object({
|
|
7099
|
-
items: external_exports.array(
|
|
7100
|
-
external_exports.object({
|
|
7101
|
-
id: external_exports.string().uuid(),
|
|
7102
|
-
channelId: external_exports.string().uuid()
|
|
7103
|
-
})
|
|
7104
|
-
)
|
|
7105
|
-
});
|
|
7106
|
-
var ListRolloutRequestsResponseSchema = external_exports.object({
|
|
7107
|
-
items: external_exports.array(RolloutRequestSummarySchema),
|
|
7108
|
-
total: external_exports.number().int().nonnegative()
|
|
7109
|
-
});
|
|
7110
|
-
var RejectRolloutRequestSchema = external_exports.object({
|
|
7111
|
-
message: external_exports.string().trim().max(4e3).optional()
|
|
7112
|
-
});
|
|
7113
|
-
var ApproveRolloutRequestSchema = external_exports.object({
|
|
7114
|
-
message: external_exports.string().trim().max(4e3).optional()
|
|
7115
|
-
});
|
|
7116
|
-
var AddRolloutCommentSchema = external_exports.object({
|
|
7117
|
-
body: external_exports.string().trim().min(1).max(8e3),
|
|
7118
|
-
mentionedUserIds: external_exports.array(external_exports.string().uuid()).max(20).optional().default([])
|
|
7119
|
-
});
|
|
7120
|
-
var AddRolloutCommentResponseSchema = external_exports.object({
|
|
7121
|
-
comment: RolloutRequestCommentSchema
|
|
7122
|
-
});
|
|
7123
|
-
|
|
7124
|
-
// ../contracts/src/flowTemplateComments.ts
|
|
7125
|
-
var FlowTemplateDefaultCommentSchema = external_exports.object({
|
|
7126
|
-
positionX: external_exports.number().finite(),
|
|
7127
|
-
positionY: external_exports.number().finite(),
|
|
7128
|
-
body: external_exports.string().trim().min(1).max(8e3)
|
|
7129
|
-
});
|
|
7130
|
-
var FlowCommentThreadSourceSchema = external_exports.enum(["user", "template"]);
|
|
7131
|
-
|
|
7132
|
-
// ../contracts/src/dashboard/flowComments.ts
|
|
7133
|
-
var FlowCommentFilterSchema = external_exports.enum(["active", "archived", "all"]);
|
|
7134
|
-
var CreateFlowCommentThreadRequestSchema = external_exports.object({
|
|
7135
|
-
positionX: external_exports.number().finite(),
|
|
7136
|
-
positionY: external_exports.number().finite(),
|
|
7137
|
-
body: external_exports.string().trim().min(1).max(8e3),
|
|
7138
|
-
mentionedUserIds: external_exports.array(external_exports.string().uuid()).max(20).optional().default([]),
|
|
7139
|
-
anchorScreenId: ScreenIdSchema.optional(),
|
|
7140
|
-
anchorLayerId: LayerIdSchema.optional(),
|
|
7141
|
-
anchorDecisionNodeId: DecisionNodeIdSchema.optional(),
|
|
7142
|
-
anchorExternalSurfaceNodeId: ExternalSurfaceNodeIdSchema.optional()
|
|
7143
|
-
}).refine((d) => !d.anchorLayerId || !!d.anchorScreenId, {
|
|
7144
|
-
message: "anchorLayerId requires anchorScreenId",
|
|
7145
|
-
path: ["anchorLayerId"]
|
|
7146
|
-
}).refine(
|
|
7147
|
-
(d) => {
|
|
7148
|
-
const n = (d.anchorScreenId ? 1 : 0) + (d.anchorDecisionNodeId ? 1 : 0) + (d.anchorExternalSurfaceNodeId ? 1 : 0);
|
|
7149
|
-
return n <= 1;
|
|
7150
|
-
},
|
|
7151
|
-
{
|
|
7152
|
-
message: "only one of anchorScreenId, anchorDecisionNodeId, or anchorExternalSurfaceNodeId",
|
|
7153
|
-
path: ["anchorScreenId"]
|
|
7154
|
-
}
|
|
7155
|
-
);
|
|
7156
|
-
var AddFlowCommentMessageRequestSchema = external_exports.object({
|
|
7157
|
-
body: external_exports.string().trim().min(1).max(8e3),
|
|
7158
|
-
parentMessageId: external_exports.string().uuid().nullable().optional(),
|
|
7159
|
-
mentionedUserIds: external_exports.array(external_exports.string().uuid()).max(20).optional().default([])
|
|
7160
|
-
});
|
|
7161
|
-
var FlowCommentMessageSchema = external_exports.object({
|
|
7162
|
-
id: external_exports.string().uuid(),
|
|
7163
|
-
threadId: external_exports.string().uuid(),
|
|
7164
|
-
authorUserId: external_exports.string().uuid(),
|
|
7165
|
-
body: external_exports.string(),
|
|
7166
|
-
parentMessageId: external_exports.string().uuid().nullable(),
|
|
7167
|
-
createdAt: external_exports.string().datetime(),
|
|
7168
|
-
mentions: external_exports.array(RolloutCommentMentionUserSchema)
|
|
7169
|
-
});
|
|
7170
|
-
var FlowCommentThreadSummarySchema = external_exports.object({
|
|
7171
|
-
id: external_exports.string().uuid(),
|
|
7172
|
-
flowId: external_exports.string().uuid(),
|
|
7173
|
-
positionX: external_exports.number(),
|
|
7174
|
-
positionY: external_exports.number(),
|
|
7175
|
-
anchorScreenId: external_exports.string().nullable(),
|
|
7176
|
-
anchorLayerId: external_exports.string().nullable(),
|
|
7177
|
-
anchorDecisionNodeId: external_exports.string().nullable(),
|
|
7178
|
-
anchorExternalSurfaceNodeId: external_exports.string().nullable(),
|
|
7179
|
-
archivedAt: external_exports.string().datetime().nullable(),
|
|
7180
|
-
createdAt: external_exports.string().datetime(),
|
|
7181
|
-
createdByUserId: external_exports.string().uuid(),
|
|
7182
|
-
source: FlowCommentThreadSourceSchema.optional().default("user"),
|
|
7183
|
-
messageCount: external_exports.number().int().nonnegative(),
|
|
7184
|
-
previewSnippet: external_exports.string(),
|
|
7185
|
-
rootMessageAuthorLabel: external_exports.string(),
|
|
7186
|
-
rootMessageCreatedAt: external_exports.string().datetime(),
|
|
7187
|
-
rootMessageBody: external_exports.string()
|
|
7188
|
-
});
|
|
7189
|
-
var ListFlowCommentThreadsResponseSchema = external_exports.object({
|
|
7190
|
-
items: external_exports.array(FlowCommentThreadSummarySchema)
|
|
7191
|
-
});
|
|
7192
|
-
var GetFlowCommentThreadResponseSchema = external_exports.object({
|
|
7193
|
-
thread: FlowCommentThreadSummarySchema,
|
|
7194
|
-
messages: external_exports.array(FlowCommentMessageSchema)
|
|
7195
|
-
});
|
|
7196
|
-
var CreateFlowCommentThreadResponseSchema = external_exports.object({
|
|
7197
|
-
thread: FlowCommentThreadSummarySchema,
|
|
7198
|
-
message: FlowCommentMessageSchema
|
|
7199
|
-
});
|
|
7200
|
-
var AddFlowCommentMessageResponseSchema = external_exports.object({
|
|
7201
|
-
message: FlowCommentMessageSchema
|
|
7202
|
-
});
|
|
7203
|
-
var ArchiveFlowCommentThreadResponseSchema = external_exports.object({
|
|
7204
|
-
thread: FlowCommentThreadSummarySchema
|
|
7205
|
-
});
|
|
7206
|
-
|
|
7207
|
-
// ../contracts/src/dashboard/media.ts
|
|
7208
|
-
var PublicationSchema = external_exports.object({
|
|
7209
|
-
id: external_exports.string().uuid(),
|
|
7210
|
-
flowId: external_exports.string().uuid(),
|
|
7211
|
-
environment: external_exports.enum(ENVIRONMENTS),
|
|
7212
|
-
revision: external_exports.number().int().positive(),
|
|
7213
|
-
manifest: FlowManifestSchema,
|
|
7214
|
-
publishedAt: external_exports.string().datetime(),
|
|
7215
|
-
supersededAt: external_exports.string().datetime().nullable().optional()
|
|
7216
|
-
});
|
|
7217
|
-
var SignUploadRequestSchema = external_exports.object({
|
|
7218
|
-
type: MediaTypeSchema,
|
|
7219
|
-
contentType: external_exports.string(),
|
|
7220
|
-
sizeBytes: external_exports.number().int().positive(),
|
|
7221
|
-
filename: external_exports.string().min(1).max(200).optional()
|
|
7222
|
-
});
|
|
7223
|
-
var SignUploadResponseSchema = external_exports.object({
|
|
7224
|
-
assetId: external_exports.string().uuid(),
|
|
7225
|
-
uploadUrl: external_exports.string().url(),
|
|
7226
|
-
objectKey: external_exports.string(),
|
|
7227
|
-
publicUrl: external_exports.string().url(),
|
|
7228
|
-
headers: external_exports.record(external_exports.string(), external_exports.string()).optional()
|
|
7229
|
-
});
|
|
7230
|
-
var ConfirmUploadRequestSchema = external_exports.object({
|
|
7231
|
-
assetId: external_exports.string().uuid(),
|
|
7232
|
-
name: external_exports.string().max(200).optional()
|
|
7233
|
-
});
|
|
7234
|
-
var ListMediaResponseSchema = external_exports.object({
|
|
7235
|
-
items: external_exports.array(MediaAssetSchema)
|
|
7236
|
-
});
|
|
7237
|
-
var MediaAssetUsageReferenceSchema = external_exports.object({
|
|
7238
|
-
flowId: external_exports.string().uuid(),
|
|
7239
|
-
flowName: external_exports.string(),
|
|
7240
|
-
appId: external_exports.string().uuid(),
|
|
7241
|
-
appName: external_exports.string(),
|
|
7242
|
-
inDraft: external_exports.boolean(),
|
|
7243
|
-
publishedVersionNumbers: external_exports.array(external_exports.number().int().positive())
|
|
7244
|
-
});
|
|
7245
|
-
var MediaAssetUsageResponseSchema = external_exports.object({
|
|
7246
|
-
references: external_exports.array(MediaAssetUsageReferenceSchema)
|
|
7247
|
-
});
|
|
7248
|
-
var DeleteMediaAssetResponseSchema = external_exports.object({
|
|
7249
|
-
asset: MediaAssetSchema
|
|
7250
|
-
});
|
|
7251
|
-
var UpdateMediaAssetRequestSchema = external_exports.object({
|
|
7252
|
-
nameStem: external_exports.string().trim().min(1).max(200)
|
|
7253
|
-
});
|
|
7254
|
-
var UpdateMediaAssetResponseSchema = external_exports.object({
|
|
7255
|
-
asset: MediaAssetSchema
|
|
7256
|
-
});
|
|
7257
|
-
|
|
7258
|
-
// ../contracts/src/dashboard/experiments.ts
|
|
7259
|
-
var ExperimentStatusSchema = external_exports.enum([
|
|
7260
|
-
"draft",
|
|
7261
|
-
"running",
|
|
7262
|
-
"pending_decision",
|
|
7263
|
-
"stopped"
|
|
7264
|
-
]);
|
|
7265
|
-
var VariantSchema = external_exports.object({
|
|
7266
|
-
id: external_exports.string().uuid(),
|
|
7267
|
-
experimentId: external_exports.string().uuid(),
|
|
7268
|
-
name: external_exports.string().min(1),
|
|
7269
|
-
weight: external_exports.number().int().positive(),
|
|
7270
|
-
flowId: external_exports.string().uuid().nullable(),
|
|
7271
|
-
versionId: external_exports.string().uuid().nullable(),
|
|
7272
|
-
/** Convenience read fields populated by list/get endpoints. */
|
|
7273
|
-
flowName: external_exports.string().nullable().optional(),
|
|
7274
|
-
versionNumber: external_exports.number().int().positive().nullable().optional(),
|
|
7275
|
-
versionLabel: external_exports.string().nullable().optional()
|
|
7276
|
-
});
|
|
7277
|
-
var ExperimentEndedReasonSchema = external_exports.enum([
|
|
7278
|
-
"manual",
|
|
7279
|
-
"scheduled_resolved"
|
|
7280
|
-
]);
|
|
7281
|
-
var ExperimentSchema = external_exports.object({
|
|
7282
|
-
id: external_exports.string().uuid(),
|
|
7283
|
-
appId: external_exports.string().uuid(),
|
|
7284
|
-
/** Internal channel uuid. */
|
|
7285
|
-
channelId: external_exports.string().uuid(),
|
|
7286
|
-
/** Display name of the channel (denormalized for list views). */
|
|
7287
|
-
channelName: external_exports.string(),
|
|
7288
|
-
/** Test/live env of the channel — kept for badges and analytics filters. */
|
|
7289
|
-
channelEnvironment: external_exports.enum(ENVIRONMENTS),
|
|
7290
|
-
name: external_exports.string(),
|
|
7291
|
-
status: ExperimentStatusSchema,
|
|
7292
|
-
variants: external_exports.array(VariantSchema),
|
|
7293
|
-
startedAt: external_exports.string().datetime().nullable().optional(),
|
|
7294
|
-
stoppedAt: external_exports.string().datetime().nullable().optional(),
|
|
7295
|
-
endsAt: external_exports.string().datetime().nullable().optional(),
|
|
7296
|
-
endedReason: ExperimentEndedReasonSchema.nullable().optional(),
|
|
7297
|
-
archivedAt: external_exports.string().datetime().nullable().optional(),
|
|
7298
|
-
createdAt: external_exports.string().datetime(),
|
|
7299
|
-
/** Dashboard user who created the experiment (null for legacy rows). */
|
|
7300
|
-
createdByUserId: external_exports.string().uuid().nullable().optional(),
|
|
7301
|
-
/** Display: full name, else @username, else email; null when unknown. */
|
|
7302
|
-
createdByLabel: external_exports.string().nullable().optional(),
|
|
7303
|
-
tags: external_exports.array(external_exports.string()),
|
|
7304
|
-
/** Power-analysis inputs; nulls → dashboard defaults for sample accumulation. */
|
|
7305
|
-
statsDesignBaselineCvr: external_exports.number().nullable().optional(),
|
|
7306
|
-
statsDesignMdePp: external_exports.number().nullable().optional(),
|
|
7307
|
-
statsDesignAlpha: external_exports.number().nullable().optional(),
|
|
7308
|
-
statsDesignPower: external_exports.number().nullable().optional()
|
|
7309
|
-
});
|
|
7310
|
-
var EXPERIMENT_STATS_DESIGN_DEFAULTS = {
|
|
7311
|
-
statsDesignBaselineCvr: 0.342,
|
|
7312
|
-
statsDesignMdePp: 3,
|
|
7313
|
-
statsDesignAlpha: 0.05,
|
|
7314
|
-
statsDesignPower: 0.8
|
|
7315
|
-
};
|
|
7316
|
-
var ExperimentStatsDesignInputSchema = external_exports.object({
|
|
7317
|
-
statsDesignBaselineCvr: external_exports.number().min(1e-6).max(0.999999),
|
|
7318
|
-
statsDesignMdePp: external_exports.number().min(0.01).max(50),
|
|
7319
|
-
statsDesignAlpha: external_exports.number().min(1e-3).max(0.5),
|
|
7320
|
-
statsDesignPower: external_exports.number().min(0.5).max(0.999)
|
|
7321
|
-
});
|
|
7322
|
-
var CreateExperimentRequestSchema = external_exports.object({
|
|
7323
|
-
channelId: external_exports.string().uuid(),
|
|
7324
|
-
name: external_exports.string().min(1),
|
|
7325
|
-
/** Required auto-stop. Hour granularity is enforced server-side. */
|
|
7326
|
-
endsAt: external_exports.string().datetime(),
|
|
7327
|
-
tags: TagsSchemaOptional,
|
|
7328
|
-
statsDesignBaselineCvr: external_exports.number().min(1e-6).max(0.999999).optional(),
|
|
7329
|
-
statsDesignMdePp: external_exports.number().min(0.01).max(50).optional(),
|
|
7330
|
-
statsDesignAlpha: external_exports.number().min(1e-3).max(0.5).optional(),
|
|
7331
|
-
statsDesignPower: external_exports.number().min(0.5).max(0.999).optional()
|
|
7332
|
-
});
|
|
7333
|
-
var UpdateExperimentRequestSchema = external_exports.object({
|
|
7334
|
-
name: external_exports.string().min(1).optional(),
|
|
7335
|
-
channelId: external_exports.string().uuid().optional(),
|
|
7336
|
-
endsAt: external_exports.string().datetime().optional(),
|
|
7337
|
-
tags: TagsSchema.optional(),
|
|
7338
|
-
statsDesignBaselineCvr: external_exports.number().min(1e-6).max(0.999999).optional(),
|
|
7339
|
-
statsDesignMdePp: external_exports.number().min(0.01).max(50).optional(),
|
|
7340
|
-
statsDesignAlpha: external_exports.number().min(1e-3).max(0.5).optional(),
|
|
7341
|
-
statsDesignPower: external_exports.number().min(0.5).max(0.999).optional()
|
|
7342
|
-
});
|
|
7343
|
-
var ExtendExperimentRequestSchema = external_exports.object({
|
|
7344
|
-
endsAt: external_exports.string().datetime()
|
|
7345
|
-
});
|
|
7346
|
-
var StopExperimentRequestSchema = external_exports.discriminatedUnion("kind", [
|
|
7347
|
-
external_exports.object({ kind: external_exports.literal("variant"), variantId: external_exports.string().uuid() }),
|
|
7348
|
-
external_exports.object({
|
|
7349
|
-
kind: external_exports.literal("version"),
|
|
7350
|
-
flowId: external_exports.string().uuid(),
|
|
7351
|
-
versionId: external_exports.string().uuid()
|
|
7352
|
-
})
|
|
7353
|
-
]);
|
|
7354
|
-
var CreateVariantRequestSchema = external_exports.object({
|
|
7355
|
-
weight: external_exports.number().int().positive(),
|
|
7356
|
-
flowId: external_exports.string().uuid().optional(),
|
|
7357
|
-
versionId: external_exports.string().uuid().optional()
|
|
7358
|
-
});
|
|
7359
|
-
var ReorderExperimentVariantsRequestSchema = external_exports.object({
|
|
7360
|
-
variantIds: external_exports.array(external_exports.string().uuid()).min(1)
|
|
7361
|
-
});
|
|
7362
|
-
var UpdateExperimentStatusRequestSchema = external_exports.object({
|
|
7363
|
-
status: ExperimentStatusSchema
|
|
7364
|
-
});
|
|
7365
|
-
var ListExperimentsResponseSchema = external_exports.object({
|
|
7366
|
-
items: external_exports.array(ExperimentSchema)
|
|
7367
|
-
});
|
|
7368
|
-
|
|
7369
|
-
// ../contracts/src/dashboard/experimentStats.ts
|
|
7370
|
-
var ExperimentArmStatsSchema = external_exports.object({
|
|
7371
|
-
variantId: external_exports.string().uuid(),
|
|
7372
|
-
name: external_exports.string(),
|
|
7373
|
-
weight: external_exports.number().int().nonnegative(),
|
|
7374
|
-
trafficShare: external_exports.number(),
|
|
7375
|
-
/** Distinct users with ≥1 `flow_started` in the window. */
|
|
7376
|
-
starts: external_exports.number().int().nonnegative(),
|
|
7377
|
-
/** Distinct users with ≥1 `flow_completed` in the window. */
|
|
7378
|
-
completes: external_exports.number().int().nonnegative(),
|
|
7379
|
-
/** Distinct users with ≥1 `flow_abandoned` in the window. */
|
|
7380
|
-
abandoningUsers: external_exports.number().int().nonnegative(),
|
|
7381
|
-
/** abandoningUsers / starts when starts > 0, else 0. */
|
|
7382
|
-
abandonRate: external_exports.number(),
|
|
7383
|
-
/** Raw event counts (sessions), for debugging / power users. */
|
|
7384
|
-
rawStarts: external_exports.number().int().nonnegative(),
|
|
7385
|
-
rawCompletes: external_exports.number().int().nonnegative(),
|
|
7386
|
-
/** Distinct-user completion rate (`completes / starts`). JSON field name is historical. */
|
|
7387
|
-
conversionRate: external_exports.number(),
|
|
7388
|
-
/** Wilson 95% CI bounds. */
|
|
7389
|
-
ciLow: external_exports.number(),
|
|
7390
|
-
ciHigh: external_exports.number(),
|
|
7391
|
-
lift: external_exports.number().nullable(),
|
|
7392
|
-
pValue: external_exports.number().nullable(),
|
|
7393
|
-
significant: external_exports.boolean().nullable(),
|
|
7394
|
-
/** (completion rate − control) in percentage points; null on control. */
|
|
7395
|
-
liftAbsolutePp: external_exports.number().nullable(),
|
|
7396
|
-
/** 95% CI for absolute completion-rate difference (treatment − control). */
|
|
7397
|
-
liftDiffCiLow: external_exports.number().nullable(),
|
|
7398
|
-
liftDiffCiHigh: external_exports.number().nullable()
|
|
7399
|
-
});
|
|
7400
|
-
var ExperimentFunnelStepSchema = external_exports.object({
|
|
7401
|
-
stepId: external_exports.string(),
|
|
7402
|
-
stepName: external_exports.string().nullable().optional(),
|
|
7403
|
-
views: external_exports.number().int().nonnegative(),
|
|
7404
|
-
completes: external_exports.number().int().nonnegative(),
|
|
7405
|
-
skips: external_exports.number().int().nonnegative(),
|
|
7406
|
-
dropoffs: external_exports.number().int().nonnegative()
|
|
7407
|
-
});
|
|
7408
|
-
var ExperimentAbandonStepRowSchema = external_exports.object({
|
|
7409
|
-
variantId: external_exports.string().uuid(),
|
|
7410
|
-
stepId: external_exports.string(),
|
|
7411
|
-
stepName: external_exports.string().nullable().optional(),
|
|
7412
|
-
users: external_exports.number().int().nonnegative()
|
|
7413
|
-
});
|
|
7414
|
-
var ExperimentSrmSchema = external_exports.object({
|
|
7415
|
-
chiSquareStatistic: external_exports.number(),
|
|
7416
|
-
pValue: external_exports.number().nullable(),
|
|
7417
|
-
/** True when p < 0.01 (observed split unlikely vs configured weights). */
|
|
7418
|
-
flagged: external_exports.boolean()
|
|
7419
|
-
});
|
|
7420
|
-
var ExperimentVariantFunnelSchema = external_exports.object({
|
|
7421
|
-
variantId: external_exports.string().uuid(),
|
|
7422
|
-
steps: external_exports.array(ExperimentFunnelStepSchema)
|
|
7423
|
-
});
|
|
7424
|
-
var ExperimentCohortRuleSchema = external_exports.discriminatedUnion("dimension", [
|
|
7425
|
-
external_exports.object({ dimension: external_exports.literal("platform"), key: external_exports.string().min(1) }),
|
|
7426
|
-
external_exports.object({ dimension: external_exports.literal("locale"), key: external_exports.string().min(1) }),
|
|
7427
|
-
external_exports.object({ dimension: external_exports.literal("app_version"), key: external_exports.string().min(1) }),
|
|
7428
|
-
external_exports.object({ dimension: external_exports.literal("experiment_variant"), key: external_exports.string().min(1) }),
|
|
7429
|
-
external_exports.object({
|
|
7430
|
-
dimension: external_exports.literal("custom_property"),
|
|
7431
|
-
customKey: external_exports.string().regex(/^[A-Za-z0-9._-]{1,64}$/),
|
|
7432
|
-
key: external_exports.string().min(1)
|
|
7433
|
-
})
|
|
7434
|
-
]);
|
|
7435
|
-
var ExperimentSampleAccumulationSchema = external_exports.object({
|
|
7436
|
-
requiredPerArm: external_exports.number(),
|
|
7437
|
-
/** ISO range used for accumulation starters (same analytics window as results; cohort filters apply). */
|
|
7438
|
-
accumulationRangeStart: external_exports.string().datetime(),
|
|
7439
|
-
accumulationRangeEnd: external_exports.string().datetime(),
|
|
7440
|
-
comparisons: external_exports.number().int(),
|
|
7441
|
-
alphaPerComparison: external_exports.number(),
|
|
7442
|
-
familyAlpha: external_exports.number(),
|
|
7443
|
-
baselineCvr: external_exports.number(),
|
|
7444
|
-
mdePp: external_exports.number(),
|
|
7445
|
-
power: external_exports.number(),
|
|
7446
|
-
/** Distinct starters in the accumulation window (matches Results table when cohorts match). */
|
|
7447
|
-
arms: external_exports.array(
|
|
7448
|
-
external_exports.object({
|
|
7449
|
-
variantId: external_exports.string().uuid(),
|
|
7450
|
-
name: external_exports.string(),
|
|
7451
|
-
observedStarters: external_exports.number().int(),
|
|
7452
|
-
pctOfRequired: external_exports.number()
|
|
7453
|
-
})
|
|
7454
|
-
),
|
|
7455
|
-
allArmsAboveThreshold: external_exports.boolean()
|
|
7456
|
-
});
|
|
7457
|
-
var ExperimentResultsOverviewSchema = external_exports.object({
|
|
7458
|
-
winningVariant: external_exports.object({ variantId: external_exports.string().uuid(), name: external_exports.string() }).nullable(),
|
|
7459
|
-
/** Sum of distinct starters per arm in the selected stats window. */
|
|
7460
|
-
totalSessions: external_exports.number().int().nonnegative(),
|
|
7461
|
-
experimentTimelineLabel: external_exports.string().nullable(),
|
|
7462
|
-
bestLift: external_exports.object({
|
|
7463
|
-
variantId: external_exports.string().uuid(),
|
|
7464
|
-
name: external_exports.string(),
|
|
7465
|
-
absolutePp: external_exports.number(),
|
|
7466
|
-
relativePct: external_exports.number()
|
|
7467
|
-
}).nullable(),
|
|
7468
|
-
assignmentBalance: external_exports.object({
|
|
7469
|
-
pass: external_exports.boolean(),
|
|
7470
|
-
pValue: external_exports.number().nullable(),
|
|
7471
|
-
chiSquareStatistic: external_exports.number(),
|
|
7472
|
-
threshold: external_exports.number()
|
|
7473
|
-
}),
|
|
7474
|
-
significanceEta: external_exports.object({
|
|
7475
|
-
daysElapsedInclusive: external_exports.number().int().nullable(),
|
|
7476
|
-
daysPlannedInclusive: external_exports.number().int().nullable(),
|
|
7477
|
-
projectedTotalDays: external_exports.number().nullable(),
|
|
7478
|
-
/** Positive = fewer days than planned window to reach projected end. */
|
|
7479
|
-
aheadOfPlanDays: external_exports.number().nullable()
|
|
7480
|
-
}).nullable()
|
|
7481
|
-
});
|
|
7482
|
-
var ExperimentStatsResponseSchema = external_exports.object({
|
|
7483
|
-
rangeStart: external_exports.string().datetime(),
|
|
7484
|
-
rangeEnd: external_exports.string().datetime(),
|
|
7485
|
-
/** Active composite cohort (AND). Null when unsegmented. */
|
|
7486
|
-
cohort: external_exports.array(ExperimentCohortRuleSchema).nullable(),
|
|
7487
|
-
srm: ExperimentSrmSchema,
|
|
7488
|
-
resultsOverview: ExperimentResultsOverviewSchema,
|
|
7489
|
-
arms: external_exports.array(ExperimentArmStatsSchema),
|
|
7490
|
-
abandonByStep: external_exports.array(ExperimentAbandonStepRowSchema),
|
|
7491
|
-
funnel: external_exports.array(ExperimentVariantFunnelSchema),
|
|
7492
|
-
sampleAccumulation: ExperimentSampleAccumulationSchema.optional()
|
|
7493
|
-
});
|
|
7494
|
-
var ExperimentCvrTimeseriesResponseSchema = external_exports.object({
|
|
7495
|
-
keys: external_exports.array(external_exports.string()),
|
|
7496
|
-
points: external_exports.array(
|
|
7497
|
-
external_exports.object({
|
|
7498
|
-
date: external_exports.string(),
|
|
7499
|
-
conversionRates: external_exports.array(external_exports.union([external_exports.number(), external_exports.null()]))
|
|
7500
|
-
})
|
|
7501
|
-
)
|
|
7502
|
-
});
|
|
7503
|
-
|
|
7504
|
-
// ../contracts/src/dashboard/notifications.ts
|
|
7505
|
-
var ExperimentEndedPayloadSchema = external_exports.object({
|
|
7506
|
-
appId: external_exports.string().uuid(),
|
|
7507
|
-
experimentId: external_exports.string().uuid(),
|
|
7508
|
-
experimentName: external_exports.string(),
|
|
7509
|
-
channelId: external_exports.string().uuid(),
|
|
7510
|
-
channelName: external_exports.string(),
|
|
7511
|
-
channelEnvironment: external_exports.enum(ENVIRONMENTS)
|
|
7512
|
-
});
|
|
7513
|
-
var NotificationKindSchema = external_exports.enum([
|
|
7514
|
-
"experiment_ended_pick_winner",
|
|
7515
|
-
"rollout_comment_mention",
|
|
7516
|
-
"flow_comment_new",
|
|
7517
|
-
"flow_comment_mention",
|
|
7518
|
-
"flow_comment_reply"
|
|
7519
|
-
]);
|
|
7520
|
-
var RolloutCommentMentionPayloadSchema = external_exports.object({
|
|
7521
|
-
appId: external_exports.string().uuid(),
|
|
7522
|
-
channelId: external_exports.string().uuid(),
|
|
7523
|
-
requestId: external_exports.string().uuid(),
|
|
7524
|
-
commentId: external_exports.string().uuid(),
|
|
7525
|
-
authorUserId: external_exports.string().uuid(),
|
|
7526
|
-
authorLabel: external_exports.string(),
|
|
7527
|
-
channelName: external_exports.string(),
|
|
7528
|
-
flowName: external_exports.string(),
|
|
7529
|
-
snippet: external_exports.string()
|
|
7530
|
-
});
|
|
7531
|
-
var FlowCommentNotificationBasePayloadSchema = external_exports.object({
|
|
7532
|
-
appId: external_exports.string().uuid(),
|
|
7533
|
-
flowId: external_exports.string().uuid(),
|
|
7534
|
-
flowName: external_exports.string(),
|
|
7535
|
-
threadId: external_exports.string().uuid(),
|
|
7536
|
-
messageId: external_exports.string().uuid(),
|
|
7537
|
-
authorUserId: external_exports.string().uuid(),
|
|
7538
|
-
authorLabel: external_exports.string(),
|
|
7539
|
-
snippet: external_exports.string()
|
|
7540
|
-
});
|
|
7541
|
-
var FlowCommentNewPayloadSchema = FlowCommentNotificationBasePayloadSchema;
|
|
7542
|
-
var FlowCommentMentionPayloadSchema = FlowCommentNotificationBasePayloadSchema;
|
|
7543
|
-
var FlowCommentReplyPayloadSchema = FlowCommentNotificationBasePayloadSchema.extend({
|
|
7544
|
-
parentMessageId: external_exports.string().uuid()
|
|
7545
|
-
});
|
|
7546
|
-
var NotificationBaseSchema = external_exports.object({
|
|
7547
|
-
id: external_exports.string().uuid(),
|
|
7548
|
-
readAt: external_exports.string().datetime().nullable(),
|
|
7549
|
-
createdAt: external_exports.string().datetime()
|
|
7550
|
-
});
|
|
7551
|
-
var NotificationSchema = external_exports.discriminatedUnion("kind", [
|
|
7552
|
-
NotificationBaseSchema.extend({
|
|
7553
|
-
kind: external_exports.literal("experiment_ended_pick_winner"),
|
|
7554
|
-
payload: ExperimentEndedPayloadSchema
|
|
7555
|
-
}),
|
|
7556
|
-
NotificationBaseSchema.extend({
|
|
7557
|
-
kind: external_exports.literal("rollout_comment_mention"),
|
|
7558
|
-
payload: RolloutCommentMentionPayloadSchema
|
|
7559
|
-
}),
|
|
7560
|
-
NotificationBaseSchema.extend({
|
|
7561
|
-
kind: external_exports.literal("flow_comment_new"),
|
|
7562
|
-
payload: FlowCommentNewPayloadSchema
|
|
7563
|
-
}),
|
|
7564
|
-
NotificationBaseSchema.extend({
|
|
7565
|
-
kind: external_exports.literal("flow_comment_mention"),
|
|
7566
|
-
payload: FlowCommentMentionPayloadSchema
|
|
7567
|
-
}),
|
|
7568
|
-
NotificationBaseSchema.extend({
|
|
7569
|
-
kind: external_exports.literal("flow_comment_reply"),
|
|
7570
|
-
payload: FlowCommentReplyPayloadSchema
|
|
7571
|
-
})
|
|
7572
|
-
]);
|
|
7573
|
-
|
|
7574
|
-
// ../contracts/src/workspaceCapabilities.ts
|
|
7575
|
-
var WORKSPACE_ROLES = ["owner", "admin", "editor", "viewer"];
|
|
7576
|
-
var WORKSPACE_CAPABILITIES = [
|
|
7577
|
-
"org:read",
|
|
7578
|
-
"billing:manage",
|
|
7579
|
-
"workspace:delete",
|
|
7580
|
-
"workspace:settings",
|
|
7581
|
-
"app:settings",
|
|
7582
|
-
"app:manage",
|
|
7583
|
-
"member:invite",
|
|
7584
|
-
"member:remove",
|
|
7585
|
-
"member:role",
|
|
7586
|
-
"ownership:transfer",
|
|
7587
|
-
"flow:read",
|
|
7588
|
-
"flow:edit",
|
|
7589
|
-
"flow:publish",
|
|
7590
|
-
"channel:read",
|
|
7591
|
-
"channel:manage",
|
|
7592
|
-
"experiment:read",
|
|
7593
|
-
"experiment:manage",
|
|
7594
|
-
"media:manage",
|
|
7595
|
-
"ai:brand_extract",
|
|
7596
|
-
"ai:translate",
|
|
7597
|
-
"store:manage",
|
|
7598
|
-
"analytics:read",
|
|
7599
|
-
"customers:read",
|
|
7600
|
-
"notifications:read",
|
|
7601
|
-
"notifications:write",
|
|
7602
|
-
"apiKey:manage",
|
|
7603
|
-
/** Granted at runtime via workspace-access when the member may approve rollouts. */
|
|
7604
|
-
"rollout:approve"
|
|
7605
|
-
];
|
|
7606
|
-
var OWNER_CAPS = new Set(
|
|
7607
|
-
WORKSPACE_CAPABILITIES.filter((c) => c !== "rollout:approve")
|
|
7608
|
-
);
|
|
7609
|
-
var caps = (...c) => new Set(c);
|
|
7610
|
-
var ROLE_CAPABILITIES = {
|
|
7611
|
-
admin: caps(
|
|
7612
|
-
"org:read",
|
|
7613
|
-
"workspace:settings",
|
|
7614
|
-
"app:settings",
|
|
7615
|
-
"app:manage",
|
|
7616
|
-
"member:invite",
|
|
7617
|
-
"member:remove",
|
|
7618
|
-
"member:role",
|
|
7619
|
-
"flow:read",
|
|
7620
|
-
"flow:edit",
|
|
7621
|
-
"flow:publish",
|
|
7622
|
-
"channel:read",
|
|
7623
|
-
"channel:manage",
|
|
7624
|
-
"experiment:read",
|
|
7625
|
-
"experiment:manage",
|
|
7626
|
-
"media:manage",
|
|
7627
|
-
"ai:brand_extract",
|
|
7628
|
-
"ai:translate",
|
|
7629
|
-
"store:manage",
|
|
7630
|
-
"analytics:read",
|
|
7631
|
-
"customers:read",
|
|
7632
|
-
"notifications:read",
|
|
7633
|
-
"notifications:write"
|
|
7634
|
-
),
|
|
7635
|
-
editor: caps(
|
|
7636
|
-
"org:read",
|
|
7637
|
-
"flow:read",
|
|
7638
|
-
"flow:edit",
|
|
7639
|
-
"flow:publish",
|
|
7640
|
-
"channel:read",
|
|
7641
|
-
"channel:manage",
|
|
7642
|
-
"experiment:read",
|
|
7643
|
-
"experiment:manage",
|
|
7644
|
-
"media:manage",
|
|
7645
|
-
"ai:brand_extract",
|
|
7646
|
-
"ai:translate",
|
|
7647
|
-
"store:manage",
|
|
7648
|
-
"analytics:read",
|
|
7649
|
-
"customers:read",
|
|
7650
|
-
"notifications:read",
|
|
7651
|
-
"notifications:write"
|
|
7652
|
-
),
|
|
7653
|
-
viewer: caps(
|
|
7654
|
-
"org:read",
|
|
7655
|
-
"flow:read",
|
|
7656
|
-
"channel:read",
|
|
7657
|
-
"experiment:read",
|
|
7658
|
-
"analytics:read",
|
|
7659
|
-
"customers:read",
|
|
7660
|
-
"notifications:read",
|
|
7661
|
-
"notifications:write"
|
|
7662
|
-
)
|
|
7663
|
-
};
|
|
7664
|
-
|
|
7665
|
-
// ../contracts/src/dashboard/workspace.ts
|
|
7666
|
-
var WorkspaceMemberRowSchema = external_exports.object({
|
|
7667
|
-
userId: external_exports.string().uuid(),
|
|
7668
|
-
email: external_exports.string(),
|
|
7669
|
-
/** Same display rule as rollout requester labels. */
|
|
7670
|
-
label: external_exports.string(),
|
|
7671
|
-
workspaceRole: external_exports.enum(WORKSPACE_ROLES),
|
|
7672
|
-
createdAt: external_exports.string()
|
|
7673
|
-
});
|
|
7674
|
-
var ListWorkspaceMembersResponseSchema = external_exports.object({
|
|
7675
|
-
items: external_exports.array(WorkspaceMemberRowSchema)
|
|
7676
|
-
});
|
|
7677
|
-
var ListNotificationsResponseSchema = external_exports.object({
|
|
7678
|
-
items: external_exports.array(NotificationSchema),
|
|
7679
|
-
unreadCount: external_exports.number().int().nonnegative()
|
|
7680
|
-
});
|
|
7681
|
-
var AnalyticsRangeSchema = external_exports.object({
|
|
7682
|
-
flowId: external_exports.string().uuid(),
|
|
7683
|
-
environment: external_exports.enum(ENVIRONMENTS),
|
|
7684
|
-
startDate: external_exports.string().datetime(),
|
|
7685
|
-
endDate: external_exports.string().datetime(),
|
|
7686
|
-
filters: external_exports.object({
|
|
7687
|
-
platform: external_exports.array(external_exports.string()).optional(),
|
|
7688
|
-
locale: external_exports.array(external_exports.string()).optional(),
|
|
7689
|
-
variantId: external_exports.array(external_exports.string()).optional(),
|
|
7690
|
-
customProperties: external_exports.record(external_exports.string(), external_exports.string()).optional()
|
|
7691
|
-
}).optional()
|
|
7692
|
-
});
|
|
7693
|
-
var FunnelResponseSchema = external_exports.object({
|
|
7694
|
-
steps: external_exports.array(
|
|
7695
|
-
external_exports.object({
|
|
7696
|
-
stepId: external_exports.string(),
|
|
7697
|
-
views: external_exports.number().int().nonnegative(),
|
|
7698
|
-
completes: external_exports.number().int().nonnegative(),
|
|
7699
|
-
skips: external_exports.number().int().nonnegative(),
|
|
7700
|
-
dropoffs: external_exports.number().int().nonnegative()
|
|
7701
|
-
})
|
|
7702
|
-
),
|
|
7703
|
-
totalStarts: external_exports.number().int().nonnegative(),
|
|
7704
|
-
totalCompletes: external_exports.number().int().nonnegative()
|
|
7705
|
-
});
|
|
7706
|
-
var ResponseBreakdownSchema = external_exports.object({
|
|
7707
|
-
fields: external_exports.array(
|
|
7708
|
-
external_exports.object({
|
|
7709
|
-
stepId: external_exports.string(),
|
|
7710
|
-
fieldKey: external_exports.string(),
|
|
7711
|
-
values: external_exports.array(
|
|
7712
|
-
external_exports.object({
|
|
7713
|
-
value: external_exports.string(),
|
|
7714
|
-
count: external_exports.number().int().nonnegative()
|
|
7715
|
-
})
|
|
7716
|
-
)
|
|
7717
|
-
})
|
|
7718
|
-
)
|
|
7719
|
-
});
|
|
7720
|
-
|
|
7721
|
-
// ../contracts/src/dashboard/analytics.ts
|
|
7722
|
-
var RoleSchema = external_exports.enum(ROLES);
|
|
7723
|
-
var MembershipSchema = external_exports.object({
|
|
7724
|
-
userId: external_exports.string().uuid(),
|
|
7725
|
-
orgId: external_exports.string().uuid(),
|
|
7726
|
-
role: RoleSchema
|
|
7727
|
-
});
|
|
7728
|
-
|
|
7729
|
-
// ../contracts/src/dashboard/onboardingChecklist.ts
|
|
7730
|
-
var ONBOARDING_TASK_IDS = ["sdk_events"];
|
|
7731
|
-
var OnboardingTaskIdSchema = external_exports.enum(ONBOARDING_TASK_IDS);
|
|
7732
|
-
var OnboardingTaskStatusSchema = external_exports.enum(["pending", "done", "unknown"]);
|
|
7733
|
-
var OnboardingTaskCompletionSourceSchema = external_exports.enum(["auto", "manual"]).nullable();
|
|
7734
|
-
var OnboardingTaskActionSchema = external_exports.object({
|
|
7735
|
-
docsHref: external_exports.string().url().optional(),
|
|
7736
|
-
keysHref: external_exports.string().optional(),
|
|
7737
|
-
verifyable: external_exports.boolean().optional()
|
|
7738
|
-
});
|
|
7739
|
-
var OnboardingTaskSchema = external_exports.object({
|
|
7740
|
-
id: OnboardingTaskIdSchema,
|
|
7741
|
-
title: external_exports.string(),
|
|
7742
|
-
description: external_exports.string(),
|
|
7743
|
-
status: OnboardingTaskStatusSchema,
|
|
7744
|
-
completionSource: OnboardingTaskCompletionSourceSchema,
|
|
7745
|
-
action: OnboardingTaskActionSchema.optional()
|
|
7746
|
-
});
|
|
7747
|
-
var OnboardingChecklistFocusAppSchema = external_exports.object({
|
|
7748
|
-
id: external_exports.string().uuid(),
|
|
7749
|
-
name: external_exports.string()
|
|
7750
|
-
});
|
|
7751
|
-
var OnboardingChecklistResponseSchema = external_exports.object({
|
|
7752
|
-
tasks: external_exports.array(OnboardingTaskSchema),
|
|
7753
|
-
completedCount: external_exports.number().int().nonnegative(),
|
|
7754
|
-
totalCount: external_exports.number().int().nonnegative(),
|
|
7755
|
-
focusApp: OnboardingChecklistFocusAppSchema.nullable(),
|
|
7756
|
-
dismissed: external_exports.boolean(),
|
|
7757
|
-
eligible: external_exports.boolean()
|
|
7758
|
-
});
|
|
7759
|
-
var OnboardingTaskVerifyResponseSchema = external_exports.object({
|
|
7760
|
-
task: OnboardingTaskSchema
|
|
7761
|
-
});
|
|
7762
|
-
var OnboardingTaskCompleteResponseSchema = external_exports.object({
|
|
7763
|
-
task: OnboardingTaskSchema
|
|
7764
|
-
});
|
|
7765
|
-
var OnboardingChecklistDismissResponseSchema = external_exports.object({
|
|
7766
|
-
ok: external_exports.literal(true)
|
|
7767
|
-
});
|
|
7768
6459
|
|
|
7769
6460
|
// ../contracts/src/sdk.ts
|
|
7770
6461
|
var SdkResolveRequestSchema = external_exports.object({
|
|
@@ -7898,11 +6589,85 @@ var IapPurchaseStoredPropertiesSchema = IapPurchaseEventPropertiesSchema.innerTy
|
|
|
7898
6589
|
fx_unavailable: external_exports.boolean().optional()
|
|
7899
6590
|
});
|
|
7900
6591
|
|
|
7901
|
-
// ../contracts/src/
|
|
7902
|
-
var
|
|
7903
|
-
|
|
7904
|
-
|
|
7905
|
-
|
|
6592
|
+
// ../contracts/src/canvasEditorGates.ts
|
|
6593
|
+
var CanvasEditorGatesResolvedSchema = external_exports.object({
|
|
6594
|
+
lottie: external_exports.boolean(),
|
|
6595
|
+
oauthLogin: external_exports.boolean(),
|
|
6596
|
+
oauthProviderPreset: external_exports.boolean(),
|
|
6597
|
+
oauthProviderCustom: external_exports.boolean(),
|
|
6598
|
+
emailPasswordAuth: external_exports.boolean(),
|
|
6599
|
+
emailPasswordField: external_exports.boolean(),
|
|
6600
|
+
emailPasswordSubmit: external_exports.boolean(),
|
|
6601
|
+
requestOsPermission: external_exports.boolean()
|
|
6602
|
+
});
|
|
6603
|
+
var ALL_TRUE = {
|
|
6604
|
+
lottie: true,
|
|
6605
|
+
oauthLogin: true,
|
|
6606
|
+
oauthProviderPreset: true,
|
|
6607
|
+
oauthProviderCustom: true,
|
|
6608
|
+
emailPasswordAuth: true,
|
|
6609
|
+
emailPasswordField: true,
|
|
6610
|
+
emailPasswordSubmit: true,
|
|
6611
|
+
requestOsPermission: true
|
|
6612
|
+
};
|
|
6613
|
+
var CanvasEditorGatesPatchSchema = external_exports.object({
|
|
6614
|
+
lottie: external_exports.boolean().optional(),
|
|
6615
|
+
oauthLogin: external_exports.boolean().optional(),
|
|
6616
|
+
oauthProviderPreset: external_exports.boolean().optional(),
|
|
6617
|
+
oauthProviderCustom: external_exports.boolean().optional(),
|
|
6618
|
+
emailPasswordAuth: external_exports.boolean().optional(),
|
|
6619
|
+
emailPasswordField: external_exports.boolean().optional(),
|
|
6620
|
+
emailPasswordSubmit: external_exports.boolean().optional(),
|
|
6621
|
+
requestOsPermission: external_exports.boolean().optional()
|
|
6622
|
+
}).strict();
|
|
6623
|
+
var parseCanvasEditorGates = (raw) => {
|
|
6624
|
+
if (raw == null) return { ...ALL_TRUE };
|
|
6625
|
+
const parsed = CanvasEditorGatesPatchSchema.safeParse(raw);
|
|
6626
|
+
if (!parsed.success) return { ...ALL_TRUE };
|
|
6627
|
+
return { ...ALL_TRUE, ...parsed.data };
|
|
6628
|
+
};
|
|
6629
|
+
var layerViolationMessage = (screenId, layerId, label) => `Screen "${screenId}": ${label} (layer "${layerId}") is disabled for this app in canvas editor settings.`;
|
|
6630
|
+
var buttonOsPermissionMessage = (screenId, layerId) => `Screen "${screenId}": request OS permission button actions are disabled for this app (layer "${layerId}").`;
|
|
6631
|
+
var collectCanvasGateViolations = (manifest, gates) => {
|
|
6632
|
+
const issues = [];
|
|
6633
|
+
for (const screen of manifest.screens) {
|
|
6634
|
+
walkScreenLayers(screen, (l) => {
|
|
6635
|
+
if ((l.kind === "lottie" || l.kind === "video") && !gates.lottie) {
|
|
6636
|
+
issues.push(
|
|
6637
|
+
layerViolationMessage(
|
|
6638
|
+
screen.id,
|
|
6639
|
+
l.id,
|
|
6640
|
+
l.kind === "video" ? "Video layers" : "Lottie layers"
|
|
6641
|
+
)
|
|
6642
|
+
);
|
|
6643
|
+
}
|
|
6644
|
+
if (l.kind === "oauth_login" && !gates.oauthLogin) {
|
|
6645
|
+
issues.push(layerViolationMessage(screen.id, l.id, "OAuth login layers"));
|
|
6646
|
+
}
|
|
6647
|
+
if (l.kind === "oauth_provider") {
|
|
6648
|
+
if (l.variant === "preset" && !gates.oauthProviderPreset) {
|
|
6649
|
+
issues.push(layerViolationMessage(screen.id, l.id, "OAuth provider (preset) layers"));
|
|
6650
|
+
}
|
|
6651
|
+
if (l.variant === "custom" && !gates.oauthProviderCustom) {
|
|
6652
|
+
issues.push(layerViolationMessage(screen.id, l.id, "OAuth provider (custom) layers"));
|
|
6653
|
+
}
|
|
6654
|
+
}
|
|
6655
|
+
if (l.kind === "email_password_auth" && !gates.emailPasswordAuth) {
|
|
6656
|
+
issues.push(layerViolationMessage(screen.id, l.id, "Email/password auth layers"));
|
|
6657
|
+
}
|
|
6658
|
+
if (l.kind === "email_password_field" && !gates.emailPasswordField) {
|
|
6659
|
+
issues.push(layerViolationMessage(screen.id, l.id, "Email/password field layers"));
|
|
6660
|
+
}
|
|
6661
|
+
if (l.kind === "email_password_submit" && !gates.emailPasswordSubmit) {
|
|
6662
|
+
issues.push(layerViolationMessage(screen.id, l.id, "Email/password submit layers"));
|
|
6663
|
+
}
|
|
6664
|
+
if (l.kind === "button" && l.action.kind === "request_os_permission" && !gates.requestOsPermission) {
|
|
6665
|
+
issues.push(buttonOsPermissionMessage(screen.id, l.id));
|
|
6666
|
+
}
|
|
6667
|
+
});
|
|
6668
|
+
}
|
|
6669
|
+
return issues;
|
|
6670
|
+
};
|
|
7906
6671
|
|
|
7907
6672
|
// ../flow-runtime/src/validation.ts
|
|
7908
6673
|
var validateManifest = (data) => {
|