From e3ab4488cce49e40633f57ff527f9b518413b7e4 Mon Sep 17 00:00:00 2001 From: Stephen Curran Date: Wed, 25 Sep 2024 12:53:00 -0700 Subject: [PATCH 1/2] 1.0.1rc0 Signed-off-by: Stephen Curran --- CHANGELOG.md | 99 +++++++++++ Managing-ACA-Py-Doc-Site.md | 4 +- PUBLISHING.md | 84 ++++++--- README.md | 12 +- docs/features/SupportedRFCs.md | 21 ++- .../aries_cloudagent.wallet.keys.rst | 26 +++ docs/generated/aries_cloudagent.wallet.rst | 9 +- open-api/openapi.json | 165 +++++++++++++++++- open-api/swagger.json | 148 +++++++++++++++- pyproject.toml | 2 +- scripts/genChangeLog.sh | 33 ++++ scripts/prepmkdocs.sh | 2 + 12 files changed, 558 insertions(+), 47 deletions(-) create mode 100644 docs/generated/aries_cloudagent.wallet.keys.rst create mode 100755 scripts/genChangeLog.sh diff --git a/CHANGELOG.md b/CHANGELOG.md index 4297bffe86..2a70e66101 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,104 @@ # Aries Cloud Agent Python Changelog +## 1.0.1rc0 + +### September 25, 2024 + +Release 1.0.1 _might_ be the last release of ACA-Py from the Hyperledger +organization before the repository moves to the [OpenWallet Foundation] (OWF). As +noted in the repository [README.md](README.md), the ACA-Py project will soon be +moving soon to the OWF's GitHub organization as the [new "acapy" +project](https://github.com/openwallet-foundation/project-proposals/pull/42). + +[OpenWallet Foundation]: https://openwallet.foundation/ + +For details on what this means for ACA-Py users, including steps for updating deployments, please follow the updates in [GitHub Issue #3250]. We'll keep you informed about the approach, timeline, and progress of the move. Stay tuned! + +[GitHub Issue #3250]: https://github.com/hyperledger/aries-cloudagent-python/issues/3250 + +The release contains mostly internal clean ups, technical debt elimination, and +a revision to the integration testing approach, incorporating the [Aries Agent Test Harness] tests in the ACA-Py continuous integration testing process. + +[Aries Agent Test Harness]: https://github.com/hyperledger/aries-agent-test-harness + +There are several important **[deprecation notices](#deprecation-notices)** +in this release in preparation for the next ACA-Py release. Please review these notifications carefully! + +In an attempt to shorten the categorized list of PRs in the release, rather than +listing all of the `dependabot` PRs in the release, we've included a link to a +list of those PRs. + +#### Deprecation Notices + +- ACA-Py will soon be moved from the Hyperledger GitHub organization to that of the [OpenWallet Foundation]. As such, there will be changes in the names and locations of the artifacts produced -- the [PyPi] project and the container images in the [GitHub Container Registry]. We will retain the ability to publish LTS releases of ACA-Py for the current LTS versions (0.11, 0.12) in the current locations. For details, guidance, timing, and progress on the move, please monitor the description of [GitHub Issue #3250] that will be maintained throughout the process. + +[PyPi]: https://pypi.org +[GitHub Container Registry]: https://ghcr.io + +- In the next ACA-Py release, we will be dropping from the core ACA-Py + repository the AIP 1.0 [RFC 0160 Connections], [RFC 0037 Issue Credentials + v1.0] and [RFC 0037 Present Proof v1.0] DIDComm protocols. Each of the + protocols will be moved to the [ACA-Py Plugins] repo. All deployers that use + those protocols **SHOULD** update to the [AIP 2.0] versions of those protocols + ([RFC + 0434 Out of Band]+[RFC 0023 DID Exchange], [RFC 0453 Issue Credential v2.0] + and [RFC 0454 Present Proof v2.0], respectively). Once the protocols are + removed from ACA-Py, anyone still using those protocols must adjust their + configuration to load those protocols from the respective plugins. + +[RFC 0160 Connections]: https://hyperledger.github.io/aries-rfcs/latest/features/0160-connection-protocol/ +[RFC 0037 Issue Credentials]: https://hyperledger.github.io/aries-rfcs/latest/features/0036-issue-credential/ +[RFC 0037 Present Proof]: https://hyperledger.github.io/aries-rfcs/latest/features/0037-present-proof/ +[AIP 2.0]: https://hyperledger.github.io/aries-rfcs/latest/aip2/0003-protocols/ +[RFC 0434 Out of Band]: https://hyperledger.github.io/aries-rfcs/latest/aip2/0434-outofband/ +[RFC 0023 DID Exchange]: https://hyperledger.github.io/aries-rfcs/latest/aip2/0023-did-exchange/ +[RFC 0453 Issue Credential v2.0]: https://hyperledger.github.io/aries-rfcs/latest/aip2/0453-issue-credential-v2/ +[RFC 0454 Present Proof v2.0]: https://hyperledger.github.io/aries-rfcs/latest/aip2/0454-present-proof-v2/ + +### 1.0.1rc0 Breaking Changes + +There are no breaking changes in ACA-Py Release 1.0.1. + +#### 1.0.1rc0 Categorized List of Pull Requests + +- Wallet and Key Handling Updates + - Feature multikey management [\#3246](https://github.com/hyperledger/aries-cloudagent-python/pull/3246) [PatStLouis](https://github.com/PatStLouis) + - chore: delete unused keypair storage manager [\#3245](https://github.com/hyperledger/aries-cloudagent-python/pull/3245) [dbluhm](https://github.com/dbluhm) + +- Credential Exchange Updates + - feat: verify creds signed with Ed25519VerificationKey2020 [\#3244](https://github.com/hyperledger/aries-cloudagent-python/pull/3244) [dbluhm](https://github.com/dbluhm) + - Add anoncreds profile basic scenario test [\#3232](https://github.com/hyperledger/aries-cloudagent-python/pull/3232) [jamshale](https://github.com/jamshale) + - fix: anoncreds revocation notification when revoking [\#3226](https://github.com/hyperledger/aries-cloudagent-python/pull/3226) [thiagoromanos](https://github.com/thiagoromanos) + +- OpenAPI Updates + - :art: fix type hints for optional method parameters [\#3234](https://github.com/hyperledger/aries-cloudagent-python/pull/3234) [ff137](https://github.com/ff137) + +- Documentation and GHA Test Updates + - Fix scenario tests [\#3231](https://github.com/hyperledger/aries-cloudagent-python/pull/3231) [jamshale](https://github.com/jamshale) + - Only run integration tests on correct file changes [\#3230](https://github.com/hyperledger/aries-cloudagent-python/pull/3230) [jamshale](https://github.com/jamshale) + - Update docs for outstanding anoncreds work [\#3229](https://github.com/hyperledger/aries-cloudagent-python/pull/3229) [jamshale](https://github.com/jamshale) + - Only change interop testing fork on pull requests [\#3218](https://github.com/hyperledger/aries-cloudagent-python/pull/3218) [jamshale](https://github.com/jamshale) + - Remove the RC from the versions table [\#3213](https://github.com/hyperledger/aries-cloudagent-python/pull/3213) [swcurran](https://github.com/swcurran) + - Document the documentation site generation process [\#3212](https://github.com/hyperledger/aries-cloudagent-python/pull/3212) [swcurran](https://github.com/swcurran) + - Remove 1.0.0rc6 documentation from gh-pages [\#3211](https://github.com/hyperledger/aries-cloudagent-python/pull/3211) [swcurran](https://github.com/swcurran) - Adjust nightly and release workflows [\#3210](https://github.com/hyperledger/aries-cloudagent-python/pull/3210) [jamshale](https://github.com/jamshale) + - Change interop tests to critical on PRs [\#3209](https://github.com/hyperledger/aries-cloudagent-python/pull/3209) [jamshale](https://github.com/jamshale) + - Change integration testing [\#3194](https://github.com/hyperledger/aries-cloudagent-python/pull/3194) [jamshale](https://github.com/jamshale) + +- Dependencies and Internal Fixes/Updates: + - Removing padding from url invitations [\#3238](https://github.com/hyperledger/aries-cloudagent-python/pull/3238) [jamshale](https://github.com/jamshale) + - Ensure that DAP_PORT is always an int [\#3241](https://github.com/hyperledger/aries-cloudagent-python/pull/3241) [Gavinok](https://github.com/Gavinok) + - Fix logic to send verbose webhooks [\#3193](https://github.com/hyperledger/aries-cloudagent-python/pull/3193) [ianco](https://github.com/ianco) + - fixes #3186: handler_timed_file_handler [\#3187](https://github.com/hyperledger/aries-cloudagent-python/pull/3187) [rngadam](https://github.com/rngadam) + - issue #3182: replace deprecated ptvsd debugger by debugpy [\#3183](https://github.com/hyperledger/aries-cloudagent-python/pull/3183) [rngadam](https://github.com/rngadam) + - 👷Publish `aries-cloudagent-bbs` Docker image [\#3175](https://github.com/hyperledger/aries-cloudagent-python/pull/3175) [rblaine95](https://github.com/rblaine95) + - [ POST v1.0.0 ] Adjust message queue error handling [\#3170](https://github.com/hyperledger/aries-cloudagent-python/pull/3170) [jamshale](https://github.com/jamshale) + +- Release management pull requests: + - 1.0.1rc0 [\#3254](https://github.com/hyperledger/aries-cloudagent-python/pull/3254) [swcurran](https://github.com/swcurran) + +- Dependabot PRs + - [Link to list of Dependabot PRs in this release](https://github.com/hyperledger/aries-cloudagent-python/pulls?q=is%3Apr+is%3Amerged+merged%3A2024-08-15..2024-09-25+author%3Aapp%2Fdependabot+) + ## 1.0.0 ### August 16, 2024 diff --git a/Managing-ACA-Py-Doc-Site.md b/Managing-ACA-Py-Doc-Site.md index 6a061c9041..600ff37125 100644 --- a/Managing-ACA-Py-Doc-Site.md +++ b/Managing-ACA-Py-Doc-Site.md @@ -20,7 +20,7 @@ and mkdocs configuration. When the GitHub Action fires, it runs a container that carries out the following steps: -- Checks out the triggering branch, either `main` or `docs-v` (e.g `docs-v1.0.0`). +- Checks out the triggering branch, either `main` or `docs-v` (e.g `docs-v1.0.1rc0`). - Runs the script [scripts/prepmkdocs.sh], which moves and updates some of the markdown files so that they fit into the generated site. See the comments in the scripts for details about the copying and editing done via the script. In @@ -97,7 +97,7 @@ To delete the documentation version, do the following: - Check your `git status` and make sure there are no changes in the branch -- e.g., new files that shouldn't be added to the `gh-pages` branch. If there are any -- delete the files so they are not added. -- Remove the folder for the RC. For example `rm -rf 1.0.0rc4` +- Remove the folder for the RC. For example `rm -rf 1.0.1rc0` - Edit the `versions.json` file and remove the reference to the RC release in the file. - Push the changes via a PR to the ACA-Py `gh-pages` branch (don't PR them into diff --git a/PUBLISHING.md b/PUBLISHING.md index 6cb4cbe307..0b2043b94d 100644 --- a/PUBLISHING.md +++ b/PUBLISHING.md @@ -6,7 +6,7 @@ a major, minor or patch release, per [semver](https://semver.org/) rules. Once ready to do a release, create a local branch that includes the following updates: -1. Create a PR branch from an updated `main` branch. +1. Create a local PR branch from an updated `main` branch, e.g. "1.0.1rc0". 2. See if there are any Document Site `mkdocs` changes needed. Run the script `./scripts/prepmkdocs.sh; mkdocs`. Watch the log, noting particularly if @@ -22,32 +22,60 @@ Once ready to do a release, create a local branch that includes the following up transitioning from one release candidate to the next, or to an official release, just update the title and date of the change log section. -4. Collect the details of the merged PRs included in this release -- a list of PR - title, number, link to PR, author's github ID, and a link to the author's - github account. Gathering that data can be painful. Here are is the current - easiest way to do this -- using [OpenAI ChatGPT]: - -> Prepare the following ChatGPT request. Don't hit enter yet--you have to add the data. -> -> `Generate from this the github pull request number, the github id of the author and the title of the pull request in a tab-delimited list` -> -> Get a list of the merged PRs since the last release by displaying the PR list in -> the GitHub UI, highlighting/copying the PRs and pasting them below the ChatGPT -> request, one page after another. Hit ``, let the AI magic work, and you -> should have a list of the PRs in a nice table with a `Copy` link that you should click. -> -> Once you have that, open this [Google Sheet] and highlight the `A1` cell and -> paste in the ChatGPT data. A formula in column `E` will have the properly -> formatted changelog entries. Double check the list with the GitHub UI to make -> sure that ChatGPT isn't messing with you and you have the needed data. - -[OpenAI ChatGPT]: https://chat.openai.com -[Google Sheet]: https://docs.google.com/spreadsheets/d/1gIjPirZ42g5eM-JBtVt8xN5Jm0PQuEv91a8woRAuDEg/edit?usp=sharing +4. Collect the details of the merged PRs included in this release -- a list of + PR title, number, link to PR, author's github ID, and a link to the author's + github account. Do not include `dependabot` PRs. For those, we put a live + link for the date range of the release (guidance below). + + To generate the list, run the script `genChangeLog.sh` command (requires you + have [gh] and [jq] installed), with the date of the day before the last + release. The day before is picked to make sure you get all of the changes. + The script generates the list of all PRs, minus the dependabot ones, merged since + the last release in the required markdown format for the ChangeLog. At the end + of the list is some markdown for putting a link into the ChangeLog to see the + dependabot PRs merged in the release. + + **Note**: The output of the script is _roughly_ what you need for the + ChangeLog, but use your discretion in getting the list right, and making + sure the dates for the dependabot PRs is correct. For example, when doing a + follow up to an RC release, the date range in the dependabot link should + be the day before the last non-RC release, which won't be generated correctly + in this release. + + [gh]: https://github.com/cli/cli + [jq]: https://jqlang.github.io/jq/download/ + +From the root of the repository folder, run: + +```bash +./scripts/genChangeLog.sh +``` + +Leave off the date argument to get usage information. + +The output should look like this -- and what you see in [CHANGELOG.md](CHANGELOG.md): + +```text + + - chore(deps): Bump mkdocs-material from 9.5.34 to 9.5.36 [\#3249](https://github.com/hyperledger/aries-cloudagent-python/pull/3249) [app/dependabot](https://github.com/app/dependabot) + - chore(deps-dev): Bump ruff from 0.6.5 to 0.6.7 [\#3248](https://github.com/hyperledger/aries-cloudagent-python/pull/3248) [app/dependabot](https://github.com/app/dependabot) + - Feature multikey management [\#3246](https://github.com/hyperledger/aries-cloudagent-python/pull/3246) [PatStLouis](https://github.com/PatStLouis) + +``` Once you have the list of PRs: -- Organize the list into suitable categories, update (if necessary) the PR description and add notes to clarify the changes. See previous release entries to understand the style -- a format that should help developers. +- Organize the list into suitable categories in the [CHANGELOG.md](CHANGELOG.md) file, update (if necessary) the PR title and add notes to clarify the changes. See previous release entries to understand the style -- a format that should help developers. - Add a narrative about the release above the PR that highlights what has gone into the release. +- To cover the `dependabot` PRs without listing them all, add to the end of the + categorized list of PRs the lat two lines of the script output. Make sure the dates are right! The text will look like this: + +```text +- Dependabot PRs + - [List of Dependabot PRs in this release](https://github.com/hyperledger/aries-cloudagent-python/pulls?q=is%3Apr+is%3Amerged+merged%3A2024-08-16..2024-09-16+author%3Aapp%2Fdependabot+) +``` + +Include a PR for this soon-to-be PR. You can guess at the number of the PR by using this command `gh issue list -s all -L 2; gh pr ls -s all -L 2` to see the highest PR and issues, but you still might have to correct the number after you create the PR if someone sneaks one in before you submit your PR. 5. Check to see if there are any other PRs that should be included in the release. @@ -77,6 +105,8 @@ Once you have the list of PRs: Command: `cd aries_cloudagent;../scripts/generate-open-api-spec;cd ..` + Folders may not be cleaned up by the script, so the following can be run, likely with `sudo` -- `rm -rf open-api/.build`. The folder is `.gitignore`d, so there is not a danger they will be pushed, even if they are not deleted. + 9. Double check all of these steps above, and then submit a PR from the branch. Add this new PR to CHANGELOG.md so that all the PRs are included. If there are still further changes to be merged, mark the PR as "Draft", @@ -84,14 +114,14 @@ Once you have the list of PRs: wait until it is merged. It's embarrassing when you have to do a whole new release just because you missed something silly...I know! -10. Immediately after it is merged, create a new GitHub tag representing the +10. Immediately after it is merged, create a new GitHub tag representing the version. The tag name and title of the release should be the same as the version in [pyproject.toml](https://github.com/hyperledger/aries-cloudagent-python/tree/main/pyproject.toml). Use the "Generate Release Notes" capability to get a sequential listing of the PRs in the release, to complement the manually curated Changelog. Verify on PyPi that the version is published. -11. New images for the release are automatically published by the GitHubAction +11. New images for the release are automatically published by the GitHubAction Workflows: [publish.yml] and [publish-indy.yml]. The actions are triggered when a release is tagged, so no manual action is needed. The images are published in the [Hyperledger Package Repository under @@ -108,8 +138,8 @@ Once you have the list of PRs: [publish.yml]: https://github.com/hyperledger/aries-cloudagent-python/blob/main/.github/workflows/publish.yml [publish-indy.yml]: https://github.com/hyperledger/aries-cloudagent-python/blob/main/.github/workflows/publish-indy.yml -1. When a new release is tagged, create a new branch at the same commit with - the branch name in the format `docs-v`, for example, `docs-v1.0.0`. +12. When a new release is tagged, create a new branch at the same commit with + the branch name in the format `docs-v`, for example, `docs-v1.0.1rc0`. The creation of the branch triggers the execution of the [publish-docs] GitHub Action which generates the documentation for the new release, publishing it at [https://aca-py.org]. The GitHub Action also executes when diff --git a/README.md b/README.md index eafd98e3ec..08921dd4b5 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,15 @@ # Hyperledger Aries Cloud Agent - Python +🚨 **ACA-Py is transitioning to the [OpenWallet Foundation] (OWF)!** 🚨 + +[OpenWallet Foundation]: https://openwallet.foundation/ + +We’re excited to announce that the ACA-Py project will soon be moving to the OWF's GitHub organization under the [new "acapy" project](https://github.com/openwallet-foundation/project-proposals/pull/42). This is an important transition for the community, and we’ll ensure it's smooth and well-documented. + +For details on what this means for ACA-Py users, including steps for updating deployments, please follow the updates in [GitHub Issue #3250]. We'll keep you informed about the approach, timeline, and progress of the move. Stay tuned! + +[GitHub Issue #3250]: https://github.com/hyperledger/aries-cloudagent-python/issues/3250 +

@@ -12,7 +22,7 @@ > An easy to use Aries agent for building SSI services using any language that supports sending/receiving HTTP requests. Full access to an organized set of all of the ACA-Py documents is available at [https://aca-py.org](https://aca-py.org). -Check it out! It's much easier to navigate than this GitHub repo for reading the documentation. +Check it out! It's much easier to navigate than the ACA-Py GitHub repo for reading the documentation. :new: ACA-Py Plugins have their own store! Visit [https://plugins.aca-py.org](https://plugins.aca-py.org) to find ready-to-use functionality to add to your ACA-Py deployment, and to learn how to build your own plugins. diff --git a/docs/features/SupportedRFCs.md b/docs/features/SupportedRFCs.md index b0e83466b8..f6c2945ebd 100644 --- a/docs/features/SupportedRFCs.md +++ b/docs/features/SupportedRFCs.md @@ -8,7 +8,7 @@ ACA-Py or the repository `main` branch. Reminders (and PRs!) to update this page welcome! If you have any questions, please contact us on the #aries channel on [Hyperledger Discord](https://discord.gg/hyperledger) or through an issue in this repo. -**Last Update**: 2024-08-02, Release 1.0.0rc6 +**Last Update**: 2024-09-25, Release 1.0.1rc0 > The checklist version of this document was created as a joint effort > between [Northern Block](https://northernblock.io/), [Animo Solutions](https://animo.id/) and the Ontario government, on behalf of the Ontario government. @@ -21,7 +21,7 @@ ACA-Py and other Aries Frameworks and Agents. | AIP Version | Supported | Notes | | - | :-------: | -------- | -| AIP 1.0 | :white_check_mark: | Fully supported. | +| AIP 1.0 | :white_check_mark: | Fully supported. Deprecation notices published| | AIP 2.0 | :white_check_mark: | Fully supported. | A summary of the Aries Interop Profiles and Aries RFCs supported in ACA-Py can be found [later in this document](#supported-rfcs). @@ -112,17 +112,26 @@ A summary of the Aries Interop Profiles and Aries RFCs supported in ACA-Py can b ### AIP 1.0 -All RFCs listed in [AIP 1.0](https://github.com/hyperledger/aries-rfcs/tree/main/concepts/0302-aries-interop-profile#aries-interop-profile-version-10) are fully supported in ACA-Py. The following table -provides notes about the implementation of specific RFCs. +All RFCs listed in [AIP +1.0](https://github.com/hyperledger/aries-rfcs/tree/main/concepts/0302-aries-interop-profile#aries-interop-profile-version-10) +are fully supported in ACA-Py, but deprecation and removal of some of the +protocols has begun. The following table provides notes about the implementation +of specific RFCs. | RFC | Supported | Notes | | --- | :--: | -- | | [0025-didcomm-transports](https://github.com/hyperledger/aries-rfcs/tree/b490ebe492985e1be9804fc0763119238b2e51ab/features/0025-didcomm-transports) | :white_check_mark: | ACA-Py currently supports HTTP and WebSockets for both inbound and outbound messaging. Transports are pluggable and an agent instance can use multiple inbound and outbound transports.| -| [0160-connection-protocol](https://github.com/hyperledger/aries-rfcs/tree/9b0aaa39df7e8bd434126c4b33c097aae78d65bf/features/0160-connection-protocol) | :white_check_mark: | The agent supports Connection/DID exchange initiated from both plaintext invitations and public DIDs that enable bypassing the invitation message. | +| [0160-connection-protocol](https://github.com/hyperledger/aries-rfcs/tree/9b0aaa39df7e8bd434126c4b33c097aae78d65bf/features/0160-connection-protocol) | :white_check_mark: | **DEPRECATED** In the next release, the protocol will be removed. The protocol will continue to be available as an [ACA-Py plugin], but those upgrading to that pending release and continuing to use this protocol will need to include the plugin in their deployment configuration. Users **SHOULD** upgrade to the equivalent [AIP 2.0] protocols as soon as possible. | +| [0036-issue-credential-v1.0](https://github.com/hyperledger/aries-rfcs/tree/bb42a6c35e0d5543718fb36dd099551ab192f7b0/features/0036-issue-credential) | :white_check_mark: | **DEPRECATED** In the next release, the protocol will be removed. The protocol will continue to be available as an [ACA-Py plugin], but those upgrading to that pending release and continuing to use this protocol will need to include the plugin in their deployment configuration. Users **SHOULD** upgrade to the equivalent [AIP 2.0] protocols as soon as possible. | +| [0037-present-proof-v1.0](https://github.com/hyperledger/aries-rfcs/tree/4fae574c03f9f1013db30bf2c0c676b1122f7149/features/0037-present-proof) | :white_check_mark: | **DEPRECATED** In the next release, the protocol will be removed. It will continue to be available as an [ACA-Py plugin], but those upgrading to that pending release and continuing to use this protocol will need to include the plugin in their deployment configuration. Users **SHOULD** upgrade to the equivalent [AIP 2.0] protocols as soon as possible. | + +[ACA-Py plugin]: https://plugins.aca-py.org + +[AIP 2.0]: https://github.com/hyperledger/aries-rfcs/tree/main/concepts/0302-aries-interop-profile#aries-interop-profile-version-20 ### AIP 2.0 -All RFCs listed in [AIP 2.0](https://github.com/hyperledger/aries-rfcs/tree/main/concepts/0302-aries-interop-profile#aries-interop-profile-version-20) (including the sub-targets) +All RFCs listed in [AIP 2.0] (including the sub-targets) are fully supported in ACA-Py **EXCEPT** as noted in the table below. | RFC | Supported | Notes | diff --git a/docs/generated/aries_cloudagent.wallet.keys.rst b/docs/generated/aries_cloudagent.wallet.keys.rst new file mode 100644 index 0000000000..bd9db70701 --- /dev/null +++ b/docs/generated/aries_cloudagent.wallet.keys.rst @@ -0,0 +1,26 @@ +aries\_cloudagent.wallet.keys package +===================================== + +.. automodule:: aries_cloudagent.wallet.keys + :members: + :undoc-members: + :show-inheritance: + +Submodules +---------- + +aries\_cloudagent.wallet.keys.manager module +-------------------------------------------- + +.. automodule:: aries_cloudagent.wallet.keys.manager + :members: + :undoc-members: + :show-inheritance: + +aries\_cloudagent.wallet.keys.routes module +------------------------------------------- + +.. automodule:: aries_cloudagent.wallet.keys.routes + :members: + :undoc-members: + :show-inheritance: diff --git a/docs/generated/aries_cloudagent.wallet.rst b/docs/generated/aries_cloudagent.wallet.rst index 32dad82f81..89311c65c7 100644 --- a/docs/generated/aries_cloudagent.wallet.rst +++ b/docs/generated/aries_cloudagent.wallet.rst @@ -12,6 +12,7 @@ Subpackages .. toctree:: :maxdepth: 4 + aries_cloudagent.wallet.keys aries_cloudagent.wallet.models Submodules @@ -121,14 +122,6 @@ aries\_cloudagent.wallet.jwt module :undoc-members: :show-inheritance: -aries\_cloudagent.wallet.key\_pair module ------------------------------------------ - -.. automodule:: aries_cloudagent.wallet.key_pair - :members: - :undoc-members: - :show-inheritance: - aries\_cloudagent.wallet.key\_type module ----------------------------------------- diff --git a/open-api/openapi.json b/open-api/openapi.json index 53de478cf3..a3390ea698 100644 --- a/open-api/openapi.json +++ b/open-api/openapi.json @@ -2,7 +2,7 @@ "openapi" : "3.0.1", "info" : { "title" : "Aries Cloud Agent", - "version" : "v1.0.0" + "version" : "v1.0.1rc0" }, "servers" : [ { "url" : "/" @@ -7342,6 +7342,88 @@ "x-codegen-request-body-name" : "body" } }, + "/wallet/keys" : { + "post" : { + "requestBody" : { + "content" : { + "*/*" : { + "schema" : { + "$ref" : "#/components/schemas/CreateKeyRequest" + } + } + }, + "required" : false + }, + "responses" : { + "200" : { + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/CreateKeyResponse" + } + } + }, + "description" : "" + } + }, + "summary" : "Create a key pair", + "tags" : [ "wallet" ], + "x-codegen-request-body-name" : "body" + }, + "put" : { + "requestBody" : { + "content" : { + "*/*" : { + "schema" : { + "$ref" : "#/components/schemas/UpdateKeyRequest" + } + } + }, + "required" : false + }, + "responses" : { + "200" : { + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/UpdateKeyResponse" + } + } + }, + "description" : "" + } + }, + "summary" : "Update a key pair's kid", + "tags" : [ "wallet" ], + "x-codegen-request-body-name" : "body" + } + }, + "/wallet/keys/{multikey}" : { + "get" : { + "parameters" : [ { + "in" : "path", + "name" : "multikey", + "required" : true, + "schema" : { + "type" : "string" + } + } ], + "responses" : { + "200" : { + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/FetchKeyResponse" + } + } + }, + "description" : "" + } + }, + "summary" : "Fetch key info.", + "tags" : [ "wallet" ] + } + }, "/wallet/sd-jwt/sign" : { "post" : { "requestBody" : { @@ -8190,6 +8272,41 @@ }, "type" : "object" }, + "CreateKeyRequest" : { + "properties" : { + "alg" : { + "description" : "Which key algorithm to use.", + "example" : "ed25519", + "type" : "string" + }, + "kid" : { + "description" : "Optional kid to bind to the keypair, such as a verificationMethod.", + "example" : "did:web:example.com#key-01", + "type" : "string" + }, + "seed" : { + "description" : "Optional seed to generate the key pair. Must enable insecure wallet mode.", + "example" : "00000000000000000000000000000000", + "type" : "string" + } + }, + "type" : "object" + }, + "CreateKeyResponse" : { + "properties" : { + "kid" : { + "description" : "The associated kid", + "example" : "did:web:example.com#key-01", + "type" : "string" + }, + "multikey" : { + "description" : "The Public Key Multibase format (multikey)", + "example" : "z6MkgKA7yrw5kYSiDuQFcye4bMaJpcfHFry3Bx45pdWh3s8i", + "type" : "string" + } + }, + "type" : "object" + }, "CreateWalletRequest" : { "properties" : { "extra_settings" : { @@ -9470,6 +9587,21 @@ }, "type" : "object" }, + "FetchKeyResponse" : { + "properties" : { + "kid" : { + "description" : "The associated kid", + "example" : "did:web:example.com#key-01", + "type" : "string" + }, + "multikey" : { + "description" : "The Public Key Multibase format (multikey)", + "example" : "z6MkgKA7yrw5kYSiDuQFcye4bMaJpcfHFry3Bx45pdWh3s8i", + "type" : "string" + } + }, + "type" : "object" + }, "Filter" : { "properties" : { "const" : { @@ -13780,6 +13912,37 @@ }, "type" : "object" }, + "UpdateKeyRequest" : { + "properties" : { + "kid" : { + "description" : "New kid to bind to the key pair, such as a verificationMethod.", + "example" : "did:web:example.com#key-02", + "type" : "string" + }, + "multikey" : { + "description" : "Multikey of the key pair to update", + "example" : "z6MkgKA7yrw5kYSiDuQFcye4bMaJpcfHFry3Bx45pdWh3s8i", + "type" : "string" + } + }, + "required" : [ "kid", "multikey" ], + "type" : "object" + }, + "UpdateKeyResponse" : { + "properties" : { + "kid" : { + "description" : "The associated kid", + "example" : "did:web:example.com#key-02", + "type" : "string" + }, + "multikey" : { + "description" : "The Public Key Multibase format (multikey)", + "example" : "z6MkgKA7yrw5kYSiDuQFcye4bMaJpcfHFry3Bx45pdWh3s8i", + "type" : "string" + } + }, + "type" : "object" + }, "UpdateProfileSettings" : { "properties" : { "extra_settings" : { diff --git a/open-api/swagger.json b/open-api/swagger.json index 08defb0862..5e4ba7510d 100644 --- a/open-api/swagger.json +++ b/open-api/swagger.json @@ -1,7 +1,7 @@ { "swagger" : "2.0", "info" : { - "version" : "v1.0.0", + "version" : "v1.0.1rc0", "title" : "Aries Cloud Agent" }, "tags" : [ { @@ -6031,6 +6031,71 @@ } } }, + "/wallet/keys" : { + "post" : { + "tags" : [ "wallet" ], + "summary" : "Create a key pair", + "produces" : [ "application/json" ], + "parameters" : [ { + "in" : "body", + "name" : "body", + "required" : false, + "schema" : { + "$ref" : "#/definitions/CreateKeyRequest" + } + } ], + "responses" : { + "200" : { + "description" : "", + "schema" : { + "$ref" : "#/definitions/CreateKeyResponse" + } + } + } + }, + "put" : { + "tags" : [ "wallet" ], + "summary" : "Update a key pair's kid", + "produces" : [ "application/json" ], + "parameters" : [ { + "in" : "body", + "name" : "body", + "required" : false, + "schema" : { + "$ref" : "#/definitions/UpdateKeyRequest" + } + } ], + "responses" : { + "200" : { + "description" : "", + "schema" : { + "$ref" : "#/definitions/UpdateKeyResponse" + } + } + } + } + }, + "/wallet/keys/{multikey}" : { + "get" : { + "tags" : [ "wallet" ], + "summary" : "Fetch key info.", + "produces" : [ "application/json" ], + "parameters" : [ { + "name" : "multikey", + "in" : "path", + "required" : true, + "type" : "string" + } ], + "responses" : { + "200" : { + "description" : "", + "schema" : { + "$ref" : "#/definitions/FetchKeyResponse" + } + } + } + } + }, "/wallet/sd-jwt/sign" : { "post" : { "tags" : [ "wallet" ], @@ -6856,6 +6921,41 @@ } } }, + "CreateKeyRequest" : { + "type" : "object", + "properties" : { + "alg" : { + "type" : "string", + "example" : "ed25519", + "description" : "Which key algorithm to use." + }, + "kid" : { + "type" : "string", + "example" : "did:web:example.com#key-01", + "description" : "Optional kid to bind to the keypair, such as a verificationMethod." + }, + "seed" : { + "type" : "string", + "example" : "00000000000000000000000000000000", + "description" : "Optional seed to generate the key pair. Must enable insecure wallet mode." + } + } + }, + "CreateKeyResponse" : { + "type" : "object", + "properties" : { + "kid" : { + "type" : "string", + "example" : "did:web:example.com#key-01", + "description" : "The associated kid" + }, + "multikey" : { + "type" : "string", + "example" : "z6MkgKA7yrw5kYSiDuQFcye4bMaJpcfHFry3Bx45pdWh3s8i", + "description" : "The Public Key Multibase format (multikey)" + } + } + }, "CreateWalletRequest" : { "type" : "object", "properties" : { @@ -8081,6 +8181,21 @@ } } }, + "FetchKeyResponse" : { + "type" : "object", + "properties" : { + "kid" : { + "type" : "string", + "example" : "did:web:example.com#key-01", + "description" : "The associated kid" + }, + "multikey" : { + "type" : "string", + "example" : "z6MkgKA7yrw5kYSiDuQFcye4bMaJpcfHFry3Bx45pdWh3s8i", + "description" : "The Public Key Multibase format (multikey)" + } + } + }, "Filter" : { "type" : "object", "properties" : { @@ -12208,6 +12323,37 @@ } } }, + "UpdateKeyRequest" : { + "type" : "object", + "required" : [ "kid", "multikey" ], + "properties" : { + "kid" : { + "type" : "string", + "example" : "did:web:example.com#key-02", + "description" : "New kid to bind to the key pair, such as a verificationMethod." + }, + "multikey" : { + "type" : "string", + "example" : "z6MkgKA7yrw5kYSiDuQFcye4bMaJpcfHFry3Bx45pdWh3s8i", + "description" : "Multikey of the key pair to update" + } + } + }, + "UpdateKeyResponse" : { + "type" : "object", + "properties" : { + "kid" : { + "type" : "string", + "example" : "did:web:example.com#key-02", + "description" : "The associated kid" + }, + "multikey" : { + "type" : "string", + "example" : "z6MkgKA7yrw5kYSiDuQFcye4bMaJpcfHFry3Bx45pdWh3s8i", + "description" : "The Public Key Multibase format (multikey)" + } + } + }, "UpdateProfileSettings" : { "type" : "object", "properties" : { diff --git a/pyproject.toml b/pyproject.toml index 58fe30e749..edab10b8d9 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "aries_cloudagent" -version = "1.0.0" +version = "1.0.1rc0" description = "Hyperledger Aries Cloud Agent Python (ACA-Py) is a foundation for building decentralized identity applications and services running in non-mobile environments. " authors = ["Hyperledger Aries "] license = "Apache-2.0" diff --git a/scripts/genChangeLog.sh b/scripts/genChangeLog.sh new file mode 100755 index 0000000000..0af5322bd4 --- /dev/null +++ b/scripts/genChangeLog.sh @@ -0,0 +1,33 @@ +#!/bin/bash + +if ! command -v gh 2>&1 >/dev/null; then + echo ERROR: This script requires that `gh` needs to be installed to run. + exit 1 +fi + +if ! command -v jq 2>&1 >/dev/null; then + echo ERROR: This script requires that `jq` needs to be installed to run. + exit 1 +fi + +if [ $# -eq 0 ]; then + echo ${0}: Generate a list of PRs to include in the Changelog for a release. + echo "You must supply a date argument in the format '2024-08-12'" + echo "The date must be the date of the day before the last ACA-Py release -- to make sure you get all of the relevant PRs." + echo "The output is the list of non-dependabot PRs, plus some markdown to reference the dependabot PRs" + exit 1 +fi + +gh pr list -S "merged:>${1}" -L 1000 --state merged --json number,title,author | \ + jq ' .[] | [" -",.title,"WwW",.number,"XxX",.number,"YyY",.author.login,"ZzZ",.author.login] | @tsv' | \ + sed -e "s/\\\t/ /g" \ + -e "s/\"//g" \ + -e "s/WwW /\[\\\#/" \ + -e "s# XxX #\\](https://github.com/hyperledger/aries-cloudagent-python/pull/#" \ + -e "s/ YyY /) \\[/" \ + -e "s# ZzZ #\\](https://github.com/#" \ + -e "s/$/)/" \ + -e "/app.dependabot/d" +now=$(date +%Y-%m-%d) +echo "- Dependabot PRs" +echo " - [Link to list of Dependabot PRs in this release](https://github.com/hyperledger/aries-cloudagent-python/pulls?q=is%3Apr+is%3Amerged+merged%3A${1}..${now}+author%3Aapp%2Fdependabot+)" diff --git a/scripts/prepmkdocs.sh b/scripts/prepmkdocs.sh index 14d0a88800..34dd22001c 100755 --- a/scripts/prepmkdocs.sh +++ b/scripts/prepmkdocs.sh @@ -21,6 +21,8 @@ if [[ "$1" == "clean" ]]; then else # Copy all of the root level md files into the docs folder for deployment, tweaking the relative paths for i in *.md; do sed -e "s#docs/#./#g" $i >docs/$i; done + # Redo README to delete the lines about https://aca-py.org + sed -e "s#docs/#./#g" -e "/Full access to an organized set/,+2d" README.md >docs/README.md # Copy the architecture drawing cp aca-py_architecture.png docs # Fix references in DevReadMe.md to moved files From 4912b6b6b982f7a771bc625938c8bd274b92dc59 Mon Sep 17 00:00:00 2001 From: Stephen Curran Date: Wed, 25 Sep 2024 16:25:51 -0700 Subject: [PATCH 2/2] Update the maintainers file to reflect the mechanics of the process Signed-off-by: Stephen Curran --- MAINTAINERS.md | 92 +++++++++++++++++--------------------------------- 1 file changed, 31 insertions(+), 61 deletions(-) diff --git a/MAINTAINERS.md b/MAINTAINERS.md index 1a65a6020c..245b421a13 100644 --- a/MAINTAINERS.md +++ b/MAINTAINERS.md @@ -2,45 +2,14 @@ ## Maintainer Scopes, GitHub Roles and GitHub Teams -Maintainers are assigned the following scopes in this repository: - -| Scope | Definition | GitHub Role | GitHub Team | -| ---------- | ------------------------ | ----------- | ------------------------------------ | -| Admin | | Admin | [aries-admins] | -| Maintainer | The GitHub Maintain role | Maintain | [aries-cloudagent-python committers] | -| Triage | The GitHub Triage role | Triage | [aries triage] | -| Read | The GitHub Read role | Read | [Aries Contributors] | -| Read | The GitHub Read role | Read | [TOC] | -| Read | The GitHub Read role | Read | [aries-framework-go-ext committers] | - -[aries-admins]: https://github.com/orgs/hyperledger/teams/aries-admins -[aries-cloudagent-python committers]: https://github.com/orgs/hyperledger/teams/aries-cloudagent-python-committers -[aries triage]: https://github.com/orgs/hyperledger/teams/aries-triage -[Aries Contributors]: https://github.com/orgs/hyperledger/teams/aries-contributors -[TOC]: https://github.com/orgs/hyperledger/teams/toc -[aries-framework-go-ext committers]: https://github.com/orgs/hyperledger/teams/aries-framework-go-ext-committers - -## Active Maintainers - - - -| GitHub ID | Name | Scope | LFID | Discord ID | Email | Company Affiliation | -| --------------- | ---------------- | ---------- | ---- | ---------- | ------------------------ | ------------------- | -| andrewwhitehead | Andrew Whitehead | Admin | | | cywolf@gmail.com | BC Gov | -| dbluhm | Daniel Bluhm | Admin | | | daniel@indicio.tech | Indicio PBC | -| dhh1128 | Daniel Hardman | Admin | | | daniel.hardman@gmail.com | Provident | -| shaangill025 | Shaanjot Gill | Maintainer | | | gill.shaanjots@gmail.com | BC Gov | -| swcurran | Stephen Curran | Admin | | | swcurran@cloudcompass.ca | BC Gov | -| TelegramSam | Sam Curren | Maintainer | | | telegramsam@gmail.com | Indicio PBC | -| TimoGlastra | Timo Glastra | Admin | | | timo@animo.id | Animo Solutions | -| WadeBarnes | Wade Barnes | Admin | | | wade@neoterictech.ca | BC Gov | -| usingtechnology | Jason Sherman | Maintainer | | | tools@usingtechnolo.gy | BC Gov | - -## Emeritus Maintainers - -| Name | GitHub ID | Scope | LFID | Discord ID | Email | Company Affiliation | -|----- | --------- | ----- | ---- | ---------- | ----- | ------------------- | -| | | | | | | | +The Maintainers of this repo, defined as GitHub users with escalated privileges +in the repo, are managed in the Hyperledger "governance" repo's [access-control.yaml](https://github.com/hyperledger/governance/blob/main/access-control.yaml) file. Consult that to see: + +- What teams have escalated privileges to this repository. +- What GitHub roles those teams have in the repository. +- Who are the members of each of those teams. + +The actions covered below for [becoming](#becoming-a-maintainer) and [removing](#removing-maintainers) are made manifest through PRs to that file. ## The Duties of a Maintainer @@ -74,18 +43,18 @@ occur, roughly in order. - The proposed maintainer establishes their reputation in the community, including authoring five (5) significant merged pull requests, and expresses an interest in becoming a maintainer for the repository. -- A PR is created to update this file to add the proposed maintainer to the list of active maintainers. -- The PR is authored by an existing maintainer or has a comment on the PR from an existing maintainer supporting the proposal. -- The PR is authored by the proposed maintainer or has a comment on the PR from the proposed maintainer confirming their interest in being a maintainer. - - The PR or comment from the proposed maintainer must include their +- An issue is created to add the proposed maintainer to the list of active maintainers. +- The issue is authored by an existing maintainer or has a comment on the PR from an existing maintainer supporting the proposal. +- The issue is authored by the proposed maintainer or has a comment on the issue from the proposed maintainer confirming their interest in being a maintainer. + - The issue or comment from the proposed maintainer must include their willingness to be a long-term (more than 6 month) maintainer. -- Once the PR and necessary comments have been received, an approval timeframe begins. -- The PR **MUST** be communicated on all appropriate communication channels, including relevant community calls, chat channels and mailing lists. Comments of support from the community are welcome. -- The PR is merged and the proposed maintainer becomes a maintainer if either: - - Two weeks have passed since at least three (3) Maintainer PR approvals have been recorded, OR - - An absolute majority of maintainers have approved the PR. -- If the PR does not get the requisite PR approvals, it may be closed. -- Once the add maintainer PR has been merged, any necessary updates to the GitHub Teams are made. +- Once the issue and necessary comments have been received, an approval timeframe begins. +- The issue **MUST** be communicated on all appropriate communication channels, including relevant community calls, chat channels and mailing lists. Comments of support from the community are welcome. +- The issue is approved and the proposed maintainer becomes a maintainer if either: + - Two weeks have passed since at least three (3) Maintainer issue approvals have been recorded, OR + - An absolute majority of maintainers have approved the issue. +- If the issue does not get the requisite approvals, it may be closed. +- Once the add maintainer issue has been approved, the necessary updates to the GitHub Teams are made via a PR to the Hyperledger "governance" repo's [access-control.yaml](https://github.com/hyperledger/governance/blob/main/access-control.yaml) file. ## Removing Maintainers @@ -104,17 +73,18 @@ maintainer to emeritus status. This can occur in the following situations: - Other circumstances at the discretion of the other Maintainers. The process to move a maintainer from active to emeritus status is comparable to the process for adding a maintainer, outlined above. In the case of voluntary -resignation, the Pull Request can be merged following a maintainer PR approval. If the removal is for any other reason, the following steps **SHOULD** be followed: - -- A PR is created to update this file to move the maintainer to the list of emeritus maintainers. -- The PR is authored by, or has a comment supporting the proposal from, an existing maintainer or Hyperledger GitHub organization administrator. -- Once the PR and necessary comments have been received, the approval timeframe begins. -- The PR **MAY** be communicated on appropriate communication channels, including relevant community calls, chat channels and mailing lists. -- The PR is merged and the maintainer transitions to maintainer emeritus if: - - The PR is approved by the maintainer to be transitioned, OR - - Two weeks have passed since at least three (3) Maintainer PR approvals have been recorded, OR - - An absolute majority of maintainers have approved the PR. -- If the PR does not get the requisite PR approvals, it may be closed. +resignation, the Pull Request can be merged following a maintainer issue approval. If the removal is for any other reason, the following steps **SHOULD** be followed: + +- An issue is created to move the maintainer to the list of emeritus maintainers. +- The issue is authored by, or has a comment supporting the proposal from, an existing maintainer or Hyperledger GitHub organization administrator. +- Once the issue and necessary comments have been received, the approval timeframe begins. +- The issue **MAY** be communicated on appropriate communication channels, including relevant community calls, chat channels and mailing lists. +- The issue is approved and the maintainer transitions to maintainer emeritus if: + - The issue is approved by the maintainer to be transitioned, OR + - Two weeks have passed since at least three (3) Maintainer issue approvals have been recorded, OR + - An absolute majority of maintainers have approved the issue. +- If the issue does not get the requisite approvals, it may be closed. +- Once the remove maintainer issue has been approved, the necessary updates to the GitHub Teams are made via a PR to the Hyperledger "governance" repo's [access-control.yaml](https://github.com/hyperledger/governance/blob/main/access-control.yaml) file. Returning to active status from emeritus status uses the same steps as adding a new maintainer. Note that the emeritus maintainer already has the 5 required