@learncard/learn-cloud-plugin 2.3.50 → 2.3.52
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/README.md +11 -108
- package/dist/learn-cloud-plugin.cjs.development.cjs +605 -53
- package/dist/learn-cloud-plugin.cjs.development.cjs.map +3 -3
- package/dist/learn-cloud-plugin.cjs.production.min.cjs +23 -23
- package/dist/learn-cloud-plugin.cjs.production.min.cjs.map +3 -3
- package/dist/learn-cloud-plugin.esm.js +605 -53
- package/dist/learn-cloud-plugin.esm.js.map +3 -3
- package/dist/plugin.d.ts.map +1 -1
- package/package.json +8 -8
- package/src/plugin.ts +11 -2
- package/src/test/index.test.ts +57 -0
|
@@ -27108,12 +27108,46 @@ var StringQuery = external_exports.union([
|
|
|
27108
27108
|
$or: BaseStringQuery.array()
|
|
27109
27109
|
})
|
|
27110
27110
|
]);
|
|
27111
|
+
var BITSTRING_STATUS_PURPOSES = ["revocation", "suspension"];
|
|
27112
|
+
var BitstringStatusPurposeValidator = external_exports.enum(BITSTRING_STATUS_PURPOSES);
|
|
27113
|
+
var BitstringStatusListEntryValidator = external_exports.object({
|
|
27114
|
+
id: external_exports.string().optional(),
|
|
27115
|
+
type: external_exports.literal("BitstringStatusListEntry"),
|
|
27116
|
+
statusPurpose: BitstringStatusPurposeValidator,
|
|
27117
|
+
statusListIndex: external_exports.string().or(external_exports.number().int().nonnegative()),
|
|
27118
|
+
statusListCredential: external_exports.string()
|
|
27119
|
+
});
|
|
27120
|
+
var AllocatedBitstringStatusListEntryValidator = BitstringStatusListEntryValidator.extend({
|
|
27121
|
+
id: external_exports.string()
|
|
27122
|
+
});
|
|
27123
|
+
var BitstringStatusListCredentialSubjectValidator = external_exports.object({
|
|
27124
|
+
id: external_exports.string().optional(),
|
|
27125
|
+
type: external_exports.literal("BitstringStatusList"),
|
|
27126
|
+
statusPurpose: BitstringStatusPurposeValidator,
|
|
27127
|
+
encodedList: external_exports.string()
|
|
27128
|
+
});
|
|
27129
|
+
var AllocateCredentialStatusInputValidator = external_exports.object({
|
|
27130
|
+
statusPurposes: external_exports.array(BitstringStatusPurposeValidator).optional(),
|
|
27131
|
+
listSize: external_exports.number().int().positive().optional()
|
|
27132
|
+
}).default({});
|
|
27133
|
+
var AttachCredentialRefreshStatusEntriesInputValidator = external_exports.object({
|
|
27134
|
+
refreshId: external_exports.string().min(1),
|
|
27135
|
+
credentialStatus: CredentialStatusValidator.or(CredentialStatusValidator.array()).nullable()
|
|
27136
|
+
});
|
|
27111
27137
|
var LearnCardRefreshAuthorizationValidator = external_exports.object({ type: external_exports.literal("LearnCardDIDAuth") }).catchall(external_exports.any());
|
|
27112
27138
|
var ManagedCredentialRefreshServiceValidator = external_exports.object({
|
|
27113
27139
|
id: external_exports.string().min(1),
|
|
27114
27140
|
type: external_exports.literal("LearnCardCredentialRefresh2026"),
|
|
27115
27141
|
authorization: LearnCardRefreshAuthorizationValidator.optional()
|
|
27116
27142
|
}).catchall(external_exports.any());
|
|
27143
|
+
var ManagedCredentialRefreshBindingValidator = ManagedCredentialRefreshServiceValidator.or(
|
|
27144
|
+
RefreshServiceValidator.array().refine(
|
|
27145
|
+
(services) => services.some(
|
|
27146
|
+
(service) => ManagedCredentialRefreshServiceValidator.safeParse(service).success
|
|
27147
|
+
),
|
|
27148
|
+
"A managed refresh service is required"
|
|
27149
|
+
)
|
|
27150
|
+
);
|
|
27117
27151
|
var StandardCredentialRefreshServiceValidator = external_exports.object({
|
|
27118
27152
|
id: external_exports.string().min(1),
|
|
27119
27153
|
type: external_exports.literal("1EdTechCredentialRefresh")
|
|
@@ -27137,7 +27171,9 @@ var AllocateCredentialRefreshResultValidator = external_exports.object({
|
|
|
27137
27171
|
});
|
|
27138
27172
|
var ManagedCredentialRefreshReceiptValidator = external_exports.object({
|
|
27139
27173
|
refreshId: external_exports.string().min(1),
|
|
27140
|
-
refreshService:
|
|
27174
|
+
refreshService: ManagedCredentialRefreshBindingValidator,
|
|
27175
|
+
/** Legacy receipts authenticate only the allocated managed entry, not other services. */
|
|
27176
|
+
refreshServiceBinding: external_exports.literal("managed-entry").optional(),
|
|
27141
27177
|
credentialId: external_exports.string().min(1),
|
|
27142
27178
|
issuerDid: external_exports.string().min(1),
|
|
27143
27179
|
holderDid: external_exports.string().min(1),
|
|
@@ -27145,14 +27181,43 @@ var ManagedCredentialRefreshReceiptValidator = external_exports.object({
|
|
|
27145
27181
|
CredentialStatusValidator.array()
|
|
27146
27182
|
).optional()
|
|
27147
27183
|
}).strip();
|
|
27184
|
+
var GetCredentialRefreshReceiptInputValidator = external_exports.object({ uri: external_exports.string().min(1) });
|
|
27185
|
+
var CredentialRefreshReceiptValidator = ManagedCredentialRefreshReceiptValidator.extend({
|
|
27186
|
+
encryptionMode: external_exports.enum(["network", "holder"])
|
|
27187
|
+
});
|
|
27188
|
+
var HolderEncryptedHandoffValidator = external_exports.object({
|
|
27189
|
+
refreshId: external_exports.string().min(1),
|
|
27190
|
+
credentialId: external_exports.string().min(1),
|
|
27191
|
+
holderDid: external_exports.string().min(1),
|
|
27192
|
+
issuerDid: external_exports.string().min(1),
|
|
27193
|
+
credentialStatus: CredentialStatusValidator.or(CredentialStatusValidator.array()),
|
|
27194
|
+
refreshService: ManagedCredentialRefreshBindingValidator.optional(),
|
|
27195
|
+
jwe: JWEValidator
|
|
27196
|
+
}).strict();
|
|
27197
|
+
var SendHolderEncryptedRefreshableInputValidator = external_exports.object({
|
|
27198
|
+
handoff: HolderEncryptedHandoffValidator,
|
|
27199
|
+
idempotencyKey: external_exports.string().min(1).optional(),
|
|
27200
|
+
boostUri: external_exports.string().optional(),
|
|
27201
|
+
skipNotification: external_exports.boolean().optional()
|
|
27202
|
+
});
|
|
27203
|
+
var GetEncryptionRecipientsInputValidator = external_exports.object({ refreshId: external_exports.string().min(1) });
|
|
27204
|
+
var EncryptionRecipientsResultValidator = external_exports.object({
|
|
27205
|
+
recipientKeyIds: external_exports.array(external_exports.string())
|
|
27206
|
+
});
|
|
27148
27207
|
var InboxCredentialRefreshReceiptValidator = ManagedCredentialRefreshReceiptValidator.omit(
|
|
27149
27208
|
{ holderDid: true }
|
|
27150
27209
|
).extend({ holderDid: external_exports.string().min(1).optional() });
|
|
27151
27210
|
var CredentialRefreshSigningModeValidator = external_exports.enum(["issuer-signed", "signing-authority"]);
|
|
27211
|
+
var CredentialRefreshUpdateReasonValidator = external_exports.enum(["corrected", "updated", "reissued"]);
|
|
27152
27212
|
var PublishCredentialRefreshBaseFields = {
|
|
27153
27213
|
refreshId: external_exports.string().min(1),
|
|
27154
27214
|
notifyHolder: external_exports.boolean().optional(),
|
|
27155
|
-
updateSummary: external_exports.string().optional()
|
|
27215
|
+
updateSummary: external_exports.string().max(280).optional().describe(
|
|
27216
|
+
"Public legacy update summary. Do not include private claims; prefer updateReason."
|
|
27217
|
+
),
|
|
27218
|
+
updateReason: CredentialRefreshUpdateReasonValidator.optional().describe(
|
|
27219
|
+
"Public reason for this update"
|
|
27220
|
+
),
|
|
27156
27221
|
idempotencyKey: external_exports.string().optional()
|
|
27157
27222
|
};
|
|
27158
27223
|
var PublishIssuerSignedRefreshValidator = external_exports.object({
|
|
@@ -27228,13 +27293,25 @@ var PublishCredentialRefreshResultValidator = external_exports.object({
|
|
|
27228
27293
|
publishedAt: external_exports.string().min(1),
|
|
27229
27294
|
notification: PublishCredentialRefreshNotificationValidator
|
|
27230
27295
|
});
|
|
27296
|
+
var PublishHolderEncryptedRefreshInputValidator = external_exports.object({
|
|
27297
|
+
handoff: HolderEncryptedHandoffValidator,
|
|
27298
|
+
notify: external_exports.boolean(),
|
|
27299
|
+
updateSummary: external_exports.string().max(280).optional().describe(
|
|
27300
|
+
"Public legacy update summary. Do not include private claims; prefer updateReason."
|
|
27301
|
+
),
|
|
27302
|
+
updateReason: CredentialRefreshUpdateReasonValidator.optional().describe(
|
|
27303
|
+
"Public reason for this update"
|
|
27304
|
+
),
|
|
27305
|
+
idempotencyKey: external_exports.string().optional()
|
|
27306
|
+
});
|
|
27231
27307
|
var CredentialRefreshVersionMetadataValidator = external_exports.object({
|
|
27232
27308
|
version: external_exports.number().int().positive(),
|
|
27233
27309
|
publishedAt: external_exports.string().min(1),
|
|
27234
27310
|
effectiveAt: external_exports.string().optional(),
|
|
27235
27311
|
etag: external_exports.string().optional(),
|
|
27236
27312
|
signingMode: CredentialRefreshSigningModeValidator.optional(),
|
|
27237
|
-
updateSummary: external_exports.string().optional()
|
|
27313
|
+
updateSummary: external_exports.string().optional(),
|
|
27314
|
+
updateReason: CredentialRefreshUpdateReasonValidator.optional()
|
|
27238
27315
|
});
|
|
27239
27316
|
var GetCredentialRefreshHistoryInputValidator = external_exports.object({
|
|
27240
27317
|
refreshId: external_exports.string().min(1),
|
|
@@ -27277,6 +27354,7 @@ var CredentialRefreshFailureCodeValidator = external_exports.enum([
|
|
|
27277
27354
|
"INVALID_PROOF",
|
|
27278
27355
|
"ISSUER_MISMATCH",
|
|
27279
27356
|
"ID_MISMATCH",
|
|
27357
|
+
"BINDING_MISMATCH",
|
|
27280
27358
|
"ROLLBACK",
|
|
27281
27359
|
"REVOKED",
|
|
27282
27360
|
"UNSAFE_ENDPOINT"
|
|
@@ -27601,6 +27679,11 @@ var AutoBoostConfigValidator = external_exports.object({
|
|
|
27601
27679
|
name: external_exports.string()
|
|
27602
27680
|
})
|
|
27603
27681
|
});
|
|
27682
|
+
var CredentialDisplayValidator = external_exports.object({
|
|
27683
|
+
name: external_exports.string().trim().min(1).max(280).optional(),
|
|
27684
|
+
category: external_exports.string().max(280).optional(),
|
|
27685
|
+
image: external_exports.string().max(2048).url().refine((url2) => url2.startsWith("https://"), { message: "Image URL must use https" }).optional()
|
|
27686
|
+
});
|
|
27604
27687
|
var SendBoostTemplateValidator = BoostValidator.partial().omit({ uri: true, claimPermissions: true }).extend({
|
|
27605
27688
|
credential: VCValidator.or(UnsignedVCValidator),
|
|
27606
27689
|
claimPermissions: BoostPermissionsValidator.partial().optional(),
|
|
@@ -27639,6 +27722,10 @@ var SendBoostInputValidator = external_exports.object({
|
|
|
27639
27722
|
templateUri: external_exports.string().optional(),
|
|
27640
27723
|
template: SendBoostTemplateValidator.optional(),
|
|
27641
27724
|
signedCredential: VCValidator.optional(),
|
|
27725
|
+
display: CredentialDisplayValidator.optional().describe(
|
|
27726
|
+
"Public display metadata for managed and signed-only sends. Nothing is inferred from credential content; omitted names use generic copy. The exception is category: when display.category is omitted for an inline template, the template's category is copied, since consent-flow write authorization is keyed on it."
|
|
27727
|
+
),
|
|
27728
|
+
statusPurposes: external_exports.array(BitstringStatusPurposeValidator).optional(),
|
|
27642
27729
|
options: SendOptionsValidator.optional().describe(
|
|
27643
27730
|
"Options for email/phone recipients (Universal Inbox)"
|
|
27644
27731
|
),
|
|
@@ -27677,7 +27764,10 @@ var SendInboxResponseValidator = external_exports.object({
|
|
|
27677
27764
|
"Present when guardianEmail was specified"
|
|
27678
27765
|
)
|
|
27679
27766
|
});
|
|
27767
|
+
var StatusManagementValidator = external_exports.enum(["network", "external", "mixed", "none"]);
|
|
27680
27768
|
var SendBoostResponseValidator = external_exports.object({
|
|
27769
|
+
/** Public status providers for a managed send; external entries require provider-side updates. */
|
|
27770
|
+
statusManagement: StatusManagementValidator.optional(),
|
|
27681
27771
|
type: external_exports.literal("boost"),
|
|
27682
27772
|
credentialUri: external_exports.string(),
|
|
27683
27773
|
uri: external_exports.string(),
|
|
@@ -27690,19 +27780,33 @@ var SendBoostResponseValidator = external_exports.object({
|
|
|
27690
27780
|
)
|
|
27691
27781
|
});
|
|
27692
27782
|
var PrepareRefreshableSendInputValidator = external_exports.object({
|
|
27783
|
+
/** Opt in to signing the server-bound statusEntries; omission preserves client allocation. */
|
|
27784
|
+
statusBinding: external_exports.literal("server").optional(),
|
|
27785
|
+
statusPurposes: external_exports.array(BitstringStatusPurposeValidator).optional(),
|
|
27693
27786
|
recipient: external_exports.string(),
|
|
27694
27787
|
templateUri: external_exports.string().optional(),
|
|
27695
27788
|
template: SendBoostTemplateValidator.optional(),
|
|
27789
|
+
display: CredentialDisplayValidator.optional().describe("Public display metadata only"),
|
|
27696
27790
|
contractUri: external_exports.string().optional(),
|
|
27697
27791
|
templateData: external_exports.record(external_exports.string(), external_exports.unknown()).optional(),
|
|
27698
27792
|
integrationId: external_exports.string().optional(),
|
|
27699
27793
|
/** Credential ID to allocate for; generated server-side when omitted. */
|
|
27700
27794
|
credentialId: external_exports.string().min(1).optional(),
|
|
27701
|
-
idempotencyKey: external_exports.string().min(1).max(200).optional()
|
|
27702
|
-
|
|
27703
|
-
|
|
27795
|
+
idempotencyKey: external_exports.string().min(1).max(200).optional(),
|
|
27796
|
+
/**
|
|
27797
|
+
* `'holder'` requests student-only encryption (LC-2345): the SDK signs and
|
|
27798
|
+
* encrypts locally and the server never receives plaintext. Requires a
|
|
27799
|
+
* profile or DID recipient; rejected for signedCredential-only sends and for
|
|
27800
|
+
* inbox (email/phone) recipients. Defaults to `'network'`.
|
|
27801
|
+
*/
|
|
27802
|
+
encryption: external_exports.enum(["network", "holder"]).optional()
|
|
27803
|
+
}).refine((data) => !(data.templateUri && data.template), {
|
|
27804
|
+
message: "Provide at most one of templateUri or template."
|
|
27704
27805
|
});
|
|
27705
27806
|
var PrepareRefreshableSendResultValidator = external_exports.object({
|
|
27807
|
+
/** Public status providers known at preparation; final send reports the signed entries. */
|
|
27808
|
+
statusManagement: StatusManagementValidator.optional(),
|
|
27809
|
+
statusEntries: external_exports.array(BitstringStatusListEntryValidator).optional(),
|
|
27706
27810
|
boostUri: external_exports.string(),
|
|
27707
27811
|
credentialId: external_exports.string(),
|
|
27708
27812
|
refreshId: external_exports.string(),
|
|
@@ -27710,11 +27814,110 @@ var PrepareRefreshableSendResultValidator = external_exports.object({
|
|
|
27710
27814
|
/** The DID to use as credentialSubject.id (recipient DID, or the profile's did:web). */
|
|
27711
27815
|
holderDid: external_exports.string(),
|
|
27712
27816
|
/** Present when this idempotencyKey already completed: return it without signing. */
|
|
27713
|
-
completed: SendBoostResponseValidator.optional()
|
|
27817
|
+
completed: SendBoostResponseValidator.optional(),
|
|
27818
|
+
/**
|
|
27819
|
+
* Present only when `encryption: 'holder'` was requested: the exact
|
|
27820
|
+
* key-agreement verification-method ids (holder + current managers) the SDK
|
|
27821
|
+
* must encrypt to. Recomputed on every call, so a later manager change can
|
|
27822
|
+
* make a previously-prepared set stale (see `credentialRefresh.sendHolderEncryptedRefreshable`
|
|
27823
|
+
* and `credentialRefresh.getEncryptionRecipients`).
|
|
27824
|
+
*/
|
|
27825
|
+
recipientKeyIds: external_exports.array(external_exports.string()).optional()
|
|
27714
27826
|
});
|
|
27715
27827
|
var SendInputValidator = external_exports.discriminatedUnion("type", [SendBoostInputValidator]);
|
|
27716
27828
|
var SendResponseValidator = external_exports.discriminatedUnion("type", [SendBoostResponseValidator]);
|
|
27717
|
-
var ConsentFlowTermsStatusValidator = external_exports.enum([
|
|
27829
|
+
var ConsentFlowTermsStatusValidator = external_exports.enum([
|
|
27830
|
+
"live",
|
|
27831
|
+
"consumed",
|
|
27832
|
+
"withdrawn",
|
|
27833
|
+
"needs_reconsent",
|
|
27834
|
+
"suspended"
|
|
27835
|
+
]);
|
|
27836
|
+
var ConsentFlowContractChangeKindValidator = external_exports.enum([
|
|
27837
|
+
"relaxed",
|
|
27838
|
+
"expanded_optional",
|
|
27839
|
+
"requires_consent"
|
|
27840
|
+
]);
|
|
27841
|
+
var ConsentFlowContractScopeValidator = external_exports.object({
|
|
27842
|
+
area: external_exports.enum(["read", "write"]),
|
|
27843
|
+
type: external_exports.enum(["credential", "personal"]),
|
|
27844
|
+
key: external_exports.string(),
|
|
27845
|
+
required: external_exports.boolean(),
|
|
27846
|
+
reason: external_exports.string().optional()
|
|
27847
|
+
});
|
|
27848
|
+
var ConsentFlowContractDetailValueValidator = external_exports.union([
|
|
27849
|
+
external_exports.string(),
|
|
27850
|
+
external_exports.boolean(),
|
|
27851
|
+
external_exports.string().array()
|
|
27852
|
+
]);
|
|
27853
|
+
var ConsentFlowContractDetailChangeValidator = external_exports.object({
|
|
27854
|
+
field: external_exports.enum([
|
|
27855
|
+
"name",
|
|
27856
|
+
"subtitle",
|
|
27857
|
+
"description",
|
|
27858
|
+
"reasonForAccessing",
|
|
27859
|
+
"image",
|
|
27860
|
+
"needsGuardianConsent",
|
|
27861
|
+
"redirectUrl",
|
|
27862
|
+
"frontDoorBoostUri",
|
|
27863
|
+
"expiresAt",
|
|
27864
|
+
"writers",
|
|
27865
|
+
"autoboosts"
|
|
27866
|
+
]),
|
|
27867
|
+
before: ConsentFlowContractDetailValueValidator.optional(),
|
|
27868
|
+
after: ConsentFlowContractDetailValueValidator.optional()
|
|
27869
|
+
});
|
|
27870
|
+
var ConsentFlowContractDiffValidator = external_exports.object({
|
|
27871
|
+
added: ConsentFlowContractScopeValidator.array(),
|
|
27872
|
+
removed: ConsentFlowContractScopeValidator.array(),
|
|
27873
|
+
changed: ConsentFlowContractScopeValidator.array(),
|
|
27874
|
+
details: ConsentFlowContractDetailChangeValidator.array().optional()
|
|
27875
|
+
});
|
|
27876
|
+
var ConsentFlowContractUpdatePreviewValidator = external_exports.object({
|
|
27877
|
+
headline: external_exports.string(),
|
|
27878
|
+
subhead: external_exports.string(),
|
|
27879
|
+
rows: external_exports.array(
|
|
27880
|
+
external_exports.object({
|
|
27881
|
+
scope: ConsentFlowContractScopeValidator,
|
|
27882
|
+
change: external_exports.enum(["added", "removed", "changed"]),
|
|
27883
|
+
label: external_exports.string(),
|
|
27884
|
+
subtitle: external_exports.string()
|
|
27885
|
+
})
|
|
27886
|
+
),
|
|
27887
|
+
primaryLabel: external_exports.string()
|
|
27888
|
+
});
|
|
27889
|
+
var ConsentFlowContractStatusValidator = external_exports.enum(["active", "retired"]);
|
|
27890
|
+
var ConsentFlowContractVersionValidator = external_exports.object({
|
|
27891
|
+
version: external_exports.number().int().positive(),
|
|
27892
|
+
createdAt: external_exports.string(),
|
|
27893
|
+
reason: external_exports.string().optional(),
|
|
27894
|
+
kind: ConsentFlowContractChangeKindValidator.optional()
|
|
27895
|
+
});
|
|
27896
|
+
var ConsentFlowContractUpdateResultValidator = external_exports.object({
|
|
27897
|
+
version: external_exports.number().int().positive(),
|
|
27898
|
+
kind: ConsentFlowContractChangeKindValidator,
|
|
27899
|
+
affectedUsers: external_exports.number().int().nonnegative(),
|
|
27900
|
+
preview: ConsentFlowContractUpdatePreviewValidator
|
|
27901
|
+
});
|
|
27902
|
+
var ConsentFlowConsentStatusValidator = external_exports.object({
|
|
27903
|
+
status: ConsentFlowTermsStatusValidator.or(external_exports.literal("not_consented")),
|
|
27904
|
+
consentedVersion: external_exports.number().int().positive().optional(),
|
|
27905
|
+
currentVersion: external_exports.number().int().positive(),
|
|
27906
|
+
needsReconsent: external_exports.boolean(),
|
|
27907
|
+
reviewUrl: external_exports.string().optional()
|
|
27908
|
+
});
|
|
27909
|
+
var ConsentFlowContractNotificationDataValidator = external_exports.object({
|
|
27910
|
+
contractUri: external_exports.string(),
|
|
27911
|
+
contractName: external_exports.string().optional(),
|
|
27912
|
+
fromVersion: external_exports.number().int().positive(),
|
|
27913
|
+
toVersion: external_exports.number().int().positive(),
|
|
27914
|
+
kind: ConsentFlowContractChangeKindValidator,
|
|
27915
|
+
reason: external_exports.string().optional(),
|
|
27916
|
+
diff: ConsentFlowContractDiffValidator,
|
|
27917
|
+
reconsentDeadline: external_exports.string().optional(),
|
|
27918
|
+
reviewUrl: external_exports.string(),
|
|
27919
|
+
preview: ConsentFlowContractUpdatePreviewValidator.optional()
|
|
27920
|
+
});
|
|
27718
27921
|
var ConsentFlowContractValidator = external_exports.object({
|
|
27719
27922
|
read: external_exports.object({
|
|
27720
27923
|
anonymize: external_exports.boolean().optional(),
|
|
@@ -27723,13 +27926,18 @@ var ConsentFlowContractValidator = external_exports.object({
|
|
|
27723
27926
|
external_exports.string(),
|
|
27724
27927
|
external_exports.object({
|
|
27725
27928
|
required: external_exports.boolean(),
|
|
27726
|
-
defaultEnabled: external_exports.boolean().optional()
|
|
27929
|
+
defaultEnabled: external_exports.boolean().optional(),
|
|
27930
|
+
reason: external_exports.string().optional()
|
|
27727
27931
|
})
|
|
27728
27932
|
).default({})
|
|
27729
27933
|
}).prefault({ categories: {} }),
|
|
27730
27934
|
personal: external_exports.record(
|
|
27731
27935
|
external_exports.string(),
|
|
27732
|
-
external_exports.object({
|
|
27936
|
+
external_exports.object({
|
|
27937
|
+
required: external_exports.boolean(),
|
|
27938
|
+
defaultEnabled: external_exports.boolean().optional(),
|
|
27939
|
+
reason: external_exports.string().optional()
|
|
27940
|
+
})
|
|
27733
27941
|
).default({})
|
|
27734
27942
|
}).prefault({ credentials: { categories: {} }, personal: {} }),
|
|
27735
27943
|
write: external_exports.object({
|
|
@@ -27738,16 +27946,55 @@ var ConsentFlowContractValidator = external_exports.object({
|
|
|
27738
27946
|
external_exports.string(),
|
|
27739
27947
|
external_exports.object({
|
|
27740
27948
|
required: external_exports.boolean(),
|
|
27741
|
-
defaultEnabled: external_exports.boolean().optional()
|
|
27949
|
+
defaultEnabled: external_exports.boolean().optional(),
|
|
27950
|
+
reason: external_exports.string().optional()
|
|
27742
27951
|
})
|
|
27743
27952
|
).default({})
|
|
27744
27953
|
}).prefault({ categories: {} }),
|
|
27745
27954
|
personal: external_exports.record(
|
|
27746
27955
|
external_exports.string(),
|
|
27747
|
-
external_exports.object({
|
|
27956
|
+
external_exports.object({
|
|
27957
|
+
required: external_exports.boolean(),
|
|
27958
|
+
defaultEnabled: external_exports.boolean().optional(),
|
|
27959
|
+
reason: external_exports.string().optional()
|
|
27960
|
+
})
|
|
27748
27961
|
).default({})
|
|
27749
27962
|
}).prefault({ credentials: { categories: {} }, personal: {} })
|
|
27750
27963
|
});
|
|
27964
|
+
var ConsentFlowContractScopePatchValidator = external_exports.object({
|
|
27965
|
+
required: external_exports.boolean(),
|
|
27966
|
+
defaultEnabled: external_exports.boolean().optional(),
|
|
27967
|
+
reason: external_exports.string().optional()
|
|
27968
|
+
}).nullable();
|
|
27969
|
+
var ConsentFlowContractChangesValidator = external_exports.object({
|
|
27970
|
+
contract: external_exports.object({
|
|
27971
|
+
read: external_exports.object({
|
|
27972
|
+
anonymize: external_exports.boolean().optional(),
|
|
27973
|
+
credentials: external_exports.object({
|
|
27974
|
+
categories: external_exports.record(external_exports.string(), ConsentFlowContractScopePatchValidator).optional()
|
|
27975
|
+
}).optional(),
|
|
27976
|
+
personal: external_exports.record(external_exports.string(), ConsentFlowContractScopePatchValidator).optional()
|
|
27977
|
+
}).optional(),
|
|
27978
|
+
write: external_exports.object({
|
|
27979
|
+
credentials: external_exports.object({
|
|
27980
|
+
categories: external_exports.record(external_exports.string(), ConsentFlowContractScopePatchValidator).optional()
|
|
27981
|
+
}).optional(),
|
|
27982
|
+
personal: external_exports.record(external_exports.string(), ConsentFlowContractScopePatchValidator).optional()
|
|
27983
|
+
}).optional()
|
|
27984
|
+
}).optional(),
|
|
27985
|
+
name: external_exports.string().optional(),
|
|
27986
|
+
subtitle: external_exports.string().optional(),
|
|
27987
|
+
description: external_exports.string().optional(),
|
|
27988
|
+
reasonForAccessing: external_exports.string().optional(),
|
|
27989
|
+
image: external_exports.string().optional(),
|
|
27990
|
+
needsGuardianConsent: external_exports.boolean().optional(),
|
|
27991
|
+
redirectUrl: external_exports.string().optional(),
|
|
27992
|
+
frontDoorBoostUri: external_exports.string().optional(),
|
|
27993
|
+
expiresAt: external_exports.string().nullable().optional(),
|
|
27994
|
+
autoboosts: AutoBoostConfigValidator.array().optional(),
|
|
27995
|
+
writers: external_exports.string().array().optional(),
|
|
27996
|
+
recipients: external_exports.string().array().optional()
|
|
27997
|
+
});
|
|
27751
27998
|
var ConsentFlowContractDetailsValidator = external_exports.object({
|
|
27752
27999
|
contract: ConsentFlowContractValidator,
|
|
27753
28000
|
owner: LCNProfileValidator,
|
|
@@ -27766,7 +28013,19 @@ var ConsentFlowContractDetailsValidator = external_exports.object({
|
|
|
27766
28013
|
autoBoosts: external_exports.string().array().optional(),
|
|
27767
28014
|
writers: external_exports.array(LCNProfileValidator).optional(),
|
|
27768
28015
|
recipients: external_exports.array(LCNPublicProfileValidator.extend({ did: external_exports.string() })).optional(),
|
|
27769
|
-
audienceVersion: external_exports.number().int().nonnegative().optional()
|
|
28016
|
+
audienceVersion: external_exports.number().int().nonnegative().optional(),
|
|
28017
|
+
version: external_exports.number().int().positive(),
|
|
28018
|
+
status: ConsentFlowContractStatusValidator.optional(),
|
|
28019
|
+
latestUpdate: external_exports.object({
|
|
28020
|
+
fromVersion: external_exports.number().int().positive(),
|
|
28021
|
+
toVersion: external_exports.number().int().positive(),
|
|
28022
|
+
kind: ConsentFlowContractChangeKindValidator,
|
|
28023
|
+
reason: external_exports.string().optional(),
|
|
28024
|
+
diff: ConsentFlowContractDiffValidator,
|
|
28025
|
+
reconsentDeadline: external_exports.string().optional(),
|
|
28026
|
+
createdAt: external_exports.string(),
|
|
28027
|
+
preview: ConsentFlowContractUpdatePreviewValidator
|
|
28028
|
+
}).optional()
|
|
27770
28029
|
});
|
|
27771
28030
|
var ConsentFlowContractRequestStatusValidator = external_exports.enum(["pending", "accepted", "denied", "cancelled"]).nullable();
|
|
27772
28031
|
var ConsentFlowContractRequestReadStatusValidator = external_exports.enum(["unseen", "seen"]).nullable();
|
|
@@ -27855,7 +28114,12 @@ var PaginatedConsentFlowTermsValidator = PaginationResponseValidator.extend({
|
|
|
27855
28114
|
contract: ConsentFlowContractDetailsValidator,
|
|
27856
28115
|
uri: external_exports.string(),
|
|
27857
28116
|
consenter: LCNProfileValidator,
|
|
27858
|
-
status: ConsentFlowTermsStatusValidator
|
|
28117
|
+
status: ConsentFlowTermsStatusValidator,
|
|
28118
|
+
consentedVersion: external_exports.number().int().positive(),
|
|
28119
|
+
lastReviewedVersion: external_exports.number().int().positive().optional(),
|
|
28120
|
+
reconsentDeadline: external_exports.string().optional(),
|
|
28121
|
+
newOptionsUntil: external_exports.string().optional(),
|
|
28122
|
+
cumulativeUpdate: ConsentFlowContractDetailsValidator.shape.latestUpdate
|
|
27859
28123
|
}).array()
|
|
27860
28124
|
});
|
|
27861
28125
|
var ConsentFlowGuardianApprovalValidator = external_exports.object({
|
|
@@ -27931,7 +28195,8 @@ var ConsentFlowTransactionActionValidator = external_exports.enum([
|
|
|
27931
28195
|
"update",
|
|
27932
28196
|
"sync",
|
|
27933
28197
|
"withdraw",
|
|
27934
|
-
"write"
|
|
28198
|
+
"write",
|
|
28199
|
+
"reconsent"
|
|
27935
28200
|
]);
|
|
27936
28201
|
var ConsentFlowTransactionsQueryValidator = external_exports.object({
|
|
27937
28202
|
terms: ConsentFlowTermsQueryValidator.optional(),
|
|
@@ -27950,8 +28215,12 @@ var ConsentFlowTransactionValidator = external_exports.object({
|
|
|
27950
28215
|
referral: ConsentFlowReferralValidator.optional(),
|
|
27951
28216
|
id: external_exports.string(),
|
|
27952
28217
|
action: ConsentFlowTransactionActionValidator,
|
|
28218
|
+
kind: ConsentFlowContractChangeKindValidator.optional(),
|
|
27953
28219
|
date: external_exports.string(),
|
|
27954
|
-
uris: external_exports.string().array().optional()
|
|
28220
|
+
uris: external_exports.string().array().optional(),
|
|
28221
|
+
consentedVersion: external_exports.number().int().positive().optional(),
|
|
28222
|
+
reconsentDeadline: external_exports.string().optional(),
|
|
28223
|
+
newOptionsUntil: external_exports.string().optional()
|
|
27955
28224
|
});
|
|
27956
28225
|
var HolderExportConsentRecordValidator = external_exports.object({
|
|
27957
28226
|
termsUri: external_exports.string(),
|
|
@@ -27959,6 +28228,10 @@ var HolderExportConsentRecordValidator = external_exports.object({
|
|
|
27959
28228
|
contract: ConsentFlowContractDetailsValidator,
|
|
27960
28229
|
terms: ConsentFlowTermsValidator,
|
|
27961
28230
|
referral: ConsentFlowReferralValidator.optional(),
|
|
28231
|
+
consentedVersion: external_exports.number().int().positive(),
|
|
28232
|
+
reconsentDeadline: external_exports.string().optional(),
|
|
28233
|
+
newOptionsUntil: external_exports.string().optional(),
|
|
28234
|
+
cumulativeUpdate: ConsentFlowContractDetailsValidator.shape.latestUpdate,
|
|
27962
28235
|
transactions: ConsentFlowTransactionValidator.array()
|
|
27963
28236
|
});
|
|
27964
28237
|
var HolderExportMetadataValidator = external_exports.object({
|
|
@@ -28019,10 +28292,12 @@ var LCNNotificationTypeEnumValidator = external_exports.enum([
|
|
|
28019
28292
|
"GUARDIAN_APPROVED",
|
|
28020
28293
|
"GUARDIAN_REJECTED",
|
|
28021
28294
|
"APP_NOTIFICATION",
|
|
28295
|
+
"ANNOUNCEMENT",
|
|
28022
28296
|
"CREDENTIAL_REVOKED",
|
|
28023
28297
|
"CREDENTIAL_SUSPENDED",
|
|
28024
28298
|
"CREDENTIAL_UNSUSPENDED",
|
|
28025
|
-
"CREDENTIAL_REFRESHED"
|
|
28299
|
+
"CREDENTIAL_REFRESHED",
|
|
28300
|
+
"CONSENT_FLOW_CONTRACT_UPDATED"
|
|
28026
28301
|
]);
|
|
28027
28302
|
var LCNNotificationMessageValidator = external_exports.object({
|
|
28028
28303
|
title: external_exports.string().optional(),
|
|
@@ -28051,12 +28326,26 @@ var LCNNotificationInboxValidator = external_exports.object({
|
|
|
28051
28326
|
timestamp: external_exports.iso.datetime().optional()
|
|
28052
28327
|
});
|
|
28053
28328
|
var LCNNotificationMetadataValidator = external_exports.object({
|
|
28054
|
-
connectionPrompt: LCNConnectionPromptMetadataValidator.optional()
|
|
28329
|
+
connectionPrompt: LCNConnectionPromptMetadataValidator.optional(),
|
|
28330
|
+
campaignId: external_exports.string().regex(/^[a-z0-9-]{3,64}$/).optional(),
|
|
28331
|
+
campaignCreatedAt: external_exports.iso.datetime().optional(),
|
|
28332
|
+
campaignHasInApp: external_exports.boolean().optional(),
|
|
28333
|
+
campaignTestId: external_exports.uuid().optional()
|
|
28055
28334
|
}).catchall(external_exports.unknown());
|
|
28056
28335
|
var LCNNotificationDataValidator = external_exports.object({
|
|
28057
28336
|
vcUris: external_exports.array(external_exports.string()).optional(),
|
|
28058
28337
|
vpUris: external_exports.array(external_exports.string()).optional(),
|
|
28059
28338
|
transaction: ConsentFlowTransactionValidator.optional(),
|
|
28339
|
+
contractUri: external_exports.string().optional(),
|
|
28340
|
+
contractName: external_exports.string().optional(),
|
|
28341
|
+
fromVersion: external_exports.number().int().positive().optional(),
|
|
28342
|
+
toVersion: external_exports.number().int().positive().optional(),
|
|
28343
|
+
kind: ConsentFlowContractChangeKindValidator.optional(),
|
|
28344
|
+
reason: external_exports.string().optional(),
|
|
28345
|
+
diff: ConsentFlowContractDiffValidator.optional(),
|
|
28346
|
+
reconsentDeadline: external_exports.string().optional(),
|
|
28347
|
+
reviewUrl: external_exports.string().optional(),
|
|
28348
|
+
preview: ConsentFlowContractUpdatePreviewValidator.optional(),
|
|
28060
28349
|
inbox: LCNNotificationInboxValidator.optional(),
|
|
28061
28350
|
metadata: LCNNotificationMetadataValidator.optional()
|
|
28062
28351
|
}).loose();
|
|
@@ -29154,28 +29443,6 @@ var EscrowPinStatusValidator = external_exports.object({
|
|
|
29154
29443
|
*/
|
|
29155
29444
|
wrongAttempts: external_exports.number().int().nonnegative().optional()
|
|
29156
29445
|
});
|
|
29157
|
-
var BITSTRING_STATUS_PURPOSES = ["revocation", "suspension"];
|
|
29158
|
-
var BitstringStatusPurposeValidator = external_exports.enum(BITSTRING_STATUS_PURPOSES);
|
|
29159
|
-
var BitstringStatusListEntryValidator = external_exports.object({
|
|
29160
|
-
id: external_exports.string().optional(),
|
|
29161
|
-
type: external_exports.literal("BitstringStatusListEntry"),
|
|
29162
|
-
statusPurpose: BitstringStatusPurposeValidator,
|
|
29163
|
-
statusListIndex: external_exports.string().or(external_exports.number().int().nonnegative()),
|
|
29164
|
-
statusListCredential: external_exports.string()
|
|
29165
|
-
});
|
|
29166
|
-
var AllocatedBitstringStatusListEntryValidator = BitstringStatusListEntryValidator.extend({
|
|
29167
|
-
id: external_exports.string()
|
|
29168
|
-
});
|
|
29169
|
-
var BitstringStatusListCredentialSubjectValidator = external_exports.object({
|
|
29170
|
-
id: external_exports.string().optional(),
|
|
29171
|
-
type: external_exports.literal("BitstringStatusList"),
|
|
29172
|
-
statusPurpose: BitstringStatusPurposeValidator,
|
|
29173
|
-
encodedList: external_exports.string()
|
|
29174
|
-
});
|
|
29175
|
-
var AllocateCredentialStatusInputValidator = external_exports.object({
|
|
29176
|
-
statusPurposes: external_exports.array(BitstringStatusPurposeValidator).optional(),
|
|
29177
|
-
listSize: external_exports.number().int().positive().optional()
|
|
29178
|
-
}).default({});
|
|
29179
29446
|
var isSafeInAppMessagePath = /* @__PURE__ */ __name2((path) => {
|
|
29180
29447
|
let decoded = path;
|
|
29181
29448
|
for (let depth = 0; depth < 5; depth += 1) {
|
|
@@ -29456,24 +29723,46 @@ var inAppMessagesFlagEnvelopeValidator = external_exports.object({
|
|
|
29456
29723
|
}).passthrough();
|
|
29457
29724
|
var CampaignIdValidator = external_exports.string().regex(/^[a-z0-9-]{3,64}$/);
|
|
29458
29725
|
var CampaignStatusValidator = external_exports.enum(["draft", "live", "paused", "archived"]);
|
|
29459
|
-
var CampaignChannelValidator = external_exports.enum(["inApp", "notify"]);
|
|
29726
|
+
var CampaignChannelValidator = external_exports.enum(["inApp", "notify", "email"]);
|
|
29460
29727
|
var CampaignEventValidator = external_exports.enum(["shown", "clicked", "dismissed", "converted"]);
|
|
29461
|
-
var timestamp = external_exports.iso.datetime({ offset: true }).overwrite((value) =>
|
|
29728
|
+
var timestamp = external_exports.iso.datetime({ offset: true }).overwrite((value) => {
|
|
29729
|
+
const date5 = new Date(value);
|
|
29730
|
+
return Number.isFinite(date5.getTime()) ? date5.toISOString() : value;
|
|
29731
|
+
});
|
|
29462
29732
|
var notification = external_exports.object({ title: external_exports.string().min(1), body: external_exports.string().min(1) }).strict();
|
|
29463
|
-
var
|
|
29733
|
+
var CampaignEmailValidator = external_exports.object({
|
|
29734
|
+
subject: external_exports.string().trim().min(1).max(200).regex(/^[^\r\n]+$/),
|
|
29735
|
+
title: external_exports.string().trim().min(1).max(200),
|
|
29736
|
+
body: external_exports.string().trim().min(1).max(2e4),
|
|
29737
|
+
heroImageUrl: external_exports.url().startsWith("https://").max(2048).optional(),
|
|
29738
|
+
ctaLabel: external_exports.string().trim().min(1).max(100)
|
|
29739
|
+
}).strict();
|
|
29740
|
+
var AnnouncementPreferencesValidator = external_exports.object({
|
|
29741
|
+
announcementEmailOptOut: external_exports.boolean(),
|
|
29742
|
+
announcementPushOptOut: external_exports.boolean()
|
|
29743
|
+
}).strict();
|
|
29744
|
+
var channels = external_exports.array(CampaignChannelValidator).min(1).max(3).refine((values) => new Set(values).size === values.length, "Channels must be unique");
|
|
29464
29745
|
var campaignDefinition = external_exports.object({
|
|
29465
29746
|
id: CampaignIdValidator,
|
|
29466
29747
|
name: external_exports.string().trim().min(1).max(200),
|
|
29467
29748
|
status: CampaignStatusValidator.default("draft"),
|
|
29468
29749
|
channels,
|
|
29469
|
-
message: inAppMessageValidator,
|
|
29750
|
+
message: inAppMessageValidator.optional(),
|
|
29470
29751
|
notification: notification.optional(),
|
|
29752
|
+
email: CampaignEmailValidator.optional(),
|
|
29471
29753
|
startsAt: timestamp.optional(),
|
|
29472
29754
|
endsAt: timestamp.optional(),
|
|
29473
29755
|
excludeMinors: external_exports.boolean().default(true),
|
|
29474
29756
|
selfEnroll: external_exports.boolean().default(false)
|
|
29475
29757
|
}).strict();
|
|
29476
29758
|
var validDefinition = /* @__PURE__ */ __name2((value, ctx) => {
|
|
29759
|
+
if (value.channels.includes("inApp") && !value.message) {
|
|
29760
|
+
ctx.addIssue({
|
|
29761
|
+
code: "custom",
|
|
29762
|
+
path: ["message"],
|
|
29763
|
+
message: "In-app requires a message"
|
|
29764
|
+
});
|
|
29765
|
+
}
|
|
29477
29766
|
if (value.channels.includes("notify") && !value.notification) {
|
|
29478
29767
|
ctx.addIssue({
|
|
29479
29768
|
code: "custom",
|
|
@@ -29481,15 +29770,23 @@ var validDefinition = /* @__PURE__ */ __name2((value, ctx) => {
|
|
|
29481
29770
|
message: "Notify requires a title and body"
|
|
29482
29771
|
});
|
|
29483
29772
|
}
|
|
29773
|
+
if (value.channels.includes("email") && !value.email) {
|
|
29774
|
+
ctx.addIssue({
|
|
29775
|
+
code: "custom",
|
|
29776
|
+
path: ["email"],
|
|
29777
|
+
message: "Email requires announcement content"
|
|
29778
|
+
});
|
|
29779
|
+
}
|
|
29484
29780
|
if (value.startsAt && value.endsAt && value.startsAt >= value.endsAt) {
|
|
29485
29781
|
ctx.addIssue({ code: "custom", path: ["endsAt"], message: "End must be after start" });
|
|
29486
29782
|
}
|
|
29487
29783
|
}, "validDefinition");
|
|
29488
29784
|
var CampaignValidator = campaignDefinition.extend({
|
|
29785
|
+
tenantId: external_exports.string().optional(),
|
|
29489
29786
|
createdAt: timestamp,
|
|
29490
29787
|
updatedAt: timestamp
|
|
29491
29788
|
}).superRefine(validDefinition).superRefine((value, ctx) => {
|
|
29492
|
-
if (value.message.id !== value.id) {
|
|
29789
|
+
if (value.message && value.message.id !== value.id) {
|
|
29493
29790
|
ctx.addIssue({
|
|
29494
29791
|
code: "custom",
|
|
29495
29792
|
path: ["message", "id"],
|
|
@@ -29498,21 +29795,23 @@ var CampaignValidator = campaignDefinition.extend({
|
|
|
29498
29795
|
}
|
|
29499
29796
|
});
|
|
29500
29797
|
var CreateCampaignInputValidator = campaignDefinition.extend({
|
|
29501
|
-
message: inAppMessageAuthoringValidator
|
|
29798
|
+
message: inAppMessageAuthoringValidator.optional()
|
|
29502
29799
|
}).superRefine(validDefinition);
|
|
29503
29800
|
var CampaignUpdatesValidator = campaignDefinition.omit({ id: true }).partial().extend({
|
|
29504
29801
|
// A PATCH must not apply creation defaults to fields the caller omitted.
|
|
29505
29802
|
status: CampaignStatusValidator.optional(),
|
|
29506
29803
|
excludeMinors: external_exports.boolean().optional(),
|
|
29507
29804
|
selfEnroll: external_exports.boolean().optional(),
|
|
29508
|
-
message: inAppMessageAuthoringValidator.optional(),
|
|
29805
|
+
message: inAppMessageAuthoringValidator.nullable().optional(),
|
|
29509
29806
|
notification: notification.nullable().optional(),
|
|
29807
|
+
email: CampaignEmailValidator.nullable().optional(),
|
|
29510
29808
|
startsAt: timestamp.nullable().optional(),
|
|
29511
29809
|
endsAt: timestamp.nullable().optional()
|
|
29512
29810
|
}).strict();
|
|
29513
29811
|
var UpdateCampaignInputValidator = external_exports.object({
|
|
29514
29812
|
campaignId: CampaignIdValidator,
|
|
29515
|
-
updates: CampaignUpdatesValidator
|
|
29813
|
+
updates: CampaignUpdatesValidator,
|
|
29814
|
+
expectedUpdatedAt: timestamp.optional()
|
|
29516
29815
|
}).strict();
|
|
29517
29816
|
var identifier = external_exports.string().trim().min(1).max(2048);
|
|
29518
29817
|
var metadataKey = external_exports.string().regex(/^[a-zA-Z_][a-zA-Z0-9_.-]{0,63}$/).refine(
|
|
@@ -29564,7 +29863,8 @@ var CampaignUserStateValidator = external_exports.object({
|
|
|
29564
29863
|
clickedAt: timestamp.optional(),
|
|
29565
29864
|
dismissedAt: timestamp.optional(),
|
|
29566
29865
|
convertedAt: timestamp.optional(),
|
|
29567
|
-
notifiedAt: timestamp.optional()
|
|
29866
|
+
notifiedAt: timestamp.optional(),
|
|
29867
|
+
emailedAt: timestamp.optional()
|
|
29568
29868
|
});
|
|
29569
29869
|
var MyCampaignValidator = external_exports.object({
|
|
29570
29870
|
campaign: campaignDefinition.pick({
|
|
@@ -29573,12 +29873,19 @@ var MyCampaignValidator = external_exports.object({
|
|
|
29573
29873
|
startsAt: true,
|
|
29574
29874
|
endsAt: true,
|
|
29575
29875
|
selfEnroll: true
|
|
29576
|
-
}),
|
|
29577
|
-
state: CampaignUserStateValidator
|
|
29876
|
+
}).extend({ message: inAppMessageValidator }),
|
|
29877
|
+
state: CampaignUserStateValidator,
|
|
29878
|
+
testId: external_exports.uuid().optional()
|
|
29879
|
+
});
|
|
29880
|
+
var CampaignTestValidator = external_exports.object({
|
|
29881
|
+
id: external_exports.uuid(),
|
|
29882
|
+
campaignId: CampaignIdValidator,
|
|
29883
|
+
message: inAppMessageValidator
|
|
29578
29884
|
});
|
|
29579
29885
|
var CampaignStatsValidator = external_exports.object({
|
|
29580
29886
|
audience: external_exports.number().int().nonnegative(),
|
|
29581
29887
|
notified: external_exports.number().int().nonnegative(),
|
|
29888
|
+
emailed: external_exports.number().int().nonnegative(),
|
|
29582
29889
|
shown: external_exports.number().int().nonnegative(),
|
|
29583
29890
|
clicked: external_exports.number().int().nonnegative(),
|
|
29584
29891
|
dismissed: external_exports.number().int().nonnegative(),
|
|
@@ -29605,6 +29912,31 @@ var PaginatedCampaignAudienceValidator = external_exports.object({
|
|
|
29605
29912
|
hasMore: external_exports.boolean(),
|
|
29606
29913
|
cursor: external_exports.string().optional()
|
|
29607
29914
|
});
|
|
29915
|
+
var CampaignDispatchPreviewValidator = external_exports.object({
|
|
29916
|
+
campaignId: CampaignIdValidator,
|
|
29917
|
+
audienceCount: external_exports.number().int().nonnegative(),
|
|
29918
|
+
alreadyNotifiedCount: external_exports.number().int().nonnegative(),
|
|
29919
|
+
recipientCount: external_exports.number().int().nonnegative(),
|
|
29920
|
+
notificationRecipientCount: external_exports.number().int().nonnegative().optional(),
|
|
29921
|
+
emailRecipientCount: external_exports.number().int().nonnegative().optional(),
|
|
29922
|
+
previewToken: external_exports.string().regex(/^[a-f0-9]{64}$/),
|
|
29923
|
+
blockedReason: external_exports.enum([
|
|
29924
|
+
"not_live",
|
|
29925
|
+
"notify_disabled",
|
|
29926
|
+
"email_confirmation_required",
|
|
29927
|
+
"not_started",
|
|
29928
|
+
"ended",
|
|
29929
|
+
"no_recipients"
|
|
29930
|
+
]).optional()
|
|
29931
|
+
});
|
|
29932
|
+
var CampaignDispatchOptionsValidator = external_exports.object({
|
|
29933
|
+
expectedPreviewToken: CampaignDispatchPreviewValidator.shape.previewToken.optional()
|
|
29934
|
+
}).strict();
|
|
29935
|
+
var CampaignAudienceResultValidator = external_exports.object({
|
|
29936
|
+
count: external_exports.number().int().nonnegative(),
|
|
29937
|
+
added: external_exports.number().int().nonnegative(),
|
|
29938
|
+
notFound: external_exports.array(external_exports.string())
|
|
29939
|
+
});
|
|
29608
29940
|
var SHARE_LINK_ID_BYTES = 16;
|
|
29609
29941
|
var SHARE_CONTENT_KEY_BYTES = 32;
|
|
29610
29942
|
var SHARE_IV_BYTES = 12;
|
|
@@ -30128,6 +30460,217 @@ var SkillIconNamesValidator = external_exports.array(external_exports.string().n
|
|
|
30128
30460
|
}
|
|
30129
30461
|
);
|
|
30130
30462
|
var GenerateSkillIconsInputValidator = external_exports.object({ names: SkillIconNamesValidator });
|
|
30463
|
+
var RoleValidator = external_exports.enum(["user", "assistant", "tool", "system"]);
|
|
30464
|
+
var AiSessionMode = {
|
|
30465
|
+
tutor: "ai-tutor",
|
|
30466
|
+
insights: "ai-insights"
|
|
30467
|
+
};
|
|
30468
|
+
var AiSessionModeValidator = external_exports.enum([AiSessionMode.tutor, AiSessionMode.insights]);
|
|
30469
|
+
var StructuredResponseValidator = external_exports.object({
|
|
30470
|
+
notes: external_exports.string().optional(),
|
|
30471
|
+
questions: external_exports.array(external_exports.string())
|
|
30472
|
+
});
|
|
30473
|
+
var IntroStreamModeValidator = external_exports.enum(["formatted", "structured"]);
|
|
30474
|
+
var ChatMessageValidator = external_exports.object({
|
|
30475
|
+
role: RoleValidator,
|
|
30476
|
+
content: external_exports.string().nullable(),
|
|
30477
|
+
tool_call_id: external_exports.string().optional(),
|
|
30478
|
+
tool_calls: external_exports.array(
|
|
30479
|
+
external_exports.object({
|
|
30480
|
+
id: external_exports.string(),
|
|
30481
|
+
type: external_exports.literal("function"),
|
|
30482
|
+
function: external_exports.object({
|
|
30483
|
+
name: external_exports.string(),
|
|
30484
|
+
arguments: external_exports.string()
|
|
30485
|
+
})
|
|
30486
|
+
})
|
|
30487
|
+
).optional()
|
|
30488
|
+
});
|
|
30489
|
+
var InsightArtifactValidator = external_exports.object({
|
|
30490
|
+
title: external_exports.string(),
|
|
30491
|
+
summary: external_exports.string(),
|
|
30492
|
+
category: external_exports.string(),
|
|
30493
|
+
question: external_exports.string(),
|
|
30494
|
+
narrative: external_exports.string()
|
|
30495
|
+
});
|
|
30496
|
+
var ArtifactSuggestionValidator = external_exports.object({
|
|
30497
|
+
artifact: InsightArtifactValidator,
|
|
30498
|
+
source_text: external_exports.string().optional(),
|
|
30499
|
+
created_at: external_exports.string()
|
|
30500
|
+
});
|
|
30501
|
+
var ThreadCredentialContextValidator = external_exports.object({
|
|
30502
|
+
uri: external_exports.string(),
|
|
30503
|
+
type: external_exports.string(),
|
|
30504
|
+
context: external_exports.string(),
|
|
30505
|
+
score: external_exports.number(),
|
|
30506
|
+
strongestScore: external_exports.number().optional(),
|
|
30507
|
+
averageScore: external_exports.number().optional(),
|
|
30508
|
+
matchCount: external_exports.number().optional(),
|
|
30509
|
+
title: external_exports.string().optional()
|
|
30510
|
+
});
|
|
30511
|
+
var ThreadValidator = external_exports.object({
|
|
30512
|
+
id: external_exports.string(),
|
|
30513
|
+
did: external_exports.string(),
|
|
30514
|
+
topicCredentialUri: external_exports.string().nullable().optional(),
|
|
30515
|
+
title: external_exports.string(),
|
|
30516
|
+
created_at: external_exports.string(),
|
|
30517
|
+
last_message_at: external_exports.string(),
|
|
30518
|
+
active: external_exports.boolean().optional(),
|
|
30519
|
+
ended_at: external_exports.string().optional(),
|
|
30520
|
+
plan_started_at: external_exports.string().optional(),
|
|
30521
|
+
summaries: external_exports.array(
|
|
30522
|
+
external_exports.object({
|
|
30523
|
+
summary_data: external_exports.string(),
|
|
30524
|
+
credential_uri: external_exports.string(),
|
|
30525
|
+
created_at: external_exports.string()
|
|
30526
|
+
})
|
|
30527
|
+
).optional(),
|
|
30528
|
+
plans: external_exports.array(
|
|
30529
|
+
external_exports.object({
|
|
30530
|
+
plan_data: external_exports.string(),
|
|
30531
|
+
created_at: external_exports.string(),
|
|
30532
|
+
consentRevision: external_exports.string().optional()
|
|
30533
|
+
})
|
|
30534
|
+
).optional(),
|
|
30535
|
+
credentials: external_exports.array(ThreadCredentialContextValidator).optional(),
|
|
30536
|
+
credentialSearchTopic: external_exports.string().optional(),
|
|
30537
|
+
credentialContextStatus: external_exports.enum(["pending", "ready", "empty", "error"]).optional(),
|
|
30538
|
+
mode: AiSessionModeValidator.optional(),
|
|
30539
|
+
artifactSuggestions: external_exports.array(ArtifactSuggestionValidator).optional()
|
|
30540
|
+
});
|
|
30541
|
+
var CredentialVerificationMetadataValidator = external_exports.object({
|
|
30542
|
+
credentialUri: external_exports.string(),
|
|
30543
|
+
contentHash: external_exports.string().regex(/^[a-f0-9]{64}$/),
|
|
30544
|
+
status: external_exports.enum(["valid", "invalid"]),
|
|
30545
|
+
checkedAt: external_exports.string().datetime(),
|
|
30546
|
+
verifier: external_exports.object({
|
|
30547
|
+
name: external_exports.string(),
|
|
30548
|
+
version: external_exports.string()
|
|
30549
|
+
}),
|
|
30550
|
+
verifiedPayload: external_exports.enum(["credential", "boostCredential"]),
|
|
30551
|
+
checks: external_exports.array(external_exports.string()),
|
|
30552
|
+
errors: external_exports.array(external_exports.string()),
|
|
30553
|
+
warnings: external_exports.array(external_exports.string()),
|
|
30554
|
+
provenance: external_exports.object({
|
|
30555
|
+
source: external_exports.enum(["wallet", "generated"]),
|
|
30556
|
+
retrievedAt: external_exports.string().datetime()
|
|
30557
|
+
}),
|
|
30558
|
+
consent: external_exports.object({
|
|
30559
|
+
contractUri: external_exports.string(),
|
|
30560
|
+
receiptId: external_exports.string().min(1),
|
|
30561
|
+
grantedAt: external_exports.string().datetime().optional(),
|
|
30562
|
+
updatedAt: external_exports.string().datetime(),
|
|
30563
|
+
contractUpdatedAt: external_exports.string().min(1),
|
|
30564
|
+
status: external_exports.literal("live"),
|
|
30565
|
+
expiresAt: external_exports.string().datetime().optional(),
|
|
30566
|
+
contractExpiresAt: external_exports.string().datetime().optional(),
|
|
30567
|
+
categories: external_exports.array(external_exports.string()),
|
|
30568
|
+
credentialUris: external_exports.array(external_exports.string()),
|
|
30569
|
+
personalFields: external_exports.array(external_exports.string()),
|
|
30570
|
+
purpose: external_exports.enum(["credential-ingestion", "model-inference", "embedding"]),
|
|
30571
|
+
revision: external_exports.string().min(1),
|
|
30572
|
+
guardian: external_exports.object({ required: external_exports.boolean(), approved: external_exports.boolean() })
|
|
30573
|
+
})
|
|
30574
|
+
});
|
|
30575
|
+
var ModelSafeCredentialFactValidator = external_exports.object({
|
|
30576
|
+
kind: external_exports.enum([
|
|
30577
|
+
"skill",
|
|
30578
|
+
"goal",
|
|
30579
|
+
"achievement",
|
|
30580
|
+
"course",
|
|
30581
|
+
"experience",
|
|
30582
|
+
"competency",
|
|
30583
|
+
"title",
|
|
30584
|
+
"summary",
|
|
30585
|
+
"assessment",
|
|
30586
|
+
"grade",
|
|
30587
|
+
"date",
|
|
30588
|
+
"alignment",
|
|
30589
|
+
"criteria",
|
|
30590
|
+
"pathway",
|
|
30591
|
+
"topic"
|
|
30592
|
+
]),
|
|
30593
|
+
value: external_exports.string().min(1).max(240),
|
|
30594
|
+
label: external_exports.string().min(1).max(120).optional()
|
|
30595
|
+
});
|
|
30596
|
+
var ModelSafeCredentialProjectionValidator = external_exports.object({
|
|
30597
|
+
schemaVersion: external_exports.literal("1"),
|
|
30598
|
+
category: external_exports.string().min(1).max(120),
|
|
30599
|
+
credentialTypes: external_exports.array(external_exports.string().min(1).max(120)).max(20),
|
|
30600
|
+
facts: external_exports.array(ModelSafeCredentialFactValidator).max(100),
|
|
30601
|
+
// Present only on credentials that are past their expiry, so the model can
|
|
30602
|
+
// tell a lapsed credential from a current one.
|
|
30603
|
+
expired: external_exports.literal(true).optional(),
|
|
30604
|
+
expirationDate: external_exports.string().datetime().optional()
|
|
30605
|
+
});
|
|
30606
|
+
var AIPassportCredentialRecordValidator = external_exports.object({
|
|
30607
|
+
id: external_exports.string(),
|
|
30608
|
+
uri: external_exports.string(),
|
|
30609
|
+
category: external_exports.string(),
|
|
30610
|
+
credential: VCValidator,
|
|
30611
|
+
aiContext: external_exports.string(),
|
|
30612
|
+
generalSummary: external_exports.string().optional(),
|
|
30613
|
+
createdAt: external_exports.string(),
|
|
30614
|
+
verification: CredentialVerificationMetadataValidator.optional(),
|
|
30615
|
+
projection: ModelSafeCredentialProjectionValidator.optional()
|
|
30616
|
+
});
|
|
30617
|
+
var AuthenticatedMessageValidator = external_exports.object({
|
|
30618
|
+
message: ChatMessageValidator.optional(),
|
|
30619
|
+
threadId: external_exports.string().optional(),
|
|
30620
|
+
selectedQuestion: external_exports.string().optional(),
|
|
30621
|
+
action: external_exports.enum([
|
|
30622
|
+
"start_topic",
|
|
30623
|
+
"continue_plan",
|
|
30624
|
+
"start_topic_uri",
|
|
30625
|
+
"start_learning_pathway",
|
|
30626
|
+
"start_insights_session",
|
|
30627
|
+
"close_insights_session",
|
|
30628
|
+
"artifact_suggestion"
|
|
30629
|
+
]).optional(),
|
|
30630
|
+
topic: external_exports.string().optional(),
|
|
30631
|
+
topicUri: external_exports.string().optional(),
|
|
30632
|
+
pathwayUri: external_exports.string().optional(),
|
|
30633
|
+
mode: AiSessionModeValidator.optional(),
|
|
30634
|
+
introStreamMode: IntroStreamModeValidator.optional(),
|
|
30635
|
+
// BCP-47 language for AI responses (LC-1901). This has to live on the
|
|
30636
|
+
// validator, not just the inferred type — z.object strips unknown keys, so an
|
|
30637
|
+
// undeclared `locale` would be dropped before the WS handler ever saw it.
|
|
30638
|
+
locale: external_exports.string().nullish()
|
|
30639
|
+
});
|
|
30640
|
+
var DebugInfoValidator = external_exports.object({
|
|
30641
|
+
operation: external_exports.string(),
|
|
30642
|
+
collection: external_exports.string(),
|
|
30643
|
+
input: external_exports.unknown().optional(),
|
|
30644
|
+
output: external_exports.unknown().optional(),
|
|
30645
|
+
timestamp: external_exports.string(),
|
|
30646
|
+
duration: external_exports.number().optional()
|
|
30647
|
+
});
|
|
30648
|
+
var TimingEventValidator = external_exports.object({
|
|
30649
|
+
event: external_exports.literal("timing"),
|
|
30650
|
+
operation: external_exports.string(),
|
|
30651
|
+
phase: external_exports.enum(["start", "end", "complete"]),
|
|
30652
|
+
duration: external_exports.number().optional(),
|
|
30653
|
+
metadata: external_exports.record(external_exports.string(), external_exports.unknown()).optional(),
|
|
30654
|
+
timestamp: external_exports.string()
|
|
30655
|
+
});
|
|
30656
|
+
var LearningPathwayValidator = external_exports.object({
|
|
30657
|
+
id: external_exports.string(),
|
|
30658
|
+
learningPathway: external_exports.object({
|
|
30659
|
+
stepIndex: external_exports.number(),
|
|
30660
|
+
step: external_exports.object({
|
|
30661
|
+
title: external_exports.string(),
|
|
30662
|
+
description: external_exports.string(),
|
|
30663
|
+
summary: external_exports.string(),
|
|
30664
|
+
learned: external_exports.array(external_exports.string()),
|
|
30665
|
+
skills: external_exports.array(
|
|
30666
|
+
external_exports.object({
|
|
30667
|
+
title: external_exports.string(),
|
|
30668
|
+
description: external_exports.string()
|
|
30669
|
+
})
|
|
30670
|
+
)
|
|
30671
|
+
})
|
|
30672
|
+
})
|
|
30673
|
+
});
|
|
30131
30674
|
|
|
30132
30675
|
// src/helpers.ts
|
|
30133
30676
|
var import_json_stringify_deterministic = __toESM(require_lib(), 1);
|
|
@@ -30264,13 +30807,20 @@ var getLearnCloudPlugin = /* @__PURE__ */ __name(async (initialLearnCard, url2,
|
|
|
30264
30807
|
}, "loadDids");
|
|
30265
30808
|
const otherClients = /* @__PURE__ */ new Map();
|
|
30266
30809
|
const learnCloudDids = /* @__PURE__ */ new WeakMap();
|
|
30267
|
-
const getLearnCloudDid = /* @__PURE__ */ __name((currentClient) => {
|
|
30810
|
+
const getLearnCloudDid = /* @__PURE__ */ __name(async (currentClient) => {
|
|
30268
30811
|
let learnCloudDid = learnCloudDids.get(currentClient);
|
|
30269
30812
|
if (!learnCloudDid) {
|
|
30270
30813
|
learnCloudDid = currentClient.utilities.getDid.query();
|
|
30271
30814
|
learnCloudDids.set(currentClient, learnCloudDid);
|
|
30272
30815
|
}
|
|
30273
|
-
|
|
30816
|
+
try {
|
|
30817
|
+
return await learnCloudDid;
|
|
30818
|
+
} catch (error62) {
|
|
30819
|
+
if (learnCloudDids.get(currentClient) === learnCloudDid) {
|
|
30820
|
+
learnCloudDids.delete(currentClient);
|
|
30821
|
+
}
|
|
30822
|
+
throw error62;
|
|
30823
|
+
}
|
|
30274
30824
|
}, "getLearnCloudDid");
|
|
30275
30825
|
const getOtherClient = /* @__PURE__ */ __name(async (otherUrl, _learnCard) => {
|
|
30276
30826
|
const key = `${_learnCard.id.did()}\0${otherUrl}`;
|
|
@@ -30617,6 +31167,8 @@ var getLearnCloudPlugin = /* @__PURE__ */ __name(async (initialLearnCard, url2,
|
|
|
30617
31167
|
_learnCard.debug?.("LearnCloud index.getPaginated", query, paginationOptions);
|
|
30618
31168
|
const options = {
|
|
30619
31169
|
...paginationOptions,
|
|
31170
|
+
// JSON-persisted infinite-query page parameters may restore as null.
|
|
31171
|
+
cursor: paginationOptions?.cursor ?? void 0,
|
|
30620
31172
|
sort: ["newestFirst", "oldestFirst"].includes(paginationOptions?.sort ?? "") ? paginationOptions?.sort : void 0
|
|
30621
31173
|
};
|
|
30622
31174
|
if (!query) {
|