@domino-sdk/relay 1.63.0 → 1.65.0

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.
Files changed (69) hide show
  1. package/CHANGELOG.md +25 -0
  2. package/dist/{accounts-nz3mzfRQ.d.ts → accounts-_lNsiR2k.d.ts} +22 -2
  3. package/dist/{attempt-captures-DMi8oR9T.d.ts → attempt-captures-BqPggxTU.d.ts} +1 -1
  4. package/dist/authoring.d.ts +11 -11
  5. package/dist/authoring.js +15 -20
  6. package/dist/{automatic-outcomes-C_LLQU1p.d.ts → automatic-outcomes-BzAvfcpd.d.ts} +2 -2
  7. package/dist/browser.d.ts +9 -9
  8. package/dist/browser.js +11 -14
  9. package/dist/{catalog-BaTOKpNw.d.ts → catalog-ByZMRS7I.d.ts} +1 -1
  10. package/dist/{chunk-VWQGWGCH.js → chunk-4NIV4NPV.js} +1 -1
  11. package/dist/{chunk-ICXZZNPS.js → chunk-7H4MRVQF.js} +1 -1
  12. package/dist/{chunk-NQDEWJWE.js → chunk-CVQZ2YP7.js} +6 -232
  13. package/dist/{chunk-3RFP6GT5.js → chunk-DLABJSBO.js} +2 -2
  14. package/dist/{chunk-AQOL3SK5.js → chunk-E22XSC4L.js} +1 -1
  15. package/dist/{chunk-N4LNEGQX.js → chunk-EDNKKVGU.js} +2 -2
  16. package/dist/{chunk-GLH6MEI2.js → chunk-EOUEAOWJ.js} +28 -2
  17. package/dist/{chunk-MTKRIQEU.js → chunk-EUEW2APU.js} +1 -1
  18. package/dist/{chunk-ID3BZXFZ.js → chunk-HNR6G3GV.js} +1939 -1211
  19. package/dist/{chunk-5XLZ34PV.js → chunk-KCUUHT2V.js} +3 -3
  20. package/dist/{chunk-EHUSD3O2.js → chunk-MPTE7EIV.js} +2 -4
  21. package/dist/{chunk-QR6HH4DI.js → chunk-NG4GZ54I.js} +4 -4
  22. package/dist/chunk-R2KZFX6E.js +405 -0
  23. package/dist/{chunk-4GQW43UU.js → chunk-RD3XJ4DH.js} +26 -30
  24. package/dist/{chunk-7Z4SZ6YM.js → chunk-SE7XHQFP.js} +1 -1
  25. package/dist/{chunk-LZWXCBUB.js → chunk-VBYOAT46.js} +41 -45
  26. package/dist/{chunk-7X67QLPB.js → chunk-XVZ4YOF2.js} +1 -1
  27. package/dist/{chunk-FU5CGNTR.js → chunk-ZQ3IPCI6.js} +44 -5
  28. package/dist/chunk-ZXGBDLVB.js +1510 -0
  29. package/dist/{client-DHmG7rn6.d.ts → client-D7IiwEq2.d.ts} +12 -7
  30. package/dist/{dashboards-CLemT6kj.d.ts → dashboards-pVfclkyh.d.ts} +2 -2
  31. package/dist/{deployments-DTULi7dF.d.ts → deployments-Cr1tfqrr.d.ts} +2 -2
  32. package/dist/{identity-integration-DOeNZaxF.d.ts → identity-integration-Ci2vGKtX.d.ts} +37 -2
  33. package/dist/index.d.ts +10 -10
  34. package/dist/index.js +11 -15
  35. package/dist/internal.d.ts +12 -12
  36. package/dist/internal.js +21 -16
  37. package/dist/{limits-kNzYdZ00.d.ts → limits-pE04y9O2.d.ts} +8 -1
  38. package/dist/{offers-CYeN_I0Y.d.ts → offers-Hw2P6tcK.d.ts} +2 -2
  39. package/dist/{participant-activity-D-Drp24G.d.ts → participant-activity-DXRq4s6K.d.ts} +1 -0
  40. package/dist/portal-proxy.d.ts +4 -2
  41. package/dist/portal-proxy.js +13 -5
  42. package/dist/react/index.d.ts +20 -13
  43. package/dist/react/index.js +11 -14
  44. package/dist/{reward-deliveries-drp-x1G-.d.ts → reward-deliveries-BCV8hznc.d.ts} +1 -1
  45. package/dist/runtime/authoring.js +1 -1
  46. package/dist/runtime/chunks/6EBN6IZU.js +1 -0
  47. package/dist/runtime/manifest.json +3 -3
  48. package/dist/runtime/schema.js +1 -1
  49. package/dist/schema.d.ts +19 -16
  50. package/dist/schema.js +109 -112
  51. package/dist/server/index.d.ts +11 -11
  52. package/dist/server/index.js +775 -1037
  53. package/dist/{sign-in-providers-B1Q9eDRm.d.ts → sign-in-providers-BAkGjSXo.d.ts} +2 -2
  54. package/dist/{submission-input-DZCbjQUH.d.ts → submission-input-ChL1aYNH.d.ts} +2 -2
  55. package/dist/{telegram-browser-NL0Asmsi.d.ts → telegram-browser-K27t4TwM.d.ts} +4 -4
  56. package/dist/telegram.d.ts +8 -8
  57. package/dist/telegram.js +2 -2
  58. package/dist/testing.d.ts +10 -10
  59. package/dist/testing.js +19 -23
  60. package/dist/{tracker-data-esm3WG8R.d.ts → tracker-data-Bl-qPIvZ.d.ts} +3 -1
  61. package/dist/{transport-Czht_irp.d.ts → transport-DC1m73Tp.d.ts} +1065 -14
  62. package/package.json +1 -1
  63. package/dist/chunk-4NOFSGAL.js +0 -320
  64. package/dist/chunk-FO2LCZTL.js +0 -19
  65. package/dist/chunk-KP2MCX3R.js +0 -587
  66. package/dist/chunk-N4BDKS6Y.js +0 -87
  67. package/dist/chunk-TLSQETTY.js +0 -41
  68. package/dist/chunk-W7YSMSGC.js +0 -725
  69. package/dist/runtime/chunks/UGDV5W4N.js +0 -1
@@ -1,111 +1,111 @@
1
1
  import {
2
2
  attemptCaptureSchema,
3
3
  capturedFactSchema
4
- } from "../chunk-VWQGWGCH.js";
4
+ } from "../chunk-4NIV4NPV.js";
5
5
  import {
6
- activityTypeSchema,
7
- activityTypes,
8
- automaticCatchUpConfirmSchema,
9
- automaticCatchUpInputSchema,
10
- automaticCatchUpPreviewSchema,
11
- automaticCatchUpResultSchema,
12
- automaticOutcomePageSchema,
13
- automaticOutcomeQuerySchema,
14
- automaticSchedulingPageSchema,
15
- automaticSchedulingQuerySchema,
16
- automaticSchedulingRetrySchema,
17
- automaticSchedulingSchema,
18
- deploymentActionSchema,
19
- deploymentHistoryPageSchema,
20
- deploymentHistoryQuerySchema,
21
- deploymentPreviewSchema,
22
- deploymentRecordSchema,
23
- deploymentRejectionSchema,
24
- deploymentResultSchema,
25
- projectDeploymentSchema,
26
- promoteDeploymentSchema,
27
- publishDeploymentSchema,
28
- rejectDeploymentSchema,
29
- submitDeploymentSchema
30
- } from "../chunk-4GQW43UU.js";
31
- import "../chunk-TLSQETTY.js";
32
- import "../chunk-MWMCQLCG.js";
33
- import {
34
- APP_SCHEDULE_LIMIT,
35
- APP_SCHEDULE_MIN_INTERVAL,
36
- APP_SCHEDULE_RESULT_BYTES,
37
- APP_SCHEDULE_TIMEOUT,
38
6
  DEFAULT_MANAGEMENT_TIMEOUT,
39
7
  ManagementError,
40
8
  ManagementErrorCode,
41
9
  ManagementUploadBody,
42
10
  REFERRAL_INTEGRATION_REWARD_ERROR,
43
11
  actionIdOf,
44
- appScheduleDiagnosticSchema,
45
- appScheduleListSchema,
46
- appScheduleNameSchema,
47
- appSchedulePathSchema,
48
- appScheduleResultSchema,
49
- appScheduleRunSchema,
50
- appScheduleRunsSchema,
51
- appScheduleSchema,
52
- appScheduleStateInputSchema,
53
- appScheduleStateSchema,
54
- appSchedulesSchema,
55
12
  containsReferralIntegrationReward,
56
13
  isManagementError,
57
14
  managementErrorSchema,
58
15
  managementTransport,
59
- nextScheduleRun,
60
16
  questConfiguration,
61
- scheduleResult,
62
- scheduledInvocationSchema,
63
- sequenceCursorSchema,
64
- verifyScheduledRequest
65
- } from "../chunk-NQDEWJWE.js";
17
+ sequenceCursorSchema
18
+ } from "../chunk-CVQZ2YP7.js";
66
19
  import {
67
20
  parseImageExtraction,
68
21
  parseImageResult
69
- } from "../chunk-N4LNEGQX.js";
70
- import {
71
- imageAssetArtifactSchema,
72
- xUserLookupInputSchema,
73
- xUserSchema,
74
- xUsernameSchema
75
- } from "../chunk-7X67QLPB.js";
22
+ } from "../chunk-EDNKKVGU.js";
76
23
  import {
77
24
  sourceDataSchema,
78
25
  sourceRoles,
79
26
  validateQuestShape
80
- } from "../chunk-7Z4SZ6YM.js";
81
- import {
82
- analyticsBreakdowns,
83
- analyticsCatalog,
84
- analyticsCatalogSchema,
85
- analyticsCharts,
86
- analyticsFilters,
87
- analyticsMetricIds,
88
- analyticsMetricQuerySchema,
89
- analyticsMetricResultSchema,
90
- analyticsQueryLimit,
91
- analyticsQuerySchema,
92
- analyticsRanges,
93
- analyticsReadSchema,
94
- dashboardDefinitionSchema
95
- } from "../chunk-FU5CGNTR.js";
27
+ } from "../chunk-SE7XHQFP.js";
96
28
  import {
29
+ APP_KV_LIMIT,
30
+ APP_MIGRATION_FILE_BYTES,
31
+ APP_MIGRATION_LIMIT,
32
+ APP_MIGRATION_TOTAL_BYTES,
33
+ APP_SCHEDULE_LIMIT,
34
+ APP_SCHEDULE_MIN_INTERVAL,
35
+ APP_SCHEDULE_RESULT_BYTES,
36
+ APP_SCHEDULE_TIMEOUT,
37
+ APP_SECRET_LIMIT,
38
+ APP_SQL_LIMIT,
39
+ APP_STORAGE_CELL_CHARACTERS,
40
+ APP_STORAGE_PREVIEW_CHARACTERS,
41
+ APP_STORAGE_ROW_LIMIT,
97
42
  MemberImportRefusalCode,
98
43
  MemberImportState,
99
44
  accountVouchedBySchema,
45
+ appMigrationNameSchema,
46
+ appRoutingSchema,
47
+ appScheduleDiagnosticSchema,
48
+ appScheduleListSchema,
49
+ appScheduleNameSchema,
50
+ appSchedulePathSchema,
51
+ appScheduleResultSchema,
52
+ appScheduleRunSchema,
53
+ appScheduleRunsSchema,
54
+ appScheduleSchema,
55
+ appScheduleStateInputSchema,
56
+ appScheduleStateSchema,
57
+ appSchedulesSchema,
58
+ appSecretDeclarationSchema,
59
+ appSecretDeclarationsSchema,
60
+ appSecretInputSchema,
61
+ appSecretListSchema,
62
+ appSecretNameSchema,
63
+ appSecretSchema,
64
+ appSecretValueSchema,
65
+ appStorageCellPageSchema,
66
+ appStorageCellSchema,
67
+ appStorageKeysSchema,
68
+ appStorageKindSchema,
69
+ appStorageKvClearResultSchema,
70
+ appStorageKvClearSchema,
71
+ appStorageListSchema,
72
+ appStorageRowsSchema,
73
+ appStorageSchema,
74
+ appStorageSqlClearResultSchema,
75
+ appStorageSqlClearSchema,
76
+ appStorageTablesSchema,
77
+ appStorageValueSchema,
78
+ assetPathSchema,
79
+ buildArtifactsSchema,
80
+ buildIdentitySchema,
81
+ buildPhaseSchema,
82
+ buildSnapshotSchema,
83
+ buildStatusSchema,
84
+ commitSchema,
85
+ compareAppMigrations,
86
+ createRepositorySchema,
100
87
  credentialSecretInputSchema,
101
88
  credentialSecretSchema,
89
+ customDomainInputSchema,
90
+ customDomainListSchema,
91
+ customDomainRecordSchema,
92
+ customDomainSchema,
93
+ customDomainStateSchema,
94
+ deviceApproveSchema,
95
+ deviceRedeemSchema,
96
+ deviceStartSchema,
97
+ hostedAppSchema,
98
+ hostedAppSecretsSchema,
99
+ hostedBuildSchema,
102
100
  identityIntegrationAccountVouchingInputSchema,
101
+ identityIntegrationAppSecretSchema,
103
102
  identityIntegrationInputSchema,
104
103
  identityIntegrationKeySchema,
105
104
  identityIntegrationSchema,
106
105
  identityIntegrationSecretSchema,
107
106
  identityKindClaimSchema,
108
107
  identityReferenceSchema,
108
+ liveAppSchema,
109
109
  memberImportAccountSchema,
110
110
  memberImportActionSchema,
111
111
  memberImportCommandSchema,
@@ -129,19 +129,90 @@ import {
129
129
  memberImportSchema,
130
130
  memberImportSummarySchema,
131
131
  memberImportVouchedAccountSchema,
132
+ nextScheduleRun,
133
+ offeredStarterSchema,
132
134
  participantExchangeAccountResultSchema,
133
135
  participantExchangeResultSchema,
134
- participantExchangeSchema
135
- } from "../chunk-KP2MCX3R.js";
136
+ participantExchangeSchema,
137
+ repositoryCreateSchema,
138
+ repositorySchema,
139
+ scheduleResult,
140
+ scheduledInvocationSchema,
141
+ stageRequestSchema,
142
+ stagedDeploymentContentSchema,
143
+ stagedDeploymentKey,
144
+ stagedDeploymentLimits,
145
+ stagedDeploymentSchema,
146
+ stagingAccessInputSchema,
147
+ stagingAccessModeSchema,
148
+ stagingAccessSchema,
149
+ stagingLinkSchema,
150
+ stagingPathSchema,
151
+ starterIdSchema,
152
+ starterTemplates,
153
+ starters,
154
+ verifyScheduledRequest
155
+ } from "../chunk-ZXGBDLVB.js";
136
156
  import {
137
157
  isIntegrationParticipantPath,
138
158
  isParticipantRoute,
139
159
  participantRoutePattern,
140
160
  participantRoutes
141
161
  } from "../chunk-U66GUVSG.js";
162
+ import {
163
+ activityTypeSchema,
164
+ activityTypes,
165
+ automaticCatchUpConfirmSchema,
166
+ automaticCatchUpInputSchema,
167
+ automaticCatchUpPreviewSchema,
168
+ automaticCatchUpResultSchema,
169
+ automaticOutcomePageSchema,
170
+ automaticOutcomeQuerySchema,
171
+ automaticSchedulingPageSchema,
172
+ automaticSchedulingQuerySchema,
173
+ automaticSchedulingRetrySchema,
174
+ automaticSchedulingSchema,
175
+ deploymentActionSchema,
176
+ deploymentHistoryPageSchema,
177
+ deploymentHistoryQuerySchema,
178
+ deploymentPreviewSchema,
179
+ deploymentRecordSchema,
180
+ deploymentRejectionSchema,
181
+ deploymentResultSchema,
182
+ projectDeploymentSchema,
183
+ promoteDeploymentSchema,
184
+ publishDeploymentSchema,
185
+ rejectDeploymentSchema,
186
+ submitDeploymentSchema
187
+ } from "../chunk-RD3XJ4DH.js";
188
+ import {
189
+ xUserLookupInputSchema,
190
+ xUserSchema,
191
+ xUsernameSchema
192
+ } from "../chunk-XVZ4YOF2.js";
193
+ import {
194
+ analyticsBreakdowns,
195
+ analyticsCatalog,
196
+ analyticsCatalogSchema,
197
+ analyticsCharts,
198
+ analyticsFilters,
199
+ analyticsMetricIds,
200
+ analyticsMetricQuerySchema,
201
+ analyticsMetricResultSchema,
202
+ analyticsQueryLimit,
203
+ analyticsQuerySchema,
204
+ analyticsRanges,
205
+ analyticsReadSchema,
206
+ dashboardDefinitionSchema
207
+ } from "../chunk-ZQ3IPCI6.js";
208
+ import "../chunk-MWMCQLCG.js";
142
209
  import {
143
210
  withActionId
144
- } from "../chunk-AQOL3SK5.js";
211
+ } from "../chunk-E22XSC4L.js";
212
+ import {
213
+ withQuery
214
+ } from "../chunk-7H4MRVQF.js";
215
+ import "../chunk-DLABJSBO.js";
145
216
  import {
146
217
  collectionBeginSchema,
147
218
  collectionPreviewSchema,
@@ -156,7 +227,7 @@ import {
156
227
  rewardDeliveriesSchema,
157
228
  rewardDeliveryQuerySchema,
158
229
  rewardDeliverySchema
159
- } from "../chunk-EHUSD3O2.js";
230
+ } from "../chunk-MPTE7EIV.js";
160
231
  import {
161
232
  allocateQuestSchema,
162
233
  allocatedQuestSchema,
@@ -167,7 +238,7 @@ import {
167
238
  questDraftSchema,
168
239
  questPublicationPreviewSchema,
169
240
  saveQuestDraftSchema
170
- } from "../chunk-4NOFSGAL.js";
241
+ } from "../chunk-R2KZFX6E.js";
171
242
  import {
172
243
  engagementBoundaryPageSchema,
173
244
  engagementChangePreviewInputSchema,
@@ -193,45 +264,7 @@ import {
193
264
  referralQualificationSchema,
194
265
  referralRewardResolutionSchema,
195
266
  referralSuspensionSchema
196
- } from "../chunk-QR6HH4DI.js";
197
- import {
198
- badgeMutationResultSchema,
199
- badgeMutationSchema,
200
- badgePropertiesSchema,
201
- baseUnitsSchema,
202
- createBadgeSchema,
203
- createPointLedgerSchema,
204
- leaderboardExclusionGroupBindingSchema,
205
- leaderboardExclusionGroupSchema,
206
- leaderboardExclusionSchema,
207
- leaderboardGroupSchema,
208
- leaderboardPageSchema,
209
- leaderboardQuerySchema,
210
- leaderboardSettlementApprovalSchema,
211
- leaderboardSettlementPoolSchema,
212
- leaderboardSettlementSchema,
213
- leaderboardSettlementSummarySchema,
214
- managedBadgeSchema,
215
- managedPointHistoryPageSchema,
216
- managedPointLedgerSchema,
217
- managedProfileSchema,
218
- memberBadgesSchema,
219
- pointLedgerPropertiesSchema,
220
- pointLedgerSchema,
221
- pointsAccountSchema,
222
- pointsMutationSchema,
223
- pointsResultSchema,
224
- profileModerationSchema,
225
- profileSettingsInputSchema,
226
- profileSettingsSchema,
227
- publishedLeaderboardSchema
228
- } from "../chunk-W7YSMSGC.js";
229
- import {
230
- withQuery
231
- } from "../chunk-ICXZZNPS.js";
232
- import "../chunk-FO2LCZTL.js";
233
- import "../chunk-3RFP6GT5.js";
234
- import "../chunk-N4BDKS6Y.js";
267
+ } from "../chunk-NG4GZ54I.js";
235
268
  import {
236
269
  CompletionSourceKind,
237
270
  acceptAnywaySchema,
@@ -239,6 +272,10 @@ import {
239
272
  appIdentityKindSchema,
240
273
  attemptSchema,
241
274
  authProviderSchema,
275
+ badgeMutationResultSchema,
276
+ badgeMutationSchema,
277
+ badgePropertiesSchema,
278
+ baseUnitsSchema,
242
279
  beginHandoverSchema,
243
280
  campaignEnrollmentSchema,
244
281
  completionKeySchema,
@@ -255,7 +292,9 @@ import {
255
292
  counterHistorySchema,
256
293
  counterModerationResultSchema,
257
294
  counterModerationSchema,
295
+ createBadgeSchema,
258
296
  createGroupSchema,
297
+ createPointLedgerSchema,
259
298
  createStockItemSchema,
260
299
  discordServerSchema,
261
300
  entitlementCorrectionSchema,
@@ -263,6 +302,7 @@ import {
263
302
  eventSchema,
264
303
  evidenceRedactionInputSchema,
265
304
  evidenceRetentionInputSchema,
305
+ evidenceRetentionSettingInputSchema,
266
306
  evidenceSchema,
267
307
  evmAddressSchema,
268
308
  evmChainIdSchema,
@@ -272,12 +312,27 @@ import {
272
312
  groupPageQuerySchema,
273
313
  groupPageSchema,
274
314
  identifier,
315
+ leaderboardExclusionGroupBindingSchema,
316
+ leaderboardExclusionGroupSchema,
317
+ leaderboardExclusionSchema,
318
+ leaderboardGroupSchema,
319
+ leaderboardPageSchema,
320
+ leaderboardQuerySchema,
321
+ leaderboardSettlementApprovalSchema,
322
+ leaderboardSettlementPoolSchema,
323
+ leaderboardSettlementSchema,
324
+ leaderboardSettlementSummarySchema,
275
325
  lifecycleReasonSchema,
276
326
  limits,
277
327
  linkedWalletSchema,
328
+ managedBadgeSchema,
278
329
  managedGroupSchema,
330
+ managedPointHistoryPageSchema,
331
+ managedPointLedgerSchema,
332
+ managedProfileSchema,
279
333
  managedTrackerCreateSchema,
280
334
  managementStateQuerySchema,
335
+ memberBadgesSchema,
281
336
  memberCampaignEnrollmentInputSchema,
282
337
  memberCampaignWithdrawalInputSchema,
283
338
  memberIdentitySchema,
@@ -288,10 +343,19 @@ import {
288
343
  pageQuerySchema,
289
344
  pickupAvailabilitySchema,
290
345
  pickupCatalogSchema,
346
+ pointLedgerPropertiesSchema,
347
+ pointLedgerSchema,
348
+ pointsAccountSchema,
349
+ pointsMutationSchema,
350
+ pointsResultSchema,
351
+ profileModerationSchema,
352
+ profileSettingsInputSchema,
353
+ profileSettingsSchema,
291
354
  projectCalendarInputSchema,
292
355
  projectCalendarSchema,
293
356
  projectGroupKey,
294
357
  projectIntegrationSchema,
358
+ publishedLeaderboardSchema,
295
359
  publishedReleaseSchema,
296
360
  questSettingsInputSchema,
297
361
  questSubmissionSchema,
@@ -336,8 +400,10 @@ import {
336
400
  walletSignInNetworksSchema,
337
401
  walletUnlinkInputSchema,
338
402
  whereSchemaIssue
339
- } from "../chunk-ID3BZXFZ.js";
340
- import "../chunk-GLH6MEI2.js";
403
+ } from "../chunk-HNR6G3GV.js";
404
+ import {
405
+ issueText
406
+ } from "../chunk-EOUEAOWJ.js";
341
407
 
342
408
  // src/server/identity-links.ts
343
409
  import * as z from "zod";
@@ -1233,7 +1299,7 @@ var dashboardReadSchema = /* @__PURE__ */ (() => z12.object({
1233
1299
  }))();
1234
1300
 
1235
1301
  // src/server/index.ts
1236
- import * as z63 from "zod";
1302
+ import * as z62 from "zod";
1237
1303
 
1238
1304
  // src/server/client/http.ts
1239
1305
  import * as z15 from "zod";
@@ -2747,6 +2813,16 @@ var evidenceRetentionResultSchema = /* @__PURE__ */ (() => z30.object({
2747
2813
  more: z30.boolean(),
2748
2814
  redaction: evidenceRedactionSchema
2749
2815
  }))();
2816
+ var evidenceRetentionSettingSchema = /* @__PURE__ */ (() => z30.object({
2817
+ evidenceRetention: z30.union([
2818
+ z30.object({ days: z30.number().int() }),
2819
+ z30.literal("keep")
2820
+ ]),
2821
+ noticeEndsAt: z30.number()
2822
+ }))();
2823
+ function shortensEvidenceRetention(before, after) {
2824
+ return after !== "keep" && (before === "keep" || after.days < before.days);
2825
+ }
2750
2826
  var managedAttemptSchema = /* @__PURE__ */ (() => z30.object({
2751
2827
  attempt: attemptSchema,
2752
2828
  release: publishedReleaseSchema.nullable(),
@@ -2874,6 +2950,31 @@ function attempts({ get, post }) {
2874
2950
  evidenceRetentionInputSchema.parse(withActionId(input)),
2875
2951
  call
2876
2952
  ),
2953
+ /**
2954
+ * How long the project keeps submitted evidence, in both environments: `{ days }` after the
2955
+ * decision (90 unless changed) or `"keep"`, and `noticeEndsAt`, before which nothing is
2956
+ * deleted automatically. Requires `read` permission.
2957
+ *
2958
+ * @experimental A minor release can change this method and its result.
2959
+ */
2960
+ evidenceRetention: (call) => get("/evidence-retention", evidenceRetentionSettingSchema, call),
2961
+ /**
2962
+ * Sets how long the project keeps submitted evidence, in both environments: `{ days }`, 1 to
2963
+ * 3650 days after the decision, or `"keep"`. Domino's hourly job deletes the evidence of
2964
+ * decided attempts once their decision is older than the period, as `redactEvidenceBefore`
2965
+ * does. Requires `publish` permission. Shortening the period, or switching from `"keep"` to
2966
+ * days, deletes evidence sooner, so it also requires an organization administrator's Console
2967
+ * session or personal key, or a service key, else 403 `permission-required`. Each change
2968
+ * records an `evidence-retention-changed` audit event with the old and new period.
2969
+ *
2970
+ * @experimental A minor release can change this method and its result.
2971
+ */
2972
+ setEvidenceRetention: (input, call) => post(
2973
+ "/evidence-retention",
2974
+ evidenceRetentionSettingSchema,
2975
+ evidenceRetentionSettingInputSchema.parse(withActionId(input)),
2976
+ call
2977
+ ),
2877
2978
  /**
2878
2979
  * Evaluates a failed attempt again under a new generation; requires `review` permission. An
2879
2980
  * attempt whose evidence was deleted is refused with 409 `evidence-redacted`.
@@ -3866,6 +3967,21 @@ function identityIntegrations({
3866
3967
  identityIntegrationInputSchema.parse(input),
3867
3968
  call
3868
3969
  ),
3970
+ /**
3971
+ * Creates the key and stores its secret as the hosted app secret `appSecret` (such as
3972
+ * `APP_IDENTITY_KEY`) in the key's environment, in one step: no response carries the secret,
3973
+ * and a refused app secret leaves no key. Needs publish permission, which app secrets need.
3974
+ * The app reads the secret from its next deploy.
3975
+ */
3976
+ createIntoAppSecret: (input, appSecret, call) => post(
3977
+ "/identity-integrations",
3978
+ identityIntegrationAppSecretSchema,
3979
+ {
3980
+ ...identityIntegrationInputSchema.parse(input),
3981
+ appSecret: appSecretNameSchema.parse(appSecret)
3982
+ },
3983
+ call
3984
+ ),
3869
3985
  /**
3870
3986
  * Replaces every secret with one new secret that never expires; the old secrets stop working
3871
3987
  * at once.
@@ -3888,6 +4004,19 @@ function identityIntegrations({
3888
4004
  credentialSecretInputSchema.parse(input),
3889
4005
  call
3890
4006
  ),
4007
+ /**
4008
+ * `addSecret`, storing the new secret as the hosted app secret `appSecret` in the key's
4009
+ * environment instead of answering it, as `createIntoAppSecret` does.
4010
+ */
4011
+ addSecretIntoAppSecret: (id, appSecret, input = {}, call) => post(
4012
+ `/identity-integrations/${z44.string().uuid().parse(id)}/secrets`,
4013
+ identityIntegrationAppSecretSchema,
4014
+ {
4015
+ ...credentialSecretInputSchema.parse(input),
4016
+ appSecret: appSecretNameSchema.parse(appSecret)
4017
+ },
4018
+ call
4019
+ ),
3891
4020
  /**
3892
4021
  * Stops one secret working; member sessions stay signed in. The last secret cannot be
3893
4022
  * revoked; disconnect the integration with `revoke` instead.
@@ -3961,7 +4090,7 @@ var auditRecordSchema = /* @__PURE__ */ (() => z45.object({
3961
4090
  detail: z45.string(),
3962
4091
  at: z45.number(),
3963
4092
  attempt: z45.string().nullable()
3964
- }).refine((record6) => !record6.user || record6.user.id === record6.actor, {
4093
+ }).refine((record5) => !record5.user || record5.user.id === record5.actor, {
3965
4094
  message: "User profile must match the recorded actor",
3966
4095
  path: ["user"]
3967
4096
  }))();
@@ -4364,29 +4493,122 @@ function memberImports({ get, post }) {
4364
4493
  var memberImportsApi = (http) => memberImports(http);
4365
4494
 
4366
4495
  // src/server/client/members.ts
4367
- import * as z50 from "zod";
4496
+ import * as z51 from "zod";
4368
4497
 
4369
4498
  // src/server/members.ts
4370
- import * as z48 from "zod";
4499
+ import * as z49 from "zod";
4371
4500
 
4372
- // src/server/wallets.ts
4501
+ // src/server/member-bans.ts
4373
4502
  import * as z47 from "zod";
4503
+ var memberBanRollbackSchema = /* @__PURE__ */ (() => z47.object({
4504
+ completions: z47.boolean().default(false),
4505
+ referralPayouts: z47.boolean().default(false),
4506
+ pointAwards: z47.boolean().default(false)
4507
+ }).strict())();
4508
+ var banReason = /* @__PURE__ */ (() => z47.string().trim().min(1).max(500))();
4509
+ var memberBanInputSchema = /* @__PURE__ */ (() => z47.object({
4510
+ actionId: identifier,
4511
+ reason: banReason,
4512
+ rollback: memberBanRollbackSchema.optional()
4513
+ }).strict())();
4514
+ var memberBanPreviewInputSchema = /* @__PURE__ */ (() => z47.object({ rollback: memberBanRollbackSchema.optional() }).strict())();
4515
+ var memberUnbanInputSchema = /* @__PURE__ */ (() => z47.object({
4516
+ actionId: identifier,
4517
+ reason: banReason,
4518
+ restoreCompletions: z47.boolean().default(false)
4519
+ }).strict())();
4520
+ var points2 = /* @__PURE__ */ (() => z47.number().int().nonnegative())();
4521
+ var memberBanOutcomeSchema = /* @__PURE__ */ (() => z47.object({
4522
+ attemptsRejected: points2,
4523
+ completionsRevoked: points2,
4524
+ completionsRestored: points2,
4525
+ completionsKept: z47.array(
4526
+ z47.object({ completion: identifier, code: z47.string() })
4527
+ ),
4528
+ entriesReversed: points2,
4529
+ referralAccounts: points2,
4530
+ points: z47.array(
4531
+ z47.object({ ledger: identifier, reversed: points2, unreversed: points2 })
4532
+ ),
4533
+ referralDebt: z47.array(z47.object({ ledger: identifier, amount: points2 }))
4534
+ }))();
4535
+ var runStatusSchema = /* @__PURE__ */ (() => z47.string())();
4536
+ var runSchema = /* @__PURE__ */ (() => z47.object({
4537
+ status: runStatusSchema,
4538
+ finishedAt: z47.number().int().nullable(),
4539
+ outcome: memberBanOutcomeSchema.nullable()
4540
+ }))();
4541
+ var memberBanSchema = /* @__PURE__ */ (() => z47.object({
4542
+ id: identifier,
4543
+ member: identifier,
4544
+ reason: z47.string(),
4545
+ bannedAt: z47.number().int(),
4546
+ bannedBy: z47.string().nullable(),
4547
+ rollback: runSchema.extend({
4548
+ completions: z47.boolean(),
4549
+ referralPayouts: z47.boolean(),
4550
+ pointAwards: z47.boolean()
4551
+ }),
4552
+ unban: z47.object({
4553
+ reason: z47.string(),
4554
+ unbannedAt: z47.number().int(),
4555
+ by: z47.string().nullable(),
4556
+ restoreCompletions: z47.boolean(),
4557
+ restore: runSchema.nullable()
4558
+ }).nullable()
4559
+ }))();
4560
+ var memberBanPreviewSchema = /* @__PURE__ */ (() => z47.object({
4561
+ member: identifier,
4562
+ banned: z47.boolean(),
4563
+ attempts: points2,
4564
+ completions: points2,
4565
+ entries: points2,
4566
+ referralAccounts: points2,
4567
+ points: z47.array(
4568
+ z47.object({
4569
+ ledger: identifier,
4570
+ completions: points2,
4571
+ pointAwards: points2,
4572
+ referralPayouts: points2,
4573
+ available: points2,
4574
+ reversed: points2,
4575
+ unreversed: points2,
4576
+ referralDebt: points2
4577
+ })
4578
+ ),
4579
+ inviters: z47.array(
4580
+ z47.object({
4581
+ member: identifier,
4582
+ ledgers: z47.array(
4583
+ z47.object({
4584
+ ledger: identifier,
4585
+ bonus: points2,
4586
+ reversed: points2,
4587
+ referralDebt: points2
4588
+ })
4589
+ )
4590
+ })
4591
+ )
4592
+ }))();
4593
+
4594
+ // src/server/wallets.ts
4595
+ import * as z48 from "zod";
4374
4596
  var managedWalletSchema = /* @__PURE__ */ (() => linkedWalletSchema.extend({
4375
4597
  /**
4376
4598
  * True when the organization vouched for the wallet (a member import, or an app login's server at
4377
4599
  * sign-in), and the member has not proved it since. Absent from Relay versions without imports.
4378
4600
  */
4379
- imported: z47.boolean().optional(),
4601
+ imported: z48.boolean().optional(),
4380
4602
  /**
4381
4603
  * The app login that vouched for the wallet at sign-in, while `imported` is true and no member
4382
4604
  * import attached it. Absent from Relay versions without it.
4383
4605
  */
4384
4606
  vouchedBy: accountVouchedBySchema.optional(),
4385
4607
  ...identitySourceFields,
4386
- status: z47.enum(["linked", "unlinked"]),
4387
- unlinkedAt: z47.number().int().nullable(),
4608
+ status: z48.enum(["linked", "unlinked"]),
4609
+ unlinkedAt: z48.number().int().nullable(),
4388
4610
  /** "member", or the operator or key that unlinked it. */
4389
- unlinkedBy: z47.string().nullable()
4611
+ unlinkedBy: z48.string().nullable()
4390
4612
  }))();
4391
4613
  var balanceCheckSchema = /* @__PURE__ */ (() => walletBalanceSchema.pick({
4392
4614
  chain: true,
@@ -4396,58 +4618,65 @@ var balanceCheckSchema = /* @__PURE__ */ (() => walletBalanceSchema.pick({
4396
4618
  wallets: true,
4397
4619
  observedAt: true
4398
4620
  }).extend({ attempt: identifier }))();
4399
- var walletBalanceChainsSchema = /* @__PURE__ */ (() => z47.object({
4400
- chains: z47.array(
4401
- z47.object({
4402
- chain: z47.union([
4403
- z47.literal(solanaMainnet),
4621
+ var walletBalanceChainsSchema = /* @__PURE__ */ (() => z48.object({
4622
+ chains: z48.array(
4623
+ z48.object({
4624
+ chain: z48.union([
4625
+ z48.literal(solanaMainnet),
4404
4626
  cosmosNetworkSchema,
4405
4627
  evmChainIdSchema
4406
4628
  ]),
4407
- name: z47.string(),
4408
- testnet: z47.boolean()
4629
+ name: z48.string(),
4630
+ testnet: z48.boolean()
4409
4631
  })
4410
4632
  )
4411
4633
  }))();
4412
- var memberWalletUnlinkInputSchema = /* @__PURE__ */ (() => walletUnlinkInputSchema.extend({ reason: z47.string().trim().min(1).max(500) }).strict())();
4634
+ var memberWalletUnlinkInputSchema = /* @__PURE__ */ (() => walletUnlinkInputSchema.extend({ reason: z48.string().trim().min(1).max(500) }).strict())();
4413
4635
  var memberWalletSignInInputSchema = /* @__PURE__ */ (() => walletUnlinkInputSchema.extend({
4414
- enabled: z47.boolean(),
4415
- reason: z47.string().trim().min(1).max(500)
4636
+ enabled: z48.boolean(),
4637
+ reason: z48.string().trim().min(1).max(500)
4416
4638
  }).strict())();
4417
4639
 
4418
4640
  // src/server/members.ts
4419
- var memberSchema = /* @__PURE__ */ (() => z48.object({
4420
- id: z48.string(),
4421
- test: z48.boolean().optional(),
4422
- name: z48.string().nullable().optional(),
4423
- accounts: z48.array(memberAccountSchema).default([]),
4641
+ var memberSchema = /* @__PURE__ */ (() => z49.object({
4642
+ id: z49.string(),
4643
+ test: z49.boolean().optional(),
4644
+ name: z49.string().nullable().optional(),
4645
+ accounts: z49.array(memberAccountSchema).default([]),
4424
4646
  /** The member's linked app identities, by kind. Absent from Relay versions without it. */
4425
- appIdentities: z48.array(memberAppIdentitySchema).optional(),
4426
- attempts: z48.number(),
4427
- completions: z48.number(),
4428
- rewards: z48.number(),
4429
- lastActivity: z48.number().nullable(),
4647
+ appIdentities: z49.array(memberAppIdentitySchema).optional(),
4648
+ attempts: z49.number(),
4649
+ completions: z49.number(),
4650
+ rewards: z49.number(),
4651
+ lastActivity: z49.number().nullable(),
4430
4652
  /**
4431
4653
  * When the customer erased the member (`members.erase`), in Unix milliseconds: it keeps its ID
4432
4654
  * and accounting, with no profile, accounts or identities. Absent on a member that was not erased.
4433
4655
  */
4434
- erasedAt: z48.number().optional()
4656
+ erasedAt: z49.number().optional(),
4657
+ /**
4658
+ * When an operator banned the member (`members.ban`), in Unix milliseconds. Absent on a member
4659
+ * who is not banned now.
4660
+ *
4661
+ * @experimental A minor release can change member bans.
4662
+ */
4663
+ bannedAt: z49.number().optional()
4435
4664
  }))();
4436
- var managedOAuthAccountBaseSchema = /* @__PURE__ */ (() => z48.object({
4437
- provider: z48.enum(["x", "discord"]),
4438
- revision: z48.number().int().nonnegative()
4665
+ var managedOAuthAccountBaseSchema = /* @__PURE__ */ (() => z49.object({
4666
+ provider: z49.enum(["x", "discord"]),
4667
+ revision: z49.number().int().nonnegative()
4439
4668
  }))();
4440
- var managedOAuthAccountSchema = /* @__PURE__ */ (() => z48.discriminatedUnion("status", [
4669
+ var managedOAuthAccountSchema = /* @__PURE__ */ (() => z49.discriminatedUnion("status", [
4441
4670
  managedOAuthAccountBaseSchema.extend({
4442
- status: z48.literal("connected"),
4443
- subject: z48.string().min(1),
4444
- linkedAt: z48.number(),
4671
+ status: z49.literal("connected"),
4672
+ subject: z49.string().min(1),
4673
+ linkedAt: z49.number(),
4445
4674
  /**
4446
4675
  * True when the organization vouched for the account, not the member's proof: a member import
4447
4676
  * attached it, or an app login's server did at sign-in (`vouchedBy`). Absent from Relay
4448
4677
  * versions without imports.
4449
4678
  */
4450
- imported: z48.boolean().optional(),
4679
+ imported: z49.boolean().optional(),
4451
4680
  /**
4452
4681
  * The app login that vouched for the account at sign-in, for an account with `imported` set
4453
4682
  * that no member import attached. Absent from Relay versions without it.
@@ -4457,26 +4686,26 @@ var managedOAuthAccountSchema = /* @__PURE__ */ (() => z48.discriminatedUnion("s
4457
4686
  * True for a real account an operator linked to a test member without OAuth
4458
4687
  * (`testMembers.linkAccount`). Absent from Relay versions without it.
4459
4688
  */
4460
- testLinked: z48.boolean().optional(),
4689
+ testLinked: z49.boolean().optional(),
4461
4690
  ...identitySourceFields
4462
4691
  }),
4463
- managedOAuthAccountBaseSchema.extend({ status: z48.literal("disconnected") })
4692
+ managedOAuthAccountBaseSchema.extend({ status: z49.literal("disconnected") })
4464
4693
  ]))();
4465
4694
  var managedTelegramAccountBaseSchema = /* @__PURE__ */ (() => managedOAuthAccountBaseSchema.extend({
4466
- provider: z48.literal("telegram")
4695
+ provider: z49.literal("telegram")
4467
4696
  }))();
4468
- var managedTelegramAccountSchema = /* @__PURE__ */ (() => z48.discriminatedUnion("status", [
4697
+ var managedTelegramAccountSchema = /* @__PURE__ */ (() => z49.discriminatedUnion("status", [
4469
4698
  managedTelegramAccountBaseSchema.extend({
4470
- status: z48.literal("connected"),
4699
+ status: z49.literal("connected"),
4471
4700
  /** The numeric Telegram user ID. */
4472
- subject: z48.string().min(1),
4473
- linkedAt: z48.number(),
4701
+ subject: z49.string().min(1),
4702
+ linkedAt: z49.number(),
4474
4703
  /**
4475
4704
  * True when the organization vouched for the account, not the member's proof: a member import
4476
4705
  * attached it, or an app login's server did at sign-in (`vouchedBy`). Absent from Relay
4477
4706
  * versions without it.
4478
4707
  */
4479
- imported: z48.boolean().optional(),
4708
+ imported: z49.boolean().optional(),
4480
4709
  /**
4481
4710
  * The app login that vouched for the account at sign-in, for an account with `imported` set
4482
4711
  * that no member import attached. Absent from Relay versions without it.
@@ -4485,14 +4714,14 @@ var managedTelegramAccountSchema = /* @__PURE__ */ (() => z48.discriminatedUnion
4485
4714
  ...identitySourceFields
4486
4715
  }),
4487
4716
  managedTelegramAccountBaseSchema.extend({
4488
- status: z48.literal("disconnected")
4717
+ status: z49.literal("disconnected")
4489
4718
  })
4490
4719
  ]))();
4491
- var memberOAuthUnlinkInputSchema = /* @__PURE__ */ (() => z48.object({
4492
- provider: z48.enum(["x", "discord"]),
4493
- subject: z48.string().min(1).max(4096),
4494
- revision: z48.number().int().nonnegative().max(Number.MAX_SAFE_INTEGER - 1),
4495
- reason: z48.string().trim().min(1).max(500)
4720
+ var memberOAuthUnlinkInputSchema = /* @__PURE__ */ (() => z49.object({
4721
+ provider: z49.enum(["x", "discord"]),
4722
+ subject: z49.string().min(1).max(4096),
4723
+ revision: z49.number().int().nonnegative().max(Number.MAX_SAFE_INTEGER - 1),
4724
+ reason: z49.string().trim().min(1).max(500)
4496
4725
  }).strict())();
4497
4726
  var memberTelegramUnlinkInputSchema = /* @__PURE__ */ (() => memberOAuthUnlinkInputSchema.omit({ provider: true }).strict())();
4498
4727
  var managedMemberIdentitySchema = /* @__PURE__ */ (() => memberIdentitySchema.extend({
@@ -4501,7 +4730,7 @@ var managedMemberIdentitySchema = /* @__PURE__ */ (() => memberIdentitySchema.ex
4501
4730
  * login's server at sign-in), until the member links that provider's account, or signs in with
4502
4731
  * the X account, through Domino. Absent from Relay versions without imports.
4503
4732
  */
4504
- imported: z48.boolean().optional(),
4733
+ imported: z49.boolean().optional(),
4505
4734
  /**
4506
4735
  * The app login that vouched for the account at sign-in, for an `imported` account no member
4507
4736
  * import attached. Absent from Relay versions without it.
@@ -4511,40 +4740,40 @@ var managedMemberIdentitySchema = /* @__PURE__ */ (() => memberIdentitySchema.ex
4511
4740
  * True for a real X or Discord account an operator linked to a test member without OAuth
4512
4741
  * (`testMembers.linkAccount`). Absent from Relay versions without it.
4513
4742
  */
4514
- testLinked: z48.boolean().optional(),
4743
+ testLinked: z49.boolean().optional(),
4515
4744
  ...identitySourceFields,
4516
- status: z48.enum(["linked", "unlinked"]),
4517
- unlinkedAt: z48.number().int().nullable(),
4745
+ status: z49.enum(["linked", "unlinked"]),
4746
+ unlinkedAt: z49.number().int().nullable(),
4518
4747
  /** The operator or key that unlinked it. */
4519
- unlinkedBy: z48.string().nullable()
4748
+ unlinkedBy: z49.string().nullable()
4520
4749
  }))();
4521
- var memberIdentityChangeInputSchema = /* @__PURE__ */ (() => z48.object({
4750
+ var memberIdentityChangeInputSchema = /* @__PURE__ */ (() => z49.object({
4522
4751
  kind: appIdentityKindSchema,
4523
- subject: z48.string().min(1).max(256),
4524
- reason: z48.string().trim().min(1).max(500)
4752
+ subject: z49.string().min(1).max(256),
4753
+ reason: z49.string().trim().min(1).max(500)
4525
4754
  }).strict())();
4526
- var memberDetailSchema = /* @__PURE__ */ (() => z48.object({
4755
+ var memberDetailSchema = /* @__PURE__ */ (() => z49.object({
4527
4756
  snapshot: snapshotSchema,
4528
4757
  member: memberSchema,
4529
4758
  progress: memberProgressSchema,
4530
4759
  /** Up to 25 revoked completions with an unreversed point remainder, newest first. */
4531
- revocationShortfalls: z48.array(completionRevocationShortfallSchema).default([]),
4760
+ revocationShortfalls: z49.array(completionRevocationShortfallSchema).default([]),
4532
4761
  /** Up to 25 revoked completions, newest first. Relay older than restore leaves it out. */
4533
- revokedCompletions: z48.array(revokedCompletionSchema).optional(),
4762
+ revokedCompletions: z49.array(revokedCompletionSchema).optional(),
4534
4763
  /** Current and historical campaign enrollment state, including inactive enrollments. */
4535
- campaignEnrollments: z48.array(campaignEnrollmentSchema).default([]),
4536
- passes: z48.array(
4537
- z48.object({
4538
- provider: z48.string(),
4539
- event: z48.string(),
4540
- subject: z48.string(),
4764
+ campaignEnrollments: z49.array(campaignEnrollmentSchema).default([]),
4765
+ passes: z49.array(
4766
+ z49.object({
4767
+ provider: z49.string(),
4768
+ event: z49.string(),
4769
+ subject: z49.string(),
4541
4770
  attempt: identifier.nullable()
4542
4771
  })
4543
4772
  ).default([]),
4544
4773
  /** Linked and unlinked wallets. */
4545
- wallets: z48.array(managedWalletSchema),
4774
+ wallets: z49.array(managedWalletSchema),
4546
4775
  /** The member's 10 most recent recorded balance reads, newest first. */
4547
- balanceChecks: z48.array(balanceCheckSchema),
4776
+ balanceChecks: z49.array(balanceCheckSchema),
4548
4777
  /** The member's participant profile in this project. */
4549
4778
  profile: managedProfileSchema.nullable(),
4550
4779
  /**
@@ -4552,26 +4781,33 @@ var memberDetailSchema = /* @__PURE__ */ (() => z48.object({
4552
4781
  * member ID: their selected X and Discord accounts and their `app:<name>` identities in this
4553
4782
  * project, including app identities an operator unlinked, by kind.
4554
4783
  */
4555
- identities: z48.array(managedMemberIdentitySchema),
4784
+ identities: z49.array(managedMemberIdentitySchema),
4556
4785
  /**
4557
4786
  * The creator accounts the member linked (a YouTube channel), whose content managed tracker
4558
4787
  * sources attribute to them. Absent from Relay versions without creator accounts.
4559
4788
  */
4560
- creatorAccounts: z48.array(managedCreatorAccountSchema).optional(),
4789
+ creatorAccounts: z49.array(managedCreatorAccountSchema).optional(),
4561
4790
  /**
4562
4791
  * Who invited the member, when they accepted, and the member import that recorded it, or null
4563
4792
  * when nobody invited them. Absent from Relay versions before imported referrals.
4564
4793
  */
4565
- referral: z48.object({
4794
+ referral: z49.object({
4566
4795
  inviter: identifier,
4567
- acceptedAt: z48.number().int().nonnegative(),
4568
- suspended: z48.boolean(),
4796
+ acceptedAt: z49.number().int().nonnegative(),
4797
+ suspended: z49.boolean(),
4569
4798
  import: identifier.nullable()
4570
- }).nullable().optional()
4799
+ }).nullable().optional(),
4800
+ /**
4801
+ * The member's latest ban, in force or lifted, with its rollback; null when they were never
4802
+ * banned. Absent from Relay versions without member bans.
4803
+ *
4804
+ * @experimental A minor release can change member bans.
4805
+ */
4806
+ ban: memberBanSchema.nullable().optional()
4571
4807
  }))();
4572
- var managedMemberProgressSchema = /* @__PURE__ */ (() => z48.object({
4808
+ var managedMemberProgressSchema = /* @__PURE__ */ (() => z49.object({
4573
4809
  member: identifier,
4574
- quests: z48.array(
4810
+ quests: z49.array(
4575
4811
  memberProgressSchema.shape.quests.element.extend({
4576
4812
  /** The streak as `members.get` reports it, without the list of qualifying days. */
4577
4813
  streak: streakProgressSchema.omit({ days: true }).nullable().optional()
@@ -4582,10 +4818,10 @@ var managedMemberProgressSchema = /* @__PURE__ */ (() => z48.object({
4582
4818
  /** Each point balance the member has, by balance ID. */
4583
4819
  balances: snapshotSchema.shape.balances
4584
4820
  }))();
4585
- var memberLookupSchema = /* @__PURE__ */ (() => z48.union([
4586
- z48.object({
4587
- provider: z48.string().min(1).max(200),
4588
- subject: z48.string().min(1).max(2048)
4821
+ var memberLookupSchema = /* @__PURE__ */ (() => z49.union([
4822
+ z49.object({
4823
+ provider: z49.string().min(1).max(200),
4824
+ subject: z49.string().min(1).max(2048)
4589
4825
  }).strict(),
4590
4826
  identityReferenceSchema.transform(
4591
4827
  (reference) => reference.kind === "wallet" ? { provider: reference.chain, subject: reference.address } : { provider: reference.kind, subject: reference.subject }
@@ -4596,50 +4832,50 @@ var memberLookupSchema = /* @__PURE__ */ (() => z48.union([
4596
4832
  subject: address
4597
4833
  }))
4598
4834
  ]))();
4599
- var booleanQuery = /* @__PURE__ */ (() => z48.union([
4600
- z48.boolean(),
4601
- z48.enum(["true", "false"]).transform((v) => v === "true")
4835
+ var booleanQuery = /* @__PURE__ */ (() => z49.union([
4836
+ z49.boolean(),
4837
+ z49.enum(["true", "false"]).transform((v) => v === "true")
4602
4838
  ]))();
4603
- var managedMemberQuerySchema = /* @__PURE__ */ (() => z48.strictObject({
4604
- q: z48.string().max(200).optional(),
4839
+ var managedMemberQuerySchema = /* @__PURE__ */ (() => z49.strictObject({
4840
+ q: z49.string().max(200).optional(),
4605
4841
  needsReview: booleanQuery.optional(),
4606
- limit: z48.coerce.number().int().min(1).max(100).optional(),
4842
+ limit: z49.coerce.number().int().min(1).max(100).optional(),
4607
4843
  cursor: pageCursorSchema.optional()
4608
4844
  }))();
4609
- var managedMemberPageSchema = /* @__PURE__ */ (() => z48.object({
4610
- items: z48.array(memberSchema),
4611
- total: z48.number().int().nonnegative(),
4612
- nextCursor: z48.string().nullable()
4845
+ var managedMemberPageSchema = /* @__PURE__ */ (() => z49.object({
4846
+ items: z49.array(memberSchema),
4847
+ total: z49.number().int().nonnegative(),
4848
+ nextCursor: z49.string().nullable()
4613
4849
  }))();
4614
4850
 
4615
4851
  // src/server/member-erasure.ts
4616
- import * as z49 from "zod";
4852
+ import * as z50 from "zod";
4617
4853
  var memberErasureInputSchema = evidenceRedactionInputSchema;
4618
- var memberErasureDeletedSchema = /* @__PURE__ */ (() => z49.object({
4854
+ var memberErasureDeletedSchema = /* @__PURE__ */ (() => z50.object({
4619
4855
  /** The profile: display name and avatar. 0 or 1. */
4620
- profiles: z49.number().int().nonnegative(),
4856
+ profiles: z50.number().int().nonnegative(),
4621
4857
  /** Sign-in identities. */
4622
- identities: z49.number().int().nonnegative(),
4858
+ identities: z50.number().int().nonnegative(),
4623
4859
  /** Linked X, Discord, Telegram, Google, Apple and email accounts. */
4624
- accounts: z49.number().int().nonnegative(),
4860
+ accounts: z50.number().int().nonnegative(),
4625
4861
  /** `app:<name>` identities your app's integration or an import gave. */
4626
- appIdentities: z49.number().int().nonnegative(),
4862
+ appIdentities: z50.number().int().nonnegative(),
4627
4863
  /** Linked wallet addresses. */
4628
- wallets: z49.number().int().nonnegative(),
4864
+ wallets: z50.number().int().nonnegative(),
4629
4865
  /** Signed-in sessions, ended at once. */
4630
- sessions: z49.number().int().nonnegative(),
4866
+ sessions: z50.number().int().nonnegative(),
4631
4867
  /** Marketing consent records. */
4632
- consents: z49.number().int().nonnegative(),
4868
+ consents: z50.number().int().nonnegative(),
4633
4869
  /** Leaderboard aliases. */
4634
- aliases: z49.number().int().nonnegative(),
4870
+ aliases: z50.number().int().nonnegative(),
4635
4871
  /** Attempts whose submitted evidence (photo, text, URL or answers) was deleted. */
4636
- evidence: z49.number().int().nonnegative(),
4872
+ evidence: z50.number().int().nonnegative(),
4637
4873
  /** Tracker records the member's accounts authored, whose stored content was forgotten. */
4638
- records: z49.number().int().nonnegative()
4874
+ records: z50.number().int().nonnegative()
4639
4875
  }))();
4640
- var memberErasureResultSchema = /* @__PURE__ */ (() => z49.object({
4876
+ var memberErasureResultSchema = /* @__PURE__ */ (() => z50.object({
4641
4877
  member: identifier,
4642
- erasedAt: z49.number().int(),
4878
+ erasedAt: z50.number().int(),
4643
4879
  deleted: memberErasureDeletedSchema
4644
4880
  }))();
4645
4881
 
@@ -4667,6 +4903,54 @@ function members({ get, post }) {
4667
4903
  memberErasureInputSchema.parse(withActionId(input)),
4668
4904
  call
4669
4905
  ),
4906
+ /**
4907
+ * Bans a member in this project and environment, live or test, with a reason; requires
4908
+ * `review` permission, and `publish` too when `rollback` reverses referral payouts or point
4909
+ * awards. While banned, the member's attempts, completions and invitations are refused with 403
4910
+ * `member-banned`, tracker records they author are skipped and never decided again,
4911
+ * leaderboards and settlements leave them out, and referral payouts to and from them stop.
4912
+ * Attempts waiting for a decision are rejected. `rollback` takes back what it names, a step at
4913
+ * a time in the background: `ban.rollback.status` is `running` until it is `finished`. Banning
4914
+ * a banned member adds the rollback it names to the ban in force, or answers the ban unchanged.
4915
+ * Replaying the action ID returns the first result. Preview it first with `previewBan`.
4916
+ *
4917
+ * @experimental A minor release can change member bans.
4918
+ */
4919
+ ban: (member, input, call) => post(
4920
+ `/members/${identifier.parse(member)}/ban`,
4921
+ memberBanSchema,
4922
+ memberBanInputSchema.parse(withActionId(input)),
4923
+ call
4924
+ ),
4925
+ /**
4926
+ * The dry run of `ban`: what banning the member with `rollback` would take back now, per
4927
+ * point ledger, and what it would correct for their inviter; requires `review` permission.
4928
+ * Changes nothing.
4929
+ *
4930
+ * @experimental A minor release can change member bans.
4931
+ */
4932
+ previewBan: (member, input = {}, call) => post(
4933
+ `/members/${identifier.parse(member)}/ban/preview`,
4934
+ memberBanPreviewSchema,
4935
+ memberBanPreviewInputSchema.parse(input),
4936
+ call
4937
+ ),
4938
+ /**
4939
+ * Lifts the member's ban, with a reason; requires `review` permission. The member takes part
4940
+ * again from now on: what they did while banned stays skipped. A rollback still running stops.
4941
+ * `restoreCompletions` restores the completions the rollback revoked, in the background
4942
+ * (`ban.unban.restore`); reversed referral payouts and point awards stay reversed. Refused
4943
+ * with 409 `member-not-banned` when no ban is in force. Replaying the action ID returns the
4944
+ * first result.
4945
+ *
4946
+ * @experimental A minor release can change member bans.
4947
+ */
4948
+ unban: (member, input, call) => post(
4949
+ `/members/${identifier.parse(member)}/unban`,
4950
+ memberBanSchema,
4951
+ memberUnbanInputSchema.parse(withActionId(input)),
4952
+ call
4953
+ ),
4670
4954
  /**
4671
4955
  * Every identity a member proved, by kind: wallets, X, Discord and Telegram accounts, and
4672
4956
  * `app:<name>` identities, each with its link, sign-in and the actions an operator can take.
@@ -4814,7 +5098,7 @@ function members({ get, post }) {
4814
5098
  /** Who each member is: up to 100 distinct IDs; unknown IDs come back without accounts. */
4815
5099
  people: (members2, call) => get(
4816
5100
  `/people${queryString({ ids: members2.join(",") })}`,
4817
- z50.array(personSchema),
5101
+ z51.array(personSchema),
4818
5102
  call
4819
5103
  ),
4820
5104
  /**
@@ -4824,7 +5108,7 @@ function members({ get, post }) {
4824
5108
  */
4825
5109
  oauthAccounts: (member, call) => get(
4826
5110
  `/members/${encodeURIComponent(member)}/oauth-accounts`,
4827
- z50.array(managedOAuthAccountSchema),
5111
+ z51.array(managedOAuthAccountSchema),
4828
5112
  call
4829
5113
  ),
4830
5114
  /**
@@ -4836,7 +5120,7 @@ function members({ get, post }) {
4836
5120
  */
4837
5121
  unlinkOAuthAccount: (member, input, call) => post(
4838
5122
  `/members/${encodeURIComponent(member)}/oauth-accounts/unlink`,
4839
- z50.array(managedOAuthAccountSchema),
5123
+ z51.array(managedOAuthAccountSchema),
4840
5124
  expectedRevision(memberOAuthUnlinkInputSchema).parse(input),
4841
5125
  call
4842
5126
  ),
@@ -4919,7 +5203,7 @@ function members({ get, post }) {
4919
5203
  */
4920
5204
  unlinkWallet: (member, input, call) => post(
4921
5205
  `/members/${encodeURIComponent(member)}/wallets/unlink`,
4922
- z50.array(managedWalletSchema),
5206
+ z51.array(managedWalletSchema),
4923
5207
  memberWalletUnlinkInputSchema.parse(input),
4924
5208
  call
4925
5209
  ),
@@ -4932,7 +5216,7 @@ function members({ get, post }) {
4932
5216
  */
4933
5217
  unlinkIdentity: (member, input, call) => post(
4934
5218
  `/members/${encodeURIComponent(member)}/identities/unlink`,
4935
- z50.array(managedMemberIdentitySchema),
5219
+ z51.array(managedMemberIdentitySchema),
4936
5220
  memberIdentityChangeInputSchema.parse(input),
4937
5221
  call
4938
5222
  ),
@@ -4943,7 +5227,7 @@ function members({ get, post }) {
4943
5227
  */
4944
5228
  relinkIdentity: (member, input, call) => post(
4945
5229
  `/members/${encodeURIComponent(member)}/identities/relink`,
4946
- z50.array(managedMemberIdentitySchema),
5230
+ z51.array(managedMemberIdentitySchema),
4947
5231
  memberIdentityChangeInputSchema.parse(input),
4948
5232
  call
4949
5233
  ),
@@ -4955,7 +5239,7 @@ function members({ get, post }) {
4955
5239
  */
4956
5240
  setWalletSignIn: (member, input, call) => post(
4957
5241
  `/members/${encodeURIComponent(member)}/wallets/sign-in`,
4958
- z50.array(managedWalletSchema),
5242
+ z51.array(managedWalletSchema),
4959
5243
  memberWalletSignInInputSchema.parse(input),
4960
5244
  call
4961
5245
  )
@@ -4963,584 +5247,6 @@ function members({ get, post }) {
4963
5247
  }
4964
5248
  var membersApi = (http) => members(http);
4965
5249
 
4966
- // src/server/hosting.ts
4967
- import * as z52 from "zod";
4968
-
4969
- // src/server/starters.ts
4970
- import * as z51 from "zod";
4971
- var starters = [
4972
- {
4973
- id: "campaign",
4974
- title: "Campaign tour",
4975
- summary: "A neutral quest app with a guided tour of every quest kind. The blank canvas for anything."
4976
- },
4977
- {
4978
- id: "classic",
4979
- title: "Classic questboard",
4980
- summary: "The familiar Domino portal: quests in a grid grouped by section, a claim page, points, and a leaderboard."
4981
- },
4982
- {
4983
- id: "waitlist",
4984
- title: "Waitlist",
4985
- summary: "Collect sign-ups before launch. People move up the line by inviting friends."
4986
- },
4987
- {
4988
- id: "referral",
4989
- title: "Referral program",
4990
- summary: "Give every member an invite link and reward them when friends join and qualify."
4991
- },
4992
- {
4993
- id: "discord",
4994
- title: "Discord activation",
4995
- summary: "Turn new Discord members into regulars with quests for joining, introducing themselves, and taking part, rewarded with roles."
4996
- },
4997
- {
4998
- id: "loyalty",
4999
- title: "Loyalty program",
5000
- summary: "Members earn points in a campaign, qualify into a members' group, and spend points on offers, some for members only."
5001
- },
5002
- {
5003
- id: "api",
5004
- title: "API",
5005
- summary: "A headless Worker with typed routes and interactive API docs, for plugging Domino into your own product."
5006
- }
5007
- ];
5008
- var offeredStarterSchema = /* @__PURE__ */ (() => z51.string().refine((id) => starters.some((starter) => starter.id === id), {
5009
- error: `Unknown starter. Choose one of: ${starters.map((starter) => starter.id).join(", ")}.`
5010
- }))();
5011
- var starterTemplates = [
5012
- {
5013
- id: "campaign",
5014
- title: "Campaign tour",
5015
- summary: "A neutral quest app with a guided tour of every quest kind. The blank canvas for anything."
5016
- },
5017
- {
5018
- id: "classic",
5019
- title: "Classic questboard",
5020
- summary: "The familiar Domino portal: quests in a grid grouped by section, a claim page, points, and a leaderboard."
5021
- },
5022
- {
5023
- id: "waitlist",
5024
- title: "Waitlist",
5025
- summary: "Collect sign-ups before launch. People move up the line by inviting friends."
5026
- },
5027
- {
5028
- id: "referral",
5029
- title: "Referral program",
5030
- summary: "Give every member an invite link and reward them when friends join and qualify."
5031
- },
5032
- {
5033
- id: "discord",
5034
- title: "Discord activation",
5035
- summary: "Turn new Discord members into regulars with quests for joining, introducing themselves, and taking part, rewarded with roles."
5036
- },
5037
- {
5038
- id: "api",
5039
- title: "API",
5040
- summary: "A headless Worker with typed routes and interactive API docs, for plugging Domino into your own product."
5041
- }
5042
- ];
5043
- var starterIdSchema = /* @__PURE__ */ (() => z51.enum(
5044
- starterTemplates.map((template) => template.id)
5045
- ))();
5046
-
5047
- // src/server/hosting.ts
5048
- var outputPathSchema = /* @__PURE__ */ (() => z52.string().min(1).max(512).refine(
5049
- (path) => path.split("/").every(
5050
- (part) => /^[\w-][\w.-]*$/.test(part) && part !== "node_modules"
5051
- ),
5052
- "Expected a relative build output path without hidden segments"
5053
- ))();
5054
- var appRoutingSchema = /* @__PURE__ */ (() => z52.enum(["legacy", "transparent"]).default("legacy"))();
5055
- var APP_SECRET_LIMIT = 50;
5056
- var APP_KV_LIMIT = 5;
5057
- var APP_SQL_LIMIT = 5;
5058
- var APP_MIGRATION_LIMIT = 100;
5059
- var APP_MIGRATION_FILE_BYTES = 9e4;
5060
- var APP_MIGRATION_TOTAL_BYTES = 1e6;
5061
- var appSecretNameSchema = /* @__PURE__ */ (() => z52.string().regex(
5062
- /^[A-Z_][A-Z0-9_]{0,63}$/,
5063
- "Use 1-64 uppercase letters, digits, and underscores, not starting with a digit"
5064
- ).refine(
5065
- (name) => !name.startsWith("DOMINO_") && name !== "ASSETS",
5066
- "DOMINO_ names and ASSETS are reserved for Domino's own bindings"
5067
- ))();
5068
- var appSecretValueSchema = /* @__PURE__ */ (() => z52.string().min(1).refine(
5069
- (value) => new TextEncoder().encode(value).length <= 5120,
5070
- "Secret values can be at most 5 KiB"
5071
- ))();
5072
- var appSecretInputSchema = /* @__PURE__ */ (() => z52.object({ value: appSecretValueSchema }).strict())();
5073
- var appSecretSchema = /* @__PURE__ */ (() => z52.object({
5074
- name: appSecretNameSchema,
5075
- updatedAt: z52.number(),
5076
- updatedBy: z52.string()
5077
- }))();
5078
- var appSecretDeclarationSchema = /* @__PURE__ */ (() => z52.object({
5079
- description: z52.string().trim().min(1).max(500),
5080
- required: z52.boolean().default(true)
5081
- }).strict())();
5082
- var appSecretDeclarationsSchema = /* @__PURE__ */ (() => z52.record(appSecretNameSchema, appSecretDeclarationSchema).refine(
5083
- (secrets3) => Object.keys(secrets3).length <= limits.apps.secrets,
5084
- `Declare at most ${limits.apps.secrets} app secrets`
5085
- ))();
5086
- var appSecretListSchema = /* @__PURE__ */ (() => z52.object({
5087
- secrets: z52.array(appSecretSchema),
5088
- declared: z52.array(appSecretDeclarationSchema.extend({ name: appSecretNameSchema })).default([])
5089
- }))();
5090
- var hostedAppSecretsSchema = /* @__PURE__ */ (() => z52.object({ secrets: z52.record(appSecretNameSchema, appSecretValueSchema) }).strict())();
5091
- var storageDescription = /* @__PURE__ */ (() => z52.object({
5092
- description: z52.string().trim().min(1).max(500)
5093
- }).strict())();
5094
- var appStorageSchema = /* @__PURE__ */ (() => z52.object({
5095
- kv: z52.record(appSecretNameSchema, storageDescription).refine(
5096
- (stores) => Object.keys(stores).length <= limits.apps.kvStores,
5097
- `Declare at most ${limits.apps.kvStores} KV stores`
5098
- ).default({}),
5099
- sql: z52.record(
5100
- appSecretNameSchema,
5101
- storageDescription.extend({
5102
- migrations: outputPathSchema.optional()
5103
- }).strict()
5104
- ).refine(
5105
- (stores) => Object.keys(stores).length <= limits.apps.sqlStores,
5106
- `Declare at most ${limits.apps.sqlStores} SQL stores`
5107
- ).default({})
5108
- }).strict())();
5109
- var appStorageKindSchema = /* @__PURE__ */ (() => z52.enum(["kv", "sql"]))();
5110
- var appStorageListSchema = /* @__PURE__ */ (() => z52.object({
5111
- stores: z52.array(
5112
- z52.object({
5113
- kind: z52.string(),
5114
- name: appSecretNameSchema,
5115
- createdAt: z52.number().nullable(),
5116
- declared: z52.boolean(),
5117
- description: z52.string().optional()
5118
- })
5119
- )
5120
- }))();
5121
- var APP_STORAGE_ROW_LIMIT = 50;
5122
- var APP_STORAGE_PREVIEW_CHARACTERS = 2e3;
5123
- var appStorageCellSchema = /* @__PURE__ */ (() => z52.union([
5124
- z52.string(),
5125
- z52.number(),
5126
- z52.null(),
5127
- z52.object({ text: z52.string(), truncated: z52.literal(true) }),
5128
- z52.object({ blob: z52.number().int().min(0) })
5129
- ]))();
5130
- var appStorageTablesSchema = /* @__PURE__ */ (() => z52.object({
5131
- tables: z52.array(
5132
- /** `kind` is SQLite's: `table` or `view`. */
5133
- z52.object({ name: z52.string(), kind: z52.string() })
5134
- )
5135
- }))();
5136
- var appStorageRowsSchema = /* @__PURE__ */ (() => z52.object({
5137
- table: z52.string(),
5138
- columns: z52.array(z52.string()),
5139
- rows: z52.array(z52.array(appStorageCellSchema)),
5140
- /** How many rows come before this page in storage order. */
5141
- offset: z52.number().int().min(0),
5142
- total: z52.number().int().min(0),
5143
- /** Pass back as `cursor` for the next page; null on the last one. */
5144
- nextCursor: pageCursorSchema.nullable().default(null)
5145
- }))();
5146
- var appStorageKeysSchema = /* @__PURE__ */ (() => z52.object({
5147
- keys: z52.array(
5148
- z52.object({ name: z52.string(), expiration: z52.number().nullable() })
5149
- ),
5150
- /** Pass back as `cursor` for the next page; null on the last one. */
5151
- nextCursor: pageCursorSchema.nullable().default(null),
5152
- /** @deprecated Use `nextCursor`. Removed in 2.0.0. */
5153
- cursor: z52.string().nullable()
5154
- }))();
5155
- var appStorageValueSchema = /* @__PURE__ */ (() => z52.object({
5156
- key: z52.string(),
5157
- size: z52.number().int().min(0),
5158
- /** Null when the value is not UTF-8 text. */
5159
- text: z52.string().nullable(),
5160
- truncated: z52.boolean()
5161
- }))();
5162
- var APP_STORAGE_CELL_CHARACTERS = 1e5;
5163
- var appStorageCellPageSchema = /* @__PURE__ */ (() => z52.object({
5164
- table: z52.string(),
5165
- column: z52.string(),
5166
- /** The row's position in storage order: a rows page's `offset` plus its index on that page. */
5167
- row: z52.number().int().min(0),
5168
- /** SQLite's storage class. */
5169
- type: z52.enum(["text", "integer", "real", "blob", "null"]),
5170
- /** Characters of text, or of a number's text form; bytes of a BLOB; null for NULL. */
5171
- length: z52.number().int().min(0).nullable(),
5172
- /** How many characters come before this page. */
5173
- offset: z52.number().int().min(0),
5174
- /** Up to 100,000 characters from `offset`. Null for a BLOB, whose bytes are never read, and NULL. */
5175
- text: z52.string().nullable(),
5176
- /** Pass back as `cursor` for the next page; null on the last one. */
5177
- nextCursor: pageCursorSchema.nullable().default(null)
5178
- }))();
5179
- var appMigrationNameSchema = /* @__PURE__ */ (() => z52.string().max(255).regex(/^[\w-][\w.-]*\.sql$/))();
5180
- function compareAppMigrations(a, b) {
5181
- const left = Number.parseInt(a.split("_")[0], 10);
5182
- const right = Number.parseInt(b.split("_")[0], 10);
5183
- if (left !== right) {
5184
- if (Number.isFinite(left) && Number.isFinite(right)) {
5185
- return left - right;
5186
- }
5187
- if (Number.isFinite(left)) {
5188
- return -1;
5189
- }
5190
- if (Number.isFinite(right)) {
5191
- return 1;
5192
- }
5193
- }
5194
- return a < b ? -1 : a > b ? 1 : 0;
5195
- }
5196
- var appMigrationsSchema = /* @__PURE__ */ (() => z52.record(
5197
- appSecretNameSchema,
5198
- z52.array(
5199
- z52.object({
5200
- name: appMigrationNameSchema,
5201
- sql: z52.string().min(1).refine(
5202
- (sql) => new TextEncoder().encode(sql).length <= limits.apps.migrationFileBytes,
5203
- `A migration file must not exceed ${limits.apps.migrationFileBytes} bytes`
5204
- )
5205
- }).strict()
5206
- ).max(limits.apps.migrations).refine(
5207
- (files) => new Set(files.map((file) => file.name)).size === files.length,
5208
- "Duplicate migration filenames"
5209
- )
5210
- ).refine(
5211
- (stores) => Object.values(stores).flat().reduce(
5212
- (total, file) => total + new TextEncoder().encode(file.sql).length,
5213
- 0
5214
- ) <= limits.apps.migrationTotalBytes,
5215
- `Migrations must not exceed ${limits.apps.migrationTotalBytes} bytes in total`
5216
- ))();
5217
- var appScripts = /* @__PURE__ */ (() => ({
5218
- routing: appRoutingSchema,
5219
- devScript: z52.string().regex(/^[\w:-]+$/),
5220
- checkScript: z52.string().regex(/^[\w:-]+$/),
5221
- buildScript: z52.string().regex(/^[\w:-]+$/)
5222
- }))();
5223
- var workerSettings = /* @__PURE__ */ (() => ({
5224
- runWorkerFirst: z52.boolean().default(false),
5225
- main: outputPathSchema.refine(
5226
- (path) => /\.m?js$/.test(path),
5227
- "Expected a compiled JavaScript entry"
5228
- ),
5229
- compatibilityDate: z52.string().regex(/^\d{4}-\d{2}-\d{2}$/),
5230
- compatibilityFlags: z52.array(z52.string().min(1)).max(50).default([]),
5231
- vars: z52.record(
5232
- z52.string().regex(/^[A-Za-z_][A-Za-z0-9_]*$/).refine((name) => name !== "ASSETS"),
5233
- z52.string()
5234
- ).default({}),
5235
- secrets: appSecretDeclarationsSchema.default({}),
5236
- storage: appStorageSchema.optional(),
5237
- schedules: appSchedulesSchema.optional()
5238
- }))();
5239
- var distinctBindings = (worker, ctx) => {
5240
- const owners = /* @__PURE__ */ new Map();
5241
- const sources = [
5242
- ["vars", "an app var", Object.keys(worker.vars)],
5243
- ["secrets", "a declared secret", Object.keys(worker.secrets)],
5244
- ["storage", "a KV store", Object.keys(worker.storage?.kv ?? {})],
5245
- ["storage", "a SQL store", Object.keys(worker.storage?.sql ?? {})]
5246
- ];
5247
- for (const [path, owner, names] of sources) {
5248
- for (const name of names) {
5249
- const first = owners.get(name);
5250
- if (first) {
5251
- ctx.addIssue({
5252
- code: "custom",
5253
- message: `Binding name ${name} is used by both ${first} and ${owner}`,
5254
- path: [path]
5255
- });
5256
- } else {
5257
- owners.set(name, owner);
5258
- }
5259
- }
5260
- }
5261
- };
5262
- var hostedAppSchema = /* @__PURE__ */ (() => z52.discriminatedUnion("kind", [
5263
- z52.object({
5264
- kind: z52.literal("static"),
5265
- directory: outputPathSchema,
5266
- ...appScripts
5267
- }).strict(),
5268
- z52.object({
5269
- kind: z52.literal("worker"),
5270
- directory: outputPathSchema,
5271
- assetsDirectory: outputPathSchema.optional(),
5272
- ...appScripts,
5273
- ...workerSettings
5274
- }).strict().superRefine(distinctBindings)
5275
- ]))();
5276
- var repositorySchema = /* @__PURE__ */ (() => z52.object({
5277
- id: z52.string().uuid(),
5278
- organization: identifier,
5279
- project: identifier,
5280
- remote: z52.string().url(),
5281
- defaultBranch: z52.string(),
5282
- status: z52.enum(["provisioning", "ready"])
5283
- }))();
5284
- var repositoryCreateSchema = /* @__PURE__ */ (() => z52.object({
5285
- /** Omitted: the starter chosen at project setup, else `campaign`. */
5286
- starter: offeredStarterSchema.optional()
5287
- }).strict())();
5288
- var createRepositorySchema = /* @__PURE__ */ (() => z52.object({
5289
- /** Omitted: the starter chosen at project setup, else `campaign`. */
5290
- starter: starterIdSchema.optional()
5291
- }).strict())();
5292
- var deviceStartSchema = /* @__PURE__ */ (() => z52.object({
5293
- challenge: z52.string().regex(/^[a-f0-9]{64}$/)
5294
- }).strict())();
5295
- var deviceRedeemSchema = /* @__PURE__ */ (() => z52.object({
5296
- id: z52.string().uuid(),
5297
- verifier: z52.string().min(43).max(128)
5298
- }).strict())();
5299
- var deviceApproveSchema = /* @__PURE__ */ (() => z52.object({
5300
- id: z52.string().uuid(),
5301
- code: z52.string().regex(/^[A-F0-9]{4}-[A-F0-9]{4}$/)
5302
- }).strict())();
5303
- var commitSchema = /* @__PURE__ */ (() => z52.string().regex(/^[a-f0-9]{40}$/))();
5304
- var stageRequestSchema = /* @__PURE__ */ (() => z52.object({
5305
- commit: commitSchema,
5306
- requestId: z52.string().uuid()
5307
- }).strict())();
5308
- var buildIdentitySchema = /* @__PURE__ */ (() => z52.object({
5309
- routing: appRoutingSchema,
5310
- slug: z52.string().min(1).max(35).regex(/^[a-z0-9]+(?:-[a-z0-9]+)*$/).optional(),
5311
- runtime: z52.enum(["simulation", "hosted-test"]).default("simulation"),
5312
- id: z52.string().uuid(),
5313
- repository: z52.string().uuid(),
5314
- organization: identifier,
5315
- project: identifier,
5316
- commit: commitSchema,
5317
- createdAt: z52.number(),
5318
- actor: z52.string(),
5319
- commitMessage: z52.string().max(500).optional()
5320
- }))();
5321
- var buildPhaseSchema = /* @__PURE__ */ (() => z52.enum([
5322
- "queued",
5323
- "source",
5324
- "install",
5325
- "check",
5326
- "build",
5327
- "deploy",
5328
- "ready",
5329
- "failed"
5330
- ]))();
5331
- var buildStatusSchema = /* @__PURE__ */ (() => z52.object({
5332
- phase: buildPhaseSchema,
5333
- failedPhase: buildPhaseSchema.optional(),
5334
- updatedAt: z52.number(),
5335
- message: z52.string()
5336
- }))();
5337
- var hostedBuildSchema = /* @__PURE__ */ (() => buildIdentitySchema.extend({
5338
- ...buildStatusSchema.shape,
5339
- finished: z52.boolean(),
5340
- current: z52.boolean(),
5341
- stagingUrl: z52.string().url(),
5342
- /**
5343
- * The test deployment the build published from its quest artifacts when it activated, readable
5344
- * with `GET /deployments/{id}`; null until it activates. A build whose bundle declares no
5345
- * resources publishes none, so its ID is not found. Only `GET /builds/{id}` includes it.
5346
- */
5347
- deployment: z52.string().nullable().optional()
5348
- }))();
5349
- var liveAppSchema = /* @__PURE__ */ (() => z52.object({
5350
- url: z52.string().url().nullable(),
5351
- state: z52.enum(["none", "deploying", "live", "failed"]),
5352
- /** The build the address serves, or null before the first one goes live. */
5353
- build: z52.string().uuid().nullable(),
5354
- /** The build the last approved promotion asked for, while it differs from `build`. */
5355
- requested: z52.string().uuid().nullable(),
5356
- failure: z52.string().nullable()
5357
- }))();
5358
- var customDomainStateSchema = /* @__PURE__ */ (() => z52.enum([
5359
- "awaiting-dns",
5360
- "provisioning",
5361
- "active",
5362
- "attention",
5363
- "suspended"
5364
- ]))();
5365
- var customDomainRecordSchema = /* @__PURE__ */ (() => z52.object({
5366
- type: z52.enum(["CNAME", "TXT"]),
5367
- name: z52.string(),
5368
- value: z52.string(),
5369
- /** The values public DNS returned: empty when it had none, null before Domino looked. */
5370
- found: z52.array(z52.string()).nullable(),
5371
- matches: z52.boolean()
5372
- }))();
5373
- var domainTimeMs = /* @__PURE__ */ (() => z52.number().int().nonnegative().nullish())();
5374
- var customDomainSchema = /* @__PURE__ */ (() => z52.object({
5375
- id: z52.string().uuid(),
5376
- hostname: z52.string(),
5377
- url: z52.string().url(),
5378
- state: customDomainStateSchema,
5379
- /** What to fix, in plain words, while the domain needs attention or is suspended. */
5380
- issue: z52.object({ code: z52.string(), message: z52.string() }).nullable(),
5381
- records: z52.array(customDomainRecordSchema),
5382
- /** Cloudflare's statuses and errors in its own words, once the domain is proven. */
5383
- cloudflare: z52.object({
5384
- hostnameStatus: z52.string(),
5385
- certificateStatus: z52.string().nullable(),
5386
- validationErrors: z52.array(z52.string()),
5387
- verificationErrors: z52.array(z52.string()),
5388
- certificateExpiresAt: z52.string().nullable(),
5389
- certificateExpiresAtMs: domainTimeMs
5390
- }).nullable(),
5391
- checkedAt: z52.string().nullable(),
5392
- checkedAtMs: domainTimeMs,
5393
- nextCheckAt: z52.string().nullable(),
5394
- nextCheckAtMs: domainTimeMs,
5395
- createdAt: z52.string(),
5396
- createdAtMs: z52.number().int().nonnegative().optional()
5397
- }))();
5398
- var customDomainListSchema = /* @__PURE__ */ (() => z52.object({
5399
- domains: z52.array(customDomainSchema)
5400
- }))();
5401
- var customDomainInputSchema = /* @__PURE__ */ (() => z52.object({ hostname: z52.string().min(1).max(300) }).strict())();
5402
- var stagingAccessModeSchema = /* @__PURE__ */ (() => z52.enum(["console", "password"]))();
5403
- var stagingAccessSchema = /* @__PURE__ */ (() => z52.object({ mode: stagingAccessModeSchema }))();
5404
- var stagingAccessInputSchema = /* @__PURE__ */ (() => z52.discriminatedUnion("mode", [
5405
- z52.object({ mode: z52.literal("console") }).strict(),
5406
- z52.object({
5407
- mode: z52.literal("password"),
5408
- password: z52.string().min(8).max(128)
5409
- }).strict()
5410
- ]))();
5411
- var stagingOrigin = "https://staging.invalid";
5412
- var stagingPathSchema = /* @__PURE__ */ (() => z52.string().max(2048).refine((path) => {
5413
- if (!path.startsWith("/") || path.startsWith("//") || path.includes("\\") || // oxlint-disable-next-line no-control-regex
5414
- /[\u0000-\u001f\u007f]/.test(path)) {
5415
- return false;
5416
- }
5417
- try {
5418
- return new URL(path, stagingOrigin).origin === stagingOrigin;
5419
- } catch {
5420
- return false;
5421
- }
5422
- }, "Expected a path on the staging host"))();
5423
- var stagingLinkSchema = /* @__PURE__ */ (() => z52.object({
5424
- url: z52.string().url(),
5425
- expiresAt: z52.number()
5426
- }))();
5427
- var buildSnapshotSchema = /* @__PURE__ */ (() => z52.object({
5428
- builds: z52.array(hostedBuildSchema),
5429
- current: hostedBuildSchema.nullable(),
5430
- selected: hostedBuildSchema.nullable(),
5431
- logs: z52.string()
5432
- }))();
5433
- var assetPathSchema = /* @__PURE__ */ (() => z52.string().max(512).refine(
5434
- (path) => path.startsWith("/") && // oxlint-disable-next-line no-control-regex -- Asset paths must reject control characters.
5435
- !/[\\\u0000-\u001f?#%]/.test(path) && path.slice(1).split("/").every((part) => part.length > 0 && !part.startsWith(".")),
5436
- "Expected a public asset path without hidden segments"
5437
- ))();
5438
- var base64Schema = /* @__PURE__ */ (() => z52.string().regex(/^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/))();
5439
- var stagedDeploymentLimits = {
5440
- /** Bytes of JSON, uncompressed. */
5441
- size: 64e6,
5442
- /** Bytes of the Brotli-compressed object. */
5443
- compressedSize: 1e7
5444
- };
5445
- var stagedDeploymentSchema = /* @__PURE__ */ (() => z52.object({
5446
- encoding: z52.literal("br"),
5447
- sha256: z52.string().regex(/^[0-9a-f]{64}$/),
5448
- compressedSize: z52.number().int().positive().max(limits.stagedDeployment.compressedSize),
5449
- size: z52.number().int().positive().max(limits.stagedDeployment.size)
5450
- }).strict())();
5451
- var stagedDeploymentContentSchema = /* @__PURE__ */ (() => stagedDeploymentSchema.extend({
5452
- content: z52.string().max(Math.ceil(limits.stagedDeployment.compressedSize / 3) * 4)
5453
- }).strict())();
5454
- var stagedDeploymentKey = (build, sha256) => `builds/${build}/deployment/${sha256}.br`;
5455
- var artifactFields = /* @__PURE__ */ (() => ({
5456
- routing: appRoutingSchema,
5457
- worker: z52.object({
5458
- ...workerSettings,
5459
- migrations: appMigrationsSchema.optional(),
5460
- modules: z52.array(
5461
- z52.object({
5462
- path: outputPathSchema.refine((path) => path !== "metadata"),
5463
- type: z52.enum([
5464
- "application/javascript+module",
5465
- "application/wasm",
5466
- "text/plain",
5467
- "application/octet-stream"
5468
- ]),
5469
- content: base64Schema.max(14e6)
5470
- }).strict()
5471
- ).min(1).max(500)
5472
- }).strict().superRefine(distinctBindings).optional(),
5473
- assets: z52.array(
5474
- z52.object({
5475
- path: assetPathSchema,
5476
- content: base64Schema.max(14e6),
5477
- size: z52.number().int().min(0).max(1e7)
5478
- }).strict()
5479
- ).max(500)
5480
- }))();
5481
- var inlineCode = () => z52.unknown().optional().transform((value) => value);
5482
- var buildArtifactsSchema = /* @__PURE__ */ (() => z52.discriminatedUnion("format", [
5483
- z52.object({
5484
- format: z52.literal(1),
5485
- ...artifactFields,
5486
- quests: inlineCode(),
5487
- catalog: inlineCode()
5488
- }).strict(),
5489
- z52.object({
5490
- format: z52.literal(2),
5491
- ...artifactFields,
5492
- deployment: stagedDeploymentSchema,
5493
- images: z52.array(imageAssetArtifactSchema).max(10)
5494
- }).strict()
5495
- ]).superRefine((value, ctx) => {
5496
- if (value.worker) {
5497
- const modules = value.worker.modules;
5498
- for (const name of Object.keys(value.worker.migrations ?? {})) {
5499
- if (!value.worker.storage?.sql[name]?.migrations) {
5500
- ctx.addIssue({
5501
- code: "custom",
5502
- message: `Migrations for undeclared SQL store ${name}`
5503
- });
5504
- }
5505
- }
5506
- if (new Set(modules.map((m) => m.path)).size !== modules.length) {
5507
- ctx.addIssue({
5508
- code: "custom",
5509
- message: "Duplicate Worker module paths"
5510
- });
5511
- }
5512
- if (!modules.some(
5513
- (m) => m.path === value.worker?.main && m.type === "application/javascript+module"
5514
- )) {
5515
- ctx.addIssue({
5516
- code: "custom",
5517
- message: "Worker entry module is missing"
5518
- });
5519
- }
5520
- if (modules.reduce(
5521
- (sum, m) => sum + m.content.length * 3 / 4 - (m.content.endsWith("==") ? 2 : m.content.endsWith("=") ? 1 : 0),
5522
- 0
5523
- ) > 1e7) {
5524
- ctx.addIssue({
5525
- code: "custom",
5526
- message: "Worker modules exceed 10 MB"
5527
- });
5528
- }
5529
- }
5530
- if (new Set(value.assets.map((a) => a.path)).size !== value.assets.length) {
5531
- ctx.addIssue({ code: "custom", message: "Duplicate asset paths" });
5532
- }
5533
- if (!value.worker && !value.assets.some((a) => a.path === "/index.html")) {
5534
- ctx.addIssue({
5535
- code: "custom",
5536
- message: "Build must include index.html"
5537
- });
5538
- }
5539
- if (value.assets.reduce((sum, a) => sum + a.size, 0) > 1e7) {
5540
- ctx.addIssue({ code: "custom", message: "Staging assets exceed 10 MB" });
5541
- }
5542
- }))();
5543
-
5544
5250
  // src/server/client/live-app.ts
5545
5251
  function liveApp({ get }) {
5546
5252
  return {
@@ -5583,73 +5289,73 @@ function domains({ get, post, raw }) {
5583
5289
  var domainsApi = (http) => domains(http);
5584
5290
 
5585
5291
  // src/server/connections.ts
5586
- import { z as z53 } from "zod";
5587
- var connectionPluginSchema = /* @__PURE__ */ (() => z53.string().max(40).regex(/^[a-z][a-z0-9]*(-[a-z0-9]+)*$/, "Use a kebab-case plugin ID"))();
5292
+ import { z as z52 } from "zod";
5293
+ var connectionPluginSchema = /* @__PURE__ */ (() => z52.string().max(40).regex(/^[a-z][a-z0-9]*(-[a-z0-9]+)*$/, "Use a kebab-case plugin ID"))();
5588
5294
  var knownConnectionStatuses = [
5589
5295
  "disconnected",
5590
5296
  "ready",
5591
5297
  "attention"
5592
5298
  ];
5593
- var connectionStatusSchema = /* @__PURE__ */ (() => z53.string().min(1))();
5299
+ var connectionStatusSchema = /* @__PURE__ */ (() => z52.string().min(1))();
5594
5300
  var knownConnectionReconnectReasons = ["revoked", "expired"];
5595
- var reconnectReasonSchema = /* @__PURE__ */ (() => z53.string().min(1))();
5596
- var connectionSecretFieldSchema = /* @__PURE__ */ (() => z53.object({
5597
- name: z53.string(),
5598
- label: z53.string(),
5599
- help: z53.string().nullable(),
5600
- set: z53.boolean()
5601
- }))();
5602
- var connectionSchema = /* @__PURE__ */ (() => z53.object({
5603
- plugin: z53.string(),
5604
- name: z53.string(),
5605
- environment: z53.enum(["test", "live"]),
5301
+ var reconnectReasonSchema = /* @__PURE__ */ (() => z52.string().min(1))();
5302
+ var connectionSecretFieldSchema = /* @__PURE__ */ (() => z52.object({
5303
+ name: z52.string(),
5304
+ label: z52.string(),
5305
+ help: z52.string().nullable(),
5306
+ set: z52.boolean()
5307
+ }))();
5308
+ var connectionSchema = /* @__PURE__ */ (() => z52.object({
5309
+ plugin: z52.string(),
5310
+ name: z52.string(),
5311
+ environment: z52.enum(["test", "live"]),
5606
5312
  status: connectionStatusSchema,
5607
- issue: z53.string().nullable(),
5608
- config: z53.record(z53.string(), z53.unknown()).nullable(),
5609
- configSchema: z53.record(z53.string(), z53.unknown()),
5610
- secrets: z53.array(connectionSecretFieldSchema),
5611
- revision: z53.number().int().nonnegative(),
5612
- connectedAt: z53.number().nullable(),
5613
- connectedBy: z53.string().nullable(),
5614
- updatedAt: z53.number().nullable(),
5313
+ issue: z52.string().nullable(),
5314
+ config: z52.record(z52.string(), z52.unknown()).nullable(),
5315
+ configSchema: z52.record(z52.string(), z52.unknown()),
5316
+ secrets: z52.array(connectionSecretFieldSchema),
5317
+ revision: z52.number().int().nonnegative(),
5318
+ connectedAt: z52.number().nullable(),
5319
+ connectedBy: z52.string().nullable(),
5320
+ updatedAt: z52.number().nullable(),
5615
5321
  // A Relay from before OAuth connections answers none.
5616
5322
  reconnectReason: reconnectReasonSchema.nullable().default(null),
5617
5323
  // A Relay from before dry runs answers none.
5618
- dryRun: z53.boolean().default(false)
5324
+ dryRun: z52.boolean().default(false)
5619
5325
  }))();
5620
- var connectionPageSchema = /* @__PURE__ */ (() => z53.object({
5621
- items: z53.array(connectionSchema),
5622
- nextCursor: z53.string().nullable()
5326
+ var connectionPageSchema = /* @__PURE__ */ (() => z52.object({
5327
+ items: z52.array(connectionSchema),
5328
+ nextCursor: z52.string().nullable()
5623
5329
  }))();
5624
- var actionId = /* @__PURE__ */ (() => z53.string().uuid().default(() => crypto.randomUUID()))();
5625
- var config = /* @__PURE__ */ (() => z53.record(z53.string(), z53.unknown()))();
5626
- var secrets = /* @__PURE__ */ (() => z53.record(z53.string().max(64), z53.string().min(1).max(8192)))();
5627
- var connectionConnectInputSchema = /* @__PURE__ */ (() => z53.strictObject({
5330
+ var actionId = /* @__PURE__ */ (() => z52.string().uuid().default(() => crypto.randomUUID()))();
5331
+ var config = /* @__PURE__ */ (() => z52.record(z52.string(), z52.unknown()))();
5332
+ var secrets = /* @__PURE__ */ (() => z52.record(z52.string().max(64), z52.string().min(1).max(8192)))();
5333
+ var connectionConnectInputSchema = /* @__PURE__ */ (() => z52.strictObject({
5628
5334
  config,
5629
5335
  secrets: secrets.default({}),
5630
- dryRun: z53.boolean().optional(),
5336
+ dryRun: z52.boolean().optional(),
5631
5337
  actionId
5632
5338
  }))();
5633
- var connectionAuthorizeInputSchema = /* @__PURE__ */ (() => z53.strictObject({
5339
+ var connectionAuthorizeInputSchema = /* @__PURE__ */ (() => z52.strictObject({
5634
5340
  config: config.default({}),
5635
- returnTo: z53.string().url().max(2048).optional(),
5341
+ returnTo: z52.string().url().max(2048).optional(),
5636
5342
  actionId
5637
5343
  }))();
5638
- var connectionAuthorizationSchema = /* @__PURE__ */ (() => z53.object({
5639
- authorizationUrl: z53.string().url(),
5640
- expiresAt: z53.number()
5344
+ var connectionAuthorizationSchema = /* @__PURE__ */ (() => z52.object({
5345
+ authorizationUrl: z52.string().url(),
5346
+ expiresAt: z52.number()
5641
5347
  }))();
5642
- var connectionUpdateInputSchema = /* @__PURE__ */ (() => z53.strictObject({
5348
+ var connectionUpdateInputSchema = /* @__PURE__ */ (() => z52.strictObject({
5643
5349
  config: config.optional(),
5644
5350
  secrets: secrets.optional(),
5645
- expectedRevision: z53.number().int().nonnegative().optional(),
5351
+ expectedRevision: z52.number().int().nonnegative().optional(),
5646
5352
  actionId
5647
5353
  }).refine(
5648
5354
  (input) => input.config !== void 0 || Object.keys(input.secrets ?? {}).length,
5649
5355
  { message: "Change the config, a secret, or both" }
5650
5356
  ))();
5651
- var connectionDisconnectInputSchema = /* @__PURE__ */ (() => z53.strictObject({
5652
- expectedRevision: z53.number().int().nonnegative().optional(),
5357
+ var connectionDisconnectInputSchema = /* @__PURE__ */ (() => z52.strictObject({
5358
+ expectedRevision: z52.number().int().nonnegative().optional(),
5653
5359
  actionId
5654
5360
  }))();
5655
5361
  var knownPluginSlots = [
@@ -5660,29 +5366,29 @@ var knownPluginSlots = [
5660
5366
  "evaluator-capability",
5661
5367
  "identity"
5662
5368
  ];
5663
- var pluginSlotSchema = /* @__PURE__ */ (() => z53.string().min(1))();
5664
- var pluginSchema = /* @__PURE__ */ (() => z53.object({
5665
- id: z53.string(),
5666
- name: z53.string(),
5667
- slots: z53.array(pluginSlotSchema),
5668
- configSchema: z53.record(z53.string(), z53.unknown()),
5669
- secrets: z53.array(
5670
- z53.object({
5671
- name: z53.string(),
5672
- label: z53.string(),
5673
- help: z53.string().nullable()
5369
+ var pluginSlotSchema = /* @__PURE__ */ (() => z52.string().min(1))();
5370
+ var pluginSchema = /* @__PURE__ */ (() => z52.object({
5371
+ id: z52.string(),
5372
+ name: z52.string(),
5373
+ slots: z52.array(pluginSlotSchema),
5374
+ configSchema: z52.record(z52.string(), z52.unknown()),
5375
+ secrets: z52.array(
5376
+ z52.object({
5377
+ name: z52.string(),
5378
+ label: z52.string(),
5379
+ help: z52.string().nullable()
5674
5380
  })
5675
5381
  ),
5676
- events: z53.array(z53.string()),
5382
+ events: z52.array(z52.string()),
5677
5383
  // A Relay from before OAuth connections answers none.
5678
- oauth: z53.object({ configured: z53.boolean(), scopes: z53.array(z53.string()) }).nullable().default(null),
5679
- console: z53.object({ component: z53.string() }).nullable().default(null),
5384
+ oauth: z52.object({ configured: z52.boolean(), scopes: z52.array(z52.string()) }).nullable().default(null),
5385
+ console: z52.object({ component: z52.string() }).nullable().default(null),
5680
5386
  // A Relay from before dry runs answers none.
5681
- dryRun: z53.boolean().default(false)
5387
+ dryRun: z52.boolean().default(false)
5682
5388
  }))();
5683
- var pluginPageSchema = /* @__PURE__ */ (() => z53.object({
5684
- items: z53.array(pluginSchema),
5685
- nextCursor: z53.string().nullable()
5389
+ var pluginPageSchema = /* @__PURE__ */ (() => z52.object({
5390
+ items: z52.array(pluginSchema),
5391
+ nextCursor: z52.string().nullable()
5686
5392
  }))();
5687
5393
  var knownConnectionSyncKinds = ["connect", "resync"];
5688
5394
  var knownConnectionSyncStatuses = [
@@ -5690,53 +5396,53 @@ var knownConnectionSyncStatuses = [
5690
5396
  "finished",
5691
5397
  "failed"
5692
5398
  ];
5693
- var connectionSyncSchema = /* @__PURE__ */ (() => z53.object({
5694
- kind: z53.string().min(1),
5695
- status: z53.string().min(1),
5696
- done: z53.number().int().nonnegative(),
5697
- total: z53.number().int().nonnegative().nullable(),
5698
- startedAt: z53.number(),
5699
- finishedAt: z53.number().nullable()
5700
- }))();
5701
- var connectionActivitySchema = /* @__PURE__ */ (() => z53.object({
5702
- plugin: z53.string(),
5703
- environment: z53.enum(["test", "live"]),
5399
+ var connectionSyncSchema = /* @__PURE__ */ (() => z52.object({
5400
+ kind: z52.string().min(1),
5401
+ status: z52.string().min(1),
5402
+ done: z52.number().int().nonnegative(),
5403
+ total: z52.number().int().nonnegative().nullable(),
5404
+ startedAt: z52.number(),
5405
+ finishedAt: z52.number().nullable()
5406
+ }))();
5407
+ var connectionActivitySchema = /* @__PURE__ */ (() => z52.object({
5408
+ plugin: z52.string(),
5409
+ environment: z52.enum(["test", "live"]),
5704
5410
  status: connectionStatusSchema,
5705
- dryRun: z53.boolean(),
5706
- lastSyncAt: z53.number().nullable(),
5707
- failingSince: z53.number().nullable(),
5708
- consecutiveFailures: z53.number().int().nonnegative(),
5709
- members: z53.object({
5710
- synced: z53.number().int().nonnegative(),
5711
- skipped: z53.array(
5712
- z53.object({
5713
- reason: z53.string(),
5714
- members: z53.number().int().nonnegative()
5411
+ dryRun: z52.boolean(),
5412
+ lastSyncAt: z52.number().nullable(),
5413
+ failingSince: z52.number().nullable(),
5414
+ consecutiveFailures: z52.number().int().nonnegative(),
5415
+ members: z52.object({
5416
+ synced: z52.number().int().nonnegative(),
5417
+ skipped: z52.array(
5418
+ z52.object({
5419
+ reason: z52.string(),
5420
+ members: z52.number().int().nonnegative()
5715
5421
  })
5716
5422
  )
5717
5423
  }),
5718
5424
  sync: connectionSyncSchema.nullable(),
5719
- errors: z53.array(
5720
- z53.object({ at: z53.number(), kind: z53.string(), message: z53.string() })
5425
+ errors: z52.array(
5426
+ z52.object({ at: z52.number(), kind: z52.string(), message: z52.string() })
5721
5427
  )
5722
5428
  }))();
5723
- var connectionDryRunRequestSchema = /* @__PURE__ */ (() => z53.object({
5724
- id: z53.string(),
5725
- at: z53.number(),
5726
- member: z53.string().nullable(),
5727
- method: z53.string(),
5728
- path: z53.string(),
5729
- body: z53.unknown()
5429
+ var connectionDryRunRequestSchema = /* @__PURE__ */ (() => z52.object({
5430
+ id: z52.string(),
5431
+ at: z52.number(),
5432
+ member: z52.string().nullable(),
5433
+ method: z52.string(),
5434
+ path: z52.string(),
5435
+ body: z52.unknown()
5730
5436
  }))();
5731
- var connectionDryRunPageSchema = /* @__PURE__ */ (() => z53.object({
5732
- items: z53.array(connectionDryRunRequestSchema),
5733
- nextCursor: z53.string().nullable()
5437
+ var connectionDryRunPageSchema = /* @__PURE__ */ (() => z52.object({
5438
+ items: z52.array(connectionDryRunRequestSchema),
5439
+ nextCursor: z52.string().nullable()
5734
5440
  }))();
5735
- var connectionDryRunQuerySchema = /* @__PURE__ */ (() => z53.strictObject({
5736
- cursor: z53.string().min(1).max(40).optional(),
5737
- limit: z53.number().int().min(1).max(100).optional()
5441
+ var connectionDryRunQuerySchema = /* @__PURE__ */ (() => z52.strictObject({
5442
+ cursor: z52.string().min(1).max(40).optional(),
5443
+ limit: z52.number().int().min(1).max(100).optional()
5738
5444
  }))();
5739
- var connectionResyncInputSchema = /* @__PURE__ */ (() => z53.strictObject({ actionId }))();
5445
+ var connectionResyncInputSchema = /* @__PURE__ */ (() => z52.strictObject({ actionId }))();
5740
5446
 
5741
5447
  // src/server/client/connections.ts
5742
5448
  function connectionPath(plugin) {
@@ -5901,8 +5607,22 @@ function schedules({ request, get, post }) {
5901
5607
  var schedulesApi = (http) => schedules(http);
5902
5608
 
5903
5609
  // src/server/client/storage.ts
5904
- import * as z54 from "zod";
5905
- function storage({ get, raw }) {
5610
+ import * as z53 from "zod";
5611
+ function storage({ get, post, raw }) {
5612
+ function clear(kind, name, input, call) {
5613
+ const path = `/storage/${kind}/${appSecretNameSchema.parse(name)}/clear`;
5614
+ return kind === "sql" ? post(
5615
+ path,
5616
+ appStorageSqlClearResultSchema,
5617
+ appStorageSqlClearSchema.parse(input),
5618
+ call
5619
+ ) : post(
5620
+ path,
5621
+ appStorageKvClearResultSchema,
5622
+ appStorageKvClearSchema.parse(input),
5623
+ call
5624
+ );
5625
+ }
5906
5626
  return {
5907
5627
  list: (call) => get("/storage", appStorageListSchema, call),
5908
5628
  /** A SQL store's tables and views, without SQLite's and D1's own. */
@@ -5931,7 +5651,7 @@ function storage({ get, raw }) {
5931
5651
  `/storage/sql/${appSecretNameSchema.parse(name)}/cell?${new URLSearchParams(
5932
5652
  {
5933
5653
  table,
5934
- row: String(z54.number().int().min(0).parse(options.row)),
5654
+ row: String(z53.number().int().min(0).parse(options.row)),
5935
5655
  column: options.column,
5936
5656
  ...options.cursor === void 0 ? {} : { cursor: pageCursorSchema.parse(options.cursor) }
5937
5657
  }
@@ -5955,6 +5675,7 @@ function storage({ get, raw }) {
5955
5675
  appStorageValueSchema,
5956
5676
  call
5957
5677
  ),
5678
+ clear,
5958
5679
  /** Deletes a store no serving build declares, with all of its data. */
5959
5680
  delete: async (kind, name, call) => {
5960
5681
  await raw(`/storage/${kind}/${appSecretNameSchema.parse(name)}`, {
@@ -6042,24 +5763,24 @@ function campaigns({ post }) {
6042
5763
  var campaignsApi = (http) => campaigns(http);
6043
5764
 
6044
5765
  // src/server/client/quests.ts
6045
- import * as z56 from "zod";
5766
+ import * as z55 from "zod";
6046
5767
 
6047
5768
  // src/server/quests.ts
6048
- import * as z55 from "zod";
6049
- var questLifecycleInputSchema = /* @__PURE__ */ (() => z55.object({
5769
+ import * as z54 from "zod";
5770
+ var questLifecycleInputSchema = /* @__PURE__ */ (() => z54.object({
6050
5771
  quest: identifier,
6051
5772
  expectedRelease: identifier.optional(),
6052
- archived: z55.boolean(),
6053
- reason: z55.string().trim().min(1).max(500),
5773
+ archived: z54.boolean(),
5774
+ reason: z54.string().trim().min(1).max(500),
6054
5775
  actionId: identifier
6055
5776
  }).strict())();
6056
- var questLifecycleSchema = /* @__PURE__ */ (() => z55.object({
5777
+ var questLifecycleSchema = /* @__PURE__ */ (() => z54.object({
6057
5778
  quest: identifier,
6058
5779
  key: identifier.nullable(),
6059
- title: z55.string(),
5780
+ title: z54.string(),
6060
5781
  release: identifier,
6061
- lifecycle: z55.enum(["active", "paused", "archived"]),
6062
- changed: z55.boolean()
5782
+ lifecycle: z54.enum(["active", "paused", "archived"]),
5783
+ changed: z54.boolean()
6063
5784
  }))();
6064
5785
 
6065
5786
  // src/server/client/quests.ts
@@ -6084,7 +5805,7 @@ function quests(http) {
6084
5805
  * Each quest's current release, the most recently published first, archived quests
6085
5806
  * included; requires `read` permission.
6086
5807
  */
6087
- list: (call) => get("/quests/list", z56.array(publishedReleaseSchema), call),
5808
+ list: (call) => get("/quests/list", z55.array(publishedReleaseSchema), call),
6088
5809
  /** Pending and exhausted asynchronous balance checks. Requires read. */
6089
5810
  automaticScheduling: (query = {}, call) => get(
6090
5811
  `/quests/automatic-scheduling${queryString(automaticSchedulingQuerySchema.parse(query))}`,
@@ -6129,7 +5850,7 @@ function quests(http) {
6129
5850
  */
6130
5851
  submissions: (member, call) => get(
6131
5852
  `/members/${encodeURIComponent(member)}/quest-submissions`,
6132
- z56.object({ items: z56.array(questSubmissionSchema) }),
5853
+ z55.object({ items: z55.array(questSubmissionSchema) }),
6133
5854
  call
6134
5855
  ),
6135
5856
  /**
@@ -6214,15 +5935,15 @@ function x({ get }) {
6214
5935
  var xApi = (http) => x(http);
6215
5936
 
6216
5937
  // src/server/client/discord.ts
6217
- import * as z57 from "zod";
5938
+ import * as z56 from "zod";
6218
5939
  function discord({ get, post }) {
6219
5940
  return {
6220
5941
  /** The project's Discord connection: its server and status; requires `read` permission. */
6221
5942
  connection: async (call) => {
6222
- const list = await get("/integrations", z57.array(z57.unknown()), call);
5943
+ const list = await get("/integrations", z56.array(z56.unknown()), call);
6223
5944
  return projectIntegrationSchema.parse(
6224
5945
  list.find(
6225
- (item) => z57.object({ provider: z57.literal("discord") }).safeParse(item).success
5946
+ (item) => z56.object({ provider: z56.literal("discord") }).safeParse(item).success
6226
5947
  )
6227
5948
  );
6228
5949
  },
@@ -6285,31 +6006,31 @@ function telegram({ request, get, post }) {
6285
6006
  var telegramApi = (http) => telegram(http);
6286
6007
 
6287
6008
  // src/server/projects.ts
6288
- import * as z58 from "zod";
6289
- var projectSetupSchema = /* @__PURE__ */ (() => z58.object({
6290
- mode: z58.enum(["new", "existing"]),
6291
- brief: z58.string().trim().min(1).max(4e3)
6009
+ import * as z57 from "zod";
6010
+ var projectSetupSchema = /* @__PURE__ */ (() => z57.object({
6011
+ mode: z57.enum(["new", "existing"]),
6012
+ brief: z57.string().trim().min(1).max(4e3)
6292
6013
  }).strict())();
6293
- var projectSchema = /* @__PURE__ */ (() => z58.object({
6014
+ var projectSchema = /* @__PURE__ */ (() => z57.object({
6294
6015
  /**
6295
6016
  * Names the project's hosted addresses. The server gives a new project, and accepts in a
6296
6017
  * slug change, only slugs of at least 3 characters that Domino does not reserve. This schema
6297
6018
  * checks only the format, so it parses every slug that exists.
6298
6019
  */
6299
- slug: z58.string().min(1).max(35).regex(/^[a-z0-9]+(?:-[a-z0-9]+)*$/),
6300
- createdBy: z58.string().nullable().optional(),
6020
+ slug: z57.string().min(1).max(35).regex(/^[a-z0-9]+(?:-[a-z0-9]+)*$/),
6021
+ createdBy: z57.string().nullable().optional(),
6301
6022
  creator: operatorUserSchema.nullable().optional(),
6302
6023
  /** A response, so fields a newer server adds to the setup are dropped, not rejected. */
6303
- setup: z58.object(projectSetupSchema.shape).optional(),
6024
+ setup: z57.object(projectSetupSchema.shape).optional(),
6304
6025
  /** The starter chosen at setup. A plain string, so later starters still parse. */
6305
- starter: z58.string().optional(),
6306
- id: z58.string().min(1),
6026
+ starter: z57.string().optional(),
6027
+ id: z57.string().min(1),
6307
6028
  organization: identifier,
6308
6029
  project: identifier,
6309
- name: z58.string(),
6310
- subtitle: z58.string(),
6311
- initials: z58.string(),
6312
- color: z58.string(),
6030
+ name: z57.string(),
6031
+ subtitle: z57.string(),
6032
+ initials: z57.string(),
6033
+ color: z57.string(),
6313
6034
  permissions: permissionListSchema,
6314
6035
  /**
6315
6036
  * Every permission the caller holds here, `dashboards` included, which `permissions` leaves
@@ -6317,8 +6038,8 @@ var projectSchema = /* @__PURE__ */ (() => z58.object({
6317
6038
  *
6318
6039
  * @experimental
6319
6040
  */
6320
- projectPermissions: z58.array(z58.string()).optional(),
6321
- environments: z58.array(environmentSchema)
6041
+ projectPermissions: z57.array(z57.string()).optional(),
6042
+ environments: z57.array(environmentSchema)
6322
6043
  }).refine(
6323
6044
  (project) => !project.creator || project.creator.id === project.createdBy,
6324
6045
  {
@@ -6326,103 +6047,103 @@ var projectSchema = /* @__PURE__ */ (() => z58.object({
6326
6047
  path: ["creator"]
6327
6048
  }
6328
6049
  ))();
6329
- var projectCreateInputSchema = /* @__PURE__ */ (() => z58.object({
6050
+ var projectCreateInputSchema = /* @__PURE__ */ (() => z57.object({
6330
6051
  actionId: identifier,
6331
- name: z58.string().trim().min(1).max(80),
6052
+ name: z57.string().trim().min(1).max(80),
6332
6053
  setup: projectSetupSchema.optional(),
6333
6054
  /** The starter a new hosted app begins from, with `setup.mode` "new". */
6334
6055
  starter: offeredStarterSchema.optional()
6335
6056
  }).strict())();
6336
- var projectInputSchema = /* @__PURE__ */ (() => z58.object({
6057
+ var projectInputSchema = /* @__PURE__ */ (() => z57.object({
6337
6058
  actionId: identifier,
6338
- name: z58.string().trim().min(1).max(80),
6059
+ name: z57.string().trim().min(1).max(80),
6339
6060
  setup: projectSetupSchema.optional(),
6340
6061
  /** The starter a new hosted app begins from, with `setup.mode` "new". */
6341
6062
  starter: starterIdSchema.optional()
6342
6063
  }).strict())();
6343
- var projectUpdateInputSchema = /* @__PURE__ */ (() => z58.union([
6344
- z58.object({ name: projectCreateInputSchema.shape.name }).strict(),
6345
- z58.object({
6064
+ var projectUpdateInputSchema = /* @__PURE__ */ (() => z57.union([
6065
+ z57.object({ name: projectCreateInputSchema.shape.name }).strict(),
6066
+ z57.object({
6346
6067
  slug: projectSchema.shape.slug,
6347
- confirm: z58.string().min(1).max(80)
6068
+ confirm: z57.string().min(1).max(80)
6348
6069
  }).strict()
6349
6070
  ]))();
6350
- var projectDeletionInputSchema = /* @__PURE__ */ (() => z58.object({ confirm: z58.string().min(1).max(80) }).strict())();
6351
- var projectDeletionSchema = /* @__PURE__ */ (() => z58.object({
6071
+ var projectDeletionInputSchema = /* @__PURE__ */ (() => z57.object({ confirm: z57.string().min(1).max(80) }).strict())();
6072
+ var projectDeletionSchema = /* @__PURE__ */ (() => z57.object({
6352
6073
  project: identifier,
6353
- purgeAfter: z58.number().int()
6074
+ purgeAfter: z57.number().int()
6354
6075
  }))();
6355
- var projectTransferInputSchema = /* @__PURE__ */ (() => z58.object({ organization: identifier, confirm: z58.string().min(1).max(80) }).strict())();
6356
- var projectTransferSchema = /* @__PURE__ */ (() => z58.object({
6076
+ var projectTransferInputSchema = /* @__PURE__ */ (() => z57.object({ organization: identifier, confirm: z57.string().min(1).max(80) }).strict())();
6077
+ var projectTransferSchema = /* @__PURE__ */ (() => z57.object({
6357
6078
  organization: identifier,
6358
6079
  project: identifier
6359
6080
  }))();
6360
- var accessSchema = /* @__PURE__ */ (() => z58.object({
6361
- actor: z58.string(),
6362
- organization: z58.string(),
6363
- admin: z58.boolean(),
6364
- local: z58.boolean(),
6365
- projects: z58.array(projectSchema),
6081
+ var accessSchema = /* @__PURE__ */ (() => z57.object({
6082
+ actor: z57.string(),
6083
+ organization: z57.string(),
6084
+ admin: z57.boolean(),
6085
+ local: z57.boolean(),
6086
+ projects: z57.array(projectSchema),
6366
6087
  /** The credential's own kind and scope, when it is an organization automation key. */
6367
- credential: z58.object({
6368
- kind: z58.string(),
6369
- id: z58.string(),
6370
- name: z58.string(),
6088
+ credential: z57.object({
6089
+ kind: z57.string(),
6090
+ id: z57.string(),
6091
+ name: z57.string(),
6371
6092
  /** The projects it reaches; null for every project of the organization. */
6372
- projects: z58.array(z58.string()).nullable(),
6373
- createProjects: z58.boolean(),
6093
+ projects: z57.array(z57.string()).nullable(),
6094
+ createProjects: z57.boolean(),
6374
6095
  permissions: permissionListSchema
6375
6096
  }).optional()
6376
6097
  }))();
6377
- var readinessSchema = /* @__PURE__ */ (() => z58.object({
6378
- checks: z58.array(
6379
- z58.object({
6380
- id: z58.string(),
6381
- status: z58.enum(["ready", "blocked"]),
6382
- title: z58.string(),
6383
- detail: z58.string()
6098
+ var readinessSchema = /* @__PURE__ */ (() => z57.object({
6099
+ checks: z57.array(
6100
+ z57.object({
6101
+ id: z57.string(),
6102
+ status: z57.enum(["ready", "blocked"]),
6103
+ title: z57.string(),
6104
+ detail: z57.string()
6384
6105
  })
6385
6106
  )
6386
6107
  }))();
6387
6108
 
6388
6109
  // src/server/page.ts
6389
- import * as z59 from "zod";
6390
- var querySchema = /* @__PURE__ */ (() => z59.object({
6391
- q: z59.string().max(200).default(""),
6392
- filter: z59.string().max(50).default("all"),
6393
- offset: z59.coerce.number().int().min(0).max(1e6).default(0),
6394
- limit: z59.coerce.number().int().min(1).max(100).default(25)
6110
+ import * as z58 from "zod";
6111
+ var querySchema = /* @__PURE__ */ (() => z58.object({
6112
+ q: z58.string().max(200).default(""),
6113
+ filter: z58.string().max(50).default("all"),
6114
+ offset: z58.coerce.number().int().min(0).max(1e6).default(0),
6115
+ limit: z58.coerce.number().int().min(1).max(100).default(25)
6395
6116
  }))();
6396
- var pageSchema = /* @__PURE__ */ (() => z59.object({
6117
+ var pageSchema = /* @__PURE__ */ (() => z58.object({
6397
6118
  snapshot: snapshotSchema,
6398
- members: z59.array(memberSchema),
6399
- people: z59.array(personSchema).default([]),
6119
+ members: z58.array(memberSchema),
6120
+ people: z58.array(personSchema).default([]),
6400
6121
  metrics: metricsSchema,
6401
- total: z59.number(),
6402
- offset: z59.number(),
6403
- limit: z59.number(),
6404
- inventory: z59.array(inventorySchema),
6405
- operations: z59.array(operationSchema).default([]),
6406
- audit: z59.array(auditRecordSchema).default([]),
6407
- questCounts: z59.record(z59.string(), z59.number())
6122
+ total: z58.number(),
6123
+ offset: z58.number(),
6124
+ limit: z58.number(),
6125
+ inventory: z58.array(inventorySchema),
6126
+ operations: z58.array(operationSchema).default([]),
6127
+ audit: z58.array(auditRecordSchema).default([]),
6128
+ questCounts: z58.record(z58.string(), z58.number())
6408
6129
  }))();
6409
6130
 
6410
6131
  // src/server/participant-sign-in.ts
6411
- import * as z60 from "zod";
6412
- var telegramBotIdSchema = /* @__PURE__ */ (() => z60.string().regex(/^[1-9][0-9]{0,19}$/, "Enter the bot's numeric ID, such as 123456789"))();
6413
- var participantSignInTelegramSchema = /* @__PURE__ */ (() => z60.object({
6414
- login: z60.boolean(),
6132
+ import * as z59 from "zod";
6133
+ var telegramBotIdSchema = /* @__PURE__ */ (() => z59.string().regex(/^[1-9][0-9]{0,19}$/, "Enter the bot's numeric ID, such as 123456789"))();
6134
+ var participantSignInTelegramSchema = /* @__PURE__ */ (() => z59.object({
6135
+ login: z59.boolean(),
6415
6136
  miniAppBotId: telegramBotIdSchema.nullable()
6416
6137
  }))();
6417
- var participantSignInSchema = /* @__PURE__ */ (() => z60.object({
6418
- providers: z60.array(
6419
- z60.object({ provider: authProviderSchema, configured: z60.boolean() })
6138
+ var participantSignInSchema = /* @__PURE__ */ (() => z59.object({
6139
+ providers: z59.array(
6140
+ z59.object({ provider: authProviderSchema, configured: z59.boolean() })
6420
6141
  ),
6421
- email: z60.boolean(),
6142
+ email: z59.boolean(),
6422
6143
  /** Wallet families: `"solana"`, `"eip155"`, `"cosmos"`. */
6423
6144
  wallets: walletSignInNetworksSchema,
6424
6145
  /** Why participants cannot sign in to this project, or null. */
6425
- issue: z60.string().nullable(),
6146
+ issue: z59.string().nullable(),
6426
6147
  /**
6427
6148
  * Telegram, outside `providers` in SDK 1.x: whether Domino configured Telegram Login, and the
6428
6149
  * bot whose Mini App participants sign in from, or null when Mini App sign-in is off. Absent
@@ -6434,10 +6155,10 @@ var participantSignInSchema = /* @__PURE__ */ (() => z60.object({
6434
6155
  * members can link accounts that trackers like `youtube.shorts()` read. Absent from older Relay
6435
6156
  * versions.
6436
6157
  */
6437
- creatorAccounts: z60.array(
6438
- z60.object({
6158
+ creatorAccounts: z59.array(
6159
+ z59.object({
6439
6160
  provider: creatorAccountProviderSchema,
6440
- configured: z60.boolean()
6161
+ configured: z59.boolean()
6441
6162
  })
6442
6163
  ).optional(),
6443
6164
  /**
@@ -6445,49 +6166,49 @@ var participantSignInSchema = /* @__PURE__ */ (() => z60.object({
6445
6166
  * the open sibling of `providers`, which SDK 1.x keeps to `AuthProvider`. A newer Relay may list
6446
6167
  * providers this SDK does not know. Absent from older Relay versions.
6447
6168
  */
6448
- signInProviders: z60.array(signInProviderOptionSchema).optional(),
6449
- updatedAt: z60.number().nullable(),
6450
- updatedBy: z60.string().nullable()
6169
+ signInProviders: z59.array(signInProviderOptionSchema).optional(),
6170
+ updatedAt: z59.number().nullable(),
6171
+ updatedBy: z59.string().nullable()
6451
6172
  }))();
6452
- var participantSignInInputSchema = /* @__PURE__ */ (() => z60.object({
6173
+ var participantSignInInputSchema = /* @__PURE__ */ (() => z59.object({
6453
6174
  wallets: walletSignInNetworksSchema,
6454
- telegram: z60.object({ miniAppBotId: telegramBotIdSchema.nullable() }).strict().optional()
6175
+ telegram: z59.object({ miniAppBotId: telegramBotIdSchema.nullable() }).strict().optional()
6455
6176
  }).strict())();
6456
6177
 
6457
6178
  // src/server/development.ts
6458
- import * as z61 from "zod";
6459
- var developmentPreflightSchema = /* @__PURE__ */ (() => z61.object({
6460
- organization: z61.string(),
6461
- project: z61.string(),
6462
- environment: z61.enum(["test", "live"]),
6463
- identity: z61.object({
6464
- exchange: z61.literal("supported"),
6465
- activeIntegrations: z61.number().int().nonnegative()
6179
+ import * as z60 from "zod";
6180
+ var developmentPreflightSchema = /* @__PURE__ */ (() => z60.object({
6181
+ organization: z60.string(),
6182
+ project: z60.string(),
6183
+ environment: z60.enum(["test", "live"]),
6184
+ identity: z60.object({
6185
+ exchange: z60.literal("supported"),
6186
+ activeIntegrations: z60.number().int().nonnegative()
6466
6187
  }).optional(),
6467
- staging: z61.enum(["configured", "blocked"]),
6468
- development: z61.object({
6469
- status: z61.enum(["configured", "blocked"]),
6188
+ staging: z60.enum(["configured", "blocked"]),
6189
+ development: z60.object({
6190
+ status: z60.enum(["configured", "blocked"]),
6470
6191
  // How `domino dev` reaches the preview origin: a Cloudflare tunnel, or a direct route on a
6471
6192
  // local development stack. APIs that predate the field use tunnels.
6472
- transport: z61.enum(["tunnel", "direct"]).default("tunnel"),
6473
- missing: z61.array(z61.string()),
6474
- authentication: z61.array(z61.string())
6193
+ transport: z60.enum(["tunnel", "direct"]).default("tunnel"),
6194
+ missing: z60.array(z60.string()),
6195
+ authentication: z60.array(z60.string())
6475
6196
  }),
6476
- checks: z61.array(
6477
- z61.object({
6478
- id: z61.string(),
6479
- status: z61.enum(["ok", "error"]),
6480
- message: z61.string(),
6481
- missing: z61.array(z61.string()).optional(),
6482
- issues: z61.array(z61.string()).optional()
6197
+ checks: z60.array(
6198
+ z60.object({
6199
+ id: z60.string(),
6200
+ status: z60.enum(["ok", "error"]),
6201
+ message: z60.string(),
6202
+ missing: z60.array(z60.string()).optional(),
6203
+ issues: z60.array(z60.string()).optional()
6483
6204
  })
6484
6205
  )
6485
6206
  }))();
6486
6207
 
6487
6208
  // src/server/hosted.ts
6488
- import * as z62 from "zod";
6209
+ import * as z61 from "zod";
6489
6210
  var hostedKeyPermissions = ["read", "points", "ingest"];
6490
- var hostedKeyPermissionList = /* @__PURE__ */ (() => z62.array(z62.string()).transform(
6211
+ var hostedKeyPermissionList = /* @__PURE__ */ (() => z61.array(z61.string()).transform(
6491
6212
  (values) => values.filter(
6492
6213
  (value) => hostedKeyPermissions.includes(value)
6493
6214
  )
@@ -6499,17 +6220,17 @@ var hostedManagementBindings = [
6499
6220
  "DOMINO_PROJECT",
6500
6221
  "DOMINO_ENVIRONMENT"
6501
6222
  ];
6502
- var hostedKeySecretSchema = /* @__PURE__ */ (() => z62.string().regex(/^dhk_[A-Za-z0-9_-]{43}$/, "Expected a hosted app key"))();
6503
- var hostedKeySchema = /* @__PURE__ */ (() => z62.object({
6504
- id: z62.string().uuid(),
6223
+ var hostedKeySecretSchema = /* @__PURE__ */ (() => z61.string().regex(/^dhk_[A-Za-z0-9_-]{43}$/, "Expected a hosted app key"))();
6224
+ var hostedKeySchema = /* @__PURE__ */ (() => z61.object({
6225
+ id: z61.string().uuid(),
6505
6226
  token: hostedKeySecretSchema,
6506
6227
  organization: identifier,
6507
6228
  project: identifier,
6508
- environment: z62.enum(["test", "live"]),
6229
+ environment: z61.enum(["test", "live"]),
6509
6230
  permissions: hostedKeyPermissionList,
6510
- expiresAt: z62.number().nullable()
6231
+ expiresAt: z61.number().nullable()
6511
6232
  }).strict())();
6512
- var hostedDeploymentKeySchema = /* @__PURE__ */ (() => hostedKeySchema.extend({ apiUrl: z62.string().url() }).strict())();
6233
+ var hostedDeploymentKeySchema = /* @__PURE__ */ (() => hostedKeySchema.extend({ apiUrl: z61.string().url() }).strict())();
6513
6234
  function hostedManagementClient(env) {
6514
6235
  const missing = hostedManagementBindings.filter((name) => !env[name]);
6515
6236
  if (missing.length) {
@@ -6517,7 +6238,7 @@ function hostedManagementClient(env) {
6517
6238
  `Missing ${missing.join(", ")}. Domino sets these for hosted apps and domino dev; update the project's vite.config.ts to forward them in development.`
6518
6239
  );
6519
6240
  }
6520
- const environment = z62.enum(["test", "live"]).parse(env.DOMINO_ENVIRONMENT);
6241
+ const environment = z61.enum(["test", "live"]).parse(env.DOMINO_ENVIRONMENT);
6521
6242
  const token = env.DOMINO_MANAGEMENT_KEY;
6522
6243
  return createManagementClient({
6523
6244
  baseUrl: env.DOMINO_API_URL.replace(/\/+$/, ""),
@@ -6536,7 +6257,7 @@ function clientFailure(error) {
6536
6257
  return new ManagementError({
6537
6258
  kind: "client",
6538
6259
  code: ManagementErrorCode.InvalidInput,
6539
- message: error instanceof z63.ZodError ? `Invalid management request: ${z63.prettifyError(error)}` : error instanceof Error ? error.message : "Invalid management request",
6260
+ message: error instanceof z62.ZodError ? `Invalid management request: ${issueText(error.issues)}` : error instanceof Error ? error.message : "Invalid management request",
6540
6261
  cause: error
6541
6262
  });
6542
6263
  }
@@ -6580,8 +6301,8 @@ function managementClient(options) {
6580
6301
  }
6581
6302
  return exchange(
6582
6303
  path,
6583
- z63.object({
6584
- status: z63.number(),
6304
+ z62.object({
6305
+ status: z62.number(),
6585
6306
  operationId: identifier.optional(),
6586
6307
  result: schema
6587
6308
  }),
@@ -6949,6 +6670,7 @@ var managementResponseTables = /* @__PURE__ */ (() => responseTables({
6949
6670
  groupMemberSchema: () => groupMemberSchema,
6950
6671
  groupPageSchema: () => groupPageSchema,
6951
6672
  identityIntegrationSchema: () => identityIntegrationSchema,
6673
+ identityIntegrationAppSecretSchema: () => identityIntegrationAppSecretSchema,
6952
6674
  identityIntegrationSecretSchema: () => identityIntegrationSecretSchema,
6953
6675
  identityKindClaimSchema: () => identityKindClaimSchema,
6954
6676
  issuedTokenSchema: () => issuedTokenSchema,
@@ -6964,6 +6686,8 @@ var managementResponseTables = /* @__PURE__ */ (() => responseTables({
6964
6686
  managedAttemptSchema: () => managedAttemptSchema,
6965
6687
  evidenceRedactionResultSchema: () => evidenceRedactionResultSchema,
6966
6688
  memberErasureResultSchema: () => memberErasureResultSchema,
6689
+ memberBanSchema: () => memberBanSchema,
6690
+ memberBanPreviewSchema: () => memberBanPreviewSchema,
6967
6691
  evidenceRetentionResultSchema: () => evidenceRetentionResultSchema,
6968
6692
  managedEntitlementPageSchema: () => managedEntitlementPageSchema,
6969
6693
  managedEntitlementSchema: () => managedEntitlementSchema,
@@ -7136,9 +6860,13 @@ export {
7136
6860
  appStorageCellSchema,
7137
6861
  appStorageKeysSchema,
7138
6862
  appStorageKindSchema,
6863
+ appStorageKvClearResultSchema,
6864
+ appStorageKvClearSchema,
7139
6865
  appStorageListSchema,
7140
6866
  appStorageRowsSchema,
7141
6867
  appStorageSchema,
6868
+ appStorageSqlClearResultSchema,
6869
+ appStorageSqlClearSchema,
7142
6870
  appStorageTablesSchema,
7143
6871
  appStorageValueSchema,
7144
6872
  assetPathSchema,
@@ -7219,6 +6947,7 @@ export {
7219
6947
  evidenceRedactionResultSchema,
7220
6948
  evidenceRedactionSchema,
7221
6949
  evidenceRetentionResultSchema,
6950
+ evidenceRetentionSettingSchema,
7222
6951
  expectedRevision,
7223
6952
  grantRecordSchema,
7224
6953
  grantSchema,
@@ -7237,6 +6966,7 @@ export {
7237
6966
  hostedManagementBindings,
7238
6967
  hostedManagementClient,
7239
6968
  identityIntegrationAccountVouchingInputSchema,
6969
+ identityIntegrationAppSecretSchema,
7240
6970
  identityIntegrationInputSchema,
7241
6971
  identityIntegrationKeySchema,
7242
6972
  identityIntegrationSchema,
@@ -7306,6 +7036,12 @@ export {
7306
7036
  memberAccountSchema,
7307
7037
  memberAccountUnlinkInputSchema,
7308
7038
  memberAppIdentitySchema,
7039
+ memberBanInputSchema,
7040
+ memberBanOutcomeSchema,
7041
+ memberBanPreviewInputSchema,
7042
+ memberBanPreviewSchema,
7043
+ memberBanRollbackSchema,
7044
+ memberBanSchema,
7309
7045
  memberCreatorAccountUnlinkInputSchema,
7310
7046
  memberDetailSchema,
7311
7047
  memberErasureDeletedSchema,
@@ -7349,6 +7085,7 @@ export {
7349
7085
  memberOAuthUnlinkInputSchema,
7350
7086
  memberSchema,
7351
7087
  memberTelegramUnlinkInputSchema,
7088
+ memberUnbanInputSchema,
7352
7089
  memberWalletSignInInputSchema,
7353
7090
  memberWalletUnlinkInputSchema,
7354
7091
  metricsSchema,
@@ -7432,6 +7169,7 @@ export {
7432
7169
  serviceKeyInputSchema,
7433
7170
  serviceKeySchema,
7434
7171
  settlementPayoutCsv,
7172
+ shortensEvidenceRetention,
7435
7173
  sourceDataSchema2 as sourceDataSchema,
7436
7174
  sourceRoles,
7437
7175
  stageRequestSchema,