@learncard/helpers 1.2.13 → 1.2.16

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.
@@ -76,6 +76,8 @@ var require_types_cjs_development = __commonJS({
76
76
  AppStoreListingSubmitterValidator: /* @__PURE__ */ __name(() => AppStoreListingSubmitterValidator, "AppStoreListingSubmitterValidator"),
77
77
  AppStoreListingUpdateValidator: /* @__PURE__ */ __name(() => AppStoreListingUpdateValidator, "AppStoreListingUpdateValidator"),
78
78
  AppStoreListingValidator: /* @__PURE__ */ __name(() => AppStoreListingValidator, "AppStoreListingValidator"),
79
+ AssociationTypeValidator: /* @__PURE__ */ __name(() => AssociationTypeValidator, "AssociationTypeValidator"),
80
+ AssociationValidator: /* @__PURE__ */ __name(() => AssociationValidator, "AssociationValidator"),
79
81
  AuthGrantQueryValidator: /* @__PURE__ */ __name(() => AuthGrantQueryValidator, "AuthGrantQueryValidator"),
80
82
  AuthGrantStatusValidator: /* @__PURE__ */ __name(() => AuthGrantStatusValidator, "AuthGrantStatusValidator"),
81
83
  AuthGrantValidator: /* @__PURE__ */ __name(() => AuthGrantValidator, "AuthGrantValidator"),
@@ -94,6 +96,8 @@ var require_types_cjs_development = __commonJS({
94
96
  ClaimHookValidator: /* @__PURE__ */ __name(() => ClaimHookValidator, "ClaimHookValidator"),
95
97
  ClaimInboxCredentialValidator: /* @__PURE__ */ __name(() => ClaimInboxCredentialValidator, "ClaimInboxCredentialValidator"),
96
98
  ClaimTokenValidator: /* @__PURE__ */ __name(() => ClaimTokenValidator, "ClaimTokenValidator"),
99
+ ClrCredentialValidator: /* @__PURE__ */ __name(() => ClrCredentialValidator, "ClrCredentialValidator"),
100
+ ClrSubjectValidator: /* @__PURE__ */ __name(() => ClrSubjectValidator, "ClrSubjectValidator"),
97
101
  ConsentFlowContractDataForDidValidator: /* @__PURE__ */ __name(() => ConsentFlowContractDataForDidValidator, "ConsentFlowContractDataForDidValidator"),
98
102
  ConsentFlowContractDataValidator: /* @__PURE__ */ __name(() => ConsentFlowContractDataValidator, "ConsentFlowContractDataValidator"),
99
103
  ConsentFlowContractDetailsValidator: /* @__PURE__ */ __name(() => ConsentFlowContractDetailsValidator, "ConsentFlowContractDetailsValidator"),
@@ -152,17 +156,21 @@ var require_types_cjs_development = __commonJS({
152
156
  FrameworkWithSkillsValidator: /* @__PURE__ */ __name(() => FrameworkWithSkillsValidator, "FrameworkWithSkillsValidator"),
153
157
  FullClaimHookValidator: /* @__PURE__ */ __name(() => FullClaimHookValidator, "FullClaimHookValidator"),
154
158
  GeoCoordinatesValidator: /* @__PURE__ */ __name(() => GeoCoordinatesValidator, "GeoCoordinatesValidator"),
159
+ GetCounterEventValidator: /* @__PURE__ */ __name(() => GetCounterEventValidator, "GetCounterEventValidator"),
160
+ GetCountersEventValidator: /* @__PURE__ */ __name(() => GetCountersEventValidator, "GetCountersEventValidator"),
155
161
  GetFullSkillTreeInputValidator: /* @__PURE__ */ __name(() => GetFullSkillTreeInputValidator, "GetFullSkillTreeInputValidator"),
156
162
  GetFullSkillTreeResultValidator: /* @__PURE__ */ __name(() => GetFullSkillTreeResultValidator, "GetFullSkillTreeResultValidator"),
157
163
  GetSkillPathInputValidator: /* @__PURE__ */ __name(() => GetSkillPathInputValidator, "GetSkillPathInputValidator"),
158
164
  GetSkillPathResultValidator: /* @__PURE__ */ __name(() => GetSkillPathResultValidator, "GetSkillPathResultValidator"),
159
165
  GetTemplateRecipientsEventValidator: /* @__PURE__ */ __name(() => GetTemplateRecipientsEventValidator, "GetTemplateRecipientsEventValidator"),
166
+ GuardianStatusValidator: /* @__PURE__ */ __name(() => GuardianStatusValidator, "GuardianStatusValidator"),
160
167
  IdentifierEntryValidator: /* @__PURE__ */ __name(() => IdentifierEntryValidator, "IdentifierEntryValidator"),
161
168
  IdentifierTypeValidator: /* @__PURE__ */ __name(() => IdentifierTypeValidator, "IdentifierTypeValidator"),
162
169
  IdentityObjectValidator: /* @__PURE__ */ __name(() => IdentityObjectValidator, "IdentityObjectValidator"),
163
170
  ImageValidator: /* @__PURE__ */ __name(() => ImageValidator, "ImageValidator"),
164
171
  InboxCredentialQueryValidator: /* @__PURE__ */ __name(() => InboxCredentialQueryValidator, "InboxCredentialQueryValidator"),
165
172
  InboxCredentialValidator: /* @__PURE__ */ __name(() => InboxCredentialValidator, "InboxCredentialValidator"),
173
+ IncrementCounterEventValidator: /* @__PURE__ */ __name(() => IncrementCounterEventValidator, "IncrementCounterEventValidator"),
166
174
  InstalledAppValidator: /* @__PURE__ */ __name(() => InstalledAppValidator, "InstalledAppValidator"),
167
175
  IssueInboxCredentialResponseValidator: /* @__PURE__ */ __name(() => IssueInboxCredentialResponseValidator, "IssueInboxCredentialResponseValidator"),
168
176
  IssueInboxCredentialValidator: /* @__PURE__ */ __name(() => IssueInboxCredentialValidator, "IssueInboxCredentialValidator"),
@@ -237,17 +245,20 @@ var require_types_cjs_development = __commonJS({
237
245
  RelatedValidator: /* @__PURE__ */ __name(() => RelatedValidator, "RelatedValidator"),
238
246
  ReplaceSkillFrameworkSkillsInputValidator: /* @__PURE__ */ __name(() => ReplaceSkillFrameworkSkillsInputValidator, "ReplaceSkillFrameworkSkillsInputValidator"),
239
247
  ReplaceSkillFrameworkSkillsResultValidator: /* @__PURE__ */ __name(() => ReplaceSkillFrameworkSkillsResultValidator, "ReplaceSkillFrameworkSkillsResultValidator"),
248
+ RequestLearnerContextEventValidator: /* @__PURE__ */ __name(() => RequestLearnerContextEventValidator, "RequestLearnerContextEventValidator"),
240
249
  ResultDescriptionValidator: /* @__PURE__ */ __name(() => ResultDescriptionValidator, "ResultDescriptionValidator"),
241
250
  ResultStatusTypeValidator: /* @__PURE__ */ __name(() => ResultStatusTypeValidator, "ResultStatusTypeValidator"),
242
251
  ResultTypeValidator: /* @__PURE__ */ __name(() => ResultTypeValidator, "ResultTypeValidator"),
243
252
  ResultValidator: /* @__PURE__ */ __name(() => ResultValidator, "ResultValidator"),
244
253
  RubricCriterionValidator: /* @__PURE__ */ __name(() => RubricCriterionValidator, "RubricCriterionValidator"),
254
+ SendAiSessionCredentialEventValidator: /* @__PURE__ */ __name(() => SendAiSessionCredentialEventValidator, "SendAiSessionCredentialEventValidator"),
245
255
  SendBoostInputValidator: /* @__PURE__ */ __name(() => SendBoostInputValidator, "SendBoostInputValidator"),
246
256
  SendBoostResponseValidator: /* @__PURE__ */ __name(() => SendBoostResponseValidator, "SendBoostResponseValidator"),
247
257
  SendBrandingOptionsValidator: /* @__PURE__ */ __name(() => SendBrandingOptionsValidator, "SendBrandingOptionsValidator"),
248
258
  SendCredentialEventValidator: /* @__PURE__ */ __name(() => SendCredentialEventValidator, "SendCredentialEventValidator"),
249
259
  SendInboxResponseValidator: /* @__PURE__ */ __name(() => SendInboxResponseValidator, "SendInboxResponseValidator"),
250
260
  SendInputValidator: /* @__PURE__ */ __name(() => SendInputValidator, "SendInputValidator"),
261
+ SendNotificationEventValidator: /* @__PURE__ */ __name(() => SendNotificationEventValidator, "SendNotificationEventValidator"),
251
262
  SendOptionsValidator: /* @__PURE__ */ __name(() => SendOptionsValidator, "SendOptionsValidator"),
252
263
  SendResponseValidator: /* @__PURE__ */ __name(() => SendResponseValidator, "SendResponseValidator"),
253
264
  SentCredentialInfoValidator: /* @__PURE__ */ __name(() => SentCredentialInfoValidator, "SentCredentialInfoValidator"),
@@ -269,10 +280,13 @@ var require_types_cjs_development = __commonJS({
269
280
  SkillTreeNodeValidator: /* @__PURE__ */ __name(() => SkillTreeNodeValidator, "SkillTreeNodeValidator"),
270
281
  SkillValidator: /* @__PURE__ */ __name(() => SkillValidator, "SkillValidator"),
271
282
  StringQuery: /* @__PURE__ */ __name(() => StringQuery, "StringQuery"),
283
+ SummaryCredentialDataValidator: /* @__PURE__ */ __name(() => SummaryCredentialDataValidator, "SummaryCredentialDataValidator"),
284
+ SummaryCredentialKeywordValidator: /* @__PURE__ */ __name(() => SummaryCredentialKeywordValidator, "SummaryCredentialKeywordValidator"),
272
285
  SyncFrameworkInputValidator: /* @__PURE__ */ __name(() => SyncFrameworkInputValidator, "SyncFrameworkInputValidator"),
273
286
  TagValidator: /* @__PURE__ */ __name(() => TagValidator, "TagValidator"),
274
287
  TermsOfUseValidator: /* @__PURE__ */ __name(() => TermsOfUseValidator, "TermsOfUseValidator"),
275
288
  UnsignedAchievementCredentialValidator: /* @__PURE__ */ __name(() => UnsignedAchievementCredentialValidator, "UnsignedAchievementCredentialValidator"),
289
+ UnsignedClrCredentialValidator: /* @__PURE__ */ __name(() => UnsignedClrCredentialValidator, "UnsignedClrCredentialValidator"),
276
290
  UnsignedVCValidator: /* @__PURE__ */ __name(() => UnsignedVCValidator, "UnsignedVCValidator"),
277
291
  UnsignedVPValidator: /* @__PURE__ */ __name(() => UnsignedVPValidator, "UnsignedVPValidator"),
278
292
  UpdateFrameworkInputValidator: /* @__PURE__ */ __name(() => UpdateFrameworkInputValidator, "UpdateFrameworkInputValidator"),
@@ -14044,6 +14058,42 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
14044
14058
  var AchievementCredentialValidator = UnsignedAchievementCredentialValidator.extend({
14045
14059
  proof: ProofValidator.or(ProofValidator.array())
14046
14060
  });
14061
+ var AssociationTypeValidator = external_exports.enum([
14062
+ "exactMatchOf",
14063
+ "extends",
14064
+ "isChildOf",
14065
+ "isParentOf",
14066
+ "isPartOf",
14067
+ "isPeerOf",
14068
+ "isRelatedTo",
14069
+ "precedes",
14070
+ "replacedBy"
14071
+ ]).or(external_exports.string());
14072
+ var AssociationValidator = external_exports.object({
14073
+ type: external_exports.string().array().nonempty(),
14074
+ associationType: AssociationTypeValidator,
14075
+ sourceId: external_exports.string().optional(),
14076
+ targetId: external_exports.string()
14077
+ }).catchall(external_exports.any());
14078
+ var ClrSubjectValidator = external_exports.object({
14079
+ id: external_exports.string().optional(),
14080
+ type: external_exports.string().array().nonempty(),
14081
+ identifier: external_exports.any().array().optional(),
14082
+ achievement: AchievementValidator.array().optional(),
14083
+ association: AssociationValidator.array().optional(),
14084
+ verifiableCredential: external_exports.any().array().optional()
14085
+ }).catchall(external_exports.any());
14086
+ var UnsignedClrCredentialValidator = UnsignedVCValidator.extend({
14087
+ name: external_exports.string().optional(),
14088
+ description: external_exports.string().optional(),
14089
+ image: ImageValidator.optional(),
14090
+ credentialSubject: ClrSubjectValidator.or(ClrSubjectValidator.array()),
14091
+ endorsement: EndorsementCredentialValidator.array().optional(),
14092
+ partial: external_exports.boolean().optional()
14093
+ });
14094
+ var ClrCredentialValidator = UnsignedClrCredentialValidator.extend({
14095
+ proof: ProofValidator.or(ProofValidator.array())
14096
+ });
14047
14097
  var VerificationCheckValidator = external_exports.object({
14048
14098
  checks: external_exports.string().array(),
14049
14099
  warnings: external_exports.string().array(),
@@ -14395,10 +14445,16 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
14395
14445
  credentialName: external_exports.string().optional().describe("Display name for the credential"),
14396
14446
  recipientName: external_exports.string().optional().describe("Name of the recipient for personalization")
14397
14447
  });
14448
+ var GuardianStatusValidator = external_exports.enum([
14449
+ "AWAITING_GUARDIAN",
14450
+ "GUARDIAN_APPROVED",
14451
+ "GUARDIAN_REJECTED"
14452
+ ]);
14398
14453
  var SendOptionsValidator = external_exports.object({
14399
14454
  webhookUrl: external_exports.string().url().optional().describe("Webhook URL to receive claim notifications"),
14400
14455
  suppressDelivery: external_exports.boolean().optional().describe("If true, returns claimUrl without sending email/SMS"),
14401
- branding: SendBrandingOptionsValidator.optional().describe("Branding for email/SMS delivery")
14456
+ branding: SendBrandingOptionsValidator.optional().describe("Branding for email/SMS delivery"),
14457
+ guardianEmail: external_exports.string().email().optional().describe("Guardian email that must approve before student can claim")
14402
14458
  });
14403
14459
  var SendBoostInputValidator = external_exports.object({
14404
14460
  type: external_exports.literal("boost"),
@@ -14412,14 +14468,28 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
14412
14468
  ),
14413
14469
  templateData: external_exports.record(external_exports.string(), external_exports.unknown()).optional(),
14414
14470
  integrationId: external_exports.string().optional().describe("Integration ID for activity tracking")
14415
- }).refine((data) => data.templateUri || data.template, {
14416
- message: "Either templateUri or template creation data must be provided.",
14471
+ }).refine((data) => data.templateUri || data.template || data.signedCredential, {
14472
+ message: "Either templateUri, template, or signedCredential must be provided.",
14417
14473
  path: ["templateUri"]
14418
- });
14474
+ }).refine(
14475
+ (data) => {
14476
+ if (data.options?.guardianEmail) {
14477
+ return data.options.guardianEmail.toLowerCase() !== data.recipient.toLowerCase();
14478
+ }
14479
+ return true;
14480
+ },
14481
+ {
14482
+ message: "guardianEmail must differ from recipient (self-approval not allowed)",
14483
+ path: ["options", "guardianEmail"]
14484
+ }
14485
+ );
14419
14486
  var SendInboxResponseValidator = external_exports.object({
14420
14487
  issuanceId: external_exports.string(),
14421
14488
  status: external_exports.enum(["PENDING", "ISSUED", "EXPIRED", "DELIVERED", "CLAIMED"]),
14422
- claimUrl: external_exports.string().url().optional().describe("Present when suppressDelivery=true")
14489
+ claimUrl: external_exports.string().url().optional().describe("Present when suppressDelivery=true"),
14490
+ guardianStatus: GuardianStatusValidator.optional().describe(
14491
+ "Present when guardianEmail was specified"
14492
+ )
14423
14493
  });
14424
14494
  var SendBoostResponseValidator = external_exports.object({
14425
14495
  type: external_exports.literal("boost"),
@@ -14656,7 +14726,11 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
14656
14726
  "APP_LISTING_APPROVED",
14657
14727
  "APP_LISTING_REJECTED",
14658
14728
  "APP_LISTING_WITHDRAWN",
14659
- "DEVICE_LINK_REQUEST"
14729
+ "DEVICE_LINK_REQUEST",
14730
+ "GUARDIAN_APPROVAL_PENDING",
14731
+ "GUARDIAN_APPROVED",
14732
+ "GUARDIAN_REJECTED",
14733
+ "APP_NOTIFICATION"
14660
14734
  ]);
14661
14735
  var LCNNotificationMessageValidator = external_exports.object({
14662
14736
  title: external_exports.string().optional(),
@@ -14694,7 +14768,10 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
14694
14768
  var LCNNotificationValidator = external_exports.object({
14695
14769
  type: LCNNotificationTypeEnumValidator,
14696
14770
  to: LCNProfileValidator.partial().and(external_exports.object({ did: external_exports.string() })),
14697
- from: LCNProfileValidator.partial().and(external_exports.object({ did: external_exports.string() })),
14771
+ from: external_exports.union([
14772
+ external_exports.string(),
14773
+ LCNProfileValidator.partial().and(external_exports.object({ did: external_exports.string() }))
14774
+ ]),
14698
14775
  message: LCNNotificationMessageValidator.optional(),
14699
14776
  data: LCNNotificationDataValidator.optional(),
14700
14777
  sent: external_exports.iso.datetime().optional(),
@@ -14799,7 +14876,12 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
14799
14876
  signingAuthority: external_exports.object({
14800
14877
  endpoint: external_exports.string().optional(),
14801
14878
  name: external_exports.string().optional()
14802
- }).optional()
14879
+ }).optional(),
14880
+ // Guardian gate fields (all optional — absent on pre-existing credentials)
14881
+ guardianEmail: external_exports.string().email().optional(),
14882
+ guardianStatus: GuardianStatusValidator.optional(),
14883
+ guardianApprovedAt: external_exports.string().optional(),
14884
+ guardianApprovedByDid: external_exports.string().optional()
14803
14885
  });
14804
14886
  var PaginatedInboxCredentialsValidator = external_exports.object({
14805
14887
  hasMore: external_exports.boolean(),
@@ -15267,11 +15349,84 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
15267
15349
  }).refine((input) => Boolean(input.templateAlias) !== Boolean(input.boostUri), {
15268
15350
  message: "Exactly one of templateAlias or boostUri is required"
15269
15351
  });
15352
+ var RequestLearnerContextEventValidator = external_exports.object({
15353
+ type: external_exports.literal("request-learner-context"),
15354
+ includeCredentials: external_exports.boolean().optional().default(true),
15355
+ includePersonalData: external_exports.boolean().optional().default(false),
15356
+ format: external_exports.enum(["prompt", "structured"]).optional().default("prompt"),
15357
+ instructions: external_exports.string().optional(),
15358
+ detailLevel: external_exports.enum(["compact", "expanded"]).optional().default("compact")
15359
+ });
15360
+ var SummaryCredentialKeywordValidator = external_exports.object({
15361
+ occupations: external_exports.array(external_exports.string()).nullable(),
15362
+ careers: external_exports.array(external_exports.string()).nullable(),
15363
+ jobs: external_exports.array(external_exports.string()).nullable(),
15364
+ skills: external_exports.array(external_exports.string()).nullable(),
15365
+ fieldOfStudy: external_exports.string().nullable()
15366
+ });
15367
+ var SummaryCredentialDataValidator = external_exports.object({
15368
+ title: external_exports.string().describe("Short, concise title for the learning session or credential"),
15369
+ summary: external_exports.string().describe("Comprehensive summary of what happened during the session"),
15370
+ learned: external_exports.array(external_exports.string()).describe("Bullet points of key knowledge gained"),
15371
+ skills: external_exports.array(
15372
+ external_exports.object({
15373
+ title: external_exports.string().describe("Name of the skill category"),
15374
+ description: external_exports.string().describe("Detailed description of what this skill category involves")
15375
+ })
15376
+ ).describe("Categorized skills learned during the session"),
15377
+ nextSteps: external_exports.array(
15378
+ external_exports.object({
15379
+ title: external_exports.string().describe("Title of the suggested next step"),
15380
+ description: external_exports.string().describe("Description explaining why this next step is recommended"),
15381
+ keywords: SummaryCredentialKeywordValidator
15382
+ })
15383
+ ).describe("Recommended follow-up activities or learning modules"),
15384
+ reflections: external_exports.array(
15385
+ external_exports.object({
15386
+ title: external_exports.string().describe("Title of the reflection"),
15387
+ description: external_exports.string().describe("Detailed description of what this reflection involves")
15388
+ })
15389
+ ).describe("Reflections on the learning experience")
15390
+ });
15391
+ var SendAiSessionCredentialEventValidator = external_exports.object({
15392
+ type: external_exports.literal("send-ai-session-credential"),
15393
+ sessionTitle: external_exports.string(),
15394
+ summaryData: SummaryCredentialDataValidator,
15395
+ metadata: external_exports.record(external_exports.string(), external_exports.unknown()).optional()
15396
+ });
15397
+ var SendNotificationEventValidator = external_exports.object({
15398
+ type: external_exports.literal("send-notification"),
15399
+ title: external_exports.string().optional(),
15400
+ body: external_exports.string().optional(),
15401
+ actionPath: external_exports.string().optional(),
15402
+ category: external_exports.string().optional(),
15403
+ priority: external_exports.enum(["normal", "high"]).optional()
15404
+ });
15405
+ var counterKeyValidator = external_exports.string().min(1).max(64).regex(/^[a-zA-Z0-9_-]+$/, "Key must be alphanumeric with _ or -");
15406
+ var IncrementCounterEventValidator = external_exports.object({
15407
+ type: external_exports.literal("increment-counter"),
15408
+ key: counterKeyValidator,
15409
+ amount: external_exports.number().int().finite()
15410
+ });
15411
+ var GetCounterEventValidator = external_exports.object({
15412
+ type: external_exports.literal("get-counter"),
15413
+ key: counterKeyValidator
15414
+ });
15415
+ var GetCountersEventValidator = external_exports.object({
15416
+ type: external_exports.literal("get-counters"),
15417
+ keys: external_exports.array(counterKeyValidator).min(1).max(50).optional()
15418
+ });
15270
15419
  var AppEventValidator = external_exports.discriminatedUnion("type", [
15271
15420
  SendCredentialEventValidator,
15272
15421
  CheckCredentialEventValidator,
15273
15422
  CheckIssuanceStatusEventValidator,
15274
- GetTemplateRecipientsEventValidator
15423
+ GetTemplateRecipientsEventValidator,
15424
+ RequestLearnerContextEventValidator,
15425
+ SendAiSessionCredentialEventValidator,
15426
+ SendNotificationEventValidator,
15427
+ IncrementCounterEventValidator,
15428
+ GetCounterEventValidator,
15429
+ GetCountersEventValidator
15275
15430
  ]);
15276
15431
  var AppEventInputValidator = external_exports.object({
15277
15432
  listingId: external_exports.string(),
@@ -15302,7 +15457,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
15302
15457
  activityId: external_exports.string(),
15303
15458
  eventType: CredentialActivityEventTypeValidator,
15304
15459
  timestamp: external_exports.string(),
15305
- actorProfileId: external_exports.string(),
15460
+ actorProfileId: external_exports.string().optional(),
15306
15461
  recipientType: CredentialActivityRecipientTypeValidator,
15307
15462
  recipientIdentifier: external_exports.string(),
15308
15463
  boostUri: external_exports.string().optional(),