@learncard/network-plugin 3.0.0 → 3.1.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.
@@ -639,10 +639,10 @@ function $constructor(name, initializer3, params) {
639
639
  let Definition = _Definition;
640
640
  Object.defineProperty(Definition, "name", { value: name });
641
641
  function _(def) {
642
- var _a4;
642
+ var _a5;
643
643
  const inst = params?.Parent ? new Definition() : this;
644
644
  init(inst, def);
645
- (_a4 = inst._zod).deferred ?? (_a4.deferred = []);
645
+ (_a5 = inst._zod).deferred ?? (_a5.deferred = []);
646
646
  for (const fn of inst._zod.deferred) {
647
647
  fn();
648
648
  }
@@ -1308,8 +1308,8 @@ function explicitlyAborted(x, startIndex = 0) {
1308
1308
  __name(explicitlyAborted, "explicitlyAborted");
1309
1309
  function prefixIssues(path, issues) {
1310
1310
  return issues.map((iss) => {
1311
- var _a4;
1312
- (_a4 = iss).path ?? (_a4.path = []);
1311
+ var _a5;
1312
+ (_a5 = iss).path ?? (_a5.path = []);
1313
1313
  iss.path.unshift(path);
1314
1314
  return iss;
1315
1315
  });
@@ -1512,7 +1512,7 @@ __name(formatError, "formatError");
1512
1512
  function treeifyError(error51, mapper = (issue2) => issue2.message) {
1513
1513
  const result = { errors: [] };
1514
1514
  const processError = /* @__PURE__ */ __name((error52, path = []) => {
1515
- var _a4, _b;
1515
+ var _a5, _b;
1516
1516
  for (const issue2 of error52.issues) {
1517
1517
  if (issue2.code === "invalid_union" && issue2.errors.length) {
1518
1518
  issue2.errors.map((issues) => processError({ issues }, [...path, ...issue2.path]));
@@ -1533,7 +1533,7 @@ function treeifyError(error51, mapper = (issue2) => issue2.message) {
1533
1533
  const terminal = i === fullpath.length - 1;
1534
1534
  if (typeof el === "string") {
1535
1535
  curr.properties ?? (curr.properties = {});
1536
- (_a4 = curr.properties)[el] ?? (_a4[el] = { errors: [] });
1536
+ (_a5 = curr.properties)[el] ?? (_a5[el] = { errors: [] });
1537
1537
  curr = curr.properties[el];
1538
1538
  } else {
1539
1539
  curr.items ?? (curr.items = []);
@@ -1838,10 +1838,10 @@ var sha512_base64url = /* @__PURE__ */ fixedBase64url(86);
1838
1838
 
1839
1839
  // ../../../node_modules/zod/v4/core/checks.js
1840
1840
  var $ZodCheck = /* @__PURE__ */ $constructor("$ZodCheck", (inst, def) => {
1841
- var _a4;
1841
+ var _a5;
1842
1842
  inst._zod ?? (inst._zod = {});
1843
1843
  inst._zod.def = def;
1844
- (_a4 = inst._zod).onattach ?? (_a4.onattach = []);
1844
+ (_a5 = inst._zod).onattach ?? (_a5.onattach = []);
1845
1845
  });
1846
1846
  var numericOriginMap = {
1847
1847
  number: "number",
@@ -1907,8 +1907,8 @@ var $ZodCheckGreaterThan = /* @__PURE__ */ $constructor("$ZodCheckGreaterThan",
1907
1907
  var $ZodCheckMultipleOf = /* @__PURE__ */ $constructor("$ZodCheckMultipleOf", (inst, def) => {
1908
1908
  $ZodCheck.init(inst, def);
1909
1909
  inst._zod.onattach.push((inst2) => {
1910
- var _a4;
1911
- (_a4 = inst2._zod.bag).multipleOf ?? (_a4.multipleOf = def.value);
1910
+ var _a5;
1911
+ (_a5 = inst2._zod.bag).multipleOf ?? (_a5.multipleOf = def.value);
1912
1912
  });
1913
1913
  inst._zod.check = (payload) => {
1914
1914
  if (typeof payload.value !== typeof def.value)
@@ -2041,9 +2041,9 @@ var $ZodCheckBigIntFormat = /* @__PURE__ */ $constructor("$ZodCheckBigIntFormat"
2041
2041
  };
2042
2042
  });
2043
2043
  var $ZodCheckMaxSize = /* @__PURE__ */ $constructor("$ZodCheckMaxSize", (inst, def) => {
2044
- var _a4;
2044
+ var _a5;
2045
2045
  $ZodCheck.init(inst, def);
2046
- (_a4 = inst._zod.def).when ?? (_a4.when = (payload) => {
2046
+ (_a5 = inst._zod.def).when ?? (_a5.when = (payload) => {
2047
2047
  const val = payload.value;
2048
2048
  return !nullish(val) && val.size !== void 0;
2049
2049
  });
@@ -2069,9 +2069,9 @@ var $ZodCheckMaxSize = /* @__PURE__ */ $constructor("$ZodCheckMaxSize", (inst, d
2069
2069
  };
2070
2070
  });
2071
2071
  var $ZodCheckMinSize = /* @__PURE__ */ $constructor("$ZodCheckMinSize", (inst, def) => {
2072
- var _a4;
2072
+ var _a5;
2073
2073
  $ZodCheck.init(inst, def);
2074
- (_a4 = inst._zod.def).when ?? (_a4.when = (payload) => {
2074
+ (_a5 = inst._zod.def).when ?? (_a5.when = (payload) => {
2075
2075
  const val = payload.value;
2076
2076
  return !nullish(val) && val.size !== void 0;
2077
2077
  });
@@ -2097,9 +2097,9 @@ var $ZodCheckMinSize = /* @__PURE__ */ $constructor("$ZodCheckMinSize", (inst, d
2097
2097
  };
2098
2098
  });
2099
2099
  var $ZodCheckSizeEquals = /* @__PURE__ */ $constructor("$ZodCheckSizeEquals", (inst, def) => {
2100
- var _a4;
2100
+ var _a5;
2101
2101
  $ZodCheck.init(inst, def);
2102
- (_a4 = inst._zod.def).when ?? (_a4.when = (payload) => {
2102
+ (_a5 = inst._zod.def).when ?? (_a5.when = (payload) => {
2103
2103
  const val = payload.value;
2104
2104
  return !nullish(val) && val.size !== void 0;
2105
2105
  });
@@ -2127,9 +2127,9 @@ var $ZodCheckSizeEquals = /* @__PURE__ */ $constructor("$ZodCheckSizeEquals", (i
2127
2127
  };
2128
2128
  });
2129
2129
  var $ZodCheckMaxLength = /* @__PURE__ */ $constructor("$ZodCheckMaxLength", (inst, def) => {
2130
- var _a4;
2130
+ var _a5;
2131
2131
  $ZodCheck.init(inst, def);
2132
- (_a4 = inst._zod.def).when ?? (_a4.when = (payload) => {
2132
+ (_a5 = inst._zod.def).when ?? (_a5.when = (payload) => {
2133
2133
  const val = payload.value;
2134
2134
  return !nullish(val) && val.length !== void 0;
2135
2135
  });
@@ -2156,9 +2156,9 @@ var $ZodCheckMaxLength = /* @__PURE__ */ $constructor("$ZodCheckMaxLength", (ins
2156
2156
  };
2157
2157
  });
2158
2158
  var $ZodCheckMinLength = /* @__PURE__ */ $constructor("$ZodCheckMinLength", (inst, def) => {
2159
- var _a4;
2159
+ var _a5;
2160
2160
  $ZodCheck.init(inst, def);
2161
- (_a4 = inst._zod.def).when ?? (_a4.when = (payload) => {
2161
+ (_a5 = inst._zod.def).when ?? (_a5.when = (payload) => {
2162
2162
  const val = payload.value;
2163
2163
  return !nullish(val) && val.length !== void 0;
2164
2164
  });
@@ -2185,9 +2185,9 @@ var $ZodCheckMinLength = /* @__PURE__ */ $constructor("$ZodCheckMinLength", (ins
2185
2185
  };
2186
2186
  });
2187
2187
  var $ZodCheckLengthEquals = /* @__PURE__ */ $constructor("$ZodCheckLengthEquals", (inst, def) => {
2188
- var _a4;
2188
+ var _a5;
2189
2189
  $ZodCheck.init(inst, def);
2190
- (_a4 = inst._zod.def).when ?? (_a4.when = (payload) => {
2190
+ (_a5 = inst._zod.def).when ?? (_a5.when = (payload) => {
2191
2191
  const val = payload.value;
2192
2192
  return !nullish(val) && val.length !== void 0;
2193
2193
  });
@@ -2216,7 +2216,7 @@ var $ZodCheckLengthEquals = /* @__PURE__ */ $constructor("$ZodCheckLengthEquals"
2216
2216
  };
2217
2217
  });
2218
2218
  var $ZodCheckStringFormat = /* @__PURE__ */ $constructor("$ZodCheckStringFormat", (inst, def) => {
2219
- var _a4, _b;
2219
+ var _a5, _b;
2220
2220
  $ZodCheck.init(inst, def);
2221
2221
  inst._zod.onattach.push((inst2) => {
2222
2222
  const bag = inst2._zod.bag;
@@ -2227,7 +2227,7 @@ var $ZodCheckStringFormat = /* @__PURE__ */ $constructor("$ZodCheckStringFormat"
2227
2227
  }
2228
2228
  });
2229
2229
  if (def.pattern)
2230
- (_a4 = inst._zod).check ?? (_a4.check = (payload) => {
2230
+ (_a5 = inst._zod).check ?? (_a5.check = (payload) => {
2231
2231
  def.pattern.lastIndex = 0;
2232
2232
  if (def.pattern.test(payload.value))
2233
2233
  return;
@@ -2432,7 +2432,7 @@ var version = {
2432
2432
 
2433
2433
  // ../../../node_modules/zod/v4/core/schemas.js
2434
2434
  var $ZodType = /* @__PURE__ */ $constructor("$ZodType", (inst, def) => {
2435
- var _a4;
2435
+ var _a5;
2436
2436
  inst ?? (inst = {});
2437
2437
  inst._zod.def = def;
2438
2438
  inst._zod.bag = inst._zod.bag || {};
@@ -2447,7 +2447,7 @@ var $ZodType = /* @__PURE__ */ $constructor("$ZodType", (inst, def) => {
2447
2447
  }
2448
2448
  }
2449
2449
  if (checks.length === 0) {
2450
- (_a4 = inst._zod).deferred ?? (_a4.deferred = []);
2450
+ (_a5 = inst._zod).deferred ?? (_a5.deferred = []);
2451
2451
  inst._zod.deferred?.push(() => {
2452
2452
  inst._zod.run = inst._zod.parse;
2453
2453
  });
@@ -11838,7 +11838,7 @@ function initializeContext(params) {
11838
11838
  }
11839
11839
  __name(initializeContext, "initializeContext");
11840
11840
  function process(schema, ctx, _params = { path: [], schemaPath: [] }) {
11841
- var _a4;
11841
+ var _a5;
11842
11842
  const def = schema._zod.def;
11843
11843
  const seen = ctx.seen.get(schema);
11844
11844
  if (seen) {
@@ -11886,7 +11886,7 @@ function process(schema, ctx, _params = { path: [], schemaPath: [] }) {
11886
11886
  delete result.schema.default;
11887
11887
  }
11888
11888
  if (ctx.io === "input" && "_prefault" in result.schema)
11889
- (_a4 = result.schema).default ?? (_a4.default = result.schema._prefault);
11889
+ (_a5 = result.schema).default ?? (_a5.default = result.schema._prefault);
11890
11890
  delete result.schema._prefault;
11891
11891
  const _result = ctx.seen.get(schema);
11892
11892
  return _result.schema;
@@ -15462,7 +15462,8 @@ var AssociationTypeValidator = external_exports.enum([
15462
15462
  "replacedBy"
15463
15463
  ]).or(external_exports.string());
15464
15464
  var AssociationValidator = external_exports.object({
15465
- type: external_exports.string().array().nonempty(),
15465
+ // Accept compacted scalars while retaining the existing permissive array contract.
15466
+ type: external_exports.string().min(1).or(external_exports.string().array().nonempty()),
15466
15467
  associationType: AssociationTypeValidator,
15467
15468
  sourceId: external_exports.string().optional(),
15468
15469
  targetId: external_exports.string()
@@ -16285,11 +16286,48 @@ var ConsentFlowContractDetailsValidator = external_exports.object({
16285
16286
  updatedAt: external_exports.string(),
16286
16287
  expiresAt: external_exports.string().optional(),
16287
16288
  autoBoosts: external_exports.string().array().optional(),
16288
- writers: external_exports.array(LCNProfileValidator).optional()
16289
+ writers: external_exports.array(LCNProfileValidator).optional(),
16290
+ recipients: external_exports.array(LCNPublicProfileValidator.extend({ did: external_exports.string() })).optional(),
16291
+ audienceVersion: external_exports.number().int().nonnegative().optional()
16289
16292
  });
16290
- var ConsentFlowContractRequestStatusValidator = external_exports.enum(["pending", "accepted", "denied"]).nullable();
16293
+ var ConsentFlowContractRequestStatusValidator = external_exports.enum(["pending", "accepted", "denied", "cancelled"]).nullable();
16291
16294
  var ConsentFlowContractRequestReadStatusValidator = external_exports.enum(["unseen", "seen"]).nullable();
16292
- var ConsentFlowContractRequestForProfileValidator = external_exports.object({
16295
+ var ConsentFlowReferralValidator = external_exports.object({
16296
+ requestId: external_exports.string(),
16297
+ requestedBy: external_exports.string(),
16298
+ externalReferenceId: external_exports.string().max(256).optional()
16299
+ });
16300
+ var ContractRequestFieldsValidator = ConsentFlowReferralValidator.partial().extend({
16301
+ requestedAt: external_exports.string().optional(),
16302
+ message: external_exports.string().max(500).optional()
16303
+ });
16304
+ var SendContractRequestValidator = external_exports.object({
16305
+ contractUri: external_exports.string(),
16306
+ targetProfileId: external_exports.string(),
16307
+ externalReferenceId: external_exports.string().trim().min(1).max(256).optional(),
16308
+ message: external_exports.string().trim().max(500).optional()
16309
+ });
16310
+ var ConsentFlowWebhookMetadataValidator = external_exports.object({
16311
+ eventId: external_exports.string(),
16312
+ deliveryKey: external_exports.string(),
16313
+ event: external_exports.enum([
16314
+ "request_sent",
16315
+ "request_accepted",
16316
+ "request_denied",
16317
+ "request_cancelled",
16318
+ "consent_created",
16319
+ "consent_updated",
16320
+ "consent_withdrawn",
16321
+ "credentials_synced"
16322
+ ]),
16323
+ contractUri: external_exports.string(),
16324
+ termsUri: external_exports.string().optional(),
16325
+ requestId: external_exports.string().optional(),
16326
+ requestedBy: external_exports.string().optional(),
16327
+ externalReferenceId: external_exports.string().optional(),
16328
+ recipientRole: external_exports.enum(["owner", "recipient", "requester", "target"])
16329
+ });
16330
+ var ConsentFlowContractRequestForProfileValidator = ContractRequestFieldsValidator.extend({
16293
16331
  profile: LCNProfileValidator,
16294
16332
  status: ConsentFlowContractRequestStatusValidator,
16295
16333
  readStatus: ConsentFlowContractRequestReadStatusValidator.optional()
@@ -16335,6 +16373,7 @@ var PaginatedConsentFlowTermsValidator = PaginationResponseValidator.extend({
16335
16373
  expiresAt: external_exports.string().optional(),
16336
16374
  oneTime: external_exports.boolean().optional(),
16337
16375
  terms: ConsentFlowTermsValidator,
16376
+ referral: ConsentFlowReferralValidator.optional(),
16338
16377
  contract: ConsentFlowContractDetailsValidator,
16339
16378
  uri: external_exports.string(),
16340
16379
  consenter: LCNProfileValidator,
@@ -16430,6 +16469,7 @@ var ConsentFlowTransactionValidator = external_exports.object({
16430
16469
  oneTime: external_exports.boolean().optional(),
16431
16470
  terms: ConsentFlowTermsValidator.optional(),
16432
16471
  guardianApproval: ConsentFlowGuardianApprovalValidator.optional(),
16472
+ referral: ConsentFlowReferralValidator.optional(),
16433
16473
  id: external_exports.string(),
16434
16474
  action: ConsentFlowTransactionActionValidator,
16435
16475
  date: external_exports.string(),
@@ -16440,6 +16480,7 @@ var HolderExportConsentRecordValidator = external_exports.object({
16440
16480
  status: ConsentFlowTermsStatusValidator,
16441
16481
  contract: ConsentFlowContractDetailsValidator,
16442
16482
  terms: ConsentFlowTermsValidator,
16483
+ referral: ConsentFlowReferralValidator.optional(),
16443
16484
  transactions: ConsentFlowTransactionValidator.array()
16444
16485
  });
16445
16486
  var HolderExportMetadataValidator = external_exports.object({
@@ -17176,7 +17217,7 @@ var AppStoreListingSubmitterValidator = external_exports.object({
17176
17217
  displayName: external_exports.string(),
17177
17218
  email: external_exports.string().optional()
17178
17219
  });
17179
- var AppStoreListingValidator = external_exports.object({
17220
+ var AppStoreListingFieldsValidator = external_exports.object({
17180
17221
  listing_id: external_exports.string(),
17181
17222
  slug: external_exports.string().optional(),
17182
17223
  display_name: external_exports.string(),
@@ -17202,15 +17243,33 @@ var AppStoreListingValidator = external_exports.object({
17202
17243
  submitter: AppStoreListingSubmitterValidator.optional(),
17203
17244
  contact_email: external_exports.string().email().optional()
17204
17245
  });
17246
+ var PendingListingUpdateStatusValidator = external_exports.enum(["DRAFT", "PENDING_REVIEW"]);
17247
+ var PendingListingUpdateValidator = external_exports.object({
17248
+ status: PendingListingUpdateStatusValidator,
17249
+ submitted_at: external_exports.string().optional(),
17250
+ changes: AppStoreListingFieldsValidator.omit({
17251
+ listing_id: true,
17252
+ app_listing_status: true,
17253
+ promotion_level: true,
17254
+ submitted_at: true,
17255
+ submitter: true
17256
+ }).partial(),
17257
+ manifest_version: external_exports.number().int().min(1).optional()
17258
+ });
17259
+ var AppStoreListingValidator = AppStoreListingFieldsValidator.extend({
17260
+ pending_update: PendingListingUpdateValidator.optional()
17261
+ });
17205
17262
  var AppStoreListingCreateValidator = AppStoreListingValidator.omit({
17206
17263
  listing_id: true,
17207
17264
  app_listing_status: true,
17208
- promotion_level: true
17265
+ promotion_level: true,
17266
+ pending_update: true
17209
17267
  });
17210
17268
  var AppStoreListingUpdateValidator = AppStoreListingValidator.partial().omit({
17211
17269
  listing_id: true,
17212
17270
  app_listing_status: true,
17213
- promotion_level: true
17271
+ promotion_level: true,
17272
+ pending_update: true
17214
17273
  });
17215
17274
  var InstalledAppValidator = AppStoreListingValidator.extend({
17216
17275
  installed_at: external_exports.string()
@@ -17225,12 +17284,87 @@ var AppBoostValidator = external_exports.object({
17225
17284
  templateAlias: external_exports.string().min(1).max(50).regex(/^[a-z0-9-]+$/),
17226
17285
  boostUri: external_exports.string()
17227
17286
  });
17228
- var SendCredentialEventValidator = external_exports.object({
17287
+ var InlineWalletCategoryValidator = external_exports.enum([
17288
+ "Achievement",
17289
+ "Skill",
17290
+ "ID",
17291
+ "Learning History",
17292
+ "Work History",
17293
+ "Social Badges",
17294
+ "Membership",
17295
+ "Accomplishment",
17296
+ "Experiences",
17297
+ "Accommodation",
17298
+ "Family"
17299
+ ]);
17300
+ var InlineAlignmentValidator = external_exports.object({
17301
+ name: external_exports.string(),
17302
+ url: external_exports.string(),
17303
+ framework: external_exports.string().optional(),
17304
+ code: external_exports.string().optional()
17305
+ }).passthrough();
17306
+ var InlineEvidenceValidator = external_exports.object({
17307
+ id: external_exports.string().optional(),
17308
+ name: external_exports.string().optional(),
17309
+ narrative: external_exports.string().optional()
17310
+ }).passthrough();
17311
+ var InlineWalletSkillTagValidator = external_exports.object({
17312
+ frameworkId: external_exports.string(),
17313
+ id: external_exports.string(),
17314
+ proficiencyLevel: external_exports.string().optional()
17315
+ }).passthrough();
17316
+ var SimpleInlineCredentialTemplateValidator = external_exports.object({
17317
+ rawCredential: external_exports.undefined().optional(),
17318
+ name: external_exports.string(),
17319
+ description: external_exports.string().optional(),
17320
+ image: external_exports.string().optional(),
17321
+ issuerName: external_exports.string().optional(),
17322
+ achievementType: external_exports.string().optional(),
17323
+ category: InlineWalletCategoryValidator.optional(),
17324
+ criteria: external_exports.object({
17325
+ narrative: external_exports.string().optional(),
17326
+ url: external_exports.string().optional()
17327
+ }).passthrough().optional(),
17328
+ alignments: external_exports.array(InlineAlignmentValidator).optional(),
17329
+ tags: external_exports.array(external_exports.string()).optional(),
17330
+ activity: external_exports.object({
17331
+ startDate: external_exports.string().optional(),
17332
+ endDate: external_exports.string().optional()
17333
+ }).passthrough().optional(),
17334
+ credits: external_exports.object({
17335
+ earned: external_exports.union([external_exports.number(), external_exports.string()]).optional(),
17336
+ available: external_exports.union([external_exports.number(), external_exports.string()]).optional()
17337
+ }).passthrough().optional(),
17338
+ validUntil: external_exports.string().optional(),
17339
+ evidence: external_exports.array(InlineEvidenceValidator).optional(),
17340
+ walletSkills: external_exports.array(InlineWalletSkillTagValidator).optional()
17341
+ }).passthrough();
17342
+ var RawInlineCredentialTemplateValidator = external_exports.object({
17343
+ rawCredential: external_exports.record(external_exports.string(), external_exports.unknown()),
17344
+ category: InlineWalletCategoryValidator.optional(),
17345
+ walletSkills: external_exports.array(InlineWalletSkillTagValidator).optional()
17346
+ }).passthrough();
17347
+ var InlineCredentialTemplateValidator = external_exports.union([
17348
+ RawInlineCredentialTemplateValidator,
17349
+ SimpleInlineCredentialTemplateValidator
17350
+ ]);
17351
+ var LegacySendCredentialEventValidator = external_exports.object({
17229
17352
  type: external_exports.literal("send-credential"),
17230
17353
  templateAlias: external_exports.string(),
17231
17354
  templateData: external_exports.record(external_exports.string(), external_exports.unknown()).optional(),
17232
17355
  preventDuplicateClaim: external_exports.boolean().optional()
17233
17356
  });
17357
+ var InlineSendCredentialEventValidator = external_exports.object({
17358
+ type: external_exports.literal("send-credential"),
17359
+ alias: external_exports.string(),
17360
+ template: InlineCredentialTemplateValidator,
17361
+ templateData: external_exports.record(external_exports.string(), external_exports.unknown()).optional(),
17362
+ preventDuplicateClaim: external_exports.boolean().optional()
17363
+ });
17364
+ var SendCredentialEventValidator = external_exports.union([
17365
+ LegacySendCredentialEventValidator,
17366
+ InlineSendCredentialEventValidator
17367
+ ]);
17234
17368
  var CheckCredentialEventValidator = external_exports.object({
17235
17369
  type: external_exports.literal("check-credential"),
17236
17370
  templateAlias: external_exports.string().optional(),
@@ -17325,7 +17459,119 @@ var GetCountersEventValidator = external_exports.object({
17325
17459
  type: external_exports.literal("get-counters"),
17326
17460
  keys: external_exports.array(counterKeyValidator).min(1).max(50).optional()
17327
17461
  });
17328
- var AppEventValidator = external_exports.discriminatedUnion("type", [
17462
+ var ConsentRequestWalletCategoryValidator = external_exports.enum([
17463
+ "Achievement",
17464
+ "Skill",
17465
+ "ID",
17466
+ "Learning History",
17467
+ "Work History",
17468
+ "Social Badges",
17469
+ "Membership",
17470
+ "Accomplishment",
17471
+ "Experiences",
17472
+ "Accommodation",
17473
+ "Family"
17474
+ ]);
17475
+ var ConsentRequestPersonalFieldValidator = external_exports.enum([
17476
+ "name",
17477
+ "email",
17478
+ "phone",
17479
+ "birthDate",
17480
+ "country",
17481
+ "avatar"
17482
+ ]);
17483
+ var ConsentRequestValidator = external_exports.object({
17484
+ read: external_exports.object({
17485
+ credentialCategories: external_exports.array(ConsentRequestWalletCategoryValidator).optional(),
17486
+ personalFields: external_exports.array(ConsentRequestPersonalFieldValidator).optional()
17487
+ }).optional(),
17488
+ write: external_exports.object({
17489
+ credentialCategories: external_exports.array(ConsentRequestWalletCategoryValidator).optional()
17490
+ }).optional(),
17491
+ reason: external_exports.string().optional()
17492
+ });
17493
+ var NormalizedConsentScopesValidator = external_exports.object({
17494
+ read: external_exports.object({
17495
+ credentialCategories: external_exports.array(ConsentRequestWalletCategoryValidator).default([]),
17496
+ personalFields: external_exports.array(ConsentRequestPersonalFieldValidator).default([])
17497
+ }),
17498
+ write: external_exports.object({
17499
+ credentialCategories: external_exports.array(ConsentRequestWalletCategoryValidator).default([])
17500
+ })
17501
+ });
17502
+ var CapturedTemplateRecordValidator = external_exports.object({
17503
+ alias: external_exports.string(),
17504
+ template: InlineCredentialTemplateValidator,
17505
+ version: external_exports.number().int().min(1),
17506
+ lastUsedAt: external_exports.string()
17507
+ }).passthrough();
17508
+ var CapturedConsentRecordValidator = external_exports.object({
17509
+ scopes: NormalizedConsentScopesValidator,
17510
+ reason: external_exports.string().optional(),
17511
+ lastUsedAt: external_exports.string()
17512
+ }).passthrough();
17513
+ var AppManifestValidator = external_exports.object({
17514
+ manifestVersion: external_exports.literal(1),
17515
+ appUrl: external_exports.string(),
17516
+ appKey: external_exports.string().max(200).optional(),
17517
+ suggestedName: external_exports.string().optional(),
17518
+ suggestedIconUrl: external_exports.string().optional(),
17519
+ permissions: external_exports.array(external_exports.string()).default([]),
17520
+ templates: external_exports.array(CapturedTemplateRecordValidator).default([]),
17521
+ consentRequests: external_exports.array(CapturedConsentRecordValidator).default([]),
17522
+ usedConsentContract: external_exports.boolean().optional(),
17523
+ featuresLaunched: external_exports.array(external_exports.string()).default([]),
17524
+ counterKeys: external_exports.array(external_exports.string()).default([]),
17525
+ usedLearnerContext: external_exports.boolean(),
17526
+ usedNotifications: external_exports.boolean(),
17527
+ firstCapturedAt: external_exports.string(),
17528
+ lastUpdatedAt: external_exports.string()
17529
+ }).passthrough();
17530
+ var AppManifestVersionStatusValidator = external_exports.enum(["draft", "active", "superseded"]);
17531
+ var AppManifestVersionValidator = external_exports.object({
17532
+ id: external_exports.string(),
17533
+ version: external_exports.number().int().min(1),
17534
+ manifestHash: external_exports.string(),
17535
+ manifest: AppManifestValidator,
17536
+ status: AppManifestVersionStatusValidator,
17537
+ createdAt: external_exports.string(),
17538
+ activatedAt: external_exports.string().optional()
17539
+ });
17540
+ var AppManifestStringDiffValidator = external_exports.object({
17541
+ added: external_exports.array(external_exports.string()),
17542
+ removed: external_exports.array(external_exports.string()),
17543
+ changed: external_exports.array(external_exports.string())
17544
+ });
17545
+ var AppManifestTemplateRefValidator = external_exports.object({
17546
+ alias: external_exports.string(),
17547
+ version: external_exports.number().int().min(1)
17548
+ });
17549
+ var AppManifestTemplateChangeValidator = external_exports.object({
17550
+ alias: external_exports.string(),
17551
+ fromVersion: external_exports.number().int().min(1),
17552
+ toVersion: external_exports.number().int().min(1)
17553
+ });
17554
+ var AppManifestDiffValidator = external_exports.object({
17555
+ permissions: AppManifestStringDiffValidator,
17556
+ templates: external_exports.object({
17557
+ added: external_exports.array(AppManifestTemplateRefValidator),
17558
+ removed: external_exports.array(AppManifestTemplateRefValidator),
17559
+ changed: external_exports.array(AppManifestTemplateChangeValidator)
17560
+ }),
17561
+ consentScopes: AppManifestStringDiffValidator,
17562
+ featurePaths: AppManifestStringDiffValidator,
17563
+ counterKeys: AppManifestStringDiffValidator,
17564
+ requiresReview: external_exports.boolean()
17565
+ });
17566
+ var UpsertConsentContractEventValidator = external_exports.object({
17567
+ type: external_exports.literal("upsert-consent-contract"),
17568
+ scopes: ConsentRequestValidator
17569
+ });
17570
+ var UpsertConsentContractResponseValidator = external_exports.object({
17571
+ contractUri: external_exports.string(),
17572
+ created: external_exports.boolean()
17573
+ });
17574
+ var AppEventValidator = external_exports.union([
17329
17575
  SendCredentialEventValidator,
17330
17576
  CheckCredentialEventValidator,
17331
17577
  CheckIssuanceStatusEventValidator,
@@ -17335,7 +17581,8 @@ var AppEventValidator = external_exports.discriminatedUnion("type", [
17335
17581
  SendNotificationEventValidator,
17336
17582
  IncrementCounterEventValidator,
17337
17583
  GetCounterEventValidator,
17338
- GetCountersEventValidator
17584
+ GetCountersEventValidator,
17585
+ UpsertConsentContractEventValidator
17339
17586
  ]);
17340
17587
  var AppEventInputValidator = external_exports.object({
17341
17588
  listingId: external_exports.string(),
@@ -17409,6 +17656,21 @@ var AuthSessionError = (_a3 = class extends Error {
17409
17656
  this.name = "AuthSessionError";
17410
17657
  }
17411
17658
  }, __name(_a3, "AuthSessionError"), __name2(_a3, "AuthSessionError"), _a3);
17659
+ var _a4;
17660
+ var UnsupportedSignInOperationError = (_a4 = class extends Error {
17661
+ constructor(operation, providerType) {
17662
+ super(`${operation} is not supported by ${providerType}`);
17663
+ this.operation = operation;
17664
+ this.providerType = providerType;
17665
+ this.name = "UnsupportedSignInOperationError";
17666
+ }
17667
+ }, __name(_a4, "UnsupportedSignInOperationError"), __name2(_a4, "UnsupportedSignInOperationError"), _a4);
17668
+ var EscrowPinStatusValidator = external_exports.object({
17669
+ state: external_exports.enum(["none", "enabled", "locked", "stale"]),
17670
+ enabled: external_exports.boolean(),
17671
+ attemptsRemaining: external_exports.number().int().nonnegative(),
17672
+ salt: external_exports.string().optional()
17673
+ });
17412
17674
  var BITSTRING_STATUS_PURPOSES = ["revocation", "suspension"];
17413
17675
  var BitstringStatusPurposeValidator = external_exports.enum(BITSTRING_STATUS_PURPOSES);
17414
17676
  var BitstringStatusListEntryValidator = external_exports.object({
@@ -17517,6 +17779,501 @@ var inAppMessagesFlagValidator = external_exports.object({
17517
17779
  version: external_exports.number().default(1),
17518
17780
  messages: external_exports.array(inAppMessageValidator).default([])
17519
17781
  }).passthrough();
17782
+ var SHARE_LINK_ID_BYTES = 16;
17783
+ var SHARE_CONTENT_KEY_BYTES = 32;
17784
+ var SHARE_IV_BYTES = 12;
17785
+ var SHARE_TAG_BYTES = 16;
17786
+ var MAX_SHARE_CIPHERTEXT_BYTES = 512 * 1024;
17787
+ var MAX_SHARE_RECOVERY_JWE_BYTES = 64 * 1024;
17788
+ var MAX_SELECTED_CREDENTIALS = 50;
17789
+ var MAX_ENDORSEMENTS = 200;
17790
+ var MAX_VP_MEMBERS = MAX_SELECTED_CREDENTIALS + MAX_ENDORSEMENTS;
17791
+ var MAX_SHARE_SOURCE_URI_CHARS = 2048;
17792
+ var MAX_SHARE_LINK_REQUEST_BYTES = 1024 * 1024;
17793
+ var SHARE_LINK_PROTOCOL = "lc-share/v1";
17794
+ var SHARE_RECOVERY_PROTOCOL = "lc-share-recovery/v1";
17795
+ var BASE64URL_ALPHABET = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_";
17796
+ var BASE64URL_LOOKUP = (() => {
17797
+ const table = new Int16Array(128).fill(-1);
17798
+ for (let index = 0; index < BASE64URL_ALPHABET.length; index += 1) {
17799
+ table[BASE64URL_ALPHABET.charCodeAt(index)] = index;
17800
+ }
17801
+ return table;
17802
+ })();
17803
+ var encodeBase64Url = /* @__PURE__ */ __name2((bytes) => {
17804
+ let output = "";
17805
+ for (let index = 0; index < bytes.length; index += 3) {
17806
+ const first = bytes[index];
17807
+ const second = bytes[index + 1];
17808
+ const third = bytes[index + 2];
17809
+ output += BASE64URL_ALPHABET[first >> 2];
17810
+ output += BASE64URL_ALPHABET[(first & 3) << 4 | (second ?? 0) >> 4];
17811
+ if (second === void 0) break;
17812
+ output += BASE64URL_ALPHABET[(second & 15) << 2 | (third ?? 0) >> 6];
17813
+ if (third === void 0) break;
17814
+ output += BASE64URL_ALPHABET[third & 63];
17815
+ }
17816
+ return output;
17817
+ }, "encodeBase64Url");
17818
+ var decodeBase64Url = /* @__PURE__ */ __name2((value) => {
17819
+ if (typeof value !== "string") return null;
17820
+ const output = new Uint8Array(Math.floor(value.length * 6 / 8));
17821
+ let bits = 0;
17822
+ let bitCount = 0;
17823
+ let outputIndex = 0;
17824
+ for (let index = 0; index < value.length; index += 1) {
17825
+ const code = value.charCodeAt(index);
17826
+ const digit = code < 128 ? BASE64URL_LOOKUP[code] : -1;
17827
+ if (digit < 0) return null;
17828
+ bits = bits << 6 | digit;
17829
+ bitCount += 6;
17830
+ if (bitCount >= 8) {
17831
+ bitCount -= 8;
17832
+ output[outputIndex] = bits >> bitCount & 255;
17833
+ outputIndex += 1;
17834
+ }
17835
+ }
17836
+ return output;
17837
+ }, "decodeBase64Url");
17838
+ var isCanonicalBase64Url = /* @__PURE__ */ __name2((value, expectedBytes) => {
17839
+ if (typeof value !== "string") return false;
17840
+ if (expectedBytes !== void 0 && value.length !== Math.ceil(expectedBytes * 4 / 3))
17841
+ return false;
17842
+ const decoded = decodeBase64Url(value);
17843
+ if (decoded === null) return false;
17844
+ if (expectedBytes !== void 0 && decoded.length !== expectedBytes) return false;
17845
+ return encodeBase64Url(decoded) === value;
17846
+ }, "isCanonicalBase64Url");
17847
+ var decodedBase64UrlByteLength = /* @__PURE__ */ __name2((value) => decodeBase64Url(value)?.length ?? null, "decodedBase64UrlByteLength");
17848
+ var utf8ByteLength = /* @__PURE__ */ __name2((value) => new TextEncoder().encode(value).length, "utf8ByteLength");
17849
+ var canonicalBase64Url = /* @__PURE__ */ __name2((bytes) => external_exports.string().refine((value) => isCanonicalBase64Url(value, bytes), {
17850
+ message: `must be canonical base64url for exactly ${bytes} bytes`
17851
+ }), "canonicalBase64Url");
17852
+ var ShareLinkIdValidator = canonicalBase64Url(SHARE_LINK_ID_BYTES);
17853
+ var ShareContentKeyValidator = canonicalBase64Url(SHARE_CONTENT_KEY_BYTES);
17854
+ var ShareIvValidator = canonicalBase64Url(SHARE_IV_BYTES);
17855
+ var ShareCiphertextValidator = external_exports.string().refine(
17856
+ (value) => {
17857
+ if (value.length > Math.ceil(MAX_SHARE_CIPHERTEXT_BYTES * 4 / 3)) return false;
17858
+ const decoded = decodeBase64Url(value);
17859
+ if (decoded === null) return false;
17860
+ if (encodeBase64Url(decoded) !== value) return false;
17861
+ return decoded.length >= SHARE_TAG_BYTES && decoded.length <= MAX_SHARE_CIPHERTEXT_BYTES;
17862
+ },
17863
+ {
17864
+ message: `must be canonical base64url decoding to ${SHARE_TAG_BYTES}..${MAX_SHARE_CIPHERTEXT_BYTES} bytes`
17865
+ }
17866
+ );
17867
+ var ShareEnvelopeValidator = external_exports.object({
17868
+ v: external_exports.literal(1),
17869
+ alg: external_exports.literal("A256GCM"),
17870
+ iv: ShareIvValidator,
17871
+ ct: ShareCiphertextValidator
17872
+ }).strict();
17873
+ var safeVersion = external_exports.number().int().min(1).max(2 ** 31 - 1);
17874
+ var safeCredentialIndex = external_exports.number().int().min(0).max(MAX_VP_MEMBERS - 1);
17875
+ var ShareSelectionEntryValidator = external_exports.object({ credentialIndex: safeCredentialIndex }).strict();
17876
+ var ShareEndorsementEntryValidator = external_exports.object({ credentialIndex: safeCredentialIndex, targetCredentialIndex: safeCredentialIndex }).strict();
17877
+ var ShareSharerValidator = external_exports.object({
17878
+ profileId: external_exports.string().min(1).max(128),
17879
+ displayName: external_exports.string().min(1).max(120),
17880
+ avatar: external_exports.string().max(2048).optional()
17881
+ }).strict();
17882
+ var presentationShape = VPValidator.extend({
17883
+ verifiableCredential: VCValidator.array().min(1).max(MAX_VP_MEMBERS)
17884
+ });
17885
+ var hasBoundedPresentation = /* @__PURE__ */ __name2((value) => {
17886
+ let credentialCount = 0;
17887
+ const ancestors = /* @__PURE__ */ new Set();
17888
+ const visit = /* @__PURE__ */ __name2((node, depth) => {
17889
+ if (node === null || typeof node !== "object") return true;
17890
+ if (depth > 32 || ancestors.has(node)) return false;
17891
+ ancestors.add(node);
17892
+ try {
17893
+ for (const [key, child] of Object.entries(node)) {
17894
+ if (key === "verifiableCredential") {
17895
+ credentialCount += Array.isArray(child) ? child.length : 1;
17896
+ if (credentialCount > MAX_VP_MEMBERS) return false;
17897
+ }
17898
+ if (!visit(child, depth + 1)) return false;
17899
+ }
17900
+ return true;
17901
+ } finally {
17902
+ ancestors.delete(node);
17903
+ }
17904
+ }, "visit");
17905
+ return visit(value, 0);
17906
+ }, "hasBoundedPresentation");
17907
+ var ShareManifestPresentationValidator = external_exports.custom(
17908
+ (value) => hasBoundedPresentation(value) && presentationShape.safeParse(value).success,
17909
+ { message: "invalid share presentation" }
17910
+ );
17911
+ var SharePayloadValidatorShape = external_exports.object({
17912
+ protocol: external_exports.literal(SHARE_LINK_PROTOCOL),
17913
+ shareId: ShareLinkIdValidator,
17914
+ contentVersion: safeVersion,
17915
+ createdAt: external_exports.iso.datetime(),
17916
+ sharer: ShareSharerValidator,
17917
+ presentation: ShareManifestPresentationValidator,
17918
+ selection: ShareSelectionEntryValidator.array().min(1).max(MAX_SELECTED_CREDENTIALS),
17919
+ endorsements: ShareEndorsementEntryValidator.array().max(MAX_ENDORSEMENTS).default([])
17920
+ }).strict();
17921
+ var classificationFailure = /* @__PURE__ */ __name2((code, message, path = []) => ({ ok: false, code, message, path }), "classificationFailure");
17922
+ var readSignedClaimId = /* @__PURE__ */ __name2((member) => {
17923
+ if (member === null || typeof member !== "object") return void 0;
17924
+ const record2 = member;
17925
+ const claim = record2.credentialSubject ?? record2.endorsement;
17926
+ if (claim === null || typeof claim !== "object") return void 0;
17927
+ const claimRecord = claim;
17928
+ const nested = claimRecord.endorsement;
17929
+ const nestedId = nested !== null && typeof nested === "object" ? nested.id : void 0;
17930
+ return claimRecord.id ?? nestedId;
17931
+ }, "readSignedClaimId");
17932
+ var classifyShareManifest = /* @__PURE__ */ __name2((payload) => {
17933
+ const members = payload.presentation?.verifiableCredential;
17934
+ if (!Array.isArray(members) || members.length === 0) {
17935
+ return classificationFailure("NO_PRESENTATION_MEMBERS", "presentation has no credentials");
17936
+ }
17937
+ if (members.length > MAX_VP_MEMBERS) {
17938
+ return classificationFailure(
17939
+ "TOO_MANY_VP_MEMBERS",
17940
+ `presentation has ${members.length} members, over the ${MAX_VP_MEMBERS} bound`
17941
+ );
17942
+ }
17943
+ const selection = payload.selection;
17944
+ const endorsements = payload.endorsements ?? [];
17945
+ if (!Array.isArray(selection) || selection.length < 1 || selection.length > MAX_SELECTED_CREDENTIALS) {
17946
+ return classificationFailure("BAD_SELECTION", "selection must contain 1..50 entries");
17947
+ }
17948
+ if (!Array.isArray(endorsements) || endorsements.length > MAX_ENDORSEMENTS) {
17949
+ return classificationFailure(
17950
+ "BAD_ENDORSEMENTS",
17951
+ "endorsements must contain at most 200 entries"
17952
+ );
17953
+ }
17954
+ const selectedIndices = [];
17955
+ const selected = /* @__PURE__ */ new Set();
17956
+ for (let index = 0; index < selection.length; index += 1) {
17957
+ const entry = selection[index];
17958
+ const credentialIndex = entry?.credentialIndex;
17959
+ if (!Number.isSafeInteger(credentialIndex) || credentialIndex < 0 || credentialIndex >= members.length) {
17960
+ return classificationFailure(
17961
+ "SELECTION_INDEX_OUT_OF_BOUNDS",
17962
+ `selection[${index}].credentialIndex is out of bounds`,
17963
+ ["selection", index, "credentialIndex"]
17964
+ );
17965
+ }
17966
+ if (selected.has(credentialIndex)) {
17967
+ return classificationFailure(
17968
+ "SELECTION_INDEX_DUPLICATE",
17969
+ `selection[${index}].credentialIndex is duplicated`,
17970
+ ["selection", index, "credentialIndex"]
17971
+ );
17972
+ }
17973
+ selected.add(credentialIndex);
17974
+ selectedIndices.push(credentialIndex);
17975
+ }
17976
+ const classified = new Set(selected);
17977
+ const endorsementIndices = [];
17978
+ for (let index = 0; index < endorsements.length; index += 1) {
17979
+ const entry = endorsements[index];
17980
+ const credentialIndex = entry?.credentialIndex;
17981
+ const targetIndex = entry?.targetCredentialIndex;
17982
+ if (!Number.isSafeInteger(credentialIndex) || credentialIndex < 0 || credentialIndex >= members.length) {
17983
+ return classificationFailure(
17984
+ "ENDORSEMENT_INDEX_OUT_OF_BOUNDS",
17985
+ `endorsements[${index}].credentialIndex is out of bounds`,
17986
+ ["endorsements", index, "credentialIndex"]
17987
+ );
17988
+ }
17989
+ if (classified.has(credentialIndex)) {
17990
+ return classificationFailure(
17991
+ "VP_MEMBER_CLASSIFIED_TWICE",
17992
+ `endorsements[${index}].credentialIndex was already classified`,
17993
+ ["endorsements", index, "credentialIndex"]
17994
+ );
17995
+ }
17996
+ if (!selected.has(targetIndex)) {
17997
+ return classificationFailure(
17998
+ "ENDORSEMENT_TARGET_NOT_SELECTED",
17999
+ `endorsements[${index}].targetCredentialIndex must reference a selected credential`,
18000
+ ["endorsements", index, "targetCredentialIndex"]
18001
+ );
18002
+ }
18003
+ const referenced = readSignedClaimId(members[credentialIndex]);
18004
+ const target = members[targetIndex];
18005
+ const targetId = target !== null && typeof target === "object" ? target.id : void 0;
18006
+ if (typeof referenced !== "string" || typeof targetId !== "string" || referenced !== targetId) {
18007
+ return classificationFailure(
18008
+ "ENDORSEMENT_TARGET_UNBOUND",
18009
+ `endorsements[${index}] claim does not reference the target credential id`,
18010
+ ["endorsements", index]
18011
+ );
18012
+ }
18013
+ classified.add(credentialIndex);
18014
+ endorsementIndices.push(credentialIndex);
18015
+ }
18016
+ if (classified.size !== members.length) {
18017
+ return classificationFailure(
18018
+ "UNCLASSIFIED_VP_MEMBER",
18019
+ "every presentation member must be classified exactly once",
18020
+ ["presentation", "verifiableCredential"]
18021
+ );
18022
+ }
18023
+ return {
18024
+ ok: true,
18025
+ classification: { selectedIndices, endorsementIndices, memberCount: members.length }
18026
+ };
18027
+ }, "classifyShareManifest");
18028
+ var SharePayloadValidator = SharePayloadValidatorShape.superRefine((payload, ctx) => {
18029
+ const result = classifyShareManifest(payload);
18030
+ if (!result.ok) {
18031
+ ctx.addIssue({
18032
+ code: "custom",
18033
+ message: result.message,
18034
+ path: result.path,
18035
+ params: { shareLinkCode: result.code }
18036
+ });
18037
+ }
18038
+ });
18039
+ var ShareRecoverySelectionValidator = external_exports.object({
18040
+ ref: external_exports.string().min(1).max(MAX_SHARE_SOURCE_URI_CHARS),
18041
+ order: external_exports.number().int().min(0).max(MAX_SELECTED_CREDENTIALS - 1)
18042
+ }).strict();
18043
+ var ShareRecoveryEndorsementValidator = external_exports.object({ targetRef: external_exports.string().min(1).max(MAX_SHARE_SOURCE_URI_CHARS) }).strict();
18044
+ var ShareRecoveryPlaintextValidator = external_exports.object({
18045
+ protocol: external_exports.literal(SHARE_RECOVERY_PROTOCOL),
18046
+ shareId: ShareLinkIdValidator,
18047
+ ownerProfileId: external_exports.string().min(1).max(128),
18048
+ createdAt: external_exports.iso.datetime(),
18049
+ latest: external_exports.object({ contentVersion: safeVersion, key: ShareContentKeyValidator }).strict(),
18050
+ selection: ShareRecoverySelectionValidator.array().min(1).max(MAX_SELECTED_CREDENTIALS),
18051
+ endorsements: ShareRecoveryEndorsementValidator.array().max(MAX_ENDORSEMENTS).default([])
18052
+ }).strict().superRefine((recovery, ctx) => {
18053
+ const orders = /* @__PURE__ */ new Set();
18054
+ recovery.selection.forEach((entry, index) => {
18055
+ if (entry.order >= recovery.selection.length) {
18056
+ ctx.addIssue({
18057
+ code: "custom",
18058
+ message: "order must be within the selection bounds",
18059
+ path: ["selection", index, "order"]
18060
+ });
18061
+ }
18062
+ if (orders.has(entry.order)) {
18063
+ ctx.addIssue({
18064
+ code: "custom",
18065
+ message: "order must be unique within the selection",
18066
+ path: ["selection", index, "order"]
18067
+ });
18068
+ }
18069
+ orders.add(entry.order);
18070
+ });
18071
+ });
18072
+ var ShareOwnerRecoveryValidator = JWEValidator.refine(
18073
+ (value) => utf8ByteLength(JSON.stringify(value)) <= MAX_SHARE_RECOVERY_JWE_BYTES,
18074
+ { message: `serialized recovery JWE must be at most ${MAX_SHARE_RECOVERY_JWE_BYTES} bytes` }
18075
+ );
18076
+ var ShareLinkStatusValidator = external_exports.enum(["pending", "active", "stopped"]);
18077
+ var ShareContentStateValidator = external_exports.enum(["staging", "finalized", "content_missing"]);
18078
+ var ShareLinkValidator = external_exports.object({
18079
+ id: ShareLinkIdValidator,
18080
+ title: external_exports.string().min(1).max(120),
18081
+ note: external_exports.string().max(500).optional(),
18082
+ selectedCount: external_exports.number().int().min(1).max(MAX_SELECTED_CREDENTIALS),
18083
+ version: safeVersion,
18084
+ contentVersion: safeVersion,
18085
+ status: ShareLinkStatusValidator,
18086
+ attachmentId: external_exports.string().uuid().nullable().optional(),
18087
+ attachmentChunkCount: external_exports.number().int().min(1).max(16).nullable().optional(),
18088
+ contentState: ShareContentStateValidator,
18089
+ createdAt: external_exports.iso.datetime(),
18090
+ updatedAt: external_exports.iso.datetime(),
18091
+ expiresAt: external_exports.iso.datetime().nullable(),
18092
+ stoppedAt: external_exports.iso.datetime().nullable(),
18093
+ lastViewedAt: external_exports.iso.datetime().nullable(),
18094
+ viewCount: external_exports.number().int().min(0).optional(),
18095
+ passcodeProtected: external_exports.boolean(),
18096
+ notifyOnView: external_exports.boolean(),
18097
+ minorPolicy: external_exports.object({
18098
+ isMinor: external_exports.boolean().nullable(),
18099
+ policyResolved: external_exports.boolean(),
18100
+ defaultExpiryDays: external_exports.union([external_exports.literal(30), external_exports.literal(365)]),
18101
+ viewCountingEnabled: external_exports.boolean()
18102
+ }),
18103
+ /**
18104
+ * Guarded application/API URL for the content. Optional because owner APIs in
18105
+ * D1 have no public resolve/content endpoint yet; it must never be a
18106
+ * LearnCloud object URL or carry a fabricated decryption key.
18107
+ */
18108
+ contentUrl: external_exports.string().optional()
18109
+ });
18110
+ var clientRequestId = external_exports.string().uuid();
18111
+ var ShareLinkAttachmentValidator = external_exports.object({
18112
+ id: external_exports.string().uuid(),
18113
+ chunkCount: external_exports.number().int().min(1).max(16)
18114
+ }).strict();
18115
+ var attachmentChunkKey = {
18116
+ id: ShareLinkIdValidator,
18117
+ contentVersion: safeVersion,
18118
+ attachmentId: external_exports.string().uuid(),
18119
+ chunkIndex: external_exports.number().int().min(0).max(15)
18120
+ };
18121
+ var ShareLinkAttachmentChunkEnvelopeValidator = ShareEnvelopeValidator.refine(
18122
+ (value) => (decodedBase64UrlByteLength(value.ct) ?? Infinity) <= 256 * 1024 + SHARE_TAG_BYTES
18123
+ );
18124
+ var PutShareLinkAttachmentChunkInputValidator = external_exports.object({
18125
+ ...attachmentChunkKey,
18126
+ chunkCount: external_exports.number().int().min(1).max(16),
18127
+ envelope: ShareLinkAttachmentChunkEnvelopeValidator,
18128
+ ownerEncryptedRecovery: ShareOwnerRecoveryValidator
18129
+ }).strict().refine((value) => value.chunkIndex < value.chunkCount);
18130
+ var GetShareLinkAttachmentChunkInputValidator = external_exports.object({
18131
+ ...attachmentChunkKey,
18132
+ passcode: external_exports.string().min(4).max(64).optional(),
18133
+ accessToken: external_exports.string().min(1).max(2048).optional()
18134
+ }).strict();
18135
+ var ShareLinkAttachmentChunkOutputValidator = external_exports.object({
18136
+ ...attachmentChunkKey,
18137
+ envelope: ShareLinkAttachmentChunkEnvelopeValidator,
18138
+ accessToken: external_exports.string().min(1).max(2048).optional()
18139
+ }).strict();
18140
+ var DeleteShareLinkAttachmentChunksInputValidator = external_exports.object({
18141
+ id: ShareLinkIdValidator,
18142
+ contentVersion: safeVersion,
18143
+ attachmentId: external_exports.string().uuid(),
18144
+ chunkCount: external_exports.number().int().min(1).max(16)
18145
+ }).strict();
18146
+ var PutShareLinkAttachmentChunkOutputValidator = external_exports.object({ ok: external_exports.literal(true) }).strict();
18147
+ var DeleteShareLinkAttachmentChunksOutputValidator = external_exports.object({ ok: external_exports.boolean() }).strict();
18148
+ var CreateShareLinkInputValidator = external_exports.object({
18149
+ id: ShareLinkIdValidator,
18150
+ clientRequestId,
18151
+ title: external_exports.string().min(1).max(120),
18152
+ note: external_exports.string().max(500).optional(),
18153
+ expiresAt: external_exports.iso.datetime().nullable().optional(),
18154
+ passcode: external_exports.string().min(8).max(64).optional(),
18155
+ notifyOnView: external_exports.boolean().default(false),
18156
+ selectedCount: external_exports.number().int().min(1).max(MAX_SELECTED_CREDENTIALS),
18157
+ contentVersion: external_exports.literal(1),
18158
+ envelope: ShareEnvelopeValidator,
18159
+ ownerEncryptedRecovery: ShareOwnerRecoveryValidator,
18160
+ attachment: ShareLinkAttachmentValidator.optional()
18161
+ }).strict();
18162
+ var UpdateShareLinkInputValidator = external_exports.object({
18163
+ id: ShareLinkIdValidator,
18164
+ expectedVersion: safeVersion,
18165
+ clientRequestId,
18166
+ title: external_exports.string().min(1).max(120).optional(),
18167
+ note: external_exports.string().max(500).nullable().optional(),
18168
+ expiresAt: external_exports.iso.datetime().nullable().optional(),
18169
+ /** Omitted preserves the current passcode, null removes it, and a string replaces it. */
18170
+ passcode: external_exports.string().min(8).max(64).nullable().optional(),
18171
+ notifyOnView: external_exports.boolean().optional(),
18172
+ contentVersion: safeVersion.optional(),
18173
+ selectedCount: external_exports.number().int().min(1).max(MAX_SELECTED_CREDENTIALS).optional(),
18174
+ envelope: ShareEnvelopeValidator.optional(),
18175
+ ownerEncryptedRecovery: ShareOwnerRecoveryValidator.optional(),
18176
+ attachment: ShareLinkAttachmentValidator.optional()
18177
+ }).strict().superRefine((value, ctx) => {
18178
+ const provided = [
18179
+ value.contentVersion,
18180
+ value.selectedCount,
18181
+ value.envelope,
18182
+ value.ownerEncryptedRecovery
18183
+ ].filter((field) => field !== void 0).length;
18184
+ if (provided !== 0 && provided !== 4) {
18185
+ ctx.addIssue({
18186
+ code: "custom",
18187
+ message: "content replacement requires contentVersion, selectedCount, envelope and ownerEncryptedRecovery together"
18188
+ });
18189
+ }
18190
+ if (value.attachment !== void 0 && provided !== 4) {
18191
+ ctx.addIssue({ code: "custom", message: "attachment requires a content replacement" });
18192
+ }
18193
+ });
18194
+ var ShareLinkIdInputValidator = external_exports.object({ id: ShareLinkIdValidator }).strict();
18195
+ var ShareLinkOperationKeyInputValidator = external_exports.object({ id: ShareLinkIdValidator, operationId: external_exports.string().uuid() }).strict();
18196
+ var ShareLinkOwnerCommitOutputValidator = external_exports.discriminatedUnion("status", [
18197
+ external_exports.object({ status: external_exports.literal("completed"), share: ShareLinkValidator }).strict(),
18198
+ external_exports.object({
18199
+ status: external_exports.literal("pending"),
18200
+ id: ShareLinkIdValidator,
18201
+ operationId: external_exports.string().uuid()
18202
+ }).strict()
18203
+ ]);
18204
+ var ShareLinkOwnerStatusOutputValidator = external_exports.discriminatedUnion("status", [
18205
+ external_exports.object({ status: external_exports.literal("found"), share: ShareLinkValidator }).strict(),
18206
+ external_exports.object({
18207
+ status: external_exports.literal("pending"),
18208
+ id: ShareLinkIdValidator,
18209
+ operationId: external_exports.string().uuid()
18210
+ }).strict(),
18211
+ external_exports.object({ status: external_exports.literal("not_found"), id: ShareLinkIdValidator }).strict()
18212
+ ]);
18213
+ var ShareLinkOwnerRecoveryOutputValidator = external_exports.object({ recovery: ShareOwnerRecoveryValidator }).strict();
18214
+ var ShareLinkOwnerContentOutputValidator = external_exports.object({
18215
+ id: ShareLinkIdValidator,
18216
+ contentVersion: safeVersion,
18217
+ envelope: ShareEnvelopeValidator
18218
+ }).strict();
18219
+ var ResolveShareLinkInputValidator = external_exports.object({
18220
+ id: ShareLinkIdValidator,
18221
+ /** Sent only in a POST body; it must never be placed in a share URL. */
18222
+ passcode: external_exports.string().min(4).max(64).optional()
18223
+ }).strict();
18224
+ var ShareLinkPublicStateValidator = external_exports.discriminatedUnion("state", [
18225
+ external_exports.object({
18226
+ state: external_exports.literal("passcode_required"),
18227
+ id: ShareLinkIdValidator
18228
+ }).strict(),
18229
+ external_exports.object({ state: external_exports.literal("try_later"), id: ShareLinkIdValidator }).strict(),
18230
+ external_exports.object({
18231
+ state: external_exports.literal("active"),
18232
+ id: ShareLinkIdValidator,
18233
+ title: external_exports.string().max(120),
18234
+ note: external_exports.string().max(500).optional(),
18235
+ selectedCount: external_exports.number().int().min(1).max(MAX_SELECTED_CREDENTIALS),
18236
+ contentVersion: safeVersion,
18237
+ contentUrl: external_exports.string(),
18238
+ sharer: external_exports.object({
18239
+ displayName: external_exports.string().max(120),
18240
+ avatar: external_exports.string().max(2048).optional()
18241
+ }),
18242
+ createdAt: external_exports.iso.datetime(),
18243
+ updatedAt: external_exports.iso.datetime(),
18244
+ expiresAt: external_exports.iso.datetime().nullable()
18245
+ }).strict(),
18246
+ external_exports.object({
18247
+ state: external_exports.literal("expired"),
18248
+ id: ShareLinkIdValidator,
18249
+ expiresAt: external_exports.iso.datetime()
18250
+ }).strict(),
18251
+ external_exports.object({
18252
+ state: external_exports.literal("stopped"),
18253
+ id: ShareLinkIdValidator,
18254
+ stoppedAt: external_exports.iso.datetime()
18255
+ }).strict(),
18256
+ external_exports.object({ state: external_exports.literal("not_found"), id: ShareLinkIdValidator }).strict()
18257
+ ]);
18258
+ var ListShareLinksInputValidator = external_exports.object({
18259
+ limit: external_exports.number().int().min(1).max(50).default(25),
18260
+ cursor: external_exports.string().max(512).optional()
18261
+ }).strict();
18262
+ var PaginatedShareLinksValidator = PaginationResponseValidator.extend({
18263
+ records: ShareLinkValidator.array()
18264
+ });
18265
+ var AcknowledgeViewInputValidator = external_exports.object({
18266
+ receipt: external_exports.string().min(22).max(128).regex(/^[A-Za-z0-9_-]+$/)
18267
+ }).strict();
18268
+ var AcknowledgeViewOutputValidator = external_exports.object({ ok: external_exports.literal(true) }).strict();
18269
+ var SHARE_VIEW_RECEIPT_TTL_SECONDS = 10 * 60;
18270
+ var ShareLinkPublicContentViewValidator = external_exports.object({
18271
+ id: ShareLinkIdValidator,
18272
+ contentVersion: safeVersion,
18273
+ envelope: ShareEnvelopeValidator,
18274
+ contentUrl: external_exports.string(),
18275
+ receipt: external_exports.string().min(22).max(128).regex(/^[A-Za-z0-9_-]+$/)
18276
+ }).strict();
17520
18277
 
17521
18278
  // src/plugin.ts
17522
18279
  var import_helpers = require("@learncard/helpers");
@@ -18168,6 +18925,7 @@ var isActAsDenial = /* @__PURE__ */ __name((error51) => {
18168
18925
  }
18169
18926
  return false;
18170
18927
  }, "isActAsDenial");
18928
+ var getInboxFailureReason = /* @__PURE__ */ __name((reason) => reason instanceof Error ? `${reason.name}: ${reason.message}` : String(reason), "getInboxFailureReason");
18171
18929
  async function getLearnCardNetworkPlugin(learnCard, url2, apiTokenOrOptions, options) {
18172
18930
  const apiToken = typeof apiTokenOrOptions === "string" ? apiTokenOrOptions : void 0;
18173
18931
  const resolvedOptions = (typeof apiTokenOrOptions === "object" ? apiTokenOrOptions : options) ?? {};
@@ -18580,6 +19338,58 @@ async function getLearnCardNetworkPlugin(learnCard, url2, apiTokenOrOptions, opt
18580
19338
  await ensureUser();
18581
19339
  return client.profile.invalidateInvite.mutate({ challenge });
18582
19340
  }, "invalidateInvite"),
19341
+ createShareLink: /* @__PURE__ */ __name(async (_learnCard, input) => {
19342
+ await ensureUser();
19343
+ return client.shareLinks.create.mutate(input);
19344
+ }, "createShareLink"),
19345
+ putShareLinkAttachmentChunk: /* @__PURE__ */ __name(async (_learnCard, input) => {
19346
+ await ensureUser();
19347
+ return client.shareLinks.putAttachmentChunk.mutate(input);
19348
+ }, "putShareLinkAttachmentChunk"),
19349
+ deleteShareLinkAttachmentChunks: /* @__PURE__ */ __name(async (_learnCard, input) => {
19350
+ await ensureUser();
19351
+ return client.shareLinks.deleteAttachmentChunks.mutate(input);
19352
+ }, "deleteShareLinkAttachmentChunks"),
19353
+ getShareLinkAttachmentChunk: /* @__PURE__ */ __name(async (_learnCard, input) => client.publicShareLinks.attachmentChunk.mutate(input), "getShareLinkAttachmentChunk"),
19354
+ updateShareLink: /* @__PURE__ */ __name(async (_learnCard, input) => {
19355
+ await ensureUser();
19356
+ return client.shareLinks.update.mutate(input);
19357
+ }, "updateShareLink"),
19358
+ revokeShareLink: /* @__PURE__ */ __name(async (_learnCard, input) => {
19359
+ await ensureUser();
19360
+ return client.shareLinks.revoke.mutate(input);
19361
+ }, "revokeShareLink"),
19362
+ getShareLink: /* @__PURE__ */ __name(async (_learnCard, id) => {
19363
+ await ensureUser();
19364
+ return client.shareLinks.get.query({ id });
19365
+ }, "getShareLink"),
19366
+ getShareLinkOperationStatus: /* @__PURE__ */ __name(async (_learnCard, input) => {
19367
+ await ensureUser();
19368
+ return client.shareLinks.getOperationStatus.query(input);
19369
+ }, "getShareLinkOperationStatus"),
19370
+ retryShareLinkOperation: /* @__PURE__ */ __name(async (_learnCard, input) => {
19371
+ await ensureUser();
19372
+ return client.shareLinks.retry.mutate(input);
19373
+ }, "retryShareLinkOperation"),
19374
+ getShareLinkRecovery: /* @__PURE__ */ __name(async (_learnCard, id) => {
19375
+ await ensureUser();
19376
+ return client.shareLinks.getRecovery.query({ id });
19377
+ }, "getShareLinkRecovery"),
19378
+ getShareLinkOwnerContent: /* @__PURE__ */ __name(async (_learnCard, id) => {
19379
+ await ensureUser();
19380
+ return client.shareLinks.getContent.query({ id });
19381
+ }, "getShareLinkOwnerContent"),
19382
+ listShareLinks: /* @__PURE__ */ __name(async (_learnCard, input) => {
19383
+ await ensureUser();
19384
+ return client.shareLinks.list.query(input);
19385
+ }, "listShareLinks"),
19386
+ // Anonymous public methods: deliberately NO `ensureUser()`. A viewer
19387
+ // has no account and must not need one.
19388
+ // POST keeps an optional passcode in the request body and out of URLs,
19389
+ // access logs, browser history and referrers.
19390
+ resolveShareLink: /* @__PURE__ */ __name(async (_learnCard, id, passcode) => client.publicShareLinks.resolve.mutate({ id, passcode }), "resolveShareLink"),
19391
+ getShareLinkContent: /* @__PURE__ */ __name(async (_learnCard, id, passcode) => client.publicShareLinks.content.mutate({ id, passcode }), "getShareLinkContent"),
19392
+ acknowledgeShareLinkView: /* @__PURE__ */ __name(async (_learnCard, receipt) => client.publicShareLinks.acknowledgeView.mutate({ receipt }), "acknowledgeShareLinkView"),
18583
19393
  blockProfile: /* @__PURE__ */ __name(async (_learnCard, profileId) => {
18584
19394
  await ensureUser();
18585
19395
  return client.profile.blockProfile.mutate({ profileId });
@@ -18694,12 +19504,15 @@ async function getLearnCardNetworkPlugin(learnCard, url2, apiTokenOrOptions, opt
18694
19504
  await ensureUser();
18695
19505
  return client.credential.deleteCredential.mutate({ uri });
18696
19506
  }, "deleteCredential"),
18697
- sendPresentation: /* @__PURE__ */ __name(async (_learnCard, profileId, vp, encrypt = true) => {
19507
+ sendPresentation: /* @__PURE__ */ __name(async (_learnCard, profileId, vp, metadataOrEncrypt, encrypt) => {
18698
19508
  await ensureUser();
18699
- if (!encrypt) {
19509
+ const metadata = typeof metadataOrEncrypt === "object" ? metadataOrEncrypt : void 0;
19510
+ const shouldEncrypt = typeof metadataOrEncrypt === "boolean" ? metadataOrEncrypt : encrypt ?? true;
19511
+ if (!shouldEncrypt) {
18700
19512
  return client.presentation.sendPresentation.mutate({
18701
19513
  profileId,
18702
- presentation: vp
19514
+ presentation: vp,
19515
+ metadata
18703
19516
  });
18704
19517
  }
18705
19518
  const target = await _learnCard.invoke.getProfile(profileId);
@@ -18709,7 +19522,11 @@ async function getLearnCardNetworkPlugin(learnCard, url2, apiTokenOrOptions, opt
18709
19522
  _learnCard.id.did(),
18710
19523
  target.did
18711
19524
  ]);
18712
- return client.presentation.sendPresentation.mutate({ profileId, presentation });
19525
+ return client.presentation.sendPresentation.mutate({
19526
+ profileId,
19527
+ presentation,
19528
+ metadata
19529
+ });
18713
19530
  }, "sendPresentation"),
18714
19531
  acceptPresentation: /* @__PURE__ */ __name(async (_learnCard, uri) => {
18715
19532
  await ensureUser();
@@ -19389,6 +20206,14 @@ async function getLearnCardNetworkPlugin(learnCard, url2, apiTokenOrOptions, opt
19389
20206
  boostUris
19390
20207
  });
19391
20208
  }, "removeAutoBoostsFromContract"),
20209
+ addContractRecipient: /* @__PURE__ */ __name(async (_learnCard, contractUri, recipient) => {
20210
+ await ensureUser();
20211
+ return client.contracts.addContractRecipient.mutate({ contractUri, recipient });
20212
+ }, "addContractRecipient"),
20213
+ removeContractRecipient: /* @__PURE__ */ __name(async (_learnCard, contractUri, recipient) => {
20214
+ await ensureUser();
20215
+ return client.contracts.removeContractRecipient.mutate({ contractUri, recipient });
20216
+ }, "removeContractRecipient"),
19392
20217
  getContract: /* @__PURE__ */ __name(async (_learnCard, uri) => {
19393
20218
  return client.contracts.getConsentFlowContract.query({ uri });
19394
20219
  }, "getContract"),
@@ -19421,13 +20246,15 @@ async function getLearnCardNetworkPlugin(learnCard, url2, apiTokenOrOptions, opt
19421
20246
  boostUri
19422
20247
  });
19423
20248
  }, "writeCredentialToContract"),
19424
- consentToContract: /* @__PURE__ */ __name(async (_learnCard, contractUri, { terms, expiresAt, oneTime }, recipientToken) => {
20249
+ consentToContract: /* @__PURE__ */ __name(async (_learnCard, contractUri, { terms, expiresAt, oneTime, audienceVersion, expectedRequestId }, recipientToken) => {
19425
20250
  await ensureUser();
19426
20251
  return client.contracts.consentToContract.mutate({
19427
20252
  contractUri,
19428
20253
  terms,
19429
20254
  expiresAt,
19430
20255
  oneTime,
20256
+ audienceVersion,
20257
+ expectedRequestId,
19431
20258
  recipientToken
19432
20259
  // for SmartResume
19433
20260
  });
@@ -19436,13 +20263,14 @@ async function getLearnCardNetworkPlugin(learnCard, url2, apiTokenOrOptions, opt
19436
20263
  await ensureUser();
19437
20264
  return client.contracts.getConsentedContracts.query(options2);
19438
20265
  }, "getConsentedContracts"),
19439
- updateContractTerms: /* @__PURE__ */ __name(async (_learnCard, uri, { terms, expiresAt, oneTime }) => {
20266
+ updateContractTerms: /* @__PURE__ */ __name(async (_learnCard, uri, { terms, expiresAt, oneTime, audienceVersion }) => {
19440
20267
  await ensureUser();
19441
20268
  return client.contracts.updateConsentedContractTerms.mutate({
19442
20269
  uri,
19443
20270
  terms,
19444
20271
  expiresAt,
19445
- oneTime
20272
+ oneTime,
20273
+ audienceVersion
19446
20274
  });
19447
20275
  }, "updateContractTerms"),
19448
20276
  withdrawConsent: /* @__PURE__ */ __name(async (_learnCard, uri) => {
@@ -19469,11 +20297,12 @@ async function getLearnCardNetworkPlugin(learnCard, url2, apiTokenOrOptions, opt
19469
20297
  await ensureUser();
19470
20298
  return client.contracts.verifyConsent.query({ uri, profileId });
19471
20299
  }, "verifyConsent"),
19472
- syncCredentialsToContract: /* @__PURE__ */ __name(async (_learnCard, termsUri, categories) => {
20300
+ syncCredentialsToContract: /* @__PURE__ */ __name(async (_learnCard, termsUri, categories, audienceVersion) => {
19473
20301
  await ensureUser();
19474
20302
  return client.contracts.syncCredentialsToContract.mutate({
19475
20303
  termsUri,
19476
- categories
20304
+ categories,
20305
+ audienceVersion
19477
20306
  });
19478
20307
  }, "syncCredentialsToContract"),
19479
20308
  deleteCredentialFromAllContracts: /* @__PURE__ */ __name(async (_learnCard, deletedUris) => {
@@ -19482,6 +20311,14 @@ async function getLearnCardNetworkPlugin(learnCard, url2, apiTokenOrOptions, opt
19482
20311
  deletedUris
19483
20312
  });
19484
20313
  }, "deleteCredentialFromAllContracts"),
20314
+ sendContractRequest: /* @__PURE__ */ __name(async (_learnCard, request) => {
20315
+ await ensureUser();
20316
+ return client.contracts.sendContractRequest.mutate(request);
20317
+ }, "sendContractRequest"),
20318
+ denyContractRequest: /* @__PURE__ */ __name(async (_learnCard, contractUri) => {
20319
+ await ensureUser();
20320
+ return client.contracts.denyContractRequest.mutate({ contractUri });
20321
+ }, "denyContractRequest"),
19485
20322
  sendAiInsightsContractRequest: /* @__PURE__ */ __name(async (_learnCard, contractUri, targetProfileId, shareLink) => {
19486
20323
  await ensureUser();
19487
20324
  return client.contracts.sendAiInsightsContractRequest.mutate({
@@ -19667,9 +20504,32 @@ async function getLearnCardNetworkPlugin(learnCard, url2, apiTokenOrOptions, opt
19667
20504
  await ensureUser();
19668
20505
  return client.inbox.getInboxCredential.query({ credentialId: id });
19669
20506
  }, "getInboxCredential"),
19670
- finalizeInboxCredentials: /* @__PURE__ */ __name(async (_learnCard) => {
20507
+ finalizeInboxCredentials: /* @__PURE__ */ __name(async (learnCard2) => {
19671
20508
  await ensureUser();
19672
- return client.inbox.finalize.mutate();
20509
+ const result = await client.inbox.finalize.mutate();
20510
+ const results = await Promise.allSettled(
20511
+ result.deliveries.map(async (delivery) => ({
20512
+ ...delivery,
20513
+ credential: VCValidator.parse(
20514
+ (0, import_helpers.isEncrypted)(delivery.credential) ? await learnCard2.invoke.decryptDagJwe(delivery.credential, [
20515
+ learnCard2.id.keypair()
20516
+ ]) : delivery.credential
20517
+ )
20518
+ }))
20519
+ );
20520
+ const deliveries = results.flatMap((delivery, index) => {
20521
+ if (delivery.status === "fulfilled") return [delivery.value];
20522
+ console.warn(
20523
+ `Failed to finalize inbox delivery ${result.deliveries[index].id}: ${getInboxFailureReason(delivery.reason)}`
20524
+ );
20525
+ return [];
20526
+ });
20527
+ return {
20528
+ ...result,
20529
+ deliveries,
20530
+ verifiableCredentials: deliveries.map((delivery) => delivery.credential),
20531
+ errors: result.errors + results.length - deliveries.length
20532
+ };
19673
20533
  }, "finalizeInboxCredentials"),
19674
20534
  recoverInboxCredentials: /* @__PURE__ */ __name(async (learnCard2, options2 = {}) => {
19675
20535
  const result = await client.inbox.getMyInboxDeliveries.query(options2);
@@ -19683,9 +20543,13 @@ async function getLearnCardNetworkPlugin(learnCard, url2, apiTokenOrOptions, opt
19683
20543
  )
19684
20544
  }))
19685
20545
  );
19686
- const records = results.flatMap(
19687
- (record2) => record2.status === "fulfilled" ? [record2.value] : []
19688
- );
20546
+ const records = results.flatMap((record2, index) => {
20547
+ if (record2.status === "fulfilled") return [record2.value];
20548
+ console.warn(
20549
+ `Failed to recover inbox delivery ${result.records[index].id}: ${getInboxFailureReason(record2.reason)}`
20550
+ );
20551
+ return [];
20552
+ });
19689
20553
  return { ...result, records, failed: results.length - records.length };
19690
20554
  }, "recoverInboxCredentials"),
19691
20555
  sendGuardianApprovalEmail: /* @__PURE__ */ __name(async (_learnCard, options2) => {
@@ -19952,6 +20816,18 @@ async function getLearnCardNetworkPlugin(learnCard, url2, apiTokenOrOptions, opt
19952
20816
  await ensureUser();
19953
20817
  return client.appStore.unsubmitForReview.mutate({ listingId });
19954
20818
  }, "unsubmitAppStoreListing"),
20819
+ submitAppStoreListingUpdate: /* @__PURE__ */ __name(async (_learnCard, listingId) => {
20820
+ await ensureUser();
20821
+ return client.appStore.submitListingUpdate.mutate({ listingId });
20822
+ }, "submitAppStoreListingUpdate"),
20823
+ withdrawAppStoreListingUpdate: /* @__PURE__ */ __name(async (_learnCard, listingId) => {
20824
+ await ensureUser();
20825
+ return client.appStore.withdrawListingUpdate.mutate({ listingId });
20826
+ }, "withdrawAppStoreListingUpdate"),
20827
+ discardAppStoreListingUpdate: /* @__PURE__ */ __name(async (_learnCard, listingId) => {
20828
+ await ensureUser();
20829
+ return client.appStore.discardListingUpdate.mutate({ listingId });
20830
+ }, "discardAppStoreListingUpdate"),
19955
20831
  getListingsForIntegration: /* @__PURE__ */ __name(async (_learnCard, integrationId, options2 = {}) => {
19956
20832
  await ensureUser();
19957
20833
  return client.appStore.getListingsForIntegration.query({
@@ -19963,6 +20839,34 @@ async function getLearnCardNetworkPlugin(learnCard, url2, apiTokenOrOptions, opt
19963
20839
  await ensureUser();
19964
20840
  return client.appStore.countListingsForIntegration.query({ integrationId });
19965
20841
  }, "countListingsForIntegration"),
20842
+ submitAppManifest: /* @__PURE__ */ __name(async (_learnCard, integrationId, manifest) => {
20843
+ await ensureUser();
20844
+ return client.appStore.submitAppManifest.mutate({ integrationId, manifest });
20845
+ }, "submitAppManifest"),
20846
+ getManifestVersions: /* @__PURE__ */ __name(async (_learnCard, integrationId, options2) => {
20847
+ await ensureUser();
20848
+ return client.appStore.getManifestVersions.query({ integrationId, ...options2 });
20849
+ }, "getManifestVersions"),
20850
+ getManifestVersion: /* @__PURE__ */ __name(async (_learnCard, integrationId, version2) => {
20851
+ await ensureUser();
20852
+ return client.appStore.getManifestVersion.query({ integrationId, version: version2 });
20853
+ }, "getManifestVersion"),
20854
+ getManifestDiff: /* @__PURE__ */ __name(async (_learnCard, integrationId, toVersion, fromVersion) => {
20855
+ await ensureUser();
20856
+ return client.appStore.getManifestDiff.query({
20857
+ integrationId,
20858
+ toVersion,
20859
+ fromVersion
20860
+ });
20861
+ }, "getManifestDiff"),
20862
+ applyManifestVersion: /* @__PURE__ */ __name(async (_learnCard, integrationId, version2, listingId) => {
20863
+ await ensureUser();
20864
+ return client.appStore.applyManifestVersion.mutate({
20865
+ integrationId,
20866
+ version: version2,
20867
+ listingId
20868
+ });
20869
+ }, "applyManifestVersion"),
19966
20870
  browseAppStore: /* @__PURE__ */ __name(async (_learnCard, options2) => {
19967
20871
  return client.appStore.browseListedApps.query(options2);
19968
20872
  }, "browseAppStore"),
@@ -20018,6 +20922,10 @@ async function getLearnCardNetworkPlugin(learnCard, url2, apiTokenOrOptions, opt
20018
20922
  await ensureUser();
20019
20923
  return client.appStore.adminGetAllListings.query(options2);
20020
20924
  }, "adminGetAllListings"),
20925
+ adminReviewListingUpdate: /* @__PURE__ */ __name(async (_learnCard, listingId, approve) => {
20926
+ await ensureUser();
20927
+ return client.appStore.adminReviewListingUpdate.mutate({ listingId, approve });
20928
+ }, "adminReviewListingUpdate"),
20021
20929
  // App Store Boost Management
20022
20930
  addBoostToApp: /* @__PURE__ */ __name(async (_learnCard, listingId, boostUri, templateAlias) => {
20023
20931
  await ensureUser();