@learncard/sss-key-manager 0.1.4 → 0.1.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/sss-key-manager.cjs.development.js +206 -41
- package/dist/sss-key-manager.cjs.development.js.map +2 -2
- package/dist/sss-key-manager.cjs.production.min.js +9 -9
- package/dist/sss-key-manager.cjs.production.min.js.map +3 -3
- package/dist/sss-key-manager.d.ts +6 -0
- package/dist/sss-key-manager.esm.js +206 -41
- package/dist/sss-key-manager.esm.js.map +2 -2
- package/package.json +2 -2
|
@@ -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"),
|
|
@@ -14415,11 +14471,25 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
14415
14471
|
}).refine((data) => data.templateUri || data.template || data.signedCredential, {
|
|
14416
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:
|
|
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,86 @@ 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.optional().describe(
|
|
15382
|
+
"Optional taxonomy keywords for occupations/careers/jobs/skills/fieldOfStudy. Omit if not relevant."
|
|
15383
|
+
)
|
|
15384
|
+
})
|
|
15385
|
+
).describe("Recommended follow-up activities or learning modules"),
|
|
15386
|
+
reflections: external_exports.array(
|
|
15387
|
+
external_exports.object({
|
|
15388
|
+
title: external_exports.string().describe("Title of the reflection"),
|
|
15389
|
+
description: external_exports.string().describe("Detailed description of what this reflection involves")
|
|
15390
|
+
})
|
|
15391
|
+
).describe("Reflections on the learning experience")
|
|
15392
|
+
});
|
|
15393
|
+
var SendAiSessionCredentialEventValidator = external_exports.object({
|
|
15394
|
+
type: external_exports.literal("send-ai-session-credential"),
|
|
15395
|
+
sessionTitle: external_exports.string(),
|
|
15396
|
+
summaryData: SummaryCredentialDataValidator,
|
|
15397
|
+
metadata: external_exports.record(external_exports.string(), external_exports.unknown()).optional()
|
|
15398
|
+
});
|
|
15399
|
+
var SendNotificationEventValidator = external_exports.object({
|
|
15400
|
+
type: external_exports.literal("send-notification"),
|
|
15401
|
+
title: external_exports.string().optional(),
|
|
15402
|
+
body: external_exports.string().optional(),
|
|
15403
|
+
actionPath: external_exports.string().optional(),
|
|
15404
|
+
category: external_exports.string().optional(),
|
|
15405
|
+
priority: external_exports.enum(["normal", "high"]).optional()
|
|
15406
|
+
});
|
|
15407
|
+
var counterKeyValidator = external_exports.string().min(1).max(64).regex(/^[a-zA-Z0-9_-]+$/, "Key must be alphanumeric with _ or -");
|
|
15408
|
+
var IncrementCounterEventValidator = external_exports.object({
|
|
15409
|
+
type: external_exports.literal("increment-counter"),
|
|
15410
|
+
key: counterKeyValidator,
|
|
15411
|
+
amount: external_exports.number().int().finite()
|
|
15412
|
+
});
|
|
15413
|
+
var GetCounterEventValidator = external_exports.object({
|
|
15414
|
+
type: external_exports.literal("get-counter"),
|
|
15415
|
+
key: counterKeyValidator
|
|
15416
|
+
});
|
|
15417
|
+
var GetCountersEventValidator = external_exports.object({
|
|
15418
|
+
type: external_exports.literal("get-counters"),
|
|
15419
|
+
keys: external_exports.array(counterKeyValidator).min(1).max(50).optional()
|
|
15420
|
+
});
|
|
15270
15421
|
var AppEventValidator = external_exports.discriminatedUnion("type", [
|
|
15271
15422
|
SendCredentialEventValidator,
|
|
15272
15423
|
CheckCredentialEventValidator,
|
|
15273
15424
|
CheckIssuanceStatusEventValidator,
|
|
15274
|
-
GetTemplateRecipientsEventValidator
|
|
15425
|
+
GetTemplateRecipientsEventValidator,
|
|
15426
|
+
RequestLearnerContextEventValidator,
|
|
15427
|
+
SendAiSessionCredentialEventValidator,
|
|
15428
|
+
SendNotificationEventValidator,
|
|
15429
|
+
IncrementCounterEventValidator,
|
|
15430
|
+
GetCounterEventValidator,
|
|
15431
|
+
GetCountersEventValidator
|
|
15275
15432
|
]);
|
|
15276
15433
|
var AppEventInputValidator = external_exports.object({
|
|
15277
15434
|
listingId: external_exports.string(),
|
|
@@ -15302,7 +15459,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
15302
15459
|
activityId: external_exports.string(),
|
|
15303
15460
|
eventType: CredentialActivityEventTypeValidator,
|
|
15304
15461
|
timestamp: external_exports.string(),
|
|
15305
|
-
actorProfileId: external_exports.string(),
|
|
15462
|
+
actorProfileId: external_exports.string().optional(),
|
|
15306
15463
|
recipientType: CredentialActivityRecipientTypeValidator,
|
|
15307
15464
|
recipientIdentifier: external_exports.string(),
|
|
15308
15465
|
boostUri: external_exports.string().optional(),
|
|
@@ -16705,14 +16862,15 @@ var defaultStorage = {
|
|
|
16705
16862
|
storeShareVersion,
|
|
16706
16863
|
getShareVersion
|
|
16707
16864
|
};
|
|
16708
|
-
var buildHeaders = /* @__PURE__ */ __name((token, didAuthVp) => ({
|
|
16865
|
+
var buildHeaders = /* @__PURE__ */ __name((token, didAuthVp, tenantId) => ({
|
|
16709
16866
|
"Content-Type": "application/json",
|
|
16710
|
-
...didAuthVp ? { Authorization: `Bearer ${didAuthVp}` } : {}
|
|
16867
|
+
...didAuthVp ? { Authorization: `Bearer ${didAuthVp}` } : {},
|
|
16868
|
+
...tenantId ? { "X-Tenant-Id": tenantId } : {}
|
|
16711
16869
|
}), "buildHeaders");
|
|
16712
|
-
var fetchAuthShareRaw = /* @__PURE__ */ __name(async (serverUrl, token, providerType, shareVersion) => {
|
|
16870
|
+
var fetchAuthShareRaw = /* @__PURE__ */ __name(async (serverUrl, token, providerType, shareVersion, tenantId) => {
|
|
16713
16871
|
const response = await fetch(`${serverUrl}/keys/auth-share`, {
|
|
16714
16872
|
method: "POST",
|
|
16715
|
-
headers: buildHeaders(token),
|
|
16873
|
+
headers: buildHeaders(token, void 0, tenantId),
|
|
16716
16874
|
body: JSON.stringify({
|
|
16717
16875
|
authToken: token,
|
|
16718
16876
|
providerType,
|
|
@@ -16725,10 +16883,10 @@ var fetchAuthShareRaw = /* @__PURE__ */ __name(async (serverUrl, token, provider
|
|
|
16725
16883
|
}
|
|
16726
16884
|
return response.json();
|
|
16727
16885
|
}, "fetchAuthShareRaw");
|
|
16728
|
-
var putAuthShare = /* @__PURE__ */ __name(async (serverUrl, token, providerType, authShare, primaryDid, didAuthVp) => {
|
|
16886
|
+
var putAuthShare = /* @__PURE__ */ __name(async (serverUrl, token, providerType, authShare, primaryDid, didAuthVp, tenantId) => {
|
|
16729
16887
|
const response = await fetch(`${serverUrl}/keys/auth-share`, {
|
|
16730
16888
|
method: "PUT",
|
|
16731
|
-
headers: buildHeaders(token, didAuthVp),
|
|
16889
|
+
headers: buildHeaders(token, didAuthVp, tenantId),
|
|
16732
16890
|
body: JSON.stringify({
|
|
16733
16891
|
authToken: token,
|
|
16734
16892
|
providerType,
|
|
@@ -16743,24 +16901,24 @@ var putAuthShare = /* @__PURE__ */ __name(async (serverUrl, token, providerType,
|
|
|
16743
16901
|
const data = await response.json();
|
|
16744
16902
|
return { shareVersion: data.shareVersion ?? 1 };
|
|
16745
16903
|
}, "putAuthShare");
|
|
16746
|
-
var fetchRecoveryShare = /* @__PURE__ */ __name(async (serverUrl, token, providerType, type, credentialId) => {
|
|
16904
|
+
var fetchRecoveryShare = /* @__PURE__ */ __name(async (serverUrl, token, providerType, type, credentialId, tenantId) => {
|
|
16747
16905
|
const params = new URLSearchParams({ type, providerType, authToken: token });
|
|
16748
16906
|
if (credentialId) {
|
|
16749
16907
|
params.set("credentialId", credentialId);
|
|
16750
16908
|
}
|
|
16751
16909
|
const response = await fetch(`${serverUrl}/keys/recovery?${params}`, {
|
|
16752
16910
|
method: "GET",
|
|
16753
|
-
headers:
|
|
16911
|
+
headers: buildHeaders(token, void 0, tenantId)
|
|
16754
16912
|
});
|
|
16755
16913
|
if (!response.ok) {
|
|
16756
16914
|
throw new Error(`No ${type} recovery share found`);
|
|
16757
16915
|
}
|
|
16758
16916
|
return response.json();
|
|
16759
16917
|
}, "fetchRecoveryShare");
|
|
16760
|
-
var postRecoveryMethod = /* @__PURE__ */ __name(async (serverUrl, token, providerType, body, didAuthVp) => {
|
|
16918
|
+
var postRecoveryMethod = /* @__PURE__ */ __name(async (serverUrl, token, providerType, body, didAuthVp, tenantId) => {
|
|
16761
16919
|
const response = await fetch(`${serverUrl}/keys/recovery`, {
|
|
16762
16920
|
method: "POST",
|
|
16763
|
-
headers: buildHeaders(token, didAuthVp),
|
|
16921
|
+
headers: buildHeaders(token, didAuthVp, tenantId),
|
|
16764
16922
|
body: JSON.stringify({ authToken: token, providerType, ...body })
|
|
16765
16923
|
});
|
|
16766
16924
|
if (!response.ok) {
|
|
@@ -16779,12 +16937,12 @@ var parseVersionedEmailShare = /* @__PURE__ */ __name((input) => {
|
|
|
16779
16937
|
}
|
|
16780
16938
|
return { share: input, version: void 0 };
|
|
16781
16939
|
}, "parseVersionedEmailShare");
|
|
16782
|
-
var sendEmailBackupShare = /* @__PURE__ */ __name(async (serverUrl, token, providerType, emailShare, email, shareVersion) => {
|
|
16940
|
+
var sendEmailBackupShare = /* @__PURE__ */ __name(async (serverUrl, token, providerType, emailShare, email, shareVersion, tenantId) => {
|
|
16783
16941
|
try {
|
|
16784
16942
|
const payload = shareVersion != null ? formatVersionedEmailShare(emailShare, shareVersion) : emailShare;
|
|
16785
16943
|
const response = await fetch(`${serverUrl}/keys/email-backup`, {
|
|
16786
16944
|
method: "POST",
|
|
16787
|
-
headers: buildHeaders(token),
|
|
16945
|
+
headers: buildHeaders(token, void 0, tenantId),
|
|
16788
16946
|
body: JSON.stringify({ authToken: token, providerType, emailShare: payload, email })
|
|
16789
16947
|
});
|
|
16790
16948
|
if (!response.ok) {
|
|
@@ -16794,11 +16952,11 @@ var sendEmailBackupShare = /* @__PURE__ */ __name(async (serverUrl, token, provi
|
|
|
16794
16952
|
console.warn("Email backup share delivery failed:", e);
|
|
16795
16953
|
}
|
|
16796
16954
|
}, "sendEmailBackupShare");
|
|
16797
|
-
var sendEmailShareToRecoveryEmail = /* @__PURE__ */ __name(async (serverUrl, token, providerType, emailShare, shareVersion) => {
|
|
16955
|
+
var sendEmailShareToRecoveryEmail = /* @__PURE__ */ __name(async (serverUrl, token, providerType, emailShare, shareVersion, tenantId) => {
|
|
16798
16956
|
const payload = shareVersion != null ? formatVersionedEmailShare(emailShare, shareVersion) : emailShare;
|
|
16799
16957
|
const response = await fetch(`${serverUrl}/keys/email-backup`, {
|
|
16800
16958
|
method: "POST",
|
|
16801
|
-
headers: buildHeaders(token),
|
|
16959
|
+
headers: buildHeaders(token, void 0, tenantId),
|
|
16802
16960
|
body: JSON.stringify({
|
|
16803
16961
|
authToken: token,
|
|
16804
16962
|
providerType,
|
|
@@ -16811,7 +16969,7 @@ var sendEmailShareToRecoveryEmail = /* @__PURE__ */ __name(async (serverUrl, tok
|
|
|
16811
16969
|
}
|
|
16812
16970
|
}, "sendEmailShareToRecoveryEmail");
|
|
16813
16971
|
function createSSSStrategy(config) {
|
|
16814
|
-
const { serverUrl, enableEmailBackupShare = false } = config;
|
|
16972
|
+
const { serverUrl, enableEmailBackupShare = false, tenantId } = config;
|
|
16815
16973
|
const storage = config.storage || defaultStorage;
|
|
16816
16974
|
let activeStorageId;
|
|
16817
16975
|
let lastEmailShare;
|
|
@@ -16884,7 +17042,8 @@ function createSSSStrategy(config) {
|
|
|
16884
17042
|
serverUrl,
|
|
16885
17043
|
token,
|
|
16886
17044
|
providerType,
|
|
16887
|
-
localVersion ?? void 0
|
|
17045
|
+
localVersion ?? void 0,
|
|
17046
|
+
tenantId
|
|
16888
17047
|
);
|
|
16889
17048
|
if (!data) {
|
|
16890
17049
|
hasRecoveryEmail = false;
|
|
@@ -16916,14 +17075,14 @@ function createSSSStrategy(config) {
|
|
|
16916
17075
|
};
|
|
16917
17076
|
},
|
|
16918
17077
|
async storeAuthShare(token, providerType, authShare, primaryDid, didAuthVp) {
|
|
16919
|
-
const { shareVersion } = await putAuthShare(serverUrl, token, providerType, authShare, primaryDid, didAuthVp);
|
|
17078
|
+
const { shareVersion } = await putAuthShare(serverUrl, token, providerType, authShare, primaryDid, didAuthVp, tenantId);
|
|
16920
17079
|
await storage.storeShareVersion(shareVersion, activeStorageId);
|
|
16921
17080
|
lastShareVersion = shareVersion;
|
|
16922
17081
|
},
|
|
16923
17082
|
async markMigrated(token, providerType, didAuthVp) {
|
|
16924
17083
|
const response = await fetch(`${serverUrl}/keys/migrate`, {
|
|
16925
17084
|
method: "POST",
|
|
16926
|
-
headers: buildHeaders(token, didAuthVp),
|
|
17085
|
+
headers: buildHeaders(token, didAuthVp, tenantId),
|
|
16927
17086
|
body: JSON.stringify({ authToken: token, providerType })
|
|
16928
17087
|
});
|
|
16929
17088
|
if (!response.ok) {
|
|
@@ -16942,7 +17101,8 @@ function createSSSStrategy(config) {
|
|
|
16942
17101
|
token,
|
|
16943
17102
|
providerType,
|
|
16944
17103
|
"passkey",
|
|
16945
|
-
input.credentialId
|
|
17104
|
+
input.credentialId,
|
|
17105
|
+
tenantId
|
|
16946
17106
|
);
|
|
16947
17107
|
if (!result?.encryptedShare) {
|
|
16948
17108
|
throw new Error("No passkey recovery share found");
|
|
@@ -16966,7 +17126,9 @@ function createSSSStrategy(config) {
|
|
|
16966
17126
|
serverUrl,
|
|
16967
17127
|
token,
|
|
16968
17128
|
providerType,
|
|
16969
|
-
"phrase"
|
|
17129
|
+
"phrase",
|
|
17130
|
+
void 0,
|
|
17131
|
+
tenantId
|
|
16970
17132
|
);
|
|
16971
17133
|
recoveryShareVersion = phraseRecord?.shareVersion;
|
|
16972
17134
|
} catch {
|
|
@@ -16999,7 +17161,8 @@ function createSSSStrategy(config) {
|
|
|
16999
17161
|
serverUrl,
|
|
17000
17162
|
token,
|
|
17001
17163
|
providerType,
|
|
17002
|
-
recoveryShareVersion
|
|
17164
|
+
recoveryShareVersion,
|
|
17165
|
+
tenantId
|
|
17003
17166
|
);
|
|
17004
17167
|
if (!serverData?.authShare) {
|
|
17005
17168
|
throw new Error("No auth share found on server");
|
|
@@ -17036,12 +17199,12 @@ function createSSSStrategy(config) {
|
|
|
17036
17199
|
const { shares } = await splitAndVerify(privateKey);
|
|
17037
17200
|
lastEmailShare = shares.emailShare;
|
|
17038
17201
|
await storage.storeDeviceShare(shares.deviceShare, activeStorageId);
|
|
17039
|
-
const serverData = await fetchAuthShareRaw(serverUrl, token, providerType);
|
|
17202
|
+
const serverData = await fetchAuthShareRaw(serverUrl, token, providerType, void 0, tenantId);
|
|
17040
17203
|
const primaryDid = serverData?.primaryDid || "";
|
|
17041
|
-
const { shareVersion } = await putAuthShare(serverUrl, token, providerType, shares.authShare, primaryDid, vpJwt);
|
|
17204
|
+
const { shareVersion } = await putAuthShare(serverUrl, token, providerType, shares.authShare, primaryDid, vpJwt, tenantId);
|
|
17042
17205
|
await storage.storeShareVersion(shareVersion, activeStorageId);
|
|
17043
17206
|
if (enableEmailBackupShare && input.method !== "email" && lastEmailShare) {
|
|
17044
|
-
const resend = hasRecoveryEmail ? sendEmailShareToRecoveryEmail(serverUrl, token, providerType, lastEmailShare, shareVersion) : authUser?.email ? sendEmailBackupShare(serverUrl, token, providerType, lastEmailShare, authUser.email, shareVersion) : Promise.resolve();
|
|
17207
|
+
const resend = hasRecoveryEmail ? sendEmailShareToRecoveryEmail(serverUrl, token, providerType, lastEmailShare, shareVersion, tenantId) : authUser?.email ? sendEmailBackupShare(serverUrl, token, providerType, lastEmailShare, authUser.email, shareVersion, tenantId) : Promise.resolve();
|
|
17045
17208
|
resend.catch((e) => console.warn("Email backup share re-send failed (non-fatal):", e));
|
|
17046
17209
|
lastEmailShare = void 0;
|
|
17047
17210
|
}
|
|
@@ -17060,7 +17223,7 @@ function createSSSStrategy(config) {
|
|
|
17060
17223
|
},
|
|
17061
17224
|
credentialId: credential.credentialId,
|
|
17062
17225
|
shareVersion
|
|
17063
|
-
}, vpJwt);
|
|
17226
|
+
}, vpJwt, tenantId);
|
|
17064
17227
|
return { method: "passkey", credentialId: credential.credentialId };
|
|
17065
17228
|
}
|
|
17066
17229
|
case "phrase": {
|
|
@@ -17068,7 +17231,7 @@ function createSSSStrategy(config) {
|
|
|
17068
17231
|
await postRecoveryMethod(serverUrl, token, providerType, {
|
|
17069
17232
|
type: "phrase",
|
|
17070
17233
|
shareVersion
|
|
17071
|
-
}, vpJwt);
|
|
17234
|
+
}, vpJwt, tenantId);
|
|
17072
17235
|
return { method: "phrase", phrase };
|
|
17073
17236
|
}
|
|
17074
17237
|
case "backup": {
|
|
@@ -17088,7 +17251,7 @@ function createSSSStrategy(config) {
|
|
|
17088
17251
|
await postRecoveryMethod(serverUrl, token, providerType, {
|
|
17089
17252
|
type: "backup",
|
|
17090
17253
|
shareVersion
|
|
17091
|
-
}, vpJwt);
|
|
17254
|
+
}, vpJwt, tenantId);
|
|
17092
17255
|
return { method: "backup", backupFile };
|
|
17093
17256
|
}
|
|
17094
17257
|
case "email": {
|
|
@@ -17097,12 +17260,13 @@ function createSSSStrategy(config) {
|
|
|
17097
17260
|
token,
|
|
17098
17261
|
providerType,
|
|
17099
17262
|
shares.emailShare,
|
|
17100
|
-
shareVersion
|
|
17263
|
+
shareVersion,
|
|
17264
|
+
tenantId
|
|
17101
17265
|
);
|
|
17102
17266
|
await postRecoveryMethod(serverUrl, token, providerType, {
|
|
17103
17267
|
type: "email",
|
|
17104
17268
|
shareVersion
|
|
17105
|
-
}, vpJwt);
|
|
17269
|
+
}, vpJwt, tenantId);
|
|
17106
17270
|
hasRecoveryEmail = true;
|
|
17107
17271
|
return { method: "email" };
|
|
17108
17272
|
}
|
|
@@ -17110,7 +17274,7 @@ function createSSSStrategy(config) {
|
|
|
17110
17274
|
},
|
|
17111
17275
|
async getAvailableRecoveryMethods(token, providerType) {
|
|
17112
17276
|
try {
|
|
17113
|
-
const serverData = await fetchAuthShareRaw(serverUrl, token, providerType);
|
|
17277
|
+
const serverData = await fetchAuthShareRaw(serverUrl, token, providerType, void 0, tenantId);
|
|
17114
17278
|
const methods = serverData?.recoveryMethods || [];
|
|
17115
17279
|
if (enableEmailBackupShare && !methods.some((m) => m.type === "email")) {
|
|
17116
17280
|
methods.push({ type: "email", createdAt: /* @__PURE__ */ new Date() });
|
|
@@ -17125,7 +17289,7 @@ function createSSSStrategy(config) {
|
|
|
17125
17289
|
async upgradeContactMethod(token, providerType, previousPhone, email, code) {
|
|
17126
17290
|
const res = await fetch(`${serverUrl}/keys/upgrade-contact-method`, {
|
|
17127
17291
|
method: "POST",
|
|
17128
|
-
headers:
|
|
17292
|
+
headers: buildHeaders(token, void 0, tenantId),
|
|
17129
17293
|
body: JSON.stringify({
|
|
17130
17294
|
authToken: token,
|
|
17131
17295
|
providerType,
|
|
@@ -17155,14 +17319,15 @@ function createSSSStrategy(config) {
|
|
|
17155
17319
|
token,
|
|
17156
17320
|
providerType,
|
|
17157
17321
|
lastEmailShare,
|
|
17158
|
-
lastShareVersion
|
|
17322
|
+
lastShareVersion,
|
|
17323
|
+
tenantId
|
|
17159
17324
|
);
|
|
17160
17325
|
} else {
|
|
17161
17326
|
if (!email) {
|
|
17162
17327
|
console.warn("Cannot send email backup share: no email address");
|
|
17163
17328
|
return;
|
|
17164
17329
|
}
|
|
17165
|
-
await sendEmailBackupShare(serverUrl, token, providerType, lastEmailShare, email, lastShareVersion);
|
|
17330
|
+
await sendEmailBackupShare(serverUrl, token, providerType, lastEmailShare, email, lastShareVersion, tenantId);
|
|
17166
17331
|
}
|
|
17167
17332
|
lastEmailShare = void 0;
|
|
17168
17333
|
lastShareVersion = void 0;
|