@learncard/cli 4.0.1 → 4.0.2
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/CHANGELOG.md +76 -0
- package/dist/index.js +87 -18
- package/package.json +14 -14
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,81 @@
|
|
|
1
1
|
# @learncard/cli
|
|
2
2
|
|
|
3
|
+
## 4.0.2
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- [#1819](https://github.com/learningeconomy/LearnCard/pull/1819) [`784f0c9b346a5f7e4e2c618a9b976dcaa90fafe3`](https://github.com/learningeconomy/LearnCard/commit/784f0c9b346a5f7e4e2c618a9b976dcaa90fafe3) Thanks [@smurflo2](https://github.com/smurflo2)! - feat: [LC-2194] Support versioned ConsentFlow updates and user review.
|
|
8
|
+
|
|
9
|
+
Keep a connection's URI and history while publishing immutable access updates. New optional read/write choices stay off; required additions pause writes until the user reviews the changes. Add explicit update acceptance, review notifications, deadlines, once-only AutoBoost delivery, and safe retirement. Unsaved request previews no longer require a URI.
|
|
10
|
+
|
|
11
|
+
Preserve existing grants in partial scope updates, gate Lambda startup on legacy snapshots, and retain once-only delivery during explicit one-time updates. Localize review and history content, recover from cancelled guardian checks and concurrent updates, and keep handled notifications safe to reopen.
|
|
12
|
+
|
|
13
|
+
Retry transient Lambda migration failures without poisoning warm application imports. Record completed migrations for fast cold starts, report malformed request IDs without credential data, and identify retained ambiguous AutoBoost claims for reconciliation. Load runtime secrets before importing the scheduled deadline worker, including secrets-only Lambda deployments. Keep inbox maintenance coverage behavioral rather than pinning Lambda wrapper source text.
|
|
14
|
+
|
|
15
|
+
Recover valid, unversioned contracts created after the migration marker through scoped version-1 initialization. Atomically backfill only their existing connections, preserve global migration completion, and keep missing history on already-versioned or malformed contracts fail-closed.
|
|
16
|
+
|
|
17
|
+
Settle guardian PIN actions on external dismissal or unmount without cancelling valid submissions. Cover reapproval, signing failures and referral cancellation with the current PIN modal contract. Clear stacked overlays before opening a contract-update review. Cancel delayed modal-removal timers when their provider unmounts while preserving closing animations. Use stable localization keys independent of English labels and stop proposing optional defaults after their window expires.
|
|
18
|
+
|
|
19
|
+
Route pending and suspended connections from ordinary consent entry to explicit update review. Recover the same way when the latest-approval error arrives during an open consent dialog, without treating the connection as approved or bypassing guardian checks.
|
|
20
|
+
|
|
21
|
+
Reject overlapping top-level and nested SDK scope patches instead of silently dropping changes. Restore strict type-only imports, declare the runnable update snippet's SDK contract, and narrow unsuccessful notification reads in end-to-end consumers without raising the typecheck allowance.
|
|
22
|
+
|
|
23
|
+
Include cumulative changes in consent records so users can approve all required additions across multiple unreviewed versions. Clear the pending optional-choice marker only when the holder successfully saves their choices.
|
|
24
|
+
|
|
25
|
+
Resolve built-in request categories and personal fields to localized labels and descriptions in English, Spanish, French, and Arabic, including learning history and career/AI categories. Recognize the legitimate French cognates “Image” and “Qualifications” in the existing untranslated-value guard.
|
|
26
|
+
|
|
27
|
+
Dismiss Alerts when opening a contract-update review without waiting for read-status writes. Give unread indicators their own layout space so they cannot overlap notification dates.
|
|
28
|
+
|
|
29
|
+
Use one shared request form with the original creation controls for creating and editing requests, without per-item purpose fields or added default-enabled checkboxes. Keep the overall update explanation separate. Replace JSON authoring with readable changes and Preview Update / Publish Update actions in the Contracts tab. Show an accessible help icon and meaningful existing-access/defaults disclosures.
|
|
30
|
+
|
|
31
|
+
Start new optional review controls from their Opt-in/Opt-out settings without silently granting access. Use the edited request's defaults in previews, refresh saved choices when reopening without overwriting active edits, and reduce the extra spacing below the current version.
|
|
32
|
+
|
|
33
|
+
Separate Advanced Options from changes, published feedback, and actions. Add space below the current version while keeping the image's remove control in its original outside corner.
|
|
34
|
+
|
|
35
|
+
Show a clear unavailable state for networks that omit contract version metadata, including cached responses. Keep publishing disabled until a versioned response is available, and never assume an unversioned response is version 1.
|
|
36
|
+
|
|
37
|
+
Use direct Mongo connections for the local Docker APIs so the single-node replica's localhost address does not prevent them from starting. Gate Mongo-dependent services on a writable primary so they do not exit during replica initialization or election.
|
|
38
|
+
|
|
39
|
+
Pre-bundle the remaining workspace crypto and cloud-client dependencies before serving the local app, avoiding dependency-discovery reloads during browser startup.
|
|
40
|
+
|
|
41
|
+
Open an on-demand Update contract modal from each configured request in the Contracts tab, rather than the Testing tab. Reveal the update explanation only after edits, separate it from grouped current/next values, and keep user-review previews in the shared modal stack for correct focus and Escape behavior.
|
|
42
|
+
|
|
43
|
+
Breaking SDK/API changes: use `updateContract` instead of the removed `addAutoBoostsToContract` and `removeAutoBoostsFromContract` SDK methods. One-time consent status is now `consumed`, not `stale`. The deprecated HTTP AutoBoost routes remain available for one compatibility release and use the versioned update path. Legacy AutoBoost additions also pause writes and synchronization pending explicit holder review; coordinate partner upgrades and support `getConsentStatus` / `reviewUrl` before rollout.
|
|
44
|
+
|
|
45
|
+
Reject stale editor drafts with their original expected version, treat equivalent updates as no-ops, require future reconsent deadlines, and restrict legacy AutoBoost publications to contract owners. Paginate tied consent-data timestamps with stable opaque cursors and preserve all unreviewed optional additions across later updates.
|
|
46
|
+
|
|
47
|
+
Track each holder's last explicit review, backfill that baseline from transaction history, and timestamp legacy snapshots at the revision actually captured. Require notification and approval when an existing item's reason changes; keep redirect-only changes quiet. Retain ambiguous initial AutoBoost claims and reject mismatched concurrent initial credential deliveries.
|
|
48
|
+
|
|
49
|
+
Show material metadata, writer, and automatic-delivery changes alongside scope updates. Refresh holder terms before enabling review edits, populate newly enabled personal fields from the holder profile, and use a structured approval-required reason instead of matching error text.
|
|
50
|
+
|
|
51
|
+
Regenerate the Python API client from the current router graph, including all consent lifecycle states, versioned updates, and review metadata. Omit `None` for ordinary non-nullable optional inputs, preserve nullable values, and retain the allocation holder's explicit-null rejection instead of silently treating it as an omission.
|
|
52
|
+
|
|
53
|
+
Preserve existing delegated AutoBoost issuers when owners publish unchanged configurations, while keeping new configurations owner-issued and rejecting changes to an existing delegated signer. Defer new cross-account setup until an explicit issuer-authorization flow is available. Use pre-upgrade persisted fixtures for legacy-delegation regressions without reopening writer publication, and fix the signer mock's recursive self-call in consent regressions.
|
|
54
|
+
|
|
55
|
+
Keep saves from already handled reviews in ordinary sharing-update history, and preserve the saved one-time setting when update or reconsent inputs omit it.
|
|
56
|
+
|
|
57
|
+
Use opaque timestamp-and-ID cursors for holder consent lists, between-profile data, transaction history, and holder exports as well as owner data pages. Preserve legacy timestamp fallbacks and reject malformed or pre-upgrade date-only cursors with `BAD_REQUEST`; restart pagination without a cursor after upgrading.
|
|
58
|
+
|
|
59
|
+
Pin owned verification review links to the allocated app origin so real consent review URLs never escape to an unrelated localhost development server.
|
|
60
|
+
|
|
61
|
+
Explain approval notifications above Publish Update without changing checked-by-default Opt-out selections. Synchronize the CLI method catalog with the versioned contract SDK, removing obsolete AutoBoost commands and exposing update, history, status, and acceptance methods.
|
|
62
|
+
|
|
63
|
+
Use neutral changed-request summaries and Updated badges for existing-scope edits, including reason-only reviews. Reserve new-access headlines and new-item counts for pure scope additions without material request-detail edits, and retain existing optional choices during approval.
|
|
64
|
+
|
|
65
|
+
- Updated dependencies [[`e9d738eea3b477dbd82bde171d3c5f8ffa2efbc5`](https://github.com/learningeconomy/LearnCard/commit/e9d738eea3b477dbd82bde171d3c5f8ffa2efbc5), [`69b80366c48e0f458b3bb50f25166c90ecaa2d6d`](https://github.com/learningeconomy/LearnCard/commit/69b80366c48e0f458b3bb50f25166c90ecaa2d6d), [`0caa0e478bce246793893e488f37ee90c9b00a1a`](https://github.com/learningeconomy/LearnCard/commit/0caa0e478bce246793893e488f37ee90c9b00a1a), [`bde3fe0f15a780d9fafc699096a9a0307502f529`](https://github.com/learningeconomy/LearnCard/commit/bde3fe0f15a780d9fafc699096a9a0307502f529), [`784f0c9b346a5f7e4e2c618a9b976dcaa90fafe3`](https://github.com/learningeconomy/LearnCard/commit/784f0c9b346a5f7e4e2c618a9b976dcaa90fafe3), [`83dad5258438dd7cbc1fba3035f1b009c703653e`](https://github.com/learningeconomy/LearnCard/commit/83dad5258438dd7cbc1fba3035f1b009c703653e), [`a7923d7deaf0baf7205bbae1f6fe132e846fed44`](https://github.com/learningeconomy/LearnCard/commit/a7923d7deaf0baf7205bbae1f6fe132e846fed44), [`751579d9c14116dbf6d0e7f7d62f489c81c39db2`](https://github.com/learningeconomy/LearnCard/commit/751579d9c14116dbf6d0e7f7d62f489c81c39db2), [`2c60b1a760958cbfe2525bc951d2381332e1aa48`](https://github.com/learningeconomy/LearnCard/commit/2c60b1a760958cbfe2525bc951d2381332e1aa48)]:
|
|
66
|
+
- @learncard/types@6.0.0
|
|
67
|
+
- @learncard/network-brain-client@2.7.0
|
|
68
|
+
- @learncard/learn-cloud-plugin@2.3.52
|
|
69
|
+
- @learncard/holder-continuity@0.2.29
|
|
70
|
+
- @learncard/core@9.4.44
|
|
71
|
+
- @learncard/init@2.5.10
|
|
72
|
+
- @learncard/didkit-plugin@1.10.10
|
|
73
|
+
- @learncard/lca-api-plugin@2.0.16
|
|
74
|
+
- @learncard/ler-rs-plugin@0.1.35
|
|
75
|
+
- @learncard/linked-claims-plugin@0.2.44
|
|
76
|
+
- @learncard/open-badge-v2-plugin@1.1.45
|
|
77
|
+
- @learncard/render-method-plugin@13.0.0
|
|
78
|
+
|
|
3
79
|
## 4.0.1
|
|
4
80
|
|
|
5
81
|
### Patch Changes
|
package/dist/index.js
CHANGED
|
@@ -27,6 +27,7 @@ var node_crypto = require('node:crypto');
|
|
|
27
27
|
var node_child_process = require('node:child_process');
|
|
28
28
|
var path$1 = require('path');
|
|
29
29
|
var networkBrainClient = require('@learncard/network-brain-client');
|
|
30
|
+
var helpers = require('@learncard/helpers');
|
|
30
31
|
var crypto = require('crypto');
|
|
31
32
|
|
|
32
33
|
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
@@ -3275,6 +3276,11 @@ const METHOD_SIGNATURES = {
|
|
|
3275
3276
|
"plugin": "learn-card-network",
|
|
3276
3277
|
"signature": "acceptConnectionRequest: (id: string) => Promise<boolean>"
|
|
3277
3278
|
},
|
|
3279
|
+
"acceptContractUpdate": {
|
|
3280
|
+
"plugin": "learn-card-network",
|
|
3281
|
+
"signature": "acceptContractUpdate: (termsUri: string, update: {version: number; terms: ConsentFlowTerms; audienceVersion?: number}) => Promise<boolean>",
|
|
3282
|
+
"doc": "Accepts the reviewed update using the user's selected data. @example await learnCard.invoke.acceptContractUpdate(termsUri, { version: 2, terms, audienceVersion: currentContract.audienceVersion });"
|
|
3283
|
+
},
|
|
3278
3284
|
"acceptCredential": {
|
|
3279
3285
|
"plugin": "learn-card-network",
|
|
3280
3286
|
"signature": "acceptCredential: (uri: string, options?: {skipNotification?: boolean; metadata?: Record<string, unknown>}) => Promise<boolean>"
|
|
@@ -3305,10 +3311,6 @@ const METHOD_SIGNATURES = {
|
|
|
3305
3311
|
"plugin": "learn-card-network",
|
|
3306
3312
|
"signature": "addAuthGrant: (authGrant: Partial<AuthGrantType>) => Promise<string>"
|
|
3307
3313
|
},
|
|
3308
|
-
"addAutoBoostsToContract": {
|
|
3309
|
-
"plugin": "learn-card-network",
|
|
3310
|
-
"signature": "addAutoBoostsToContract: (contractUri: string, autoboosts: AutoBoostConfig[]) => Promise<boolean>"
|
|
3311
|
-
},
|
|
3312
3314
|
"addBoostAdmin": {
|
|
3313
3315
|
"plugin": "learn-card-network",
|
|
3314
3316
|
"signature": "addBoostAdmin: (uri: string, profileId: string) => Promise<boolean>"
|
|
@@ -3426,7 +3428,7 @@ const METHOD_SIGNATURES = {
|
|
|
3426
3428
|
},
|
|
3427
3429
|
"campaignsAddAudience": {
|
|
3428
3430
|
"plugin": "learn-card-network",
|
|
3429
|
-
"signature": "campaignsAddAudience: (input: CampaignAudienceInput) => Promise<
|
|
3431
|
+
"signature": "campaignsAddAudience: (input: CampaignAudienceInput) => Promise<CampaignAudienceResult>"
|
|
3430
3432
|
},
|
|
3431
3433
|
"campaignsCreate": {
|
|
3432
3434
|
"plugin": "learn-card-network",
|
|
@@ -3436,6 +3438,11 @@ const METHOD_SIGNATURES = {
|
|
|
3436
3438
|
"plugin": "learn-card-network",
|
|
3437
3439
|
"signature": "campaignsDelete: (campaignId: string) => Promise<boolean>"
|
|
3438
3440
|
},
|
|
3441
|
+
"campaignsDispatch": {
|
|
3442
|
+
"plugin": "learn-card-network",
|
|
3443
|
+
"signature": "campaignsDispatch: (campaignId: string, options?: CampaignDispatchOptions) => Promise<{dispatchId: string}>",
|
|
3444
|
+
"doc": "Supply the preview token to reject stale or repeated confirmations."
|
|
3445
|
+
},
|
|
3439
3446
|
"campaignsGet": {
|
|
3440
3447
|
"plugin": "learn-card-network",
|
|
3441
3448
|
"signature": "campaignsGet: (campaignId: string) => Promise<Campaign>"
|
|
@@ -3458,7 +3465,17 @@ const METHOD_SIGNATURES = {
|
|
|
3458
3465
|
},
|
|
3459
3466
|
"campaignsPreviewAudience": {
|
|
3460
3467
|
"plugin": "learn-card-network",
|
|
3461
|
-
"signature": "campaignsPreviewAudience: (input: CampaignAudienceInput) => Promise<
|
|
3468
|
+
"signature": "campaignsPreviewAudience: (input: CampaignAudienceInput) => Promise<CampaignAudienceResult>"
|
|
3469
|
+
},
|
|
3470
|
+
"campaignsPreviewDispatch": {
|
|
3471
|
+
"plugin": "learn-card-network",
|
|
3472
|
+
"signature": "campaignsPreviewDispatch: (campaignId: string) => Promise<CampaignDispatchPreview>",
|
|
3473
|
+
"doc": "Preview eligible inbox recipients before confirming an audience notification send."
|
|
3474
|
+
},
|
|
3475
|
+
"campaignsSendTestToMe": {
|
|
3476
|
+
"plugin": "learn-card-network",
|
|
3477
|
+
"signature": "campaignsSendTestToMe: (campaignId: string) => Promise<boolean>",
|
|
3478
|
+
"doc": "Test selected channels only for the signed-in administrator, regardless of campaign status."
|
|
3462
3479
|
},
|
|
3463
3480
|
"campaignsSetStatus": {
|
|
3464
3481
|
"plugin": "learn-card-network",
|
|
@@ -3599,12 +3616,17 @@ const METHOD_SIGNATURES = {
|
|
|
3599
3616
|
},
|
|
3600
3617
|
"createContract": {
|
|
3601
3618
|
"plugin": "learn-card-network",
|
|
3602
|
-
"signature": "createContract: (contract: {contract: ConsentFlowContract; name: string; subtitle?: string; description?: string; image?: string; expiresAt?: string; writers?: string[]; recipients?: string[]; autoboosts?: AutoBoostConfig[]}) => Promise<string>"
|
|
3619
|
+
"signature": "createContract: (contract: {contract: ConsentFlowContract; reasonForAccessing?: string; needsGuardianConsent?: boolean; redirectUrl?: string; frontDoorBoostUri?: string; name: string; subtitle?: string; description?: string; image?: string; expiresAt?: string; writers?: string[]; recipients?: string[]; autoboosts?: AutoBoostConfig[]}) => Promise<string>"
|
|
3603
3620
|
},
|
|
3604
3621
|
"createDagJwe": {
|
|
3605
3622
|
"plugin": "didkit",
|
|
3606
3623
|
"signature": "createDagJwe: <T>(cleartext: T, recipients: string[]) => Promise<JWE>"
|
|
3607
3624
|
},
|
|
3625
|
+
"createDagJweExact": {
|
|
3626
|
+
"plugin": "encryption",
|
|
3627
|
+
"signature": "createDagJweExact: <T>(cleartext: T, recipients: string[]) => Promise<JWE>",
|
|
3628
|
+
"doc": "Encrypts only to explicit recipients, without adding the calling identity."
|
|
3629
|
+
},
|
|
3608
3630
|
"createJwe": {
|
|
3609
3631
|
"plugin": "didkit",
|
|
3610
3632
|
"signature": "createJwe: (cleartext: string, recipients: string[]) => Promise<JWE>"
|
|
@@ -3818,6 +3840,10 @@ const METHOD_SIGNATURES = {
|
|
|
3818
3840
|
"plugin": "learn-card-network",
|
|
3819
3841
|
"signature": "getAllContractRequestsForProfile: (targetProfileId: string) => Promise<(ConsentFlowContractRequestForProfile & {contract: ConsentFlowContract & {uri: string; name?: string; image?: string; description?: string}})[]>"
|
|
3820
3842
|
},
|
|
3843
|
+
"getAnnouncementPreferences": {
|
|
3844
|
+
"plugin": "learn-card-network",
|
|
3845
|
+
"signature": "getAnnouncementPreferences: () => Promise<AnnouncementPreferences>"
|
|
3846
|
+
},
|
|
3821
3847
|
"getAPITokenForAuthGrant": {
|
|
3822
3848
|
"plugin": "learn-card-network",
|
|
3823
3849
|
"signature": "getAPITokenForAuthGrant: (id: string) => Promise<string>"
|
|
@@ -3950,9 +3976,15 @@ const METHOD_SIGNATURES = {
|
|
|
3950
3976
|
"plugin": "learn-card-network",
|
|
3951
3977
|
"signature": "getConsentFlowTransactions: (uri: string, options?: Partial<PaginationOptionsType> & {query?: ConsentFlowTransactionsQuery}) => Promise<PaginatedConsentFlowTransactions>"
|
|
3952
3978
|
},
|
|
3979
|
+
"getConsentStatus": {
|
|
3980
|
+
"plugin": "learn-card-network",
|
|
3981
|
+
"signature": "getConsentStatus: (uri: string, profileId: string) => Promise<ConsentFlowConsentStatus>",
|
|
3982
|
+
"doc": "Checks a user's access state and provides a review link when approval is needed. @example const { needsReconsent, reviewUrl } = await learnCard.invoke.getConsentStatus(uri, profileId);"
|
|
3983
|
+
},
|
|
3953
3984
|
"getContract": {
|
|
3954
3985
|
"plugin": "learn-card-network",
|
|
3955
|
-
"signature": "getContract: (uri: string) => Promise<ConsentFlowContractDetails>"
|
|
3986
|
+
"signature": "getContract: (uri: string) => Promise<ConsentFlowContractDetails>",
|
|
3987
|
+
"doc": "Gets the current request, including its version. @example const contract = await learnCard.invoke.getContract(uri);"
|
|
3956
3988
|
},
|
|
3957
3989
|
"getContracts": {
|
|
3958
3990
|
"plugin": "learn-card-network",
|
|
@@ -3962,11 +3994,21 @@ const METHOD_SIGNATURES = {
|
|
|
3962
3994
|
"plugin": "learn-card-network",
|
|
3963
3995
|
"signature": "getContractSentRequests: (contractUri: string) => Promise<ConsentFlowContractRequestForProfile[]>"
|
|
3964
3996
|
},
|
|
3997
|
+
"getContractVersions": {
|
|
3998
|
+
"plugin": "learn-card-network",
|
|
3999
|
+
"signature": "getContractVersions: (uri: string) => Promise<ConsentFlowContractVersion[]>",
|
|
4000
|
+
"doc": "Lists a request's saved versions, newest first. @example const versions = await learnCard.invoke.getContractVersions(uri);"
|
|
4001
|
+
},
|
|
3965
4002
|
"getCredentialRefreshHistory": {
|
|
3966
4003
|
"plugin": "learn-card-network",
|
|
3967
4004
|
"signature": "getCredentialRefreshHistory: (input: GetCredentialRefreshHistoryInput) => Promise<GetCredentialRefreshHistoryResult>",
|
|
3968
4005
|
"doc": "Cursor-paginated, metadata-only issuer audit history for a managed refresh. Never includes credential bodies or encrypted payloads."
|
|
3969
4006
|
},
|
|
4007
|
+
"getCredentialRefreshReceipt": {
|
|
4008
|
+
"plugin": "learn-card-network",
|
|
4009
|
+
"signature": "getCredentialRefreshReceipt: (input: GetCredentialRefreshReceiptInput) => Promise<CredentialRefreshReceipt | null>",
|
|
4010
|
+
"doc": "Read the authenticated public binding for a pending managed delivery."
|
|
4011
|
+
},
|
|
3970
4012
|
"getCredentialsForContract": {
|
|
3971
4013
|
"plugin": "learn-card-network",
|
|
3972
4014
|
"signature": "getCredentialsForContract: (termsUri: string, options?: Partial<PaginationOptionsType> & {includeReceived?: boolean}) => Promise<PaginatedContractCredentials>"
|
|
@@ -4417,6 +4459,11 @@ const METHOD_SIGNATURES = {
|
|
|
4417
4459
|
"signature": "publishCredentialSharePreview: (preview: PublishCredentialSharePreview) => Promise<string>",
|
|
4418
4460
|
"doc": "Publish opted-in, publisher-supplied metadata bound to an encrypted presentation URI. Provide an owned preview ID and the same URI to refresh it; its URI cannot be rebound. A missing or mismatched refresh returns NOT_FOUND. This does not verify the credential or issuer. Returns an opaque UUID; public lookup also requires the matching share URI."
|
|
4419
4461
|
},
|
|
4462
|
+
"publishHolderEncryptedRefreshable": {
|
|
4463
|
+
"plugin": "learn-card-network",
|
|
4464
|
+
"signature": "publishHolderEncryptedRefreshable: (receipt: ManagedCredentialRefreshReceipt, credential: UnsignedVC, options: PublishHolderEncryptedRefreshableOptions) => Promise<PublishCredentialRefreshResult>",
|
|
4465
|
+
"doc": "Holder-mode (LC-2345) counterpart of `publishCredentialRefresh`: builds and signs a new version locally from `receipt`'s bindings, encrypts it exactly to the current holder + manager recipients, and sends only the ciphertext handoff. Rejects when local signing is unavailable."
|
|
4466
|
+
},
|
|
4420
4467
|
"putShareLinkAttachmentChunk": {
|
|
4421
4468
|
"plugin": "learn-card-network",
|
|
4422
4469
|
"signature": "putShareLinkAttachmentChunk: (input: PutShareLinkAttachmentChunkInput) => Promise<{ok: true}>"
|
|
@@ -4427,7 +4474,7 @@ const METHOD_SIGNATURES = {
|
|
|
4427
4474
|
},
|
|
4428
4475
|
"recordCampaignEvent": {
|
|
4429
4476
|
"plugin": "learn-card-network",
|
|
4430
|
-
"signature": "recordCampaignEvent: (campaignId: string, event: CampaignEvent) => Promise<boolean>"
|
|
4477
|
+
"signature": "recordCampaignEvent: (campaignId: string, event: CampaignEvent, testId?: string) => Promise<boolean>"
|
|
4431
4478
|
},
|
|
4432
4479
|
"recoverInboxCredentials": {
|
|
4433
4480
|
"plugin": "learn-card-network",
|
|
@@ -4450,10 +4497,6 @@ const METHOD_SIGNATURES = {
|
|
|
4450
4497
|
"plugin": "learn-card-network",
|
|
4451
4498
|
"signature": "rejectGuardianCredentialInApp: (inboxCredentialId: string) => Promise<{success: boolean}>"
|
|
4452
4499
|
},
|
|
4453
|
-
"removeAutoBoostsFromContract": {
|
|
4454
|
-
"plugin": "learn-card-network",
|
|
4455
|
-
"signature": "removeAutoBoostsFromContract: (contractUri: string, boostUris: string[]) => Promise<boolean>"
|
|
4456
|
-
},
|
|
4457
4500
|
"removeBoostAdmin": {
|
|
4458
4501
|
"plugin": "learn-card-network",
|
|
4459
4502
|
"signature": "removeBoostAdmin: (uri: string, profileId: string) => Promise<boolean>"
|
|
@@ -4557,7 +4600,7 @@ const METHOD_SIGNATURES = {
|
|
|
4557
4600
|
},
|
|
4558
4601
|
"send": {
|
|
4559
4602
|
"plugin": "learn-card-network",
|
|
4560
|
-
"signature": "send: (input:
|
|
4603
|
+
"signature": "send: (input: SendBoostInputWithEncryption) => Promise<SendResponse>"
|
|
4561
4604
|
},
|
|
4562
4605
|
"sendAiInsightsContractRequest": {
|
|
4563
4606
|
"plugin": "learn-card-network",
|
|
@@ -4702,10 +4745,18 @@ const METHOD_SIGNATURES = {
|
|
|
4702
4745
|
"plugin": "learn-card-network",
|
|
4703
4746
|
"signature": "unsubmitAppStoreListing: (listingId: string) => Promise<boolean>"
|
|
4704
4747
|
},
|
|
4748
|
+
"unsubscribeFromAnnouncements": {
|
|
4749
|
+
"plugin": "learn-card-network",
|
|
4750
|
+
"signature": "unsubscribeFromAnnouncements: (token: string) => Promise<boolean>"
|
|
4751
|
+
},
|
|
4705
4752
|
"unsuspendBoostRecipient": {
|
|
4706
4753
|
"plugin": "learn-card-network",
|
|
4707
4754
|
"signature": "unsuspendBoostRecipient: (boostUri: string, recipientProfileId: string, credentialUri?: string) => Promise<boolean>"
|
|
4708
4755
|
},
|
|
4756
|
+
"updateAnnouncementPreferences": {
|
|
4757
|
+
"plugin": "learn-card-network",
|
|
4758
|
+
"signature": "updateAnnouncementPreferences: (updates: Partial<AnnouncementPreferences>) => Promise<AnnouncementPreferences>"
|
|
4759
|
+
},
|
|
4709
4760
|
"updateAppStoreListing": {
|
|
4710
4761
|
"plugin": "learn-card-network",
|
|
4711
4762
|
"signature": "updateAppStoreListing: (listingId: string, updates: AppStoreListingUpdateType) => Promise<boolean>"
|
|
@@ -4722,6 +4773,11 @@ const METHOD_SIGNATURES = {
|
|
|
4722
4773
|
"plugin": "learn-card-network",
|
|
4723
4774
|
"signature": "updateBoostPermissions: (uri: string, updates: Partial<Omit<BoostPermissions, 'role'>>, profileId?: string) => Promise<boolean>"
|
|
4724
4775
|
},
|
|
4776
|
+
"updateContract": {
|
|
4777
|
+
"plugin": "learn-card-network",
|
|
4778
|
+
"signature": "updateContract: (uri: string, changes: ConsentFlowContractChanges & NonNullable<ConsentFlowContractChanges['contract']>, options?: {reason?: string; reconsentDeadline?: string; dryRun?: boolean; expectedVersion?: number}) => Promise<ConsentFlowContractUpdateResult>",
|
|
4779
|
+
"doc": "Updates a live request at the same URI, or previews it without saving. Scope maps merge with the current request. Set an entry to null to remove it; expiresAt: null clears expiry. AutoBoost and writer arrays replace their lists. Pass expectedVersion from the original draft to reject intervening publications. @example await learnCard.invoke.updateContract(uri, { read: { credentials: { categories: { Transcript: { required: true, reason: 'to calculate your GPA' }, } } }, }, { reason: 'We added transcripts so we can show your GPA on your r\xE9sum\xE9.' });"
|
|
4780
|
+
},
|
|
4725
4781
|
"updateContractTerms": {
|
|
4726
4782
|
"plugin": "learn-card-network",
|
|
4727
4783
|
"signature": "updateContractTerms: (uri: string, terms: {terms: ConsentFlowTerms; expiresAt?: string; oneTime?: boolean; audienceVersion?: number}) => Promise<boolean>"
|
|
@@ -4808,6 +4864,7 @@ const METHOD_SIGNATURES = {
|
|
|
4808
4864
|
const STATIC_INVOKE_METHODS = [
|
|
4809
4865
|
"acceptAndStoreCredentialOffer",
|
|
4810
4866
|
"acceptConnectionRequest",
|
|
4867
|
+
"acceptContractUpdate",
|
|
4811
4868
|
"acceptCredential",
|
|
4812
4869
|
"acceptCredentialOffer",
|
|
4813
4870
|
"acceptPresentation",
|
|
@@ -4815,7 +4872,6 @@ const STATIC_INVOKE_METHODS = [
|
|
|
4815
4872
|
"actAs",
|
|
4816
4873
|
"activateChapiHandler",
|
|
4817
4874
|
"addAuthGrant",
|
|
4818
|
-
"addAutoBoostsToContract",
|
|
4819
4875
|
"addBoostAdmin",
|
|
4820
4876
|
"addBoostToApp",
|
|
4821
4877
|
"addContactMethod",
|
|
@@ -4847,12 +4903,15 @@ const STATIC_INVOKE_METHODS = [
|
|
|
4847
4903
|
"campaignsAddAudience",
|
|
4848
4904
|
"campaignsCreate",
|
|
4849
4905
|
"campaignsDelete",
|
|
4906
|
+
"campaignsDispatch",
|
|
4850
4907
|
"campaignsGet",
|
|
4851
4908
|
"campaignsGetStats",
|
|
4852
4909
|
"campaignsIsAdmin",
|
|
4853
4910
|
"campaignsList",
|
|
4854
4911
|
"campaignsPageAudience",
|
|
4855
4912
|
"campaignsPreviewAudience",
|
|
4913
|
+
"campaignsPreviewDispatch",
|
|
4914
|
+
"campaignsSendTestToMe",
|
|
4856
4915
|
"campaignsSetStatus",
|
|
4857
4916
|
"campaignsUpdate",
|
|
4858
4917
|
"cancelConnectionRequest",
|
|
@@ -4889,6 +4948,7 @@ const STATIC_INVOKE_METHODS = [
|
|
|
4889
4948
|
"createClaimHook",
|
|
4890
4949
|
"createContract",
|
|
4891
4950
|
"createDagJwe",
|
|
4951
|
+
"createDagJweExact",
|
|
4892
4952
|
"createJwe",
|
|
4893
4953
|
"createManagedProfile",
|
|
4894
4954
|
"createManagedServiceProfile",
|
|
@@ -4942,6 +5002,7 @@ const STATIC_INVOKE_METHODS = [
|
|
|
4942
5002
|
"getAllAvailableFrameworks",
|
|
4943
5003
|
"getAllConsentFlowData",
|
|
4944
5004
|
"getAllContractRequestsForProfile",
|
|
5005
|
+
"getAnnouncementPreferences",
|
|
4945
5006
|
"getAppBoosts",
|
|
4946
5007
|
"getAppStoreListing",
|
|
4947
5008
|
"getAppStoreListingInstallCount",
|
|
@@ -4972,11 +5033,14 @@ const STATIC_INVOKE_METHODS = [
|
|
|
4972
5033
|
"getConsentFlowData",
|
|
4973
5034
|
"getConsentFlowDataForDid",
|
|
4974
5035
|
"getConsentFlowTransactions",
|
|
5036
|
+
"getConsentStatus",
|
|
4975
5037
|
"getConsentedContracts",
|
|
4976
5038
|
"getContract",
|
|
4977
5039
|
"getContractSentRequests",
|
|
5040
|
+
"getContractVersions",
|
|
4978
5041
|
"getContracts",
|
|
4979
5042
|
"getCredentialRefreshHistory",
|
|
5043
|
+
"getCredentialRefreshReceipt",
|
|
4980
5044
|
"getCredentialsForContract",
|
|
4981
5045
|
"getCurrentNetwork",
|
|
4982
5046
|
"getDidAuthVp",
|
|
@@ -5087,6 +5151,7 @@ const STATIC_INVOKE_METHODS = [
|
|
|
5087
5151
|
"presentSdJwtVc",
|
|
5088
5152
|
"publishCredentialRefresh",
|
|
5089
5153
|
"publishCredentialSharePreview",
|
|
5154
|
+
"publishHolderEncryptedRefreshable",
|
|
5090
5155
|
"putShareLinkAttachmentChunk",
|
|
5091
5156
|
"receiveChapiEvent",
|
|
5092
5157
|
"recordCampaignEvent",
|
|
@@ -5095,7 +5160,6 @@ const STATIC_INVOKE_METHODS = [
|
|
|
5095
5160
|
"registerSigningAuthority",
|
|
5096
5161
|
"rejectGuardianCredential",
|
|
5097
5162
|
"rejectGuardianCredentialInApp",
|
|
5098
|
-
"removeAutoBoostsFromContract",
|
|
5099
5163
|
"removeBoostAdmin",
|
|
5100
5164
|
"removeBoostFromApp",
|
|
5101
5165
|
"removeBoostParent",
|
|
@@ -5154,11 +5218,14 @@ const STATIC_INVOKE_METHODS = [
|
|
|
5154
5218
|
"unblockProfile",
|
|
5155
5219
|
"uninstallApp",
|
|
5156
5220
|
"unsubmitAppStoreListing",
|
|
5221
|
+
"unsubscribeFromAnnouncements",
|
|
5157
5222
|
"unsuspendBoostRecipient",
|
|
5223
|
+
"updateAnnouncementPreferences",
|
|
5158
5224
|
"updateAppStoreListing",
|
|
5159
5225
|
"updateAuthGrant",
|
|
5160
5226
|
"updateBoost",
|
|
5161
5227
|
"updateBoostPermissions",
|
|
5228
|
+
"updateContract",
|
|
5162
5229
|
"updateContractTerms",
|
|
5163
5230
|
"updateDidMetadata",
|
|
5164
5231
|
"updateIntegration",
|
|
@@ -5190,6 +5257,7 @@ const READ_ALLOWLIST = /* @__PURE__ */ new Set([
|
|
|
5190
5257
|
"campaignsList",
|
|
5191
5258
|
"campaignsPageAudience",
|
|
5192
5259
|
"campaignsPreviewAudience",
|
|
5260
|
+
"campaignsPreviewDispatch",
|
|
5193
5261
|
"categorizeSdJwtVct",
|
|
5194
5262
|
"contextLoader",
|
|
5195
5263
|
"decodeSdJwtClaims",
|
|
@@ -6259,7 +6327,7 @@ const registerSkillCommands = (program, deps) => {
|
|
|
6259
6327
|
};
|
|
6260
6328
|
|
|
6261
6329
|
var name = "@learncard/cli";
|
|
6262
|
-
var version = "4.0.
|
|
6330
|
+
var version = "4.0.2";
|
|
6263
6331
|
var description = "Command Line Interface for LearnCard";
|
|
6264
6332
|
var main = "dist/index.js";
|
|
6265
6333
|
var bin = {
|
|
@@ -10332,7 +10400,8 @@ ${login.href}`);
|
|
|
10332
10400
|
step = "refresh the recipient\u2019s copy";
|
|
10333
10401
|
out.log("\n3 / 3 REFRESH THE RECIPIENT\u2019S COPY");
|
|
10334
10402
|
out.log("Checking for an update and verifying the new credential...");
|
|
10335
|
-
|
|
10403
|
+
const managedService = helpers.getManagedRefreshServices(refresh)[0];
|
|
10404
|
+
if (local && (!managedService || new URL(managedService.id).origin !== networkUrl.origin)) {
|
|
10336
10405
|
throw new Error("The refresh service does not match the selected local network.");
|
|
10337
10406
|
}
|
|
10338
10407
|
const refreshed = await holder.invoke.refreshCredential(
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@learncard/cli",
|
|
3
|
-
"version": "4.0.
|
|
3
|
+
"version": "4.0.2",
|
|
4
4
|
"description": "Command Line Interface for LearnCard",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"bin": {
|
|
@@ -28,18 +28,18 @@
|
|
|
28
28
|
"author": "Learning Economy Foundation (www.learningeconomy.io)",
|
|
29
29
|
"license": "MIT",
|
|
30
30
|
"dependencies": {
|
|
31
|
-
"@learncard/core": "9.4.
|
|
32
|
-
"@learncard/didkit-plugin": "^1.10.
|
|
33
|
-
"@learncard/holder-continuity": "0.2.
|
|
34
|
-
"@learncard/init": "^2.5.
|
|
35
|
-
"@learncard/lca-api-plugin": "2.0.
|
|
36
|
-
"@learncard/learn-cloud-plugin": "2.3.
|
|
37
|
-
"@learncard/ler-rs-plugin": "0.1.
|
|
38
|
-
"@learncard/linked-claims-plugin": "0.2.
|
|
39
|
-
"@learncard/network-brain-client": "2.
|
|
40
|
-
"@learncard/open-badge-v2-plugin": "1.1.
|
|
41
|
-
"@learncard/render-method-plugin": "
|
|
42
|
-
"@learncard/types": "
|
|
31
|
+
"@learncard/core": "9.4.44",
|
|
32
|
+
"@learncard/didkit-plugin": "^1.10.10",
|
|
33
|
+
"@learncard/holder-continuity": "0.2.29",
|
|
34
|
+
"@learncard/init": "^2.5.10",
|
|
35
|
+
"@learncard/lca-api-plugin": "2.0.16",
|
|
36
|
+
"@learncard/learn-cloud-plugin": "2.3.52",
|
|
37
|
+
"@learncard/ler-rs-plugin": "0.1.35",
|
|
38
|
+
"@learncard/linked-claims-plugin": "0.2.44",
|
|
39
|
+
"@learncard/network-brain-client": "2.7.0",
|
|
40
|
+
"@learncard/open-badge-v2-plugin": "1.1.45",
|
|
41
|
+
"@learncard/render-method-plugin": "13.0.0",
|
|
42
|
+
"@learncard/types": "6.0.0",
|
|
43
43
|
"clipboardy": "^4.0.0",
|
|
44
44
|
"commander": "^9.3.0",
|
|
45
45
|
"figlet": "^1.5.2",
|
|
@@ -49,7 +49,7 @@
|
|
|
49
49
|
"zod": "^4.1.13"
|
|
50
50
|
},
|
|
51
51
|
"devDependencies": {
|
|
52
|
-
"@learncard/credential-library": "2.1.
|
|
52
|
+
"@learncard/credential-library": "2.1.7",
|
|
53
53
|
"@rollup/plugin-json": "^4.1.0",
|
|
54
54
|
"@types/cors": "^2.8.12",
|
|
55
55
|
"@types/figlet": "^1.5.4",
|