-
Notifications
You must be signed in to change notification settings - Fork 62
Recovery extension #735
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Recovery extension #735
Conversation
Agusx1211
commented
Apr 24, 2025
- Adds and removes devices from the list of recovery keys (during login and logout)
- Janitor -> Cron (more flexible and can be reused)
- Allows for queuing recovery payloads
- Allows for listening to queued recovery payloads
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull Request Overview
This PR implements a recovery extension that enables adding/removing devices from the list of recovery keys, queues recovery payloads, and listens to queued recovery payload updates by replacing the old janitor and integrating a new cron job mechanism.
- Updates module topology conversion to support recovery modules
- Introduces new recovery-related types and functions (e.g. RecoverySigner, QueuedRecoveryPayload)
- Implements a new Cron scheduler and removes the old Janitor module
Reviewed Changes
Copilot reviewed 15 out of 17 changed files in this pull request and generated no comments.
Show a summary per file
File | Description |
---|---|
packages/wallet/wdk/src/sequence/wallets.ts | Updates configuration topology handling to integrate recovery options and converts modules to a list of SapientSignerLeaf |
packages/wallet/wdk/src/sequence/types/signer.ts | Adds RecoverySigner type |
packages/wallet/wdk/src/sequence/types/signature-request.ts | Adds a new 'recovery' action type |
packages/wallet/wdk/src/sequence/recovery.ts | Implements recovery module logic including init, add, remove, and queue/complete recovery payload functions |
packages/wallet/wdk/src/sequence/manager.ts | Integrates recovery and cron modules into the manager API |
packages/wallet/wdk/src/sequence/cron.ts | New Cron job scheduler replaces the earlier Janitor module |
packages/wallet/dbs/recovery.ts | Provides a new database for queued recovery payloads |
packages/wallet/primitives/src/payload.ts, extensions/recovery.ts, extensions/index.ts | Updates payload type definitions and adds recovery-related extension functions |
Files not reviewed (2)
- packages/wallet/wdk/package.json: Language not supported
- pnpm-lock.yaml: Language not supported
Comments suppressed due to low confidence (1)
packages/wallet/wdk/src/sequence/recovery.ts:129
- [nitpick] The variable name 'recovertLeaf' appears to be misspelled. Consider renaming it to 'recoveryLeaf' for clarity and consistency.
const recovertLeaf = raw.modules.find((m) => m.address === this.shared.sequence.extensions.recovery)
035ec7c
to
f0a5171
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull Request Overview
This PR introduces a recovery extension to enhance the wallet by adding support for recovery key management—allowing devices to be added/removed, recovery payloads to be queued and listened for—and replaces the legacy Janitor module with a new Cron module for flexible scheduled tasks.
- Adds new recovery types (RecoverySigner, QueuedRecoveryPayload) and endpoints across types, signers, manager, signatures, and handlers.
- Integrates a recovery database, a RecoveryHandler, and updates primitive payload and extension modules to support recovery functionality.
Reviewed Changes
Copilot reviewed 28 out of 28 changed files in this pull request and generated 1 comment.
Show a summary per file
File | Description |
---|---|
packages/wallet/wdk/src/sequence/types/index.ts | Adds new export types for recovery support. |
packages/wallet/wdk/src/sequence/signers.ts | Adds a recovery check returning Kinds.Recovery. |
packages/wallet/wdk/src/sequence/signatures.ts | Introduces a cron job for signature pruning. |
packages/wallet/wdk/src/sequence/manager.ts | Updates manager to integrate recovery options and register a RecoveryHandler. |
packages/wallet/wdk/src/sequence/janitor.ts | Removes obsolete janitor module. |
packages/wallet/wdk/src/sequence/handlers/recovery.ts | Implements the new RecoveryHandler. |
packages/wallet/wdk/src/sequence/cron.ts | Introduces a new Cron module for scheduled jobs. |
packages/wallet/dbs/recovery.ts | Adds a new recovery database layer. |
Other files (primitives, extensions, CLI, wallet core, state) | Update APIs, payload handling, and state management for recovery support. |
Comments suppressed due to low confidence (1)
packages/wallet/wdk/src/sequence/manager.ts:317
- [nitpick] Consider explicitly verifying that module.initialize is a function before invoking it to prevent potential runtime errors if a module’s initialize property is not callable.
for (const module of Object.values(modules)) { if ('initialize' in module) { module.initialize() } }