@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
|
@@ -27117,12 +27117,46 @@ var StringQuery = external_exports.union([
|
|
|
27117
27117
|
$or: BaseStringQuery.array()
|
|
27118
27118
|
})
|
|
27119
27119
|
]);
|
|
27120
|
+
var BITSTRING_STATUS_PURPOSES = ["revocation", "suspension"];
|
|
27121
|
+
var BitstringStatusPurposeValidator = external_exports.enum(BITSTRING_STATUS_PURPOSES);
|
|
27122
|
+
var BitstringStatusListEntryValidator = external_exports.object({
|
|
27123
|
+
id: external_exports.string().optional(),
|
|
27124
|
+
type: external_exports.literal("BitstringStatusListEntry"),
|
|
27125
|
+
statusPurpose: BitstringStatusPurposeValidator,
|
|
27126
|
+
statusListIndex: external_exports.string().or(external_exports.number().int().nonnegative()),
|
|
27127
|
+
statusListCredential: external_exports.string()
|
|
27128
|
+
});
|
|
27129
|
+
var AllocatedBitstringStatusListEntryValidator = BitstringStatusListEntryValidator.extend({
|
|
27130
|
+
id: external_exports.string()
|
|
27131
|
+
});
|
|
27132
|
+
var BitstringStatusListCredentialSubjectValidator = external_exports.object({
|
|
27133
|
+
id: external_exports.string().optional(),
|
|
27134
|
+
type: external_exports.literal("BitstringStatusList"),
|
|
27135
|
+
statusPurpose: BitstringStatusPurposeValidator,
|
|
27136
|
+
encodedList: external_exports.string()
|
|
27137
|
+
});
|
|
27138
|
+
var AllocateCredentialStatusInputValidator = external_exports.object({
|
|
27139
|
+
statusPurposes: external_exports.array(BitstringStatusPurposeValidator).optional(),
|
|
27140
|
+
listSize: external_exports.number().int().positive().optional()
|
|
27141
|
+
}).default({});
|
|
27142
|
+
var AttachCredentialRefreshStatusEntriesInputValidator = external_exports.object({
|
|
27143
|
+
refreshId: external_exports.string().min(1),
|
|
27144
|
+
credentialStatus: CredentialStatusValidator.or(CredentialStatusValidator.array()).nullable()
|
|
27145
|
+
});
|
|
27120
27146
|
var LearnCardRefreshAuthorizationValidator = external_exports.object({ type: external_exports.literal("LearnCardDIDAuth") }).catchall(external_exports.any());
|
|
27121
27147
|
var ManagedCredentialRefreshServiceValidator = external_exports.object({
|
|
27122
27148
|
id: external_exports.string().min(1),
|
|
27123
27149
|
type: external_exports.literal("LearnCardCredentialRefresh2026"),
|
|
27124
27150
|
authorization: LearnCardRefreshAuthorizationValidator.optional()
|
|
27125
27151
|
}).catchall(external_exports.any());
|
|
27152
|
+
var ManagedCredentialRefreshBindingValidator = ManagedCredentialRefreshServiceValidator.or(
|
|
27153
|
+
RefreshServiceValidator.array().refine(
|
|
27154
|
+
(services) => services.some(
|
|
27155
|
+
(service) => ManagedCredentialRefreshServiceValidator.safeParse(service).success
|
|
27156
|
+
),
|
|
27157
|
+
"A managed refresh service is required"
|
|
27158
|
+
)
|
|
27159
|
+
);
|
|
27126
27160
|
var StandardCredentialRefreshServiceValidator = external_exports.object({
|
|
27127
27161
|
id: external_exports.string().min(1),
|
|
27128
27162
|
type: external_exports.literal("1EdTechCredentialRefresh")
|
|
@@ -27146,7 +27180,9 @@ var AllocateCredentialRefreshResultValidator = external_exports.object({
|
|
|
27146
27180
|
});
|
|
27147
27181
|
var ManagedCredentialRefreshReceiptValidator = external_exports.object({
|
|
27148
27182
|
refreshId: external_exports.string().min(1),
|
|
27149
|
-
refreshService:
|
|
27183
|
+
refreshService: ManagedCredentialRefreshBindingValidator,
|
|
27184
|
+
/** Legacy receipts authenticate only the allocated managed entry, not other services. */
|
|
27185
|
+
refreshServiceBinding: external_exports.literal("managed-entry").optional(),
|
|
27150
27186
|
credentialId: external_exports.string().min(1),
|
|
27151
27187
|
issuerDid: external_exports.string().min(1),
|
|
27152
27188
|
holderDid: external_exports.string().min(1),
|
|
@@ -27154,14 +27190,43 @@ var ManagedCredentialRefreshReceiptValidator = external_exports.object({
|
|
|
27154
27190
|
CredentialStatusValidator.array()
|
|
27155
27191
|
).optional()
|
|
27156
27192
|
}).strip();
|
|
27193
|
+
var GetCredentialRefreshReceiptInputValidator = external_exports.object({ uri: external_exports.string().min(1) });
|
|
27194
|
+
var CredentialRefreshReceiptValidator = ManagedCredentialRefreshReceiptValidator.extend({
|
|
27195
|
+
encryptionMode: external_exports.enum(["network", "holder"])
|
|
27196
|
+
});
|
|
27197
|
+
var HolderEncryptedHandoffValidator = external_exports.object({
|
|
27198
|
+
refreshId: external_exports.string().min(1),
|
|
27199
|
+
credentialId: external_exports.string().min(1),
|
|
27200
|
+
holderDid: external_exports.string().min(1),
|
|
27201
|
+
issuerDid: external_exports.string().min(1),
|
|
27202
|
+
credentialStatus: CredentialStatusValidator.or(CredentialStatusValidator.array()),
|
|
27203
|
+
refreshService: ManagedCredentialRefreshBindingValidator.optional(),
|
|
27204
|
+
jwe: JWEValidator
|
|
27205
|
+
}).strict();
|
|
27206
|
+
var SendHolderEncryptedRefreshableInputValidator = external_exports.object({
|
|
27207
|
+
handoff: HolderEncryptedHandoffValidator,
|
|
27208
|
+
idempotencyKey: external_exports.string().min(1).optional(),
|
|
27209
|
+
boostUri: external_exports.string().optional(),
|
|
27210
|
+
skipNotification: external_exports.boolean().optional()
|
|
27211
|
+
});
|
|
27212
|
+
var GetEncryptionRecipientsInputValidator = external_exports.object({ refreshId: external_exports.string().min(1) });
|
|
27213
|
+
var EncryptionRecipientsResultValidator = external_exports.object({
|
|
27214
|
+
recipientKeyIds: external_exports.array(external_exports.string())
|
|
27215
|
+
});
|
|
27157
27216
|
var InboxCredentialRefreshReceiptValidator = ManagedCredentialRefreshReceiptValidator.omit(
|
|
27158
27217
|
{ holderDid: true }
|
|
27159
27218
|
).extend({ holderDid: external_exports.string().min(1).optional() });
|
|
27160
27219
|
var CredentialRefreshSigningModeValidator = external_exports.enum(["issuer-signed", "signing-authority"]);
|
|
27220
|
+
var CredentialRefreshUpdateReasonValidator = external_exports.enum(["corrected", "updated", "reissued"]);
|
|
27161
27221
|
var PublishCredentialRefreshBaseFields = {
|
|
27162
27222
|
refreshId: external_exports.string().min(1),
|
|
27163
27223
|
notifyHolder: external_exports.boolean().optional(),
|
|
27164
|
-
updateSummary: external_exports.string().optional()
|
|
27224
|
+
updateSummary: external_exports.string().max(280).optional().describe(
|
|
27225
|
+
"Public legacy update summary. Do not include private claims; prefer updateReason."
|
|
27226
|
+
),
|
|
27227
|
+
updateReason: CredentialRefreshUpdateReasonValidator.optional().describe(
|
|
27228
|
+
"Public reason for this update"
|
|
27229
|
+
),
|
|
27165
27230
|
idempotencyKey: external_exports.string().optional()
|
|
27166
27231
|
};
|
|
27167
27232
|
var PublishIssuerSignedRefreshValidator = external_exports.object({
|
|
@@ -27237,13 +27302,25 @@ var PublishCredentialRefreshResultValidator = external_exports.object({
|
|
|
27237
27302
|
publishedAt: external_exports.string().min(1),
|
|
27238
27303
|
notification: PublishCredentialRefreshNotificationValidator
|
|
27239
27304
|
});
|
|
27305
|
+
var PublishHolderEncryptedRefreshInputValidator = external_exports.object({
|
|
27306
|
+
handoff: HolderEncryptedHandoffValidator,
|
|
27307
|
+
notify: external_exports.boolean(),
|
|
27308
|
+
updateSummary: external_exports.string().max(280).optional().describe(
|
|
27309
|
+
"Public legacy update summary. Do not include private claims; prefer updateReason."
|
|
27310
|
+
),
|
|
27311
|
+
updateReason: CredentialRefreshUpdateReasonValidator.optional().describe(
|
|
27312
|
+
"Public reason for this update"
|
|
27313
|
+
),
|
|
27314
|
+
idempotencyKey: external_exports.string().optional()
|
|
27315
|
+
});
|
|
27240
27316
|
var CredentialRefreshVersionMetadataValidator = external_exports.object({
|
|
27241
27317
|
version: external_exports.number().int().positive(),
|
|
27242
27318
|
publishedAt: external_exports.string().min(1),
|
|
27243
27319
|
effectiveAt: external_exports.string().optional(),
|
|
27244
27320
|
etag: external_exports.string().optional(),
|
|
27245
27321
|
signingMode: CredentialRefreshSigningModeValidator.optional(),
|
|
27246
|
-
updateSummary: external_exports.string().optional()
|
|
27322
|
+
updateSummary: external_exports.string().optional(),
|
|
27323
|
+
updateReason: CredentialRefreshUpdateReasonValidator.optional()
|
|
27247
27324
|
});
|
|
27248
27325
|
var GetCredentialRefreshHistoryInputValidator = external_exports.object({
|
|
27249
27326
|
refreshId: external_exports.string().min(1),
|
|
@@ -27286,6 +27363,7 @@ var CredentialRefreshFailureCodeValidator = external_exports.enum([
|
|
|
27286
27363
|
"INVALID_PROOF",
|
|
27287
27364
|
"ISSUER_MISMATCH",
|
|
27288
27365
|
"ID_MISMATCH",
|
|
27366
|
+
"BINDING_MISMATCH",
|
|
27289
27367
|
"ROLLBACK",
|
|
27290
27368
|
"REVOKED",
|
|
27291
27369
|
"UNSAFE_ENDPOINT"
|
|
@@ -27610,6 +27688,11 @@ var AutoBoostConfigValidator = external_exports.object({
|
|
|
27610
27688
|
name: external_exports.string()
|
|
27611
27689
|
})
|
|
27612
27690
|
});
|
|
27691
|
+
var CredentialDisplayValidator = external_exports.object({
|
|
27692
|
+
name: external_exports.string().trim().min(1).max(280).optional(),
|
|
27693
|
+
category: external_exports.string().max(280).optional(),
|
|
27694
|
+
image: external_exports.string().max(2048).url().refine((url2) => url2.startsWith("https://"), { message: "Image URL must use https" }).optional()
|
|
27695
|
+
});
|
|
27613
27696
|
var SendBoostTemplateValidator = BoostValidator.partial().omit({ uri: true, claimPermissions: true }).extend({
|
|
27614
27697
|
credential: VCValidator.or(UnsignedVCValidator),
|
|
27615
27698
|
claimPermissions: BoostPermissionsValidator.partial().optional(),
|
|
@@ -27648,6 +27731,10 @@ var SendBoostInputValidator = external_exports.object({
|
|
|
27648
27731
|
templateUri: external_exports.string().optional(),
|
|
27649
27732
|
template: SendBoostTemplateValidator.optional(),
|
|
27650
27733
|
signedCredential: VCValidator.optional(),
|
|
27734
|
+
display: CredentialDisplayValidator.optional().describe(
|
|
27735
|
+
"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."
|
|
27736
|
+
),
|
|
27737
|
+
statusPurposes: external_exports.array(BitstringStatusPurposeValidator).optional(),
|
|
27651
27738
|
options: SendOptionsValidator.optional().describe(
|
|
27652
27739
|
"Options for email/phone recipients (Universal Inbox)"
|
|
27653
27740
|
),
|
|
@@ -27686,7 +27773,10 @@ var SendInboxResponseValidator = external_exports.object({
|
|
|
27686
27773
|
"Present when guardianEmail was specified"
|
|
27687
27774
|
)
|
|
27688
27775
|
});
|
|
27776
|
+
var StatusManagementValidator = external_exports.enum(["network", "external", "mixed", "none"]);
|
|
27689
27777
|
var SendBoostResponseValidator = external_exports.object({
|
|
27778
|
+
/** Public status providers for a managed send; external entries require provider-side updates. */
|
|
27779
|
+
statusManagement: StatusManagementValidator.optional(),
|
|
27690
27780
|
type: external_exports.literal("boost"),
|
|
27691
27781
|
credentialUri: external_exports.string(),
|
|
27692
27782
|
uri: external_exports.string(),
|
|
@@ -27699,19 +27789,33 @@ var SendBoostResponseValidator = external_exports.object({
|
|
|
27699
27789
|
)
|
|
27700
27790
|
});
|
|
27701
27791
|
var PrepareRefreshableSendInputValidator = external_exports.object({
|
|
27792
|
+
/** Opt in to signing the server-bound statusEntries; omission preserves client allocation. */
|
|
27793
|
+
statusBinding: external_exports.literal("server").optional(),
|
|
27794
|
+
statusPurposes: external_exports.array(BitstringStatusPurposeValidator).optional(),
|
|
27702
27795
|
recipient: external_exports.string(),
|
|
27703
27796
|
templateUri: external_exports.string().optional(),
|
|
27704
27797
|
template: SendBoostTemplateValidator.optional(),
|
|
27798
|
+
display: CredentialDisplayValidator.optional().describe("Public display metadata only"),
|
|
27705
27799
|
contractUri: external_exports.string().optional(),
|
|
27706
27800
|
templateData: external_exports.record(external_exports.string(), external_exports.unknown()).optional(),
|
|
27707
27801
|
integrationId: external_exports.string().optional(),
|
|
27708
27802
|
/** Credential ID to allocate for; generated server-side when omitted. */
|
|
27709
27803
|
credentialId: external_exports.string().min(1).optional(),
|
|
27710
|
-
idempotencyKey: external_exports.string().min(1).max(200).optional()
|
|
27711
|
-
|
|
27712
|
-
|
|
27804
|
+
idempotencyKey: external_exports.string().min(1).max(200).optional(),
|
|
27805
|
+
/**
|
|
27806
|
+
* `'holder'` requests student-only encryption (LC-2345): the SDK signs and
|
|
27807
|
+
* encrypts locally and the server never receives plaintext. Requires a
|
|
27808
|
+
* profile or DID recipient; rejected for signedCredential-only sends and for
|
|
27809
|
+
* inbox (email/phone) recipients. Defaults to `'network'`.
|
|
27810
|
+
*/
|
|
27811
|
+
encryption: external_exports.enum(["network", "holder"]).optional()
|
|
27812
|
+
}).refine((data) => !(data.templateUri && data.template), {
|
|
27813
|
+
message: "Provide at most one of templateUri or template."
|
|
27713
27814
|
});
|
|
27714
27815
|
var PrepareRefreshableSendResultValidator = external_exports.object({
|
|
27816
|
+
/** Public status providers known at preparation; final send reports the signed entries. */
|
|
27817
|
+
statusManagement: StatusManagementValidator.optional(),
|
|
27818
|
+
statusEntries: external_exports.array(BitstringStatusListEntryValidator).optional(),
|
|
27715
27819
|
boostUri: external_exports.string(),
|
|
27716
27820
|
credentialId: external_exports.string(),
|
|
27717
27821
|
refreshId: external_exports.string(),
|
|
@@ -27719,11 +27823,110 @@ var PrepareRefreshableSendResultValidator = external_exports.object({
|
|
|
27719
27823
|
/** The DID to use as credentialSubject.id (recipient DID, or the profile's did:web). */
|
|
27720
27824
|
holderDid: external_exports.string(),
|
|
27721
27825
|
/** Present when this idempotencyKey already completed: return it without signing. */
|
|
27722
|
-
completed: SendBoostResponseValidator.optional()
|
|
27826
|
+
completed: SendBoostResponseValidator.optional(),
|
|
27827
|
+
/**
|
|
27828
|
+
* Present only when `encryption: 'holder'` was requested: the exact
|
|
27829
|
+
* key-agreement verification-method ids (holder + current managers) the SDK
|
|
27830
|
+
* must encrypt to. Recomputed on every call, so a later manager change can
|
|
27831
|
+
* make a previously-prepared set stale (see `credentialRefresh.sendHolderEncryptedRefreshable`
|
|
27832
|
+
* and `credentialRefresh.getEncryptionRecipients`).
|
|
27833
|
+
*/
|
|
27834
|
+
recipientKeyIds: external_exports.array(external_exports.string()).optional()
|
|
27723
27835
|
});
|
|
27724
27836
|
var SendInputValidator = external_exports.discriminatedUnion("type", [SendBoostInputValidator]);
|
|
27725
27837
|
var SendResponseValidator = external_exports.discriminatedUnion("type", [SendBoostResponseValidator]);
|
|
27726
|
-
var ConsentFlowTermsStatusValidator = external_exports.enum([
|
|
27838
|
+
var ConsentFlowTermsStatusValidator = external_exports.enum([
|
|
27839
|
+
"live",
|
|
27840
|
+
"consumed",
|
|
27841
|
+
"withdrawn",
|
|
27842
|
+
"needs_reconsent",
|
|
27843
|
+
"suspended"
|
|
27844
|
+
]);
|
|
27845
|
+
var ConsentFlowContractChangeKindValidator = external_exports.enum([
|
|
27846
|
+
"relaxed",
|
|
27847
|
+
"expanded_optional",
|
|
27848
|
+
"requires_consent"
|
|
27849
|
+
]);
|
|
27850
|
+
var ConsentFlowContractScopeValidator = external_exports.object({
|
|
27851
|
+
area: external_exports.enum(["read", "write"]),
|
|
27852
|
+
type: external_exports.enum(["credential", "personal"]),
|
|
27853
|
+
key: external_exports.string(),
|
|
27854
|
+
required: external_exports.boolean(),
|
|
27855
|
+
reason: external_exports.string().optional()
|
|
27856
|
+
});
|
|
27857
|
+
var ConsentFlowContractDetailValueValidator = external_exports.union([
|
|
27858
|
+
external_exports.string(),
|
|
27859
|
+
external_exports.boolean(),
|
|
27860
|
+
external_exports.string().array()
|
|
27861
|
+
]);
|
|
27862
|
+
var ConsentFlowContractDetailChangeValidator = external_exports.object({
|
|
27863
|
+
field: external_exports.enum([
|
|
27864
|
+
"name",
|
|
27865
|
+
"subtitle",
|
|
27866
|
+
"description",
|
|
27867
|
+
"reasonForAccessing",
|
|
27868
|
+
"image",
|
|
27869
|
+
"needsGuardianConsent",
|
|
27870
|
+
"redirectUrl",
|
|
27871
|
+
"frontDoorBoostUri",
|
|
27872
|
+
"expiresAt",
|
|
27873
|
+
"writers",
|
|
27874
|
+
"autoboosts"
|
|
27875
|
+
]),
|
|
27876
|
+
before: ConsentFlowContractDetailValueValidator.optional(),
|
|
27877
|
+
after: ConsentFlowContractDetailValueValidator.optional()
|
|
27878
|
+
});
|
|
27879
|
+
var ConsentFlowContractDiffValidator = external_exports.object({
|
|
27880
|
+
added: ConsentFlowContractScopeValidator.array(),
|
|
27881
|
+
removed: ConsentFlowContractScopeValidator.array(),
|
|
27882
|
+
changed: ConsentFlowContractScopeValidator.array(),
|
|
27883
|
+
details: ConsentFlowContractDetailChangeValidator.array().optional()
|
|
27884
|
+
});
|
|
27885
|
+
var ConsentFlowContractUpdatePreviewValidator = external_exports.object({
|
|
27886
|
+
headline: external_exports.string(),
|
|
27887
|
+
subhead: external_exports.string(),
|
|
27888
|
+
rows: external_exports.array(
|
|
27889
|
+
external_exports.object({
|
|
27890
|
+
scope: ConsentFlowContractScopeValidator,
|
|
27891
|
+
change: external_exports.enum(["added", "removed", "changed"]),
|
|
27892
|
+
label: external_exports.string(),
|
|
27893
|
+
subtitle: external_exports.string()
|
|
27894
|
+
})
|
|
27895
|
+
),
|
|
27896
|
+
primaryLabel: external_exports.string()
|
|
27897
|
+
});
|
|
27898
|
+
var ConsentFlowContractStatusValidator = external_exports.enum(["active", "retired"]);
|
|
27899
|
+
var ConsentFlowContractVersionValidator = external_exports.object({
|
|
27900
|
+
version: external_exports.number().int().positive(),
|
|
27901
|
+
createdAt: external_exports.string(),
|
|
27902
|
+
reason: external_exports.string().optional(),
|
|
27903
|
+
kind: ConsentFlowContractChangeKindValidator.optional()
|
|
27904
|
+
});
|
|
27905
|
+
var ConsentFlowContractUpdateResultValidator = external_exports.object({
|
|
27906
|
+
version: external_exports.number().int().positive(),
|
|
27907
|
+
kind: ConsentFlowContractChangeKindValidator,
|
|
27908
|
+
affectedUsers: external_exports.number().int().nonnegative(),
|
|
27909
|
+
preview: ConsentFlowContractUpdatePreviewValidator
|
|
27910
|
+
});
|
|
27911
|
+
var ConsentFlowConsentStatusValidator = external_exports.object({
|
|
27912
|
+
status: ConsentFlowTermsStatusValidator.or(external_exports.literal("not_consented")),
|
|
27913
|
+
consentedVersion: external_exports.number().int().positive().optional(),
|
|
27914
|
+
currentVersion: external_exports.number().int().positive(),
|
|
27915
|
+
needsReconsent: external_exports.boolean(),
|
|
27916
|
+
reviewUrl: external_exports.string().optional()
|
|
27917
|
+
});
|
|
27918
|
+
var ConsentFlowContractNotificationDataValidator = external_exports.object({
|
|
27919
|
+
contractUri: external_exports.string(),
|
|
27920
|
+
contractName: external_exports.string().optional(),
|
|
27921
|
+
fromVersion: external_exports.number().int().positive(),
|
|
27922
|
+
toVersion: external_exports.number().int().positive(),
|
|
27923
|
+
kind: ConsentFlowContractChangeKindValidator,
|
|
27924
|
+
reason: external_exports.string().optional(),
|
|
27925
|
+
diff: ConsentFlowContractDiffValidator,
|
|
27926
|
+
reconsentDeadline: external_exports.string().optional(),
|
|
27927
|
+
reviewUrl: external_exports.string(),
|
|
27928
|
+
preview: ConsentFlowContractUpdatePreviewValidator.optional()
|
|
27929
|
+
});
|
|
27727
27930
|
var ConsentFlowContractValidator = external_exports.object({
|
|
27728
27931
|
read: external_exports.object({
|
|
27729
27932
|
anonymize: external_exports.boolean().optional(),
|
|
@@ -27732,13 +27935,18 @@ var ConsentFlowContractValidator = external_exports.object({
|
|
|
27732
27935
|
external_exports.string(),
|
|
27733
27936
|
external_exports.object({
|
|
27734
27937
|
required: external_exports.boolean(),
|
|
27735
|
-
defaultEnabled: external_exports.boolean().optional()
|
|
27938
|
+
defaultEnabled: external_exports.boolean().optional(),
|
|
27939
|
+
reason: external_exports.string().optional()
|
|
27736
27940
|
})
|
|
27737
27941
|
).default({})
|
|
27738
27942
|
}).prefault({ categories: {} }),
|
|
27739
27943
|
personal: external_exports.record(
|
|
27740
27944
|
external_exports.string(),
|
|
27741
|
-
external_exports.object({
|
|
27945
|
+
external_exports.object({
|
|
27946
|
+
required: external_exports.boolean(),
|
|
27947
|
+
defaultEnabled: external_exports.boolean().optional(),
|
|
27948
|
+
reason: external_exports.string().optional()
|
|
27949
|
+
})
|
|
27742
27950
|
).default({})
|
|
27743
27951
|
}).prefault({ credentials: { categories: {} }, personal: {} }),
|
|
27744
27952
|
write: external_exports.object({
|
|
@@ -27747,16 +27955,55 @@ var ConsentFlowContractValidator = external_exports.object({
|
|
|
27747
27955
|
external_exports.string(),
|
|
27748
27956
|
external_exports.object({
|
|
27749
27957
|
required: external_exports.boolean(),
|
|
27750
|
-
defaultEnabled: external_exports.boolean().optional()
|
|
27958
|
+
defaultEnabled: external_exports.boolean().optional(),
|
|
27959
|
+
reason: external_exports.string().optional()
|
|
27751
27960
|
})
|
|
27752
27961
|
).default({})
|
|
27753
27962
|
}).prefault({ categories: {} }),
|
|
27754
27963
|
personal: external_exports.record(
|
|
27755
27964
|
external_exports.string(),
|
|
27756
|
-
external_exports.object({
|
|
27965
|
+
external_exports.object({
|
|
27966
|
+
required: external_exports.boolean(),
|
|
27967
|
+
defaultEnabled: external_exports.boolean().optional(),
|
|
27968
|
+
reason: external_exports.string().optional()
|
|
27969
|
+
})
|
|
27757
27970
|
).default({})
|
|
27758
27971
|
}).prefault({ credentials: { categories: {} }, personal: {} })
|
|
27759
27972
|
});
|
|
27973
|
+
var ConsentFlowContractScopePatchValidator = external_exports.object({
|
|
27974
|
+
required: external_exports.boolean(),
|
|
27975
|
+
defaultEnabled: external_exports.boolean().optional(),
|
|
27976
|
+
reason: external_exports.string().optional()
|
|
27977
|
+
}).nullable();
|
|
27978
|
+
var ConsentFlowContractChangesValidator = external_exports.object({
|
|
27979
|
+
contract: external_exports.object({
|
|
27980
|
+
read: external_exports.object({
|
|
27981
|
+
anonymize: external_exports.boolean().optional(),
|
|
27982
|
+
credentials: external_exports.object({
|
|
27983
|
+
categories: external_exports.record(external_exports.string(), ConsentFlowContractScopePatchValidator).optional()
|
|
27984
|
+
}).optional(),
|
|
27985
|
+
personal: external_exports.record(external_exports.string(), ConsentFlowContractScopePatchValidator).optional()
|
|
27986
|
+
}).optional(),
|
|
27987
|
+
write: external_exports.object({
|
|
27988
|
+
credentials: external_exports.object({
|
|
27989
|
+
categories: external_exports.record(external_exports.string(), ConsentFlowContractScopePatchValidator).optional()
|
|
27990
|
+
}).optional(),
|
|
27991
|
+
personal: external_exports.record(external_exports.string(), ConsentFlowContractScopePatchValidator).optional()
|
|
27992
|
+
}).optional()
|
|
27993
|
+
}).optional(),
|
|
27994
|
+
name: external_exports.string().optional(),
|
|
27995
|
+
subtitle: external_exports.string().optional(),
|
|
27996
|
+
description: external_exports.string().optional(),
|
|
27997
|
+
reasonForAccessing: external_exports.string().optional(),
|
|
27998
|
+
image: external_exports.string().optional(),
|
|
27999
|
+
needsGuardianConsent: external_exports.boolean().optional(),
|
|
28000
|
+
redirectUrl: external_exports.string().optional(),
|
|
28001
|
+
frontDoorBoostUri: external_exports.string().optional(),
|
|
28002
|
+
expiresAt: external_exports.string().nullable().optional(),
|
|
28003
|
+
autoboosts: AutoBoostConfigValidator.array().optional(),
|
|
28004
|
+
writers: external_exports.string().array().optional(),
|
|
28005
|
+
recipients: external_exports.string().array().optional()
|
|
28006
|
+
});
|
|
27760
28007
|
var ConsentFlowContractDetailsValidator = external_exports.object({
|
|
27761
28008
|
contract: ConsentFlowContractValidator,
|
|
27762
28009
|
owner: LCNProfileValidator,
|
|
@@ -27775,7 +28022,19 @@ var ConsentFlowContractDetailsValidator = external_exports.object({
|
|
|
27775
28022
|
autoBoosts: external_exports.string().array().optional(),
|
|
27776
28023
|
writers: external_exports.array(LCNProfileValidator).optional(),
|
|
27777
28024
|
recipients: external_exports.array(LCNPublicProfileValidator.extend({ did: external_exports.string() })).optional(),
|
|
27778
|
-
audienceVersion: external_exports.number().int().nonnegative().optional()
|
|
28025
|
+
audienceVersion: external_exports.number().int().nonnegative().optional(),
|
|
28026
|
+
version: external_exports.number().int().positive(),
|
|
28027
|
+
status: ConsentFlowContractStatusValidator.optional(),
|
|
28028
|
+
latestUpdate: external_exports.object({
|
|
28029
|
+
fromVersion: external_exports.number().int().positive(),
|
|
28030
|
+
toVersion: external_exports.number().int().positive(),
|
|
28031
|
+
kind: ConsentFlowContractChangeKindValidator,
|
|
28032
|
+
reason: external_exports.string().optional(),
|
|
28033
|
+
diff: ConsentFlowContractDiffValidator,
|
|
28034
|
+
reconsentDeadline: external_exports.string().optional(),
|
|
28035
|
+
createdAt: external_exports.string(),
|
|
28036
|
+
preview: ConsentFlowContractUpdatePreviewValidator
|
|
28037
|
+
}).optional()
|
|
27779
28038
|
});
|
|
27780
28039
|
var ConsentFlowContractRequestStatusValidator = external_exports.enum(["pending", "accepted", "denied", "cancelled"]).nullable();
|
|
27781
28040
|
var ConsentFlowContractRequestReadStatusValidator = external_exports.enum(["unseen", "seen"]).nullable();
|
|
@@ -27864,7 +28123,12 @@ var PaginatedConsentFlowTermsValidator = PaginationResponseValidator.extend({
|
|
|
27864
28123
|
contract: ConsentFlowContractDetailsValidator,
|
|
27865
28124
|
uri: external_exports.string(),
|
|
27866
28125
|
consenter: LCNProfileValidator,
|
|
27867
|
-
status: ConsentFlowTermsStatusValidator
|
|
28126
|
+
status: ConsentFlowTermsStatusValidator,
|
|
28127
|
+
consentedVersion: external_exports.number().int().positive(),
|
|
28128
|
+
lastReviewedVersion: external_exports.number().int().positive().optional(),
|
|
28129
|
+
reconsentDeadline: external_exports.string().optional(),
|
|
28130
|
+
newOptionsUntil: external_exports.string().optional(),
|
|
28131
|
+
cumulativeUpdate: ConsentFlowContractDetailsValidator.shape.latestUpdate
|
|
27868
28132
|
}).array()
|
|
27869
28133
|
});
|
|
27870
28134
|
var ConsentFlowGuardianApprovalValidator = external_exports.object({
|
|
@@ -27940,7 +28204,8 @@ var ConsentFlowTransactionActionValidator = external_exports.enum([
|
|
|
27940
28204
|
"update",
|
|
27941
28205
|
"sync",
|
|
27942
28206
|
"withdraw",
|
|
27943
|
-
"write"
|
|
28207
|
+
"write",
|
|
28208
|
+
"reconsent"
|
|
27944
28209
|
]);
|
|
27945
28210
|
var ConsentFlowTransactionsQueryValidator = external_exports.object({
|
|
27946
28211
|
terms: ConsentFlowTermsQueryValidator.optional(),
|
|
@@ -27959,8 +28224,12 @@ var ConsentFlowTransactionValidator = external_exports.object({
|
|
|
27959
28224
|
referral: ConsentFlowReferralValidator.optional(),
|
|
27960
28225
|
id: external_exports.string(),
|
|
27961
28226
|
action: ConsentFlowTransactionActionValidator,
|
|
28227
|
+
kind: ConsentFlowContractChangeKindValidator.optional(),
|
|
27962
28228
|
date: external_exports.string(),
|
|
27963
|
-
uris: external_exports.string().array().optional()
|
|
28229
|
+
uris: external_exports.string().array().optional(),
|
|
28230
|
+
consentedVersion: external_exports.number().int().positive().optional(),
|
|
28231
|
+
reconsentDeadline: external_exports.string().optional(),
|
|
28232
|
+
newOptionsUntil: external_exports.string().optional()
|
|
27964
28233
|
});
|
|
27965
28234
|
var HolderExportConsentRecordValidator = external_exports.object({
|
|
27966
28235
|
termsUri: external_exports.string(),
|
|
@@ -27968,6 +28237,10 @@ var HolderExportConsentRecordValidator = external_exports.object({
|
|
|
27968
28237
|
contract: ConsentFlowContractDetailsValidator,
|
|
27969
28238
|
terms: ConsentFlowTermsValidator,
|
|
27970
28239
|
referral: ConsentFlowReferralValidator.optional(),
|
|
28240
|
+
consentedVersion: external_exports.number().int().positive(),
|
|
28241
|
+
reconsentDeadline: external_exports.string().optional(),
|
|
28242
|
+
newOptionsUntil: external_exports.string().optional(),
|
|
28243
|
+
cumulativeUpdate: ConsentFlowContractDetailsValidator.shape.latestUpdate,
|
|
27971
28244
|
transactions: ConsentFlowTransactionValidator.array()
|
|
27972
28245
|
});
|
|
27973
28246
|
var HolderExportMetadataValidator = external_exports.object({
|
|
@@ -28028,10 +28301,12 @@ var LCNNotificationTypeEnumValidator = external_exports.enum([
|
|
|
28028
28301
|
"GUARDIAN_APPROVED",
|
|
28029
28302
|
"GUARDIAN_REJECTED",
|
|
28030
28303
|
"APP_NOTIFICATION",
|
|
28304
|
+
"ANNOUNCEMENT",
|
|
28031
28305
|
"CREDENTIAL_REVOKED",
|
|
28032
28306
|
"CREDENTIAL_SUSPENDED",
|
|
28033
28307
|
"CREDENTIAL_UNSUSPENDED",
|
|
28034
|
-
"CREDENTIAL_REFRESHED"
|
|
28308
|
+
"CREDENTIAL_REFRESHED",
|
|
28309
|
+
"CONSENT_FLOW_CONTRACT_UPDATED"
|
|
28035
28310
|
]);
|
|
28036
28311
|
var LCNNotificationMessageValidator = external_exports.object({
|
|
28037
28312
|
title: external_exports.string().optional(),
|
|
@@ -28060,12 +28335,26 @@ var LCNNotificationInboxValidator = external_exports.object({
|
|
|
28060
28335
|
timestamp: external_exports.iso.datetime().optional()
|
|
28061
28336
|
});
|
|
28062
28337
|
var LCNNotificationMetadataValidator = external_exports.object({
|
|
28063
|
-
connectionPrompt: LCNConnectionPromptMetadataValidator.optional()
|
|
28338
|
+
connectionPrompt: LCNConnectionPromptMetadataValidator.optional(),
|
|
28339
|
+
campaignId: external_exports.string().regex(/^[a-z0-9-]{3,64}$/).optional(),
|
|
28340
|
+
campaignCreatedAt: external_exports.iso.datetime().optional(),
|
|
28341
|
+
campaignHasInApp: external_exports.boolean().optional(),
|
|
28342
|
+
campaignTestId: external_exports.uuid().optional()
|
|
28064
28343
|
}).catchall(external_exports.unknown());
|
|
28065
28344
|
var LCNNotificationDataValidator = external_exports.object({
|
|
28066
28345
|
vcUris: external_exports.array(external_exports.string()).optional(),
|
|
28067
28346
|
vpUris: external_exports.array(external_exports.string()).optional(),
|
|
28068
28347
|
transaction: ConsentFlowTransactionValidator.optional(),
|
|
28348
|
+
contractUri: external_exports.string().optional(),
|
|
28349
|
+
contractName: external_exports.string().optional(),
|
|
28350
|
+
fromVersion: external_exports.number().int().positive().optional(),
|
|
28351
|
+
toVersion: external_exports.number().int().positive().optional(),
|
|
28352
|
+
kind: ConsentFlowContractChangeKindValidator.optional(),
|
|
28353
|
+
reason: external_exports.string().optional(),
|
|
28354
|
+
diff: ConsentFlowContractDiffValidator.optional(),
|
|
28355
|
+
reconsentDeadline: external_exports.string().optional(),
|
|
28356
|
+
reviewUrl: external_exports.string().optional(),
|
|
28357
|
+
preview: ConsentFlowContractUpdatePreviewValidator.optional(),
|
|
28069
28358
|
inbox: LCNNotificationInboxValidator.optional(),
|
|
28070
28359
|
metadata: LCNNotificationMetadataValidator.optional()
|
|
28071
28360
|
}).loose();
|
|
@@ -29163,28 +29452,6 @@ var EscrowPinStatusValidator = external_exports.object({
|
|
|
29163
29452
|
*/
|
|
29164
29453
|
wrongAttempts: external_exports.number().int().nonnegative().optional()
|
|
29165
29454
|
});
|
|
29166
|
-
var BITSTRING_STATUS_PURPOSES = ["revocation", "suspension"];
|
|
29167
|
-
var BitstringStatusPurposeValidator = external_exports.enum(BITSTRING_STATUS_PURPOSES);
|
|
29168
|
-
var BitstringStatusListEntryValidator = external_exports.object({
|
|
29169
|
-
id: external_exports.string().optional(),
|
|
29170
|
-
type: external_exports.literal("BitstringStatusListEntry"),
|
|
29171
|
-
statusPurpose: BitstringStatusPurposeValidator,
|
|
29172
|
-
statusListIndex: external_exports.string().or(external_exports.number().int().nonnegative()),
|
|
29173
|
-
statusListCredential: external_exports.string()
|
|
29174
|
-
});
|
|
29175
|
-
var AllocatedBitstringStatusListEntryValidator = BitstringStatusListEntryValidator.extend({
|
|
29176
|
-
id: external_exports.string()
|
|
29177
|
-
});
|
|
29178
|
-
var BitstringStatusListCredentialSubjectValidator = external_exports.object({
|
|
29179
|
-
id: external_exports.string().optional(),
|
|
29180
|
-
type: external_exports.literal("BitstringStatusList"),
|
|
29181
|
-
statusPurpose: BitstringStatusPurposeValidator,
|
|
29182
|
-
encodedList: external_exports.string()
|
|
29183
|
-
});
|
|
29184
|
-
var AllocateCredentialStatusInputValidator = external_exports.object({
|
|
29185
|
-
statusPurposes: external_exports.array(BitstringStatusPurposeValidator).optional(),
|
|
29186
|
-
listSize: external_exports.number().int().positive().optional()
|
|
29187
|
-
}).default({});
|
|
29188
29455
|
var isSafeInAppMessagePath = /* @__PURE__ */ __name2((path) => {
|
|
29189
29456
|
let decoded = path;
|
|
29190
29457
|
for (let depth = 0; depth < 5; depth += 1) {
|
|
@@ -29465,24 +29732,46 @@ var inAppMessagesFlagEnvelopeValidator = external_exports.object({
|
|
|
29465
29732
|
}).passthrough();
|
|
29466
29733
|
var CampaignIdValidator = external_exports.string().regex(/^[a-z0-9-]{3,64}$/);
|
|
29467
29734
|
var CampaignStatusValidator = external_exports.enum(["draft", "live", "paused", "archived"]);
|
|
29468
|
-
var CampaignChannelValidator = external_exports.enum(["inApp", "notify"]);
|
|
29735
|
+
var CampaignChannelValidator = external_exports.enum(["inApp", "notify", "email"]);
|
|
29469
29736
|
var CampaignEventValidator = external_exports.enum(["shown", "clicked", "dismissed", "converted"]);
|
|
29470
|
-
var timestamp = external_exports.iso.datetime({ offset: true }).overwrite((value) =>
|
|
29737
|
+
var timestamp = external_exports.iso.datetime({ offset: true }).overwrite((value) => {
|
|
29738
|
+
const date5 = new Date(value);
|
|
29739
|
+
return Number.isFinite(date5.getTime()) ? date5.toISOString() : value;
|
|
29740
|
+
});
|
|
29471
29741
|
var notification = external_exports.object({ title: external_exports.string().min(1), body: external_exports.string().min(1) }).strict();
|
|
29472
|
-
var
|
|
29742
|
+
var CampaignEmailValidator = external_exports.object({
|
|
29743
|
+
subject: external_exports.string().trim().min(1).max(200).regex(/^[^\r\n]+$/),
|
|
29744
|
+
title: external_exports.string().trim().min(1).max(200),
|
|
29745
|
+
body: external_exports.string().trim().min(1).max(2e4),
|
|
29746
|
+
heroImageUrl: external_exports.url().startsWith("https://").max(2048).optional(),
|
|
29747
|
+
ctaLabel: external_exports.string().trim().min(1).max(100)
|
|
29748
|
+
}).strict();
|
|
29749
|
+
var AnnouncementPreferencesValidator = external_exports.object({
|
|
29750
|
+
announcementEmailOptOut: external_exports.boolean(),
|
|
29751
|
+
announcementPushOptOut: external_exports.boolean()
|
|
29752
|
+
}).strict();
|
|
29753
|
+
var channels = external_exports.array(CampaignChannelValidator).min(1).max(3).refine((values) => new Set(values).size === values.length, "Channels must be unique");
|
|
29473
29754
|
var campaignDefinition = external_exports.object({
|
|
29474
29755
|
id: CampaignIdValidator,
|
|
29475
29756
|
name: external_exports.string().trim().min(1).max(200),
|
|
29476
29757
|
status: CampaignStatusValidator.default("draft"),
|
|
29477
29758
|
channels,
|
|
29478
|
-
message: inAppMessageValidator,
|
|
29759
|
+
message: inAppMessageValidator.optional(),
|
|
29479
29760
|
notification: notification.optional(),
|
|
29761
|
+
email: CampaignEmailValidator.optional(),
|
|
29480
29762
|
startsAt: timestamp.optional(),
|
|
29481
29763
|
endsAt: timestamp.optional(),
|
|
29482
29764
|
excludeMinors: external_exports.boolean().default(true),
|
|
29483
29765
|
selfEnroll: external_exports.boolean().default(false)
|
|
29484
29766
|
}).strict();
|
|
29485
29767
|
var validDefinition = /* @__PURE__ */ __name2((value, ctx) => {
|
|
29768
|
+
if (value.channels.includes("inApp") && !value.message) {
|
|
29769
|
+
ctx.addIssue({
|
|
29770
|
+
code: "custom",
|
|
29771
|
+
path: ["message"],
|
|
29772
|
+
message: "In-app requires a message"
|
|
29773
|
+
});
|
|
29774
|
+
}
|
|
29486
29775
|
if (value.channels.includes("notify") && !value.notification) {
|
|
29487
29776
|
ctx.addIssue({
|
|
29488
29777
|
code: "custom",
|
|
@@ -29490,15 +29779,23 @@ var validDefinition = /* @__PURE__ */ __name2((value, ctx) => {
|
|
|
29490
29779
|
message: "Notify requires a title and body"
|
|
29491
29780
|
});
|
|
29492
29781
|
}
|
|
29782
|
+
if (value.channels.includes("email") && !value.email) {
|
|
29783
|
+
ctx.addIssue({
|
|
29784
|
+
code: "custom",
|
|
29785
|
+
path: ["email"],
|
|
29786
|
+
message: "Email requires announcement content"
|
|
29787
|
+
});
|
|
29788
|
+
}
|
|
29493
29789
|
if (value.startsAt && value.endsAt && value.startsAt >= value.endsAt) {
|
|
29494
29790
|
ctx.addIssue({ code: "custom", path: ["endsAt"], message: "End must be after start" });
|
|
29495
29791
|
}
|
|
29496
29792
|
}, "validDefinition");
|
|
29497
29793
|
var CampaignValidator = campaignDefinition.extend({
|
|
29794
|
+
tenantId: external_exports.string().optional(),
|
|
29498
29795
|
createdAt: timestamp,
|
|
29499
29796
|
updatedAt: timestamp
|
|
29500
29797
|
}).superRefine(validDefinition).superRefine((value, ctx) => {
|
|
29501
|
-
if (value.message.id !== value.id) {
|
|
29798
|
+
if (value.message && value.message.id !== value.id) {
|
|
29502
29799
|
ctx.addIssue({
|
|
29503
29800
|
code: "custom",
|
|
29504
29801
|
path: ["message", "id"],
|
|
@@ -29507,21 +29804,23 @@ var CampaignValidator = campaignDefinition.extend({
|
|
|
29507
29804
|
}
|
|
29508
29805
|
});
|
|
29509
29806
|
var CreateCampaignInputValidator = campaignDefinition.extend({
|
|
29510
|
-
message: inAppMessageAuthoringValidator
|
|
29807
|
+
message: inAppMessageAuthoringValidator.optional()
|
|
29511
29808
|
}).superRefine(validDefinition);
|
|
29512
29809
|
var CampaignUpdatesValidator = campaignDefinition.omit({ id: true }).partial().extend({
|
|
29513
29810
|
// A PATCH must not apply creation defaults to fields the caller omitted.
|
|
29514
29811
|
status: CampaignStatusValidator.optional(),
|
|
29515
29812
|
excludeMinors: external_exports.boolean().optional(),
|
|
29516
29813
|
selfEnroll: external_exports.boolean().optional(),
|
|
29517
|
-
message: inAppMessageAuthoringValidator.optional(),
|
|
29814
|
+
message: inAppMessageAuthoringValidator.nullable().optional(),
|
|
29518
29815
|
notification: notification.nullable().optional(),
|
|
29816
|
+
email: CampaignEmailValidator.nullable().optional(),
|
|
29519
29817
|
startsAt: timestamp.nullable().optional(),
|
|
29520
29818
|
endsAt: timestamp.nullable().optional()
|
|
29521
29819
|
}).strict();
|
|
29522
29820
|
var UpdateCampaignInputValidator = external_exports.object({
|
|
29523
29821
|
campaignId: CampaignIdValidator,
|
|
29524
|
-
updates: CampaignUpdatesValidator
|
|
29822
|
+
updates: CampaignUpdatesValidator,
|
|
29823
|
+
expectedUpdatedAt: timestamp.optional()
|
|
29525
29824
|
}).strict();
|
|
29526
29825
|
var identifier = external_exports.string().trim().min(1).max(2048);
|
|
29527
29826
|
var metadataKey = external_exports.string().regex(/^[a-zA-Z_][a-zA-Z0-9_.-]{0,63}$/).refine(
|
|
@@ -29573,7 +29872,8 @@ var CampaignUserStateValidator = external_exports.object({
|
|
|
29573
29872
|
clickedAt: timestamp.optional(),
|
|
29574
29873
|
dismissedAt: timestamp.optional(),
|
|
29575
29874
|
convertedAt: timestamp.optional(),
|
|
29576
|
-
notifiedAt: timestamp.optional()
|
|
29875
|
+
notifiedAt: timestamp.optional(),
|
|
29876
|
+
emailedAt: timestamp.optional()
|
|
29577
29877
|
});
|
|
29578
29878
|
var MyCampaignValidator = external_exports.object({
|
|
29579
29879
|
campaign: campaignDefinition.pick({
|
|
@@ -29582,12 +29882,19 @@ var MyCampaignValidator = external_exports.object({
|
|
|
29582
29882
|
startsAt: true,
|
|
29583
29883
|
endsAt: true,
|
|
29584
29884
|
selfEnroll: true
|
|
29585
|
-
}),
|
|
29586
|
-
state: CampaignUserStateValidator
|
|
29885
|
+
}).extend({ message: inAppMessageValidator }),
|
|
29886
|
+
state: CampaignUserStateValidator,
|
|
29887
|
+
testId: external_exports.uuid().optional()
|
|
29888
|
+
});
|
|
29889
|
+
var CampaignTestValidator = external_exports.object({
|
|
29890
|
+
id: external_exports.uuid(),
|
|
29891
|
+
campaignId: CampaignIdValidator,
|
|
29892
|
+
message: inAppMessageValidator
|
|
29587
29893
|
});
|
|
29588
29894
|
var CampaignStatsValidator = external_exports.object({
|
|
29589
29895
|
audience: external_exports.number().int().nonnegative(),
|
|
29590
29896
|
notified: external_exports.number().int().nonnegative(),
|
|
29897
|
+
emailed: external_exports.number().int().nonnegative(),
|
|
29591
29898
|
shown: external_exports.number().int().nonnegative(),
|
|
29592
29899
|
clicked: external_exports.number().int().nonnegative(),
|
|
29593
29900
|
dismissed: external_exports.number().int().nonnegative(),
|
|
@@ -29614,6 +29921,31 @@ var PaginatedCampaignAudienceValidator = external_exports.object({
|
|
|
29614
29921
|
hasMore: external_exports.boolean(),
|
|
29615
29922
|
cursor: external_exports.string().optional()
|
|
29616
29923
|
});
|
|
29924
|
+
var CampaignDispatchPreviewValidator = external_exports.object({
|
|
29925
|
+
campaignId: CampaignIdValidator,
|
|
29926
|
+
audienceCount: external_exports.number().int().nonnegative(),
|
|
29927
|
+
alreadyNotifiedCount: external_exports.number().int().nonnegative(),
|
|
29928
|
+
recipientCount: external_exports.number().int().nonnegative(),
|
|
29929
|
+
notificationRecipientCount: external_exports.number().int().nonnegative().optional(),
|
|
29930
|
+
emailRecipientCount: external_exports.number().int().nonnegative().optional(),
|
|
29931
|
+
previewToken: external_exports.string().regex(/^[a-f0-9]{64}$/),
|
|
29932
|
+
blockedReason: external_exports.enum([
|
|
29933
|
+
"not_live",
|
|
29934
|
+
"notify_disabled",
|
|
29935
|
+
"email_confirmation_required",
|
|
29936
|
+
"not_started",
|
|
29937
|
+
"ended",
|
|
29938
|
+
"no_recipients"
|
|
29939
|
+
]).optional()
|
|
29940
|
+
});
|
|
29941
|
+
var CampaignDispatchOptionsValidator = external_exports.object({
|
|
29942
|
+
expectedPreviewToken: CampaignDispatchPreviewValidator.shape.previewToken.optional()
|
|
29943
|
+
}).strict();
|
|
29944
|
+
var CampaignAudienceResultValidator = external_exports.object({
|
|
29945
|
+
count: external_exports.number().int().nonnegative(),
|
|
29946
|
+
added: external_exports.number().int().nonnegative(),
|
|
29947
|
+
notFound: external_exports.array(external_exports.string())
|
|
29948
|
+
});
|
|
29617
29949
|
var SHARE_LINK_ID_BYTES = 16;
|
|
29618
29950
|
var SHARE_CONTENT_KEY_BYTES = 32;
|
|
29619
29951
|
var SHARE_IV_BYTES = 12;
|
|
@@ -30137,6 +30469,217 @@ var SkillIconNamesValidator = external_exports.array(external_exports.string().n
|
|
|
30137
30469
|
}
|
|
30138
30470
|
);
|
|
30139
30471
|
var GenerateSkillIconsInputValidator = external_exports.object({ names: SkillIconNamesValidator });
|
|
30472
|
+
var RoleValidator = external_exports.enum(["user", "assistant", "tool", "system"]);
|
|
30473
|
+
var AiSessionMode = {
|
|
30474
|
+
tutor: "ai-tutor",
|
|
30475
|
+
insights: "ai-insights"
|
|
30476
|
+
};
|
|
30477
|
+
var AiSessionModeValidator = external_exports.enum([AiSessionMode.tutor, AiSessionMode.insights]);
|
|
30478
|
+
var StructuredResponseValidator = external_exports.object({
|
|
30479
|
+
notes: external_exports.string().optional(),
|
|
30480
|
+
questions: external_exports.array(external_exports.string())
|
|
30481
|
+
});
|
|
30482
|
+
var IntroStreamModeValidator = external_exports.enum(["formatted", "structured"]);
|
|
30483
|
+
var ChatMessageValidator = external_exports.object({
|
|
30484
|
+
role: RoleValidator,
|
|
30485
|
+
content: external_exports.string().nullable(),
|
|
30486
|
+
tool_call_id: external_exports.string().optional(),
|
|
30487
|
+
tool_calls: external_exports.array(
|
|
30488
|
+
external_exports.object({
|
|
30489
|
+
id: external_exports.string(),
|
|
30490
|
+
type: external_exports.literal("function"),
|
|
30491
|
+
function: external_exports.object({
|
|
30492
|
+
name: external_exports.string(),
|
|
30493
|
+
arguments: external_exports.string()
|
|
30494
|
+
})
|
|
30495
|
+
})
|
|
30496
|
+
).optional()
|
|
30497
|
+
});
|
|
30498
|
+
var InsightArtifactValidator = external_exports.object({
|
|
30499
|
+
title: external_exports.string(),
|
|
30500
|
+
summary: external_exports.string(),
|
|
30501
|
+
category: external_exports.string(),
|
|
30502
|
+
question: external_exports.string(),
|
|
30503
|
+
narrative: external_exports.string()
|
|
30504
|
+
});
|
|
30505
|
+
var ArtifactSuggestionValidator = external_exports.object({
|
|
30506
|
+
artifact: InsightArtifactValidator,
|
|
30507
|
+
source_text: external_exports.string().optional(),
|
|
30508
|
+
created_at: external_exports.string()
|
|
30509
|
+
});
|
|
30510
|
+
var ThreadCredentialContextValidator = external_exports.object({
|
|
30511
|
+
uri: external_exports.string(),
|
|
30512
|
+
type: external_exports.string(),
|
|
30513
|
+
context: external_exports.string(),
|
|
30514
|
+
score: external_exports.number(),
|
|
30515
|
+
strongestScore: external_exports.number().optional(),
|
|
30516
|
+
averageScore: external_exports.number().optional(),
|
|
30517
|
+
matchCount: external_exports.number().optional(),
|
|
30518
|
+
title: external_exports.string().optional()
|
|
30519
|
+
});
|
|
30520
|
+
var ThreadValidator = external_exports.object({
|
|
30521
|
+
id: external_exports.string(),
|
|
30522
|
+
did: external_exports.string(),
|
|
30523
|
+
topicCredentialUri: external_exports.string().nullable().optional(),
|
|
30524
|
+
title: external_exports.string(),
|
|
30525
|
+
created_at: external_exports.string(),
|
|
30526
|
+
last_message_at: external_exports.string(),
|
|
30527
|
+
active: external_exports.boolean().optional(),
|
|
30528
|
+
ended_at: external_exports.string().optional(),
|
|
30529
|
+
plan_started_at: external_exports.string().optional(),
|
|
30530
|
+
summaries: external_exports.array(
|
|
30531
|
+
external_exports.object({
|
|
30532
|
+
summary_data: external_exports.string(),
|
|
30533
|
+
credential_uri: external_exports.string(),
|
|
30534
|
+
created_at: external_exports.string()
|
|
30535
|
+
})
|
|
30536
|
+
).optional(),
|
|
30537
|
+
plans: external_exports.array(
|
|
30538
|
+
external_exports.object({
|
|
30539
|
+
plan_data: external_exports.string(),
|
|
30540
|
+
created_at: external_exports.string(),
|
|
30541
|
+
consentRevision: external_exports.string().optional()
|
|
30542
|
+
})
|
|
30543
|
+
).optional(),
|
|
30544
|
+
credentials: external_exports.array(ThreadCredentialContextValidator).optional(),
|
|
30545
|
+
credentialSearchTopic: external_exports.string().optional(),
|
|
30546
|
+
credentialContextStatus: external_exports.enum(["pending", "ready", "empty", "error"]).optional(),
|
|
30547
|
+
mode: AiSessionModeValidator.optional(),
|
|
30548
|
+
artifactSuggestions: external_exports.array(ArtifactSuggestionValidator).optional()
|
|
30549
|
+
});
|
|
30550
|
+
var CredentialVerificationMetadataValidator = external_exports.object({
|
|
30551
|
+
credentialUri: external_exports.string(),
|
|
30552
|
+
contentHash: external_exports.string().regex(/^[a-f0-9]{64}$/),
|
|
30553
|
+
status: external_exports.enum(["valid", "invalid"]),
|
|
30554
|
+
checkedAt: external_exports.string().datetime(),
|
|
30555
|
+
verifier: external_exports.object({
|
|
30556
|
+
name: external_exports.string(),
|
|
30557
|
+
version: external_exports.string()
|
|
30558
|
+
}),
|
|
30559
|
+
verifiedPayload: external_exports.enum(["credential", "boostCredential"]),
|
|
30560
|
+
checks: external_exports.array(external_exports.string()),
|
|
30561
|
+
errors: external_exports.array(external_exports.string()),
|
|
30562
|
+
warnings: external_exports.array(external_exports.string()),
|
|
30563
|
+
provenance: external_exports.object({
|
|
30564
|
+
source: external_exports.enum(["wallet", "generated"]),
|
|
30565
|
+
retrievedAt: external_exports.string().datetime()
|
|
30566
|
+
}),
|
|
30567
|
+
consent: external_exports.object({
|
|
30568
|
+
contractUri: external_exports.string(),
|
|
30569
|
+
receiptId: external_exports.string().min(1),
|
|
30570
|
+
grantedAt: external_exports.string().datetime().optional(),
|
|
30571
|
+
updatedAt: external_exports.string().datetime(),
|
|
30572
|
+
contractUpdatedAt: external_exports.string().min(1),
|
|
30573
|
+
status: external_exports.literal("live"),
|
|
30574
|
+
expiresAt: external_exports.string().datetime().optional(),
|
|
30575
|
+
contractExpiresAt: external_exports.string().datetime().optional(),
|
|
30576
|
+
categories: external_exports.array(external_exports.string()),
|
|
30577
|
+
credentialUris: external_exports.array(external_exports.string()),
|
|
30578
|
+
personalFields: external_exports.array(external_exports.string()),
|
|
30579
|
+
purpose: external_exports.enum(["credential-ingestion", "model-inference", "embedding"]),
|
|
30580
|
+
revision: external_exports.string().min(1),
|
|
30581
|
+
guardian: external_exports.object({ required: external_exports.boolean(), approved: external_exports.boolean() })
|
|
30582
|
+
})
|
|
30583
|
+
});
|
|
30584
|
+
var ModelSafeCredentialFactValidator = external_exports.object({
|
|
30585
|
+
kind: external_exports.enum([
|
|
30586
|
+
"skill",
|
|
30587
|
+
"goal",
|
|
30588
|
+
"achievement",
|
|
30589
|
+
"course",
|
|
30590
|
+
"experience",
|
|
30591
|
+
"competency",
|
|
30592
|
+
"title",
|
|
30593
|
+
"summary",
|
|
30594
|
+
"assessment",
|
|
30595
|
+
"grade",
|
|
30596
|
+
"date",
|
|
30597
|
+
"alignment",
|
|
30598
|
+
"criteria",
|
|
30599
|
+
"pathway",
|
|
30600
|
+
"topic"
|
|
30601
|
+
]),
|
|
30602
|
+
value: external_exports.string().min(1).max(240),
|
|
30603
|
+
label: external_exports.string().min(1).max(120).optional()
|
|
30604
|
+
});
|
|
30605
|
+
var ModelSafeCredentialProjectionValidator = external_exports.object({
|
|
30606
|
+
schemaVersion: external_exports.literal("1"),
|
|
30607
|
+
category: external_exports.string().min(1).max(120),
|
|
30608
|
+
credentialTypes: external_exports.array(external_exports.string().min(1).max(120)).max(20),
|
|
30609
|
+
facts: external_exports.array(ModelSafeCredentialFactValidator).max(100),
|
|
30610
|
+
// Present only on credentials that are past their expiry, so the model can
|
|
30611
|
+
// tell a lapsed credential from a current one.
|
|
30612
|
+
expired: external_exports.literal(true).optional(),
|
|
30613
|
+
expirationDate: external_exports.string().datetime().optional()
|
|
30614
|
+
});
|
|
30615
|
+
var AIPassportCredentialRecordValidator = external_exports.object({
|
|
30616
|
+
id: external_exports.string(),
|
|
30617
|
+
uri: external_exports.string(),
|
|
30618
|
+
category: external_exports.string(),
|
|
30619
|
+
credential: VCValidator,
|
|
30620
|
+
aiContext: external_exports.string(),
|
|
30621
|
+
generalSummary: external_exports.string().optional(),
|
|
30622
|
+
createdAt: external_exports.string(),
|
|
30623
|
+
verification: CredentialVerificationMetadataValidator.optional(),
|
|
30624
|
+
projection: ModelSafeCredentialProjectionValidator.optional()
|
|
30625
|
+
});
|
|
30626
|
+
var AuthenticatedMessageValidator = external_exports.object({
|
|
30627
|
+
message: ChatMessageValidator.optional(),
|
|
30628
|
+
threadId: external_exports.string().optional(),
|
|
30629
|
+
selectedQuestion: external_exports.string().optional(),
|
|
30630
|
+
action: external_exports.enum([
|
|
30631
|
+
"start_topic",
|
|
30632
|
+
"continue_plan",
|
|
30633
|
+
"start_topic_uri",
|
|
30634
|
+
"start_learning_pathway",
|
|
30635
|
+
"start_insights_session",
|
|
30636
|
+
"close_insights_session",
|
|
30637
|
+
"artifact_suggestion"
|
|
30638
|
+
]).optional(),
|
|
30639
|
+
topic: external_exports.string().optional(),
|
|
30640
|
+
topicUri: external_exports.string().optional(),
|
|
30641
|
+
pathwayUri: external_exports.string().optional(),
|
|
30642
|
+
mode: AiSessionModeValidator.optional(),
|
|
30643
|
+
introStreamMode: IntroStreamModeValidator.optional(),
|
|
30644
|
+
// BCP-47 language for AI responses (LC-1901). This has to live on the
|
|
30645
|
+
// validator, not just the inferred type — z.object strips unknown keys, so an
|
|
30646
|
+
// undeclared `locale` would be dropped before the WS handler ever saw it.
|
|
30647
|
+
locale: external_exports.string().nullish()
|
|
30648
|
+
});
|
|
30649
|
+
var DebugInfoValidator = external_exports.object({
|
|
30650
|
+
operation: external_exports.string(),
|
|
30651
|
+
collection: external_exports.string(),
|
|
30652
|
+
input: external_exports.unknown().optional(),
|
|
30653
|
+
output: external_exports.unknown().optional(),
|
|
30654
|
+
timestamp: external_exports.string(),
|
|
30655
|
+
duration: external_exports.number().optional()
|
|
30656
|
+
});
|
|
30657
|
+
var TimingEventValidator = external_exports.object({
|
|
30658
|
+
event: external_exports.literal("timing"),
|
|
30659
|
+
operation: external_exports.string(),
|
|
30660
|
+
phase: external_exports.enum(["start", "end", "complete"]),
|
|
30661
|
+
duration: external_exports.number().optional(),
|
|
30662
|
+
metadata: external_exports.record(external_exports.string(), external_exports.unknown()).optional(),
|
|
30663
|
+
timestamp: external_exports.string()
|
|
30664
|
+
});
|
|
30665
|
+
var LearningPathwayValidator = external_exports.object({
|
|
30666
|
+
id: external_exports.string(),
|
|
30667
|
+
learningPathway: external_exports.object({
|
|
30668
|
+
stepIndex: external_exports.number(),
|
|
30669
|
+
step: external_exports.object({
|
|
30670
|
+
title: external_exports.string(),
|
|
30671
|
+
description: external_exports.string(),
|
|
30672
|
+
summary: external_exports.string(),
|
|
30673
|
+
learned: external_exports.array(external_exports.string()),
|
|
30674
|
+
skills: external_exports.array(
|
|
30675
|
+
external_exports.object({
|
|
30676
|
+
title: external_exports.string(),
|
|
30677
|
+
description: external_exports.string()
|
|
30678
|
+
})
|
|
30679
|
+
)
|
|
30680
|
+
})
|
|
30681
|
+
})
|
|
30682
|
+
});
|
|
30140
30683
|
|
|
30141
30684
|
// src/helpers.ts
|
|
30142
30685
|
var import_json_stringify_deterministic = __toESM(require_lib(), 1);
|
|
@@ -30273,13 +30816,20 @@ var getLearnCloudPlugin = /* @__PURE__ */ __name(async (initialLearnCard, url2,
|
|
|
30273
30816
|
}, "loadDids");
|
|
30274
30817
|
const otherClients = /* @__PURE__ */ new Map();
|
|
30275
30818
|
const learnCloudDids = /* @__PURE__ */ new WeakMap();
|
|
30276
|
-
const getLearnCloudDid = /* @__PURE__ */ __name((currentClient) => {
|
|
30819
|
+
const getLearnCloudDid = /* @__PURE__ */ __name(async (currentClient) => {
|
|
30277
30820
|
let learnCloudDid = learnCloudDids.get(currentClient);
|
|
30278
30821
|
if (!learnCloudDid) {
|
|
30279
30822
|
learnCloudDid = currentClient.utilities.getDid.query();
|
|
30280
30823
|
learnCloudDids.set(currentClient, learnCloudDid);
|
|
30281
30824
|
}
|
|
30282
|
-
|
|
30825
|
+
try {
|
|
30826
|
+
return await learnCloudDid;
|
|
30827
|
+
} catch (error62) {
|
|
30828
|
+
if (learnCloudDids.get(currentClient) === learnCloudDid) {
|
|
30829
|
+
learnCloudDids.delete(currentClient);
|
|
30830
|
+
}
|
|
30831
|
+
throw error62;
|
|
30832
|
+
}
|
|
30283
30833
|
}, "getLearnCloudDid");
|
|
30284
30834
|
const getOtherClient = /* @__PURE__ */ __name(async (otherUrl, _learnCard) => {
|
|
30285
30835
|
const key = `${_learnCard.id.did()}\0${otherUrl}`;
|
|
@@ -30626,6 +31176,8 @@ var getLearnCloudPlugin = /* @__PURE__ */ __name(async (initialLearnCard, url2,
|
|
|
30626
31176
|
_learnCard.debug?.("LearnCloud index.getPaginated", query, paginationOptions);
|
|
30627
31177
|
const options = {
|
|
30628
31178
|
...paginationOptions,
|
|
31179
|
+
// JSON-persisted infinite-query page parameters may restore as null.
|
|
31180
|
+
cursor: paginationOptions?.cursor ?? void 0,
|
|
30629
31181
|
sort: ["newestFirst", "oldestFirst"].includes(paginationOptions?.sort ?? "") ? paginationOptions?.sort : void 0
|
|
30630
31182
|
};
|
|
30631
31183
|
if (!query) {
|