@domino-sdk/relay 0.11.0 → 0.13.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.
@@ -1,5 +1,5 @@
1
- import { O as Observation, D as DiscordMember, a as DiscordMessage, W as WalletConnection, S as SolanaBalance, o as observationTriggerSchema, B as Budget, A as AuthoringIdentity, I as IntegrationProvider, b as StreakPolicy } from './settings-B61jIDDA.js';
2
- export { d as defineLeaderboard, c as defineReferral, e as discord, p as pointLedgers, s as settings, f as streak } from './settings-B61jIDDA.js';
1
+ import { O as Observation, T as TrackerReader, D as DiscordMember, a as DiscordMessage, W as WalletConnection, S as SolanaBalance, o as observationTriggerSchema, B as Budget, A as AuthoringIdentity, I as IntegrationProvider, b as StreakPolicy } from './settings-CgI5nDQr.js';
2
+ export { c as customSource, d as defineLeaderboard, e as defineReferral, f as defineTracker, g as discord, p as pointLedgers, s as settings, h as streak, x } from './settings-CgI5nDQr.js';
3
3
  import { z } from 'zod';
4
4
  import { PhotoResult, rewardSchema, triggerSchema, QuestPresentation, QuizEvidence, Decision, TieredRewardDefinition } from './schema.js';
5
5
 
@@ -137,6 +137,7 @@ type EvaluationContext<T, I = {
137
137
  input: I;
138
138
  observation: Observation | null;
139
139
  eligibleAt: number;
140
+ trackers: TrackerReader;
140
141
  review: {
141
142
  photo(options: {
142
143
  image: string;
package/dist/authoring.js CHANGED
@@ -1,8 +1,11 @@
1
1
  import {
2
2
  authoringKey,
3
+ customSource,
3
4
  defineLeaderboard,
4
- defineReferral
5
- } from "./chunk-CE5XVIJQ.js";
5
+ defineReferral,
6
+ defineTracker,
7
+ x
8
+ } from "./chunk-XOEREIXI.js";
6
9
  import {
7
10
  budgetSchema,
8
11
  decisionSchema,
@@ -164,6 +167,7 @@ function defineQuest(definition) {
164
167
  observation: ctx.observation ?? null,
165
168
  eligibleAt: ctx.eligibleAt,
166
169
  review: ctx.review,
170
+ trackers: ctx.trackers,
167
171
  wallet: ctx.wallet,
168
172
  discord: ctx.discord
169
173
  }) : decision.accept();
@@ -185,12 +189,14 @@ export {
185
189
  automatic,
186
190
  budget,
187
191
  completed,
192
+ customSource,
188
193
  decision,
189
194
  defineLeaderboard,
190
195
  defineQuest,
191
196
  defineQuestType,
192
197
  defineReferral,
193
198
  defineTieredReward,
199
+ defineTracker,
194
200
  discord,
195
201
  discordRole,
196
202
  evaluators,
@@ -203,5 +209,6 @@ export {
203
209
  settings,
204
210
  staffHandover,
205
211
  streak,
206
- untracked
212
+ untracked,
213
+ x
207
214
  };
package/dist/browser.d.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  import { SubmitInput, ReviewListOptions, MemberListOptions, ReleaseInput, beginHandoverSchema } from './schema.js';
2
2
  import { SubmissionStore, createRelayClient, QuestView, QuestController, ProgressObservation, questExperienceSchema, ProgressObserver, ExchangeInput, PhotoSubmission, QuizSubmission, ClaimSubmission } from './index.js';
3
- import { r as referralAcceptSchema, L as LeaderboardQuery, w as walletChallengeInputSchema, g as walletProofSchema, h as AuthProvider } from './settings-B61jIDDA.js';
3
+ import { r as referralAcceptSchema, L as LeaderboardQuery, w as walletChallengeInputSchema, i as walletProofSchema, j as AuthProvider } from './settings-CgI5nDQr.js';
4
4
  import * as zod from 'zod';
5
5
 
6
6
  /** Browser client with durable submission recovery; safe to construct during SSR. */
@@ -1477,7 +1477,7 @@ declare function createBrowserRelayClient(options: Parameters<typeof createRelay
1477
1477
  provider: "discord";
1478
1478
  action: "grant-role";
1479
1479
  roleId: string;
1480
- status: "pending" | "delivered";
1480
+ status: "pending" | "failed" | "delivered";
1481
1481
  attempts: number;
1482
1482
  nextAt: number;
1483
1483
  lastError: string | null;
package/dist/browser.js CHANGED
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  createRelayClient
3
- } from "./chunk-ONDPW77O.js";
4
- import "./chunk-CE5XVIJQ.js";
3
+ } from "./chunk-Y7FVHF65.js";
4
+ import "./chunk-XOEREIXI.js";
5
5
  import "./chunk-VDWQL6HV.js";
6
6
  import "./chunk-3UOTI4IU.js";
7
7
 
@@ -187,18 +187,133 @@ var referralManagementSchema = z2.object({
187
187
  next: amount.nullable()
188
188
  });
189
189
 
190
- // src/leaderboards.ts
190
+ // src/trackers.ts
191
191
  import { z as z3 } from "zod";
192
- var integer = z3.number().int().safe();
193
- var timestamp = integer.nonnegative().max(864e13);
194
- var leaderboardWindowSchema = z3.discriminatedUnion("kind", [
195
- z3.object({ kind: z3.literal("all-time") }).strict(),
196
- z3.object({ kind: z3.literal("fixed"), start: timestamp, end: timestamp }).strict().refine((w) => w.end > w.start, "Window end must follow its start"),
197
- z3.object({ kind: z3.literal("rolling"), days: integer.min(1).max(3660) }).strict(),
198
- z3.object({
199
- kind: z3.literal("calendar"),
200
- period: z3.enum(["day", "week", "month"]),
201
- timeZone: z3.string().min(1).max(100).refine((zone) => {
192
+ var timestamp = z3.number().int().safe().nonnegative().max(864e13);
193
+ var count = z3.number().int().safe().nonnegative();
194
+ var externalId = z3.string().min(1).max(256);
195
+ var metric = count.nullable().default(null);
196
+ var xTweetSchema = z3.looseObject({
197
+ id: externalId,
198
+ userId: externalId,
199
+ content: z3.string(),
200
+ createdAt: z3.iso.datetime({ offset: true }),
201
+ author: z3.looseObject({
202
+ id: externalId,
203
+ username: z3.string(),
204
+ name: z3.string(),
205
+ verified: z3.boolean().nullable().default(null)
206
+ }),
207
+ likeCount: metric,
208
+ replyCount: metric,
209
+ retweetCount: metric,
210
+ quoteCount: metric,
211
+ viewCount: metric,
212
+ bookmarkCount: metric,
213
+ isReply: z3.boolean(),
214
+ isRetweet: z3.boolean(),
215
+ isQuoteTweet: z3.boolean()
216
+ });
217
+ var trackerSourceSchema = z3.discriminatedUnion("kind", [
218
+ z3.object({ kind: z3.literal("x-search"), query: z3.string().trim().min(1).max(2e3) }).strict(),
219
+ z3.object({ kind: z3.literal("custom"), namespace: identifier }).strict()
220
+ ]);
221
+ var x = {
222
+ search: (input) => trackerSourceSchema.options[0].parse({ kind: "x-search", ...input })
223
+ };
224
+ var customSource = (namespace) => trackerSourceSchema.options[1].parse({ kind: "custom", namespace });
225
+ var windowSchema = z3.object({ start: timestamp, end: timestamp.optional() }).strict().refine((w) => w.end === void 0 || w.end > w.start, "End must follow start");
226
+ var trackerDefinitionSchema = z3.object({
227
+ key: identifier,
228
+ title: z3.string().trim().min(1).max(120),
229
+ source: trackerSourceSchema,
230
+ window: windowSchema,
231
+ refreshSeconds: z3.number().int().min(300).max(86400).default(21600),
232
+ maxPages: z3.number().int().min(1).max(1e3).default(60)
233
+ }).strict();
234
+ var trackerArtifactSchema = z3.union([trackerDefinitionSchema, z3.object({ code: z3.string().min(1).max(2e6) }).strict()]);
235
+ function defineTracker(input) {
236
+ return trackerDefinitionSchema.parse(input);
237
+ }
238
+ var publishedTrackerSchema = z3.object({
239
+ id: identifier,
240
+ version: identifier,
241
+ definition: trackerDefinitionSchema,
242
+ publishedAt: timestamp,
243
+ actor: z3.string().nullable()
244
+ });
245
+ var trackerStatusSchema = z3.object({
246
+ published: publishedTrackerSchema,
247
+ paused: z3.boolean(),
248
+ state: z3.enum(["idle", "syncing", "error", "complete"]),
249
+ lastStartedAt: timestamp.nullable(),
250
+ lastCompletedAt: timestamp.nullable(),
251
+ nextSyncAt: timestamp.nullable(),
252
+ coverage: z3.enum(["unknown", "partial", "complete"]),
253
+ error: z3.string().nullable(),
254
+ records: count
255
+ });
256
+ var trackerControlSchema = z3.object({
257
+ actionId: identifier,
258
+ action: z3.enum(["pause", "resume", "refresh"])
259
+ }).strict();
260
+ var trackerRecordInputSchema = z3.object({
261
+ id: externalId,
262
+ occurredAt: timestamp,
263
+ observedAt: timestamp,
264
+ author: z3.object({ id: externalId, verified: z3.boolean().nullable().default(null) }).strict().nullable().default(null),
265
+ data: z3.record(z3.string(), z3.json()),
266
+ removed: z3.boolean().default(false)
267
+ }).strict().refine((v) => new TextEncoder().encode(JSON.stringify(v.data)).byteLength <= 131072, "Record exceeds 128 KB");
268
+ var trackerRecordSchema = trackerRecordInputSchema.safeExtend({
269
+ source: z3.string(),
270
+ firstSeenAt: timestamp
271
+ });
272
+ var trackerIngestSchema = z3.object({
273
+ actionId: identifier,
274
+ records: z3.array(trackerRecordInputSchema).min(1).max(100)
275
+ }).strict();
276
+ var trackerIngestResultSchema = z3.object({ stored: count });
277
+ var booleanQuery = z3.union([z3.boolean(), z3.enum(["true", "false"]).transform((v) => v === "true")]);
278
+ var trackerQuerySchema = z3.object({
279
+ author: externalId.optional(),
280
+ member: identifier.optional(),
281
+ verified: booleanQuery.optional(),
282
+ since: z3.coerce.number().int().safe().nonnegative().optional(),
283
+ until: z3.coerce.number().int().safe().nonnegative().optional(),
284
+ removed: booleanQuery.default(false),
285
+ minLikes: z3.coerce.number().int().safe().nonnegative().optional(),
286
+ minViews: z3.coerce.number().int().safe().nonnegative().optional(),
287
+ limit: z3.coerce.number().int().min(1).max(100).default(25),
288
+ cursor: z3.string().max(2048).optional()
289
+ }).strict().refine((q) => q.since === void 0 || q.until === void 0 || q.until > q.since, "Until must follow since");
290
+ var trackerPageSchema = z3.object({
291
+ tracker: identifier,
292
+ items: z3.array(trackerRecordSchema),
293
+ nextCursor: z3.string().nullable(),
294
+ total: count,
295
+ status: trackerStatusSchema
296
+ });
297
+ var trackerSummarySchema = z3.object({
298
+ records: count,
299
+ authors: count,
300
+ metrics: z3.object({ likes: count, replies: count, reposts: count, quotes: count, views: count, bookmarks: count }),
301
+ missingMetrics: count,
302
+ status: trackerStatusSchema
303
+ });
304
+
305
+ // src/leaderboards.ts
306
+ import { z as z4 } from "zod";
307
+ var integer = z4.number().int().safe();
308
+ var timestamp2 = integer.nonnegative().max(864e13);
309
+ var leaderboardWindowSchema = z4.discriminatedUnion("kind", [
310
+ z4.object({ kind: z4.literal("all-time") }).strict(),
311
+ z4.object({ kind: z4.literal("fixed"), start: timestamp2, end: timestamp2 }).strict().refine((w) => w.end > w.start, "Window end must follow its start"),
312
+ z4.object({ kind: z4.literal("rolling"), days: integer.min(1).max(3660) }).strict(),
313
+ z4.object({
314
+ kind: z4.literal("calendar"),
315
+ period: z4.enum(["day", "week", "month"]),
316
+ timeZone: z4.string().min(1).max(100).refine((zone) => {
202
317
  try {
203
318
  new Intl.DateTimeFormat("en", { timeZone: zone });
204
319
  return true;
@@ -210,22 +325,22 @@ var leaderboardWindowSchema = z3.discriminatedUnion("kind", [
210
325
  ]);
211
326
  var periodScore = {
212
327
  window: leaderboardWindowSchema.default({ kind: "all-time" }),
213
- quests: z3.array(identifier).min(1).max(100).optional()
328
+ quests: z4.array(identifier).min(1).max(100).optional()
214
329
  };
215
- var leaderboardDefinitionSchema = z3.object({
330
+ var leaderboardDefinitionSchema = z4.object({
216
331
  id: identifier,
217
332
  key: identifier.optional(),
218
- title: z3.string().trim().min(1).max(120),
333
+ title: z4.string().trim().min(1).max(120),
219
334
  balance: identifier,
220
- score: z3.discriminatedUnion("kind", [
221
- z3.object({ kind: z3.literal("balance") }).strict(),
222
- z3.object({ kind: z3.literal("earned"), ...periodScore }).strict(),
223
- z3.object({
224
- kind: z3.literal("net"),
335
+ score: z4.discriminatedUnion("kind", [
336
+ z4.object({ kind: z4.literal("balance") }).strict(),
337
+ z4.object({ kind: z4.literal("earned"), ...periodScore }).strict(),
338
+ z4.object({
339
+ kind: z4.literal("net"),
225
340
  window: leaderboardWindowSchema.default({ kind: "all-time" })
226
341
  }).strict()
227
342
  ]).default({ kind: "balance" }),
228
- access: z3.enum(["participants", "public"]).default("participants"),
343
+ access: z4.enum(["participants", "public"]).default("participants"),
229
344
  group: identifier.optional()
230
345
  }).strict();
231
346
  var leaderboardAuthoringSchema = leaderboardDefinitionSchema.omit({ id: true }).extend(authoringIdentityShape).strict().superRefine(validateAuthoringIdentity).transform(normalizeAuthoringIdentity);
@@ -237,42 +352,42 @@ function defineLeaderboard(input) {
237
352
  id: definition.key
238
353
  };
239
354
  }
240
- var leaderboardArtifactSchema = z3.union([
355
+ var leaderboardArtifactSchema = z4.union([
241
356
  leaderboardAuthoringSchema,
242
- z3.object({ code: z3.string().min(1).max(2e6) }).strict()
357
+ z4.object({ code: z4.string().min(1).max(2e6) }).strict()
243
358
  ]);
244
- var publishedLeaderboardSchema = z3.object({
359
+ var publishedLeaderboardSchema = z4.object({
245
360
  version: identifier,
246
361
  definition: leaderboardDefinitionSchema,
247
- publishedAt: timestamp,
248
- actor: z3.string().nullable()
362
+ publishedAt: timestamp2,
363
+ actor: z4.string().nullable()
249
364
  });
250
- var leaderboardQuerySchema = z3.object({
251
- limit: z3.coerce.number().int().min(1).max(100).default(25),
252
- cursor: z3.string().max(4096).optional()
365
+ var leaderboardQuerySchema = z4.object({
366
+ limit: z4.coerce.number().int().min(1).max(100).default(25),
367
+ cursor: z4.string().max(4096).optional()
253
368
  }).strict();
254
- var leaderboardRowSchema = z3.object({
369
+ var leaderboardRowSchema = z4.object({
255
370
  participant: identifier,
256
371
  member: identifier.optional(),
257
- name: z3.string(),
372
+ name: z4.string(),
258
373
  score: integer,
259
374
  rank: integer.positive()
260
375
  });
261
- var leaderboardPageSchema = z3.object({
376
+ var leaderboardPageSchema = z4.object({
262
377
  leaderboard: identifier,
263
- title: z3.string(),
378
+ title: z4.string(),
264
379
  version: identifier,
265
- calculation: z3.enum(["balance", "earned", "net"]),
266
- period: z3.object({ start: timestamp.nullable(), end: timestamp.nullable() }),
267
- calculatedAt: timestamp,
268
- lastEntryAt: timestamp.nullable(),
380
+ calculation: z4.enum(["balance", "earned", "net"]),
381
+ period: z4.object({ start: timestamp2.nullable(), end: timestamp2.nullable() }),
382
+ calculatedAt: timestamp2,
383
+ lastEntryAt: timestamp2.nullable(),
269
384
  total: integer.nonnegative(),
270
- items: z3.array(leaderboardRowSchema),
385
+ items: z4.array(leaderboardRowSchema),
271
386
  me: leaderboardRowSchema.nullable(),
272
- nearby: z3.array(leaderboardRowSchema),
273
- nextCursor: z3.string().nullable()
387
+ nearby: z4.array(leaderboardRowSchema),
388
+ nextCursor: z4.string().nullable()
274
389
  });
275
- var leaderboardPreviewSchema = z3.object({
390
+ var leaderboardPreviewSchema = z4.object({
276
391
  published: publishedLeaderboardSchema,
277
392
  before: leaderboardPageSchema.nullable(),
278
393
  after: leaderboardPageSchema
@@ -281,75 +396,75 @@ var mutationBase = {
281
396
  actionId: identifier,
282
397
  member: identifier,
283
398
  balance: identifier,
284
- reason: z3.string().trim().min(1).max(1e3)
399
+ reason: z4.string().trim().min(1).max(1e3)
285
400
  };
286
- var datedMutation = { ...mutationBase, effectiveAt: timestamp.optional() };
287
- var pointsMutationSchema = z3.discriminatedUnion("kind", [
288
- z3.object({
401
+ var datedMutation = { ...mutationBase, effectiveAt: timestamp2.optional() };
402
+ var pointsMutationSchema = z4.discriminatedUnion("kind", [
403
+ z4.object({
289
404
  ...datedMutation,
290
- kind: z3.literal("award"),
291
- referralEligible: z3.boolean().optional(),
405
+ kind: z4.literal("award"),
406
+ referralEligible: z4.boolean().optional(),
292
407
  amount: integer.positive()
293
408
  }).strict(),
294
- z3.object({
409
+ z4.object({
295
410
  ...datedMutation,
296
- kind: z3.literal("spend"),
411
+ kind: z4.literal("spend"),
297
412
  amount: integer.positive()
298
413
  }).strict(),
299
- z3.object({
414
+ z4.object({
300
415
  ...datedMutation,
301
- kind: z3.literal("adjust"),
416
+ kind: z4.literal("adjust"),
302
417
  amount: integer.refine((n) => n !== 0)
303
418
  }).strict(),
304
- z3.object({
419
+ z4.object({
305
420
  ...datedMutation,
306
- kind: z3.literal("set"),
421
+ kind: z4.literal("set"),
307
422
  total: integer.nonnegative(),
308
423
  expectedTotal: integer.nonnegative(),
309
- classification: z3.enum(["earned", "spend"])
424
+ classification: z4.enum(["earned", "spend"])
310
425
  }).strict(),
311
- z3.object({
426
+ z4.object({
312
427
  ...mutationBase,
313
- kind: z3.literal("reverse"),
428
+ kind: z4.literal("reverse"),
314
429
  entry: identifier,
315
430
  amount: integer.positive()
316
431
  }).strict()
317
432
  ]);
318
- var pointsEntrySchema = z3.object({
433
+ var pointsEntrySchema = z4.object({
319
434
  id: identifier,
320
- completion: z3.string().nullable(),
435
+ completion: z4.string().nullable(),
321
436
  member: identifier,
322
437
  balance: identifier,
323
438
  amount: integer,
324
- kind: z3.enum(["award", "spend", "adjust", "reverse"]),
325
- effectiveAt: timestamp,
326
- receivedAt: timestamp,
439
+ kind: z4.enum(["award", "spend", "adjust", "reverse"]),
440
+ effectiveAt: timestamp2,
441
+ receivedAt: timestamp2,
327
442
  quest: identifier.nullable(),
328
443
  original: identifier.nullable(),
329
- reason: z3.string(),
330
- actor: z3.string().nullable()
444
+ reason: z4.string(),
445
+ actor: z4.string().nullable()
331
446
  });
332
- var pointsResultSchema = z3.object({
447
+ var pointsResultSchema = z4.object({
333
448
  entry: pointsEntrySchema,
334
449
  total: integer.nonnegative()
335
450
  });
336
- var pointsAccountSchema = z3.object({
451
+ var pointsAccountSchema = z4.object({
337
452
  member: identifier,
338
453
  balance: identifier,
339
454
  total: integer.nonnegative(),
340
455
  held: integer.nonnegative()
341
456
  });
342
- var leaderboardExclusionSchema = z3.object({
457
+ var leaderboardExclusionSchema = z4.object({
343
458
  actionId: identifier,
344
459
  member: identifier,
345
- excluded: z3.boolean(),
346
- reason: z3.string().trim().min(1).max(1e3)
460
+ excluded: z4.boolean(),
461
+ reason: z4.string().trim().min(1).max(1e3)
347
462
  }).strict();
348
- var leaderboardGroupSchema = z3.object({
463
+ var leaderboardGroupSchema = z4.object({
349
464
  actionId: identifier,
350
465
  member: identifier,
351
- included: z3.boolean(),
352
- reason: z3.string().trim().min(1).max(1e3)
466
+ included: z4.boolean(),
467
+ reason: z4.string().trim().min(1).max(1e3)
353
468
  }).strict();
354
469
 
355
470
  export {
@@ -369,6 +484,23 @@ export {
369
484
  referralSummarySchema,
370
485
  referralHistorySchema,
371
486
  referralManagementSchema,
487
+ xTweetSchema,
488
+ trackerSourceSchema,
489
+ x,
490
+ customSource,
491
+ trackerDefinitionSchema,
492
+ trackerArtifactSchema,
493
+ defineTracker,
494
+ publishedTrackerSchema,
495
+ trackerStatusSchema,
496
+ trackerControlSchema,
497
+ trackerRecordInputSchema,
498
+ trackerRecordSchema,
499
+ trackerIngestSchema,
500
+ trackerIngestResultSchema,
501
+ trackerQuerySchema,
502
+ trackerPageSchema,
503
+ trackerSummarySchema,
372
504
  leaderboardWindowSchema,
373
505
  leaderboardDefinitionSchema,
374
506
  leaderboardAuthoringSchema,
@@ -7,13 +7,15 @@ import {
7
7
  leaderboardQuerySchema,
8
8
  normalizeAuthoringIdentity,
9
9
  publishedReferralSchema,
10
+ publishedTrackerSchema,
10
11
  referralAcceptSchema,
11
12
  referralArtifactSchema,
12
13
  referralDefinitionSchema,
13
14
  referralHistorySchema,
14
15
  referralSummarySchema,
16
+ trackerArtifactSchema,
15
17
  validateAuthoringIdentity
16
- } from "./chunk-CE5XVIJQ.js";
18
+ } from "./chunk-XOEREIXI.js";
17
19
  import {
18
20
  authScopeSchema,
19
21
  exchangeResultSchema,
@@ -67,8 +69,15 @@ var rewardDeliverySchema = z2.object({
67
69
  provider: z2.literal("discord"),
68
70
  action: z2.literal("grant-role"),
69
71
  roleId: z2.string(),
70
- status: z2.enum(["pending", "delivered"]),
72
+ /**
73
+ * `failed` is terminal: Discord rejected the grant permanently (unknown role,
74
+ * member left the server, missing permissions) or retries ran out after
75
+ * about a day. An operator can retry it once the cause is fixed.
76
+ */
77
+ status: z2.enum(["pending", "delivered", "failed"]),
78
+ /** Provider attempts in the current round; an operator retry starts a new round at zero. */
71
79
  attempts: z2.number().int(),
80
+ /** While pending with a `lastError`, when the next attempt is scheduled. */
72
81
  nextAt: z2.number(),
73
82
  lastError: z2.string().nullable(),
74
83
  createdAt: z2.number(),
@@ -732,16 +741,18 @@ function questConfiguration(release) {
732
741
  // src/deployments.ts
733
742
  import { z as z7 } from "zod";
734
743
  var projectCatalogArtifactSchema = catalogDeploymentSchema.omit({ expectedRevision: true }).extend({
744
+ trackers: z7.array(trackerArtifactSchema).max(50).default([]),
735
745
  pointLedgers: z7.array(pointLedgerDeclarationSchema).max(50).default([]),
736
746
  referrals: z7.array(referralArtifactSchema).max(50).default([]),
737
747
  leaderboards: z7.array(leaderboardArtifactSchema).max(50).default([])
738
748
  });
739
749
  var projectDeploymentSchema = projectCatalogArtifactSchema.extend({ releases: z7.array(releaseSchema).max(50).default([]) }).refine(
740
- (value) => value.pointLedgers.length > 0 || value.releases.length > 0 || value.leaderboards.length > 0 || value.referrals.length > 0 || value.types.length > 0 || value.collections.length > 0 || value.supportedInteractions !== void 0,
741
- "No resources configured. Add quests, questTypes, pointLedgers, leaderboards, referrals, collections, or supportedInteractions to relay.json."
750
+ (value) => value.trackers.length > 0 || value.pointLedgers.length > 0 || value.releases.length > 0 || value.leaderboards.length > 0 || value.referrals.length > 0 || value.types.length > 0 || value.collections.length > 0 || value.supportedInteractions !== void 0,
751
+ "No resources configured. Add trackers, quests, questTypes, pointLedgers, leaderboards, referrals, collections, or supportedInteractions to relay.json."
742
752
  );
743
753
  var deploymentPreviewSchema = z7.object({
744
754
  id: identifier,
755
+ trackers: z7.array(publishedTrackerSchema).default([]),
745
756
  baseRevision: z7.number().int().nonnegative(),
746
757
  pointLedgers: z7.array(pointLedgerSchema).default([]),
747
758
  releases: z7.array(publishedReleaseSchema),
package/dist/index.d.ts CHANGED
@@ -1,8 +1,8 @@
1
1
  import { z } from 'zod';
2
2
  import { errorSchema, QuizEvidence, Attempt, SubmitInput, MemberProgress, questDescriptionSchema, PublishedRelease, ReviewListOptions, MemberListOptions, ReleaseInput, beginHandoverSchema } from './schema.js';
3
3
  export { Decision, Entitlement, MemberPage, PhotoResult, PickupAvailability, QuestAvailability, QuestDescription, QuestPresentation, QuestSettingsInput, ReviewPage, Reward, Snapshot, TieredRewardDefinition, artifactSchema, attemptSchema, batchReleaseSchema, completionRecordSchema, configurePickupSchema, confirmHandoverSchema, createStockItemSchema, decisionSchema, entitlementSchema, eventSchema, evidenceSchema, identifier, integrationRewardSchema, mediaUrlSchema, memberListSchema, memberPageSchema, memberProgressSchema, photoResultSchema, pickupAllocationSchema, pickupAvailabilitySchema, pickupCatalogSchema, pickupPolicySchema, pickupSelectionSchema, pointsRewardSchema, prerequisiteSchema, publishedReleaseSchema, questAvailabilitySchema, questPresentationSchema, questSettingsInputSchema, quizAnswersSchema, quizEvidenceSchema, releaseSchema, reservationSchema, reviewItemSchema, reviewListSchema, reviewModeSchema, reviewPageSchema, rewardBundleSchema, rewardKey, rewardSchema, snapshotSchema, staffDecisionSchema, stockItemSchema, stockSchema, storedReviewModeSchema, submitSchema, templateSchema, tierRewardSchema, tieredRewardDefinitionSchema, triggerSchema } from './schema.js';
4
- import { r as referralAcceptSchema, L as LeaderboardQuery, w as walletChallengeInputSchema, g as walletProofSchema, h as AuthProvider } from './settings-B61jIDDA.js';
5
- export { i as AccountConnection, B as Budget, D as DiscordMember, a as DiscordMessage, I as IntegrationProvider, j as LeaderboardDefinition, k as LeaderboardPage, O as Observation, P as ProjectIntegration, Q as QuizContent, R as ReferralDefinition, l as ResourceOption, m as ResourceSource, n as SettingField, q as SettingsValues, S as SolanaBalance, b as StreakPolicy, t as StreakProgress, W as WalletConnection, u as accountConnectionSchema, v as authProviderSchema, x as budgetSchema, y as communityTimeZoneSchema, z as compatibleSettingKinds, C as completionKeySchema, E as completionPolicySchema, d as defineLeaderboard, c as defineReferral, e as discord, F as discordMemberInputSchema, G as discordMemberSchema, H as discordMessageInputSchema, J as discordMessageSchema, K as discordReactionSchema, M as discordServerSchema, N as integrationProviderSchema, T as leaderboardArtifactSchema, U as leaderboardAuthoringSchema, V as leaderboardDefinitionSchema, X as leaderboardExclusionSchema, Y as leaderboardGroupSchema, Z as leaderboardPageSchema, _ as leaderboardPreviewSchema, $ as leaderboardQuerySchema, a0 as leaderboardRowSchema, a1 as leaderboardWindowSchema, a2 as missingResourceSettings, a3 as observationInputSchema, a4 as observationReceiptSchema, a5 as observationSchema, o as observationTriggerSchema, a6 as parseSettings, p as pointLedgers, a7 as pointsAccountSchema, a8 as pointsEntrySchema, a9 as pointsMutationSchema, aa as pointsResultSchema, ab as projectIntegrationSchema, ac as publishedLeaderboardSchema, ad as publishedReferralSchema, ae as quizChoiceSchema, af as quizContentSchema, ag as quizQuestionSchema, ah as quizQuestionsSchema, ai as referralAccountSchema, aj as referralArtifactSchema, ak as referralAuthoringSchema, al as referralControlSchema, am as referralDefinitionSchema, an as referralHistorySchema, ao as referralManagementSchema, ap as referralRelationshipSchema, aq as referralSummarySchema, ar as resourceOptionsSchema, as as resourceRequestSchema, at as resourceSourceSchema, au as settingFieldSchema, s as settings, av as settingsFieldsSchema, aw as settingsValuesSchema, ax as solanaAddressSchema, ay as solanaBalanceSchema, f as streak, az as streakPolicySchema, aA as streakProgressSchema, aB as walletChallengeSchema, aC as walletConnectionSchema } from './settings-B61jIDDA.js';
4
+ import { r as referralAcceptSchema, L as LeaderboardQuery, w as walletChallengeInputSchema, i as walletProofSchema, j as AuthProvider } from './settings-CgI5nDQr.js';
5
+ export { k as AccountConnection, B as Budget, D as DiscordMember, a as DiscordMessage, I as IntegrationProvider, l as LeaderboardDefinition, m as LeaderboardPage, O as Observation, P as ProjectIntegration, Q as QuizContent, R as ReferralDefinition, n as ResourceOption, q as ResourceSource, t as SettingField, u as SettingsValues, S as SolanaBalance, b as StreakPolicy, v as StreakProgress, y as TrackerDefinition, z as TrackerQuery, T as TrackerReader, C as TrackerRecord, E as TrackerStatus, W as WalletConnection, X as XTweet, F as accountConnectionSchema, G as authProviderSchema, H as budgetSchema, J as communityTimeZoneSchema, K as compatibleSettingKinds, M as completionKeySchema, N as completionPolicySchema, c as customSource, d as defineLeaderboard, e as defineReferral, f as defineTracker, g as discord, U as discordMemberInputSchema, V as discordMemberSchema, Y as discordMessageInputSchema, Z as discordMessageSchema, _ as discordReactionSchema, $ as discordServerSchema, a0 as integrationProviderSchema, a1 as leaderboardArtifactSchema, a2 as leaderboardAuthoringSchema, a3 as leaderboardDefinitionSchema, a4 as leaderboardExclusionSchema, a5 as leaderboardGroupSchema, a6 as leaderboardPageSchema, a7 as leaderboardPreviewSchema, a8 as leaderboardQuerySchema, a9 as leaderboardRowSchema, aa as leaderboardWindowSchema, ab as missingResourceSettings, ac as observationInputSchema, ad as observationReceiptSchema, ae as observationSchema, o as observationTriggerSchema, af as parseSettings, p as pointLedgers, ag as pointsAccountSchema, ah as pointsEntrySchema, ai as pointsMutationSchema, aj as pointsResultSchema, ak as projectIntegrationSchema, al as publishedLeaderboardSchema, am as publishedReferralSchema, an as publishedTrackerSchema, ao as quizChoiceSchema, ap as quizContentSchema, aq as quizQuestionSchema, ar as quizQuestionsSchema, as as referralAccountSchema, at as referralArtifactSchema, au as referralAuthoringSchema, av as referralControlSchema, aw as referralDefinitionSchema, ax as referralHistorySchema, ay as referralManagementSchema, az as referralRelationshipSchema, aA as referralSummarySchema, aB as resourceOptionsSchema, aC as resourceRequestSchema, aD as resourceSourceSchema, aE as settingFieldSchema, s as settings, aF as settingsFieldsSchema, aG as settingsValuesSchema, aH as solanaAddressSchema, aI as solanaBalanceSchema, h as streak, aJ as streakPolicySchema, aK as streakProgressSchema, aL as trackerArtifactSchema, aM as trackerControlSchema, aN as trackerDefinitionSchema, aO as trackerIngestResultSchema, aP as trackerIngestSchema, aQ as trackerPageSchema, aR as trackerQuerySchema, aS as trackerRecordInputSchema, aT as trackerRecordSchema, aU as trackerSourceSchema, aV as trackerStatusSchema, aW as trackerSummarySchema, aX as walletChallengeSchema, aY as walletConnectionSchema, x, aZ as xTweetSchema } from './settings-CgI5nDQr.js';
6
6
 
7
7
  declare class RelayError extends Error {
8
8
  readonly status: number;
@@ -3100,6 +3100,7 @@ declare const rewardDeliverySchema: z.ZodObject<{
3100
3100
  roleId: z.ZodString;
3101
3101
  status: z.ZodEnum<{
3102
3102
  pending: "pending";
3103
+ failed: "failed";
3103
3104
  delivered: "delivered";
3104
3105
  }>;
3105
3106
  attempts: z.ZodNumber;
@@ -3119,6 +3120,7 @@ declare const rewardDeliveriesSchema: z.ZodObject<{
3119
3120
  roleId: z.ZodString;
3120
3121
  status: z.ZodEnum<{
3121
3122
  pending: "pending";
3123
+ failed: "failed";
3122
3124
  delivered: "delivered";
3123
3125
  }>;
3124
3126
  attempts: z.ZodNumber;
@@ -3293,6 +3295,25 @@ declare const projectCatalogArtifactSchema: z.ZodObject<{
3293
3295
  automatic: "automatic";
3294
3296
  claim: "claim";
3295
3297
  }>>>;
3298
+ trackers: z.ZodDefault<z.ZodArray<z.ZodUnion<readonly [z.ZodObject<{
3299
+ key: z.ZodString;
3300
+ title: z.ZodString;
3301
+ source: z.ZodDiscriminatedUnion<[z.ZodObject<{
3302
+ kind: z.ZodLiteral<"x-search">;
3303
+ query: z.ZodString;
3304
+ }, z.core.$strict>, z.ZodObject<{
3305
+ kind: z.ZodLiteral<"custom">;
3306
+ namespace: z.ZodString;
3307
+ }, z.core.$strict>], "kind">;
3308
+ window: z.ZodObject<{
3309
+ start: z.ZodNumber;
3310
+ end: z.ZodOptional<z.ZodNumber>;
3311
+ }, z.core.$strict>;
3312
+ refreshSeconds: z.ZodDefault<z.ZodNumber>;
3313
+ maxPages: z.ZodDefault<z.ZodNumber>;
3314
+ }, z.core.$strict>, z.ZodObject<{
3315
+ code: z.ZodString;
3316
+ }, z.core.$strict>]>>>;
3296
3317
  pointLedgers: z.ZodDefault<z.ZodArray<z.ZodObject<{
3297
3318
  name: z.ZodString;
3298
3319
  description: z.ZodDefault<z.ZodString>;
@@ -3764,6 +3785,25 @@ declare const projectDeploymentSchema: z.ZodObject<{
3764
3785
  automatic: "automatic";
3765
3786
  claim: "claim";
3766
3787
  }>>>;
3788
+ trackers: z.ZodDefault<z.ZodArray<z.ZodUnion<readonly [z.ZodObject<{
3789
+ key: z.ZodString;
3790
+ title: z.ZodString;
3791
+ source: z.ZodDiscriminatedUnion<[z.ZodObject<{
3792
+ kind: z.ZodLiteral<"x-search">;
3793
+ query: z.ZodString;
3794
+ }, z.core.$strict>, z.ZodObject<{
3795
+ kind: z.ZodLiteral<"custom">;
3796
+ namespace: z.ZodString;
3797
+ }, z.core.$strict>], "kind">;
3798
+ window: z.ZodObject<{
3799
+ start: z.ZodNumber;
3800
+ end: z.ZodOptional<z.ZodNumber>;
3801
+ }, z.core.$strict>;
3802
+ refreshSeconds: z.ZodDefault<z.ZodNumber>;
3803
+ maxPages: z.ZodDefault<z.ZodNumber>;
3804
+ }, z.core.$strict>, z.ZodObject<{
3805
+ code: z.ZodString;
3806
+ }, z.core.$strict>]>>>;
3767
3807
  pointLedgers: z.ZodDefault<z.ZodArray<z.ZodObject<{
3768
3808
  name: z.ZodString;
3769
3809
  description: z.ZodDefault<z.ZodString>;
@@ -4224,6 +4264,29 @@ declare const projectDeploymentSchema: z.ZodObject<{
4224
4264
  }, z.core.$strict>;
4225
4265
  declare const deploymentPreviewSchema: z.ZodObject<{
4226
4266
  id: z.ZodString;
4267
+ trackers: z.ZodDefault<z.ZodArray<z.ZodObject<{
4268
+ id: z.ZodString;
4269
+ version: z.ZodString;
4270
+ definition: z.ZodObject<{
4271
+ key: z.ZodString;
4272
+ title: z.ZodString;
4273
+ source: z.ZodDiscriminatedUnion<[z.ZodObject<{
4274
+ kind: z.ZodLiteral<"x-search">;
4275
+ query: z.ZodString;
4276
+ }, z.core.$strict>, z.ZodObject<{
4277
+ kind: z.ZodLiteral<"custom">;
4278
+ namespace: z.ZodString;
4279
+ }, z.core.$strict>], "kind">;
4280
+ window: z.ZodObject<{
4281
+ start: z.ZodNumber;
4282
+ end: z.ZodOptional<z.ZodNumber>;
4283
+ }, z.core.$strict>;
4284
+ refreshSeconds: z.ZodDefault<z.ZodNumber>;
4285
+ maxPages: z.ZodDefault<z.ZodNumber>;
4286
+ }, z.core.$strict>;
4287
+ publishedAt: z.ZodNumber;
4288
+ actor: z.ZodNullable<z.ZodString>;
4289
+ }, z.core.$strip>>>;
4227
4290
  baseRevision: z.ZodNumber;
4228
4291
  pointLedgers: z.ZodDefault<z.ZodArray<z.ZodObject<{
4229
4292
  name: z.ZodString;
@@ -5187,6 +5250,29 @@ declare const publishDeploymentSchema: z.ZodObject<{
5187
5250
  }, z.core.$strict>;
5188
5251
  declare const deploymentResultSchema: z.ZodObject<{
5189
5252
  id: z.ZodString;
5253
+ trackers: z.ZodDefault<z.ZodArray<z.ZodObject<{
5254
+ id: z.ZodString;
5255
+ version: z.ZodString;
5256
+ definition: z.ZodObject<{
5257
+ key: z.ZodString;
5258
+ title: z.ZodString;
5259
+ source: z.ZodDiscriminatedUnion<[z.ZodObject<{
5260
+ kind: z.ZodLiteral<"x-search">;
5261
+ query: z.ZodString;
5262
+ }, z.core.$strict>, z.ZodObject<{
5263
+ kind: z.ZodLiteral<"custom">;
5264
+ namespace: z.ZodString;
5265
+ }, z.core.$strict>], "kind">;
5266
+ window: z.ZodObject<{
5267
+ start: z.ZodNumber;
5268
+ end: z.ZodOptional<z.ZodNumber>;
5269
+ }, z.core.$strict>;
5270
+ refreshSeconds: z.ZodDefault<z.ZodNumber>;
5271
+ maxPages: z.ZodDefault<z.ZodNumber>;
5272
+ }, z.core.$strict>;
5273
+ publishedAt: z.ZodNumber;
5274
+ actor: z.ZodNullable<z.ZodString>;
5275
+ }, z.core.$strip>>>;
5190
5276
  baseRevision: z.ZodNumber;
5191
5277
  pointLedgers: z.ZodDefault<z.ZodArray<z.ZodObject<{
5192
5278
  name: z.ZodString;
@@ -7664,7 +7750,7 @@ declare function createRelayClient(options: {
7664
7750
  provider: "discord";
7665
7751
  action: "grant-role";
7666
7752
  roleId: string;
7667
- status: "pending" | "delivered";
7753
+ status: "pending" | "failed" | "delivered";
7668
7754
  attempts: number;
7669
7755
  nextAt: number;
7670
7756
  lastError: string | null;
package/dist/index.js CHANGED
@@ -51,10 +51,12 @@ import {
51
51
  walletChallengeSchema,
52
52
  walletConnectionSchema,
53
53
  walletProofSchema
54
- } from "./chunk-ONDPW77O.js";
54
+ } from "./chunk-Y7FVHF65.js";
55
55
  import {
56
+ customSource,
56
57
  defineLeaderboard,
57
58
  defineReferral,
59
+ defineTracker,
58
60
  leaderboardArtifactSchema,
59
61
  leaderboardAuthoringSchema,
60
62
  leaderboardDefinitionSchema,
@@ -71,6 +73,7 @@ import {
71
73
  pointsResultSchema,
72
74
  publishedLeaderboardSchema,
73
75
  publishedReferralSchema,
76
+ publishedTrackerSchema,
74
77
  referralAcceptSchema,
75
78
  referralAccountSchema,
76
79
  referralArtifactSchema,
@@ -80,8 +83,22 @@ import {
80
83
  referralHistorySchema,
81
84
  referralManagementSchema,
82
85
  referralRelationshipSchema,
83
- referralSummarySchema
84
- } from "./chunk-CE5XVIJQ.js";
86
+ referralSummarySchema,
87
+ trackerArtifactSchema,
88
+ trackerControlSchema,
89
+ trackerDefinitionSchema,
90
+ trackerIngestResultSchema,
91
+ trackerIngestSchema,
92
+ trackerPageSchema,
93
+ trackerQuerySchema,
94
+ trackerRecordInputSchema,
95
+ trackerRecordSchema,
96
+ trackerSourceSchema,
97
+ trackerStatusSchema,
98
+ trackerSummarySchema,
99
+ x,
100
+ xTweetSchema
101
+ } from "./chunk-XOEREIXI.js";
85
102
  import {
86
103
  authScopeSchema,
87
104
  exchangeResultSchema,
@@ -214,9 +231,11 @@ export {
214
231
  createPointLedgerSchema,
215
232
  createRelayClient,
216
233
  createStockItemSchema,
234
+ customSource,
217
235
  decisionSchema,
218
236
  defineLeaderboard,
219
237
  defineReferral,
238
+ defineTracker,
220
239
  deploymentPreviewSchema,
221
240
  deploymentResultSchema,
222
241
  discord,
@@ -285,6 +304,7 @@ export {
285
304
  publishedLeaderboardSchema,
286
305
  publishedReferralSchema,
287
306
  publishedReleaseSchema,
307
+ publishedTrackerSchema,
288
308
  questActions,
289
309
  questAvailabilitySchema,
290
310
  questCatalogSchema,
@@ -352,9 +372,23 @@ export {
352
372
  templateSchema,
353
373
  tierRewardSchema,
354
374
  tieredRewardDefinitionSchema,
375
+ trackerArtifactSchema,
376
+ trackerControlSchema,
377
+ trackerDefinitionSchema,
378
+ trackerIngestResultSchema,
379
+ trackerIngestSchema,
380
+ trackerPageSchema,
381
+ trackerQuerySchema,
382
+ trackerRecordInputSchema,
383
+ trackerRecordSchema,
384
+ trackerSourceSchema,
385
+ trackerStatusSchema,
386
+ trackerSummarySchema,
355
387
  triggerSchema,
356
388
  walletChallengeInputSchema,
357
389
  walletChallengeSchema,
358
390
  walletConnectionSchema,
359
- walletProofSchema
391
+ walletProofSchema,
392
+ x,
393
+ xTweetSchema
360
394
  };
@@ -1,5 +1,345 @@
1
1
  import { z } from 'zod';
2
2
 
3
+ /** Keep provider fields, including verification details, rather than projecting them away. */
4
+ declare const xTweetSchema: z.ZodObject<{
5
+ id: z.ZodString;
6
+ userId: z.ZodString;
7
+ content: z.ZodString;
8
+ createdAt: z.ZodISODateTime;
9
+ author: z.ZodObject<{
10
+ id: z.ZodString;
11
+ username: z.ZodString;
12
+ name: z.ZodString;
13
+ verified: z.ZodDefault<z.ZodNullable<z.ZodBoolean>>;
14
+ }, z.core.$loose>;
15
+ likeCount: z.ZodDefault<z.ZodNullable<z.ZodNumber>>;
16
+ replyCount: z.ZodDefault<z.ZodNullable<z.ZodNumber>>;
17
+ retweetCount: z.ZodDefault<z.ZodNullable<z.ZodNumber>>;
18
+ quoteCount: z.ZodDefault<z.ZodNullable<z.ZodNumber>>;
19
+ viewCount: z.ZodDefault<z.ZodNullable<z.ZodNumber>>;
20
+ bookmarkCount: z.ZodDefault<z.ZodNullable<z.ZodNumber>>;
21
+ isReply: z.ZodBoolean;
22
+ isRetweet: z.ZodBoolean;
23
+ isQuoteTweet: z.ZodBoolean;
24
+ }, z.core.$loose>;
25
+ type XTweet = z.infer<typeof xTweetSchema>;
26
+ declare const trackerSourceSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
27
+ kind: z.ZodLiteral<"x-search">;
28
+ query: z.ZodString;
29
+ }, z.core.$strict>, z.ZodObject<{
30
+ kind: z.ZodLiteral<"custom">;
31
+ namespace: z.ZodString;
32
+ }, z.core.$strict>], "kind">;
33
+ declare const x: {
34
+ search: (input: {
35
+ query: string;
36
+ }) => {
37
+ kind: "x-search";
38
+ query: string;
39
+ };
40
+ };
41
+ declare const customSource: (namespace: string) => {
42
+ kind: "custom";
43
+ namespace: string;
44
+ };
45
+ declare const trackerDefinitionSchema: z.ZodObject<{
46
+ key: z.ZodString;
47
+ title: z.ZodString;
48
+ source: z.ZodDiscriminatedUnion<[z.ZodObject<{
49
+ kind: z.ZodLiteral<"x-search">;
50
+ query: z.ZodString;
51
+ }, z.core.$strict>, z.ZodObject<{
52
+ kind: z.ZodLiteral<"custom">;
53
+ namespace: z.ZodString;
54
+ }, z.core.$strict>], "kind">;
55
+ window: z.ZodObject<{
56
+ start: z.ZodNumber;
57
+ end: z.ZodOptional<z.ZodNumber>;
58
+ }, z.core.$strict>;
59
+ refreshSeconds: z.ZodDefault<z.ZodNumber>;
60
+ maxPages: z.ZodDefault<z.ZodNumber>;
61
+ }, z.core.$strict>;
62
+ declare const trackerArtifactSchema: z.ZodUnion<readonly [z.ZodObject<{
63
+ key: z.ZodString;
64
+ title: z.ZodString;
65
+ source: z.ZodDiscriminatedUnion<[z.ZodObject<{
66
+ kind: z.ZodLiteral<"x-search">;
67
+ query: z.ZodString;
68
+ }, z.core.$strict>, z.ZodObject<{
69
+ kind: z.ZodLiteral<"custom">;
70
+ namespace: z.ZodString;
71
+ }, z.core.$strict>], "kind">;
72
+ window: z.ZodObject<{
73
+ start: z.ZodNumber;
74
+ end: z.ZodOptional<z.ZodNumber>;
75
+ }, z.core.$strict>;
76
+ refreshSeconds: z.ZodDefault<z.ZodNumber>;
77
+ maxPages: z.ZodDefault<z.ZodNumber>;
78
+ }, z.core.$strict>, z.ZodObject<{
79
+ code: z.ZodString;
80
+ }, z.core.$strict>]>;
81
+ type TrackerDefinition = z.infer<typeof trackerDefinitionSchema>;
82
+ declare function defineTracker(input: z.input<typeof trackerDefinitionSchema>): TrackerDefinition;
83
+ declare const publishedTrackerSchema: z.ZodObject<{
84
+ id: z.ZodString;
85
+ version: z.ZodString;
86
+ definition: z.ZodObject<{
87
+ key: z.ZodString;
88
+ title: z.ZodString;
89
+ source: z.ZodDiscriminatedUnion<[z.ZodObject<{
90
+ kind: z.ZodLiteral<"x-search">;
91
+ query: z.ZodString;
92
+ }, z.core.$strict>, z.ZodObject<{
93
+ kind: z.ZodLiteral<"custom">;
94
+ namespace: z.ZodString;
95
+ }, z.core.$strict>], "kind">;
96
+ window: z.ZodObject<{
97
+ start: z.ZodNumber;
98
+ end: z.ZodOptional<z.ZodNumber>;
99
+ }, z.core.$strict>;
100
+ refreshSeconds: z.ZodDefault<z.ZodNumber>;
101
+ maxPages: z.ZodDefault<z.ZodNumber>;
102
+ }, z.core.$strict>;
103
+ publishedAt: z.ZodNumber;
104
+ actor: z.ZodNullable<z.ZodString>;
105
+ }, z.core.$strip>;
106
+ declare const trackerStatusSchema: z.ZodObject<{
107
+ published: z.ZodObject<{
108
+ id: z.ZodString;
109
+ version: z.ZodString;
110
+ definition: z.ZodObject<{
111
+ key: z.ZodString;
112
+ title: z.ZodString;
113
+ source: z.ZodDiscriminatedUnion<[z.ZodObject<{
114
+ kind: z.ZodLiteral<"x-search">;
115
+ query: z.ZodString;
116
+ }, z.core.$strict>, z.ZodObject<{
117
+ kind: z.ZodLiteral<"custom">;
118
+ namespace: z.ZodString;
119
+ }, z.core.$strict>], "kind">;
120
+ window: z.ZodObject<{
121
+ start: z.ZodNumber;
122
+ end: z.ZodOptional<z.ZodNumber>;
123
+ }, z.core.$strict>;
124
+ refreshSeconds: z.ZodDefault<z.ZodNumber>;
125
+ maxPages: z.ZodDefault<z.ZodNumber>;
126
+ }, z.core.$strict>;
127
+ publishedAt: z.ZodNumber;
128
+ actor: z.ZodNullable<z.ZodString>;
129
+ }, z.core.$strip>;
130
+ paused: z.ZodBoolean;
131
+ state: z.ZodEnum<{
132
+ error: "error";
133
+ idle: "idle";
134
+ syncing: "syncing";
135
+ complete: "complete";
136
+ }>;
137
+ lastStartedAt: z.ZodNullable<z.ZodNumber>;
138
+ lastCompletedAt: z.ZodNullable<z.ZodNumber>;
139
+ nextSyncAt: z.ZodNullable<z.ZodNumber>;
140
+ coverage: z.ZodEnum<{
141
+ unknown: "unknown";
142
+ complete: "complete";
143
+ partial: "partial";
144
+ }>;
145
+ error: z.ZodNullable<z.ZodString>;
146
+ records: z.ZodNumber;
147
+ }, z.core.$strip>;
148
+ type TrackerStatus = z.infer<typeof trackerStatusSchema>;
149
+ declare const trackerControlSchema: z.ZodObject<{
150
+ actionId: z.ZodString;
151
+ action: z.ZodEnum<{
152
+ pause: "pause";
153
+ resume: "resume";
154
+ refresh: "refresh";
155
+ }>;
156
+ }, z.core.$strict>;
157
+ declare const trackerRecordInputSchema: z.ZodObject<{
158
+ id: z.ZodString;
159
+ occurredAt: z.ZodNumber;
160
+ observedAt: z.ZodNumber;
161
+ author: z.ZodDefault<z.ZodNullable<z.ZodObject<{
162
+ id: z.ZodString;
163
+ verified: z.ZodDefault<z.ZodNullable<z.ZodBoolean>>;
164
+ }, z.core.$strict>>>;
165
+ data: z.ZodRecord<z.ZodString, z.ZodJSONSchema>;
166
+ removed: z.ZodDefault<z.ZodBoolean>;
167
+ }, z.core.$strict>;
168
+ declare const trackerRecordSchema: z.ZodObject<{
169
+ id: z.ZodString;
170
+ occurredAt: z.ZodNumber;
171
+ observedAt: z.ZodNumber;
172
+ author: z.ZodDefault<z.ZodNullable<z.ZodObject<{
173
+ id: z.ZodString;
174
+ verified: z.ZodDefault<z.ZodNullable<z.ZodBoolean>>;
175
+ }, z.core.$strict>>>;
176
+ data: z.ZodRecord<z.ZodString, z.ZodJSONSchema>;
177
+ removed: z.ZodDefault<z.ZodBoolean>;
178
+ source: z.ZodString;
179
+ firstSeenAt: z.ZodNumber;
180
+ }, z.core.$strict>;
181
+ type TrackerRecord = z.infer<typeof trackerRecordSchema>;
182
+ declare const trackerIngestSchema: z.ZodObject<{
183
+ actionId: z.ZodString;
184
+ records: z.ZodArray<z.ZodObject<{
185
+ id: z.ZodString;
186
+ occurredAt: z.ZodNumber;
187
+ observedAt: z.ZodNumber;
188
+ author: z.ZodDefault<z.ZodNullable<z.ZodObject<{
189
+ id: z.ZodString;
190
+ verified: z.ZodDefault<z.ZodNullable<z.ZodBoolean>>;
191
+ }, z.core.$strict>>>;
192
+ data: z.ZodRecord<z.ZodString, z.ZodJSONSchema>;
193
+ removed: z.ZodDefault<z.ZodBoolean>;
194
+ }, z.core.$strict>>;
195
+ }, z.core.$strict>;
196
+ declare const trackerIngestResultSchema: z.ZodObject<{
197
+ stored: z.ZodNumber;
198
+ }, z.core.$strip>;
199
+ declare const trackerQuerySchema: z.ZodObject<{
200
+ author: z.ZodOptional<z.ZodString>;
201
+ member: z.ZodOptional<z.ZodString>;
202
+ verified: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodPipe<z.ZodEnum<{
203
+ true: "true";
204
+ false: "false";
205
+ }>, z.ZodTransform<boolean, "true" | "false">>]>>;
206
+ since: z.ZodOptional<z.ZodCoercedNumber<unknown>>;
207
+ until: z.ZodOptional<z.ZodCoercedNumber<unknown>>;
208
+ removed: z.ZodDefault<z.ZodUnion<readonly [z.ZodBoolean, z.ZodPipe<z.ZodEnum<{
209
+ true: "true";
210
+ false: "false";
211
+ }>, z.ZodTransform<boolean, "true" | "false">>]>>;
212
+ minLikes: z.ZodOptional<z.ZodCoercedNumber<unknown>>;
213
+ minViews: z.ZodOptional<z.ZodCoercedNumber<unknown>>;
214
+ limit: z.ZodDefault<z.ZodCoercedNumber<unknown>>;
215
+ cursor: z.ZodOptional<z.ZodString>;
216
+ }, z.core.$strict>;
217
+ type TrackerQuery = z.input<typeof trackerQuerySchema>;
218
+ declare const trackerPageSchema: z.ZodObject<{
219
+ tracker: z.ZodString;
220
+ items: z.ZodArray<z.ZodObject<{
221
+ id: z.ZodString;
222
+ occurredAt: z.ZodNumber;
223
+ observedAt: z.ZodNumber;
224
+ author: z.ZodDefault<z.ZodNullable<z.ZodObject<{
225
+ id: z.ZodString;
226
+ verified: z.ZodDefault<z.ZodNullable<z.ZodBoolean>>;
227
+ }, z.core.$strict>>>;
228
+ data: z.ZodRecord<z.ZodString, z.ZodJSONSchema>;
229
+ removed: z.ZodDefault<z.ZodBoolean>;
230
+ source: z.ZodString;
231
+ firstSeenAt: z.ZodNumber;
232
+ }, z.core.$strict>>;
233
+ nextCursor: z.ZodNullable<z.ZodString>;
234
+ total: z.ZodNumber;
235
+ status: z.ZodObject<{
236
+ published: z.ZodObject<{
237
+ id: z.ZodString;
238
+ version: z.ZodString;
239
+ definition: z.ZodObject<{
240
+ key: z.ZodString;
241
+ title: z.ZodString;
242
+ source: z.ZodDiscriminatedUnion<[z.ZodObject<{
243
+ kind: z.ZodLiteral<"x-search">;
244
+ query: z.ZodString;
245
+ }, z.core.$strict>, z.ZodObject<{
246
+ kind: z.ZodLiteral<"custom">;
247
+ namespace: z.ZodString;
248
+ }, z.core.$strict>], "kind">;
249
+ window: z.ZodObject<{
250
+ start: z.ZodNumber;
251
+ end: z.ZodOptional<z.ZodNumber>;
252
+ }, z.core.$strict>;
253
+ refreshSeconds: z.ZodDefault<z.ZodNumber>;
254
+ maxPages: z.ZodDefault<z.ZodNumber>;
255
+ }, z.core.$strict>;
256
+ publishedAt: z.ZodNumber;
257
+ actor: z.ZodNullable<z.ZodString>;
258
+ }, z.core.$strip>;
259
+ paused: z.ZodBoolean;
260
+ state: z.ZodEnum<{
261
+ error: "error";
262
+ idle: "idle";
263
+ syncing: "syncing";
264
+ complete: "complete";
265
+ }>;
266
+ lastStartedAt: z.ZodNullable<z.ZodNumber>;
267
+ lastCompletedAt: z.ZodNullable<z.ZodNumber>;
268
+ nextSyncAt: z.ZodNullable<z.ZodNumber>;
269
+ coverage: z.ZodEnum<{
270
+ unknown: "unknown";
271
+ complete: "complete";
272
+ partial: "partial";
273
+ }>;
274
+ error: z.ZodNullable<z.ZodString>;
275
+ records: z.ZodNumber;
276
+ }, z.core.$strip>;
277
+ }, z.core.$strip>;
278
+ declare const trackerSummarySchema: z.ZodObject<{
279
+ records: z.ZodNumber;
280
+ authors: z.ZodNumber;
281
+ metrics: z.ZodObject<{
282
+ likes: z.ZodNumber;
283
+ replies: z.ZodNumber;
284
+ reposts: z.ZodNumber;
285
+ quotes: z.ZodNumber;
286
+ views: z.ZodNumber;
287
+ bookmarks: z.ZodNumber;
288
+ }, z.core.$strip>;
289
+ missingMetrics: z.ZodNumber;
290
+ status: z.ZodObject<{
291
+ published: z.ZodObject<{
292
+ id: z.ZodString;
293
+ version: z.ZodString;
294
+ definition: z.ZodObject<{
295
+ key: z.ZodString;
296
+ title: z.ZodString;
297
+ source: z.ZodDiscriminatedUnion<[z.ZodObject<{
298
+ kind: z.ZodLiteral<"x-search">;
299
+ query: z.ZodString;
300
+ }, z.core.$strict>, z.ZodObject<{
301
+ kind: z.ZodLiteral<"custom">;
302
+ namespace: z.ZodString;
303
+ }, z.core.$strict>], "kind">;
304
+ window: z.ZodObject<{
305
+ start: z.ZodNumber;
306
+ end: z.ZodOptional<z.ZodNumber>;
307
+ }, z.core.$strict>;
308
+ refreshSeconds: z.ZodDefault<z.ZodNumber>;
309
+ maxPages: z.ZodDefault<z.ZodNumber>;
310
+ }, z.core.$strict>;
311
+ publishedAt: z.ZodNumber;
312
+ actor: z.ZodNullable<z.ZodString>;
313
+ }, z.core.$strip>;
314
+ paused: z.ZodBoolean;
315
+ state: z.ZodEnum<{
316
+ error: "error";
317
+ idle: "idle";
318
+ syncing: "syncing";
319
+ complete: "complete";
320
+ }>;
321
+ lastStartedAt: z.ZodNullable<z.ZodNumber>;
322
+ lastCompletedAt: z.ZodNullable<z.ZodNumber>;
323
+ nextSyncAt: z.ZodNullable<z.ZodNumber>;
324
+ coverage: z.ZodEnum<{
325
+ unknown: "unknown";
326
+ complete: "complete";
327
+ partial: "partial";
328
+ }>;
329
+ error: z.ZodNullable<z.ZodString>;
330
+ records: z.ZodNumber;
331
+ }, z.core.$strip>;
332
+ }, z.core.$strip>;
333
+ /** Read-only capabilities in hosted quest evaluation; results are captured for replay. */
334
+ type TrackerReader = {
335
+ records(reference: string | {
336
+ key: string;
337
+ }, query?: TrackerQuery): Promise<z.infer<typeof trackerPageSchema>>;
338
+ summary(reference: string | {
339
+ key: string;
340
+ }, query?: TrackerQuery): Promise<z.infer<typeof trackerSummarySchema>>;
341
+ };
342
+
3
343
  declare const communityTimeZoneSchema: z.ZodString;
4
344
  declare const streakPolicySchema: z.ZodObject<{
5
345
  kind: z.ZodLiteral<"streak">;
@@ -2384,4 +2724,4 @@ declare function parseSettings(fields: Record<string, SettingField>, input: unkn
2384
2724
  declare function missingResourceSettings(fields: Record<string, SettingField>, values: SettingsValues): string[];
2385
2725
  declare function compatibleSettingKinds(previous: SettingField, next: SettingField): boolean;
2386
2726
 
2387
- export { leaderboardQuerySchema as $, type AuthoringIdentity as A, type Budget as B, completionKeySchema as C, type DiscordMember as D, completionPolicySchema as E, discordMemberInputSchema as F, discordMemberSchema as G, discordMessageInputSchema as H, type IntegrationProvider as I, discordMessageSchema as J, discordReactionSchema as K, type LeaderboardQuery as L, discordServerSchema as M, integrationProviderSchema as N, type Observation as O, type ProjectIntegration as P, type QuizContent as Q, type ReferralDefinition as R, type SolanaBalance as S, leaderboardArtifactSchema as T, leaderboardAuthoringSchema as U, leaderboardDefinitionSchema as V, type WalletConnection as W, leaderboardExclusionSchema as X, leaderboardGroupSchema as Y, leaderboardPageSchema as Z, leaderboardPreviewSchema as _, type DiscordMessage as a, leaderboardRowSchema as a0, leaderboardWindowSchema as a1, missingResourceSettings as a2, observationInputSchema as a3, observationReceiptSchema as a4, observationSchema as a5, parseSettings as a6, pointsAccountSchema as a7, pointsEntrySchema as a8, pointsMutationSchema as a9, streakProgressSchema as aA, walletChallengeSchema as aB, walletConnectionSchema as aC, pointsResultSchema as aa, projectIntegrationSchema as ab, publishedLeaderboardSchema as ac, publishedReferralSchema as ad, quizChoiceSchema as ae, quizContentSchema as af, quizQuestionSchema as ag, quizQuestionsSchema as ah, referralAccountSchema as ai, referralArtifactSchema as aj, referralAuthoringSchema as ak, referralControlSchema as al, referralDefinitionSchema as am, referralHistorySchema as an, referralManagementSchema as ao, referralRelationshipSchema as ap, referralSummarySchema as aq, resourceOptionsSchema as ar, resourceRequestSchema as as, resourceSourceSchema as at, settingFieldSchema as au, settingsFieldsSchema as av, settingsValuesSchema as aw, solanaAddressSchema as ax, solanaBalanceSchema as ay, streakPolicySchema as az, type StreakPolicy as b, defineReferral as c, defineLeaderboard as d, discord as e, streak as f, walletProofSchema as g, type AuthProvider as h, type AccountConnection as i, type LeaderboardDefinition as j, type LeaderboardPage as k, type ResourceOption as l, type ResourceSource as m, type SettingField as n, observationTriggerSchema as o, pointLedgers as p, type SettingsValues as q, referralAcceptSchema as r, settings as s, type StreakProgress as t, accountConnectionSchema as u, authProviderSchema as v, walletChallengeInputSchema as w, budgetSchema as x, communityTimeZoneSchema as y, compatibleSettingKinds as z };
2727
+ export { discordServerSchema as $, type AuthoringIdentity as A, type Budget as B, type TrackerRecord as C, type DiscordMember as D, type TrackerStatus as E, accountConnectionSchema as F, authProviderSchema as G, budgetSchema as H, type IntegrationProvider as I, communityTimeZoneSchema as J, compatibleSettingKinds as K, type LeaderboardQuery as L, completionKeySchema as M, completionPolicySchema as N, type Observation as O, type ProjectIntegration as P, type QuizContent as Q, type ReferralDefinition as R, type SolanaBalance as S, type TrackerReader as T, discordMemberInputSchema as U, discordMemberSchema as V, type WalletConnection as W, type XTweet as X, discordMessageInputSchema as Y, discordMessageSchema as Z, discordReactionSchema as _, type DiscordMessage as a, integrationProviderSchema as a0, leaderboardArtifactSchema as a1, leaderboardAuthoringSchema as a2, leaderboardDefinitionSchema as a3, leaderboardExclusionSchema as a4, leaderboardGroupSchema as a5, leaderboardPageSchema as a6, leaderboardPreviewSchema as a7, leaderboardQuerySchema as a8, leaderboardRowSchema as a9, referralSummarySchema as aA, resourceOptionsSchema as aB, resourceRequestSchema as aC, resourceSourceSchema as aD, settingFieldSchema as aE, settingsFieldsSchema as aF, settingsValuesSchema as aG, solanaAddressSchema as aH, solanaBalanceSchema as aI, streakPolicySchema as aJ, streakProgressSchema as aK, trackerArtifactSchema as aL, trackerControlSchema as aM, trackerDefinitionSchema as aN, trackerIngestResultSchema as aO, trackerIngestSchema as aP, trackerPageSchema as aQ, trackerQuerySchema as aR, trackerRecordInputSchema as aS, trackerRecordSchema as aT, trackerSourceSchema as aU, trackerStatusSchema as aV, trackerSummarySchema as aW, walletChallengeSchema as aX, walletConnectionSchema as aY, xTweetSchema as aZ, leaderboardWindowSchema as aa, missingResourceSettings as ab, observationInputSchema as ac, observationReceiptSchema as ad, observationSchema as ae, parseSettings as af, pointsAccountSchema as ag, pointsEntrySchema as ah, pointsMutationSchema as ai, pointsResultSchema as aj, projectIntegrationSchema as ak, publishedLeaderboardSchema as al, publishedReferralSchema as am, publishedTrackerSchema as an, quizChoiceSchema as ao, quizContentSchema as ap, quizQuestionSchema as aq, quizQuestionsSchema as ar, referralAccountSchema as as, referralArtifactSchema as at, referralAuthoringSchema as au, referralControlSchema as av, referralDefinitionSchema as aw, referralHistorySchema as ax, referralManagementSchema as ay, referralRelationshipSchema as az, type StreakPolicy as b, customSource as c, defineLeaderboard as d, defineReferral as e, defineTracker as f, discord as g, streak as h, walletProofSchema as i, type AuthProvider as j, type AccountConnection as k, type LeaderboardDefinition as l, type LeaderboardPage as m, type ResourceOption as n, observationTriggerSchema as o, pointLedgers as p, type ResourceSource as q, referralAcceptSchema as r, settings as s, type SettingField as t, type SettingsValues as u, type StreakProgress as v, walletChallengeInputSchema as w, x, type TrackerDefinition as y, type TrackerQuery as z };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@domino-sdk/relay",
3
- "version": "0.11.0",
3
+ "version": "0.13.0",
4
4
  "type": "module",
5
5
  "exports": {
6
6
  ".": {