# Release History - open AEA

## 1.49.0 (2024-03-06)

AEA:
- Pins `python-dotenv>=0.14.0,<0.22.0`

## 1.48.0.post1 (2024-02-27)

AEA:
- Fixes custom file references in the CLI commands

## 1.48.0 (2024-02-21)

AEA:
- Adds support for scaffolding and managing [custom packages](https://github.com/valory-xyz/open-aea/pull/717#pullrequestreview-1887581886)

## 1.47.0 (2024-02-13)

Plugins:
- Bumps `cosmpy@0.9.2`
- Fixes the `_try_send_signed_transaction` on the solana plugin to separate the transaction receipt retrieval

## 1.46.0 (2024-01-23)

AEA:
- Updates the `generate-key` command to include ledger specifier when writing keys in a JSON file

## 1.45.0 (2024-01-11)

Plugins:
- Fixes transaction deserialisation for adding nonce on the solana ledger
- Increases the number of retries for fetching transaction receipt

## 1.44.0 (2024-01-04)

Packages:
- Regenerates the protocols to update the copyright header
- Updates the date range for issuing the certificates
- Adds optional key word arguments to `SEND_TRANSACTION` messages

## 1.43.0.post2 (2023-12-26)

AEA:
- Fixes the default environment variable parsing for the base types

## 1.43.0.post1 (2023-12-19)

AEA:
- Fixes the default environment variable parsing for the list types

## 1.43.0 (2023-12-14)

AEA:
- Adds `--timeout` flag on aea install command
- Fixes circular import issues on package manager
- Fixes nested list environment variable parsing

Plugins:
- Adds support for versioned transactions on `solana` plugin

## 1.42.0 (2023-11-20)

AEA:
- Pins `openapi-core==0.15.0`, `openapi-spec-validator<0.5.0,>=0.4.0` and `jsonschema<4.4.0,>=4.3.0`

Chore:
- Adds a script for managing dependencies across various project configurations

## 1.41.0.post1 (2023-10-23)

Packages:
- Use `kwargs.pop` instead of `kwargs.get` to avoid extra argument error on ledger connection

## 1.41.0 (2023-10-10)

AEA:
- Fixes the source repository validation regex
- Updates the `generate-key` command to prompt before overwriting the existing keys file
- Fixes the inconsistent hashing caused by the `CRLF` line endings
- Updates the component loader to ignore the test modules when loading the component
- Adds support for overriding dependencies
- Updates the `sync` command to download missing dependencies and update `packages.json`
- Updates the error messages for missing ledger plugins on `generate-key` command
  
Plugins:
- Adds missing `py.typed` markers
- Backports the changes from the `agent-academy-2` repository on the ledger connection
- Ports `http_server` as a valory connection

## 1.40.0 (2023-09-26)

AEA:
- Adds support for specifying extra dependencies and overriding dependencies via `-e` flag on `aea install`
- Updates the selection of dependencies in `aea install` command to override the dependencies in the `extra dependencies provided by flag > agent > skill > connection > contract > protocol` order instead of merging them.

## 1.40.0 (2023-09-26)

AEA:
- Removes the `web3py` fork as a dependency
- Bumps the protobuf to `protobuf>=4.21.6,<5.0.0`
- Updates protocol buffers compiler to `v24.3`
- Updates the protocol generator
- Removes unused layers from the user image and uses minimal python image as base

## 1.39.0.post1 (2023-09-21)

AEA:
- Pins `jsonschema<=4.19.0,>=4.16.0`

## 1.39.0 (2023-09-07)

AEA:
- Removes the rust installation layer from the user image

## 1.38.0 (2023-08-09)

Framework:
- Deprecates the support for `Python 3.7` and adds support for `Python 3.11`
- Adds support for multi platform docker images

Plugins:
- Replaces `web3py==5.31.4` with `open-aea-web3==6.0.1`
- Replaces `flashbots==1.1.1` with `open-aea-flashbots==1.3.0`
- Bumps `open-aea-cosmpy` to `v0.6.5`
- Deprecates the `apduboy` as a dependency
- Pins `ledgerwallet==0.1.3`

## 1.37.0 (2023-07-25)

Plugins:
- Replaces `cosmpy` with `open-aea-cosmpy`

## 1.36.0 (2023-07-19)

AEA:
- pyyaml updated, tomte updated  

Plugins:
- cosmpy updated to 0.6.0

## 1.35.0 (2023-06-20)

Plugins:
- Adds support for multiple transaction builders on `flashbots` ledger plugin
- Pins
  - `eth-account`to `>=0.5.9,<0.6.0`
  - `protobuf` to `==3.19.5`
  - `web3` to `==5.31.4`
  - `construct` to `<=2.10.61`

## 1.34.0 (2023-05-15)

AEA:
- Fixes a bug on `aea fetch` command which caused issue when using the `--alias` flag if the package with original name already existed in the working directory #630
- Removes the need for intermediate agent for generating protocols #632
  - Adds `-tlr` flag on the aea generate command group
  - Adds support for registering packages to local registry on the package manager
  - Updates the `ProtocolGenerator` implementation to work with the local registry project structure
- Fixes `IPFS` local registry loader #634
- Updates the `scaffold` tool to register the newly scaffolded packages to `packages.json` to the local registry #635
- Sets the apply environment variables to true on `aea build` command #636

Plugins:
- Bumps `solana` and `anchorpy` to resolve dependency issues with the `web3py` library #637

## 1.33.0 (2023-05-02)

AEA:
- Updates package manager to add newly found packages to the `packages.json` instead of raising error #622
- Updates the package manager to add new packages to third party #627

Packages:
- Fixes ACN slow queue issue #624

Plugin:
- Attaches the plugin loggers to the correct namespace #620
- Adds logic on the `flashbots` plugin to check that we are simulating against the current block, and we are targeting a future block when sending a bundle #625
- Adds support for specifying base URI for the IPFS client on the IPFS cli plugin #628

Chores:
- Update release flow parameters to use kebab case to avoid deprecation warnings #623

## 1.32.0 (2023-04-10)

AEA:
- Updates the protocol generator to use `protobuf` double type to represent float values

Packages:
- Adds `SEND_SIGNED_TRANSACTIONS` to the initial states on the ledger connection
  
Plugins:
- Removes unused dependencies from `solana` plugin
- Adds the new plugin the the `new_env` target on the `Makefile`
- Adds support for raising on a simulation failure on the `flashbots` plugin
- Makes `recursive` and `wrap_with_directory` parameters configurable on the IPFS client
- Attaches the plugin loggers to the correct namespace

Chores:
- Bumps `tomte` to `v0.2.4`
- Fixes `pyproject.toml` syntax
- Fixes parsing issues on `check_pipfile_and_toxini.py` script



## 1.31.0 (2023-03-21)

AEA:
- Updates the error messages on the package manager for misconfigured `packages.json` files
- Adds support for initialising empty local packages repository using `aea packkages init` command
- Fixes licence headers on the newly introduced plugins
- Adds two new performatives to the ledger api protocol 
  - `SEND_SIGNED_TRANSACTIONS` to send multiple transactions at once
  - `TRANSACTION_DIGESTS` to retrieve transaction digests for the transactions sent using `SEND_SIGNED_TRANSACTIONS`

Plugin:
- Introduces `Solana` ledger plugin
- Introduces `Ethereum Flashbots` plugin

## 1.30.0 (2023-03-08)

AEA:
- Adds support for syncing third party package hashes from `github` repositories
- Adds support for custom union types on the protocol generator
- Fixes message formatting on the configuration validator

Packages:
- Adds `pytest-asyncio` as a dependency on the ledger connection

Plugin:
- Introduces the `open-aea-ledger-ethereum-hwi` plugin to support hardware wallet interactions

## 1.29.0 (2023-02-02)

AEA:
- Adds support for retries on the `aea push-all` command using `--retries` flag
- Updates the `aea test` command to load dependencies for an agent when running test for an agent package
- Updated the protocol generator to generate tests
- Fixes for process termination in the test tools on windows

Packages:
- Replaces the usage of `time.sleep` with `asyncio.sleep` in asynchronous functions

Test:
- Adds more tests for `aea test` command group

## 1.28.0.post1 (2023-01-16)

AEA:
- Fixes the module import issue on the `aea test` command by removing the usage of spawned process to run the pytest command

Plugins:
- Pins proper version for cosmos plugin on the ledger plugin
- Updates the `LedgerApi.update_with_gas_estimation` method to raise instead of logging the error if specified by the user

Chores:
- Pins `pywin32` to `>=304`

## 1.28.0 (2023-01-11)

AEA:
- Adds checks to make sure the author name and the package name are in snake case only
- Adds tools for automating the protocol tests
- Updates the test command to spawn a process for running the pytest command to make sure there are no issues with the test coverage
- Fixes a race condition found in the `AsyncMultiplexer`

Plugins:
- Makes the fetchai ledger plugin dependent on the cosmos plugin to prevent code duplication

Tests:
- Adds a test to showcase a race condition in `AsyncMultiplexer`

## 1.27.0 (2022-12-27)

AEA:
- Adds auto-generated protobuf `*_pb2.py` and `*_pb2_*.py` files to `coveragerc` ignore template for aea test command.
- Fixes comparison operators ` __eq__`, `__ne__`, `__lt__`, `__le__`, `__gt__`, `__ge__` for multiple classes including `PackageVersion`.
- Adds support to `test packages` command for the `--all` flag and switches default behaviour to only run tests on `dev` packages.
- Fixes miscellaneous issues on base test classes and adds consistency checks via meta classes.

Plugins:
- Updates `open-aea-cli-ipfs` to retry in case an IPFS download fails

Tests:
- Fills coverage gaps on core `aea`
- Fills coverage gaps on multiple packages
- Fills coverage gaps on all plugins

Chores:
- Merges the coverage checks with unit tests and removes the extra test coverage CI run.
- Cleans up release flow.
- Adds workflow for image building.

## 1.26.0 (2022-12-15)

AEA:
- Adds support for hashing byte strings on `IPFSHashOnly` tool
- Introduces `CliTest` tool to help with the `CLI` testing
- Extends aea packages lock command to update fingerprints
- Adds support for appending test coverage with previous runs on `aea test` command and fixes the coverage on `aea test packages` command
- Updates the `BasePackageManager.add_package` to fetch packages recursively

Plugins:
- Updates the `cosmos` and `fetchai` ledger plugins to use `PyCryptodome` for `ripemd160` hash generation
- Adds support for publishing byte strings directly to IPFS daemons without intermediate file storage on the `IPFS` plugin

Chores:
- Pins `tox` version using `tomte` in the CI to maintain version consistency
- Pins `go` version to `v1.17.7` on the CI

## 1.25.0 (2022-12-01)

AEA:
- Fixes the mechanism to convert the `json` path to environment variable string
- Updates the process of agent subprocess termination to make sure we properly terminate agents across the various operating systems
- Introduces `reraise_as_click_exception` to re-raise exceptions as `click.ClickExceptions` on command definitions
- Extends `CliRunner` to allow usage of `capfd` to capture test output
- Introduces `generate_env_vars_recursively` method to auto generate the environment variable names for component overrides
- Extends `aea generate-key` to support creating multiple keys
- Extends the package manager API to
  - Update the hashes for third party packages with a warning
  - Update the dependency hashes when locking packages
  - Verifying the dependency hashes when verifying packages
- Adds deprecation warning for `aea hash all` command since the same functionality is now being provided by `aea packages lock` command

Tests:
- Updates `libp2p` tests to use `capsys` to read `stdout` instead of patching `sys.stdout`
- Re enables tests skipped with `# need remote registry` comment
- Adds tests for package manager API

Chores:
- Updates the `tox` environment setting for unit tests to report duration of tests
- Deprecates the usage of `aea hash all` command from the workflow

## 1.24.0 (2022-11-15)

AEA:
- Adds deprecation warning for `--aev` flag
- Makes the usage of environment variables default
- Extends `push-all` command to push only the development packages
- Adds support for generating environment variable names if not provided by default
- Changes log level from `debug` to `error` on `Exception` handling
- Updates the configuration loader classes to make sure path string serialization is deterministic across the various platforms

Test:
- Fixes the tests skipped because of the wrongly configures ledger ID
- Adds tests to check if path string serialization is deterministic across the various platforms

Chores:
- Updates `scripts/check_ipfs_hashes_pushed.py` to use new `packages.json` format
  
## 1.23.0 (2022-11-09)

AEA:
- Extracts package manager implementation into core module
- Extends the package manager implementation to introduce separation between development and third party packages
- Extends aea packages lock command to work with new `packages.json` format
- Extends aea packages sync command with `--dev`, `--third-party`, `--all` flags to specify what packages to sync avoid updating hashes for third party packages
- Updates the `check-packages` command to make sure we skip `open-aea` when generating list for third party packages in package dependency check
- Adds proper exception handling on `aea fetch` command for bad packages

Chores:
- Updates dependencies in Dockerfile for documentation

## 1.22.0 (2022-11-01)

AEA:
- Updates the cert request serialisation process to maintain consistency across different operating systems
- Updates the `get_or_create_cli_config` method to return default config instead of creating one
- Introduces the `copy_class` utility function for testing different setup configurations
- Updates the overridable policies for the configuration classes

Packages:
- Removes the unwanted autonomy dependency from the ledger connection
  
Tests:
- Updates the cli config fixture to retain user config
- Fixes outbox check test 
- Adds test coverage for
  - `aea/cli`
  - `aea/configurations`
  - `aea/helpers`
  - `aea/test_tools`
  - `aea/manager`

Docs:
- Adds documentation on the usage of component overrides

Chores:
- Adds a script to automatically generate a package table for the docs
- Introduces the usage of `tomte` to maintain third party dependency version consistency
- Updates the script to check the broken links to use parallelization

## 1.21.0 (2022-09-28)

AEA:
- Updates `aea scaffold contract` to include contract ABIs

Packages:
- Adds support for running local ACN nodes
- Converts `ledger` and `http_client` connections and `http`, `ledger_api` and `contract_api` protocols to valory packages and syncs them with `open-autonomy` versions of the same packages
- Extends `ledger` connection to automatically handle contract calls to methods not implemented in the contract package, redirecting them to a default contract method.

Plugins:
- Introduces test tools module for IPFS cli plugin

Tests:
- Fixes flaky timeout tests
- Fixes flaky `DHT (ACN/Libp2p)` tests on windows
- Introduces test for assessing robustness of the ACN setup without agents

Docs:
- Adds a guide on implementing contract packages


## 1.20.0 (2022-09-20)

AEA:
- Ensures author and year in copyright headers are updated in scaffolded components
- Updates `check-packages`
  - to check the presence of the constant `PUBLIC_ID` for connections and skills.
  - to validate author
- Fixes CLI help message for `aea config set` command
- Extends test command to support consistency check skips and to run tests for a specific author
- Adds proper exception raising and error handling
  - Exception handling when downloading from IPFS nodes
  - Better error message when the `--aev` flag is not provided
- Fixes file sorting to maintain consistency of links on `PBNode` object on `IPFSHashOnly` tool

Plugins:
- Updates the IPFS plugin to make make sure we don't use the local IPFS node unless explicitly specified

Packages:
- Ports `libp2p` connection packages tests
  - Ports `p2p_libp2p_mailbox` tests
  - Ports `p2p_libp2p_client` tests
  - Ports `p2p_libp2p` tests
- Introduces `test_libp2p` connection package to test `libp2p` integration

Chores:
- Fixes docstring formatting to make sure doc generator works fine
- Updated `check_ipfs_hashes.py` script to use `packages.json` instead of `hashes.csv`
- Updates the command regex to align with the latest version

## 1.19.0 (2022-09-14)

AEA:
- Updates the `aea init` command to set the local as default registry and IPFS as default remote registry
- Updates the `aea test packages` to include the agent tests
- Introduces
  - `aea packages` command group to manage local packages repository
  - `aea packages lock` command to lock all available packages and create `packages.json` file
  - `aea packages sync` command to synchronize the local packages repository

Chores:
- Fix README header link
- Removes `shebangs` from non-script files
- Adds a command validator for docs and Makefile
- Deprecates the usage of `hashes.csv` to maintain packages consistency

Tests:
- Fixes test failures introduced on `v1.18.0`

## 1.18.0.post1 (2022-09-06)

AEA:
- Reverts a problematic package loading logic introduced in `1.18.0`

Tests:
- Fixes flaky tests

Chores:
- Restructures CI to avoid environment cross-effects between the package and framework tests

## 1.18.0 (2022-09-04)

AEA:
- Fixes protocol header string regex.
- Adds `FIELDS_WITH_NESTED_FIELDS` and `NESTED_FIELDS_ALLOWED_TO_UPDATE` in the base config class.
- Introduces `aea test` command group:
  - `aea test item_type public_id`: Run all tests of the AEA package specified by `item_type` and `public_id`
  - `aea test by-path package_dir`: Run all the tests of the AEA package located at `package_dir`
  - `aea test packages`: Runs all tests in the `packages` (local registry) folder.
  - `aea test`: Runs tests in the `tests` folder, if present in the agent folder.

Tests:
- Ports tests for the following packages into their respective package folders
  - `packages/valory/protocols/acn`
  - `packages/valory/protocols/tendermint`
  - `packages/valory/connections/p2p_libp2p/libp2p_node/dht/dhttests`
  - `packages/open_aea/protocols/signing`
  - `packages/fetchai/skills/generic_seller`
  - `packages/fetchai/skills/http_echo`
  - `packages/fetchai/skills/echo`
  - `packages/fetchai/skills/erc1155_client`
  - `packages/fetchai/skills/gym`
  - `packages/fetchai/skills/erc1155_deploy`
  - `packages/fetchai/skills/generic_buyer`
  - `packages/fetchai/protocols/http`
  - `packages/fetchai/protocols/fipa`
  - `packages/fetchai/protocols/default`
  - `packages/fetchai/protocols/state_update`
  - `packages/fetchai/protocols/ledger_api`
  - `packages/fetchai/protocols/oef_search`
  - `packages/fetchai/protocols/contract_api`
  - `packages/fetchai/protocols/gym`
  - `packages/fetchai/protocols/tac`
  - `packages/fetchai/connections/ledger`
  - `packages/fetchai/connections/http_server`
  - `packages/fetchai/connections/local`
  - `packages/fetchai/connections/stub`
  - `packages/fetchai/connections/gym`
  - `packages/fetchai/connections/http_client`
  - `packages/fetchai/contracts/erc1155`

## 1.17.0 (2022-08-26)

AEA:
- Updates the deploy image Dockerfile to use Python 3.10
- Updates the deploy image Dockerfile to utilize remote registry when fetching components
- Improves handling for variables with potential none values

Chore:
- Bumps `mistune` to a secure version
- Bumps `protobuf` dependencies to address `dependabot` security warning
- Improves command regex on `scripts/check_doc_ipfs_hashes.py`
- Updates `tox` definitions and `Makefile` targets to align with the latest changes

## 1.16.0 (2022-08-18)

AEA:
- Adds schema validation for global CLI config file
- Improves the dependency resolver
- Provides more useful error messages when circular package dependencies are present
- Adds check to make sure all the packages referenced in an AEA package's `config.yaml` are being used as imports in the code, and vice versa that all imported packages are reference in the `config.yaml`
- Adds check to make sure all the packages in an AEA project are listed in the `aea-config.yaml`
- Fixes a bug related to async function call on `TCPSocketProtocol`
- Updates transaction building to handle gas estimation properly
- Update `ContractConfig` class to include contract dependencies in the dependency list

Docs:
- Adds missing command on the `http-echo-demo.md` doc.

Chore:
- Add the gitleaks scan job

## 1.15.0 (2022-08-01)

AEA:
- Updates the protocol generator to use `protocol generator version` as a header rather than using framework version

Chore:
- Cleans up remnants of py3.6
- Updated the release process
- Adds skaffold profiles for releases

## 1.14.0 (2022-07-29)

AEA:
- Adds property to determine if skill is abstract in context
- Fixes ACN process termination
- Refactors ACN tests and adds auto multiplex
- Randomizes libp2p test directories
- Resolves an SSL issue

Chore:
- Updates the consistency-check script to verify that packages have been pushed to IPFS

## 1.13.0 (2022-07-14)

AEA:
- Add test to check package hash on signing protocol constant
- Adds support for CID v1 IPFS hashes

Plugins:
- Updates the `IPFSDaemon` to perform ipfs installation check only when initialised locally.

Packages:
- Upgrades certificate request dates on connection components
- Adds extra logging on internode communication

Docs:
- Adds a FAQ section

## 1.12.0 (2022-07-06)

AEA:
- Updated the default IPFS node multiaddr to the production one
- Fixes CSV io issues on windows
- Makes `publish` command patchable for `open-autonomy`

Plugins:
- Introduces the `raise_on_retry` parameter to the ledgers.

Docs:
- Updates the default font family
- Updates documentation to use IPFS hashes to work with the components

Chore:
- Fixes resolution issues for `packaging` dependency
- Introduces script to check IPFS hash consistency in the documentation

## 1.11.0 (2022-06-22)

AEA:
- Makes `aea publish`, `aea fetch`, `aea push-all` commands patchable to support service packages on `open-autonomy`

Plugins:
- Adds `Proof Of Authority` chain support on ethereum plugin
- Adds gas pricing mechanism for `Polygon` chain on ethereum plugin

Docs:
- Updates docs to use IPFS hashes to work with the packages
- Updates images are in .SVG

Chores:
- Updates the release guide
- Updates Dockerfiles to use `Python 3.10`
- Adds skaffold config to build and tag images

## 1.10.0 (2022-06-09)

AEA:
- Makes config loader patchable
- Adds support for Python 3.10 and removes support for Python 3.6
- Enables fingerprinting for files in `Agent` components
- Adds support for specifying vendors when generating hashes
- Enables the usage of environment variables on `aea config` command

Plugins:
- Introduces benchmark CLI plugin

Docs:
- Add docs for benchmark CLI plugin

Chore:
- Pins correct versions on CI workflow
- Bumps `pywin32` version to `304`
- Bumps `black` and `click` to stable versions
- Separates tox environments for python{3.7, 3.8, 3.9} and Python3.10

## 1.9.0 (2022-05-25)

AEA:
- Introduces `check-packages` command to check package integrity
- Introduces a new component type `service`
- Makes dialogues accessible via their respective handlers
- Fixes default remote registry setting bug
- Introduces `push-all` command to publish all available packages to a specific registry
- Updates `aea hash all` command to extend public ids when hashing

Docs:
- Adds docs on IPFS registry usage

Chores:
- Updates `check_package_versions_in_docs.py` to use new PublicId format


## 1.8.0 (2022-05-12)

AEA:
- Extends the `run` command to print all available addresses at the AEA start up.
- Introduces support for usage of hashes as a part of the `PublicId`
- Adds support for IPFS based registry
- Introduces dialogue cleanup
- Adds support for removing the temporal `None` values in the dialogue label
- Updated the profiler to
  - Removing the unwanted variables in profiling
  - Set counters also in the destructor
  - Only iterate the gc one
  - Use types blacklist
  - Get info from all objects
- Adds support for memray in the profiler
- Ports the `generate_all_protocols.py` and `generate_ipfs_hashes.py` to `aea.cli` as a command line tools.
- Adds support for the usage of environment variables in `issue-certificates` command.

Pluging:
-  Updates IPFS cli plugin tool to support remote registry and extended `PublicId`

Packages:
- Updated `tendermint/protocol` for config sharing

Chores:
- Adds support for IPFS in CI for windows based environments
- Profile parser checks for non empty data before plotting
- The paths to download the packages folder with svn are now pointing to the version tag rather than main.
- Adds the missing search plugin for mkdocs.
- Adds new functionality to the log parser to add an extra plot with common objects in the garbage collector.

## 1.7.0 (2022-04-15)

AEA:
- List all available packages at the AEA start up.
- Updates profiler module to use tracemalloc.
- Fixes dialogue cleanup.

Plugins:
- Fixes repricing bug on ethereum plugin.
- Adds support for lazy imports on cosmos plugin.

Packages:
- Adds protocol package for tendermint.

Docs:
- Adds docs for newly introduced ACN modules and packages.


## 1.6.0 (2022-03-17)

AEA:
- Adds support for packages hashing with `IPFSHashOnly` from `aea.helpers.ipfs.base`
- Updates the `aea run` command to print hash table for available packages in an agent project

Plugins:
- Makes error raising optional when sending transactions and adds error logging for the same

Docs:
- Adds documentation for the newly introduced profiling script
- Removes reference to `docs.fetch.ai`

Chores:
- Adds a script to analyze and visualize profiling data from agent runs
- Updates authors list


## 1.5.0 (2022-02-26)

AEA:
- Adds in null equivalents so that environment variables can default to a none value
- Adds support for remote IPFS registry usage in CLI tool
- Adds support to show IPFS hashes of each component yaml at start of `aea run`

Plugins:
- Adds support for remote IPFS registry usage in IPFS plugin
- Fixes gas price repricing strategy in ethereum ledger plugin

Packages:
- Ports `acn` packages from fetchai repo
- Bumps protobuf compiler version and updates protocols

Docs:
- Adds demo of http connections and skills
- Adds demo of environment variable usage
- Adds miscellaneous updates to documentation based on developer feedback

Chores:
- Updates copyright script to support all patterns
- Simplifies Dockerfiles and removes unneeded dependencies


## Plugins patch (2022-01-27)

Plugins:
- Bumps `open-aea-ethereum-ledger` to `1.4.1` after fixing a bug in the log retrieval logic.

## 1.4.0 (2022-01-26)

AEA:
- Exposes agent data directory on skill context.
- Adds support for environment variables loading from aea-config files.
- Extends contract base class to support new plugin functionality.

Plugins:
- Adds support for transaction preparation and log retrieval into the ethereum plugin.
- Adds support for retrieving the revert reason when transaction is not verified in ethereum plugin.

Docs:
- Simplifies documentation further and updates with latest features

## Plugins patch (2022-01-15)

Plugins:
- Bumps `open-aea-ethereum-ledger` to `1.3.2` after adding tip increase logic

## Plugins patch (2022-01-05)

Plugins:
- Fixes dynamic gas pricing on open-aea-ethereum
- Improves daemon availability check in `IPFSDaemon` on `open-aea-cli-ipfs`
- Bumps `open-aea-cli-ipfs` and open-aea-ethereum-ledger to `1.3.1`

Docs:
- Removes reference to fetch.ai.

## 1.3.0 (2021-12-31)

AEA:
- Adds support to scaffold packages outside an AEA project
- Adds support for IPFS package hashing and IPFS based registry.
- Allows contracts to depend on other contracts.

Plugins:
- Adds support for EIP1559 based gas estimation strategy on aea-ledger-ethereum.
- Adds support for package hashing and local IPFS registry on `aea-cli-ipfs`.
- Bumps `aea-ledger-ethereum` and `aea-cli-ipfs` to `1.3.0`.

Docs:
- Applies new styling
- Simplifies documentation and updates with latest features


## 1.2.0 (2021-11-21)

AEA:
- Adds type hint for dialogue valid replies in protocol generator
- Adds generator fixes to pass darglint checks
- Adds various test fixes and fixes on MAM
- Allows additional entropy to be passed to key generation in plugins (including. via CLI)
- Fixes an issue with message key-value setter
- Fixes an issue with improper termination of subprocesses in the test tools
- Fixes typing issues
- Miscellaneous minor fixes

Plugins:
- Updates aea-ledger-ethereum for EIP1159 compatibility
- Bumps aea-ledger-ethereum dependencies

Packages:
- Miscellaneous minor fixes

Docs:
- Updates API documentation

Chores:
- Enables darglint for protocols

## 1.1.0 (2021-10-31)

AEA:
- Forks 1.1.0 of legacy AEA with the aim of maintaining backwards compatibility where possible
- Removes GOP decision maker handler to reduce dependencies
- Removes hard-coded registry API URL
- Changes default ledger to ethereum
- Removes dependency on fetchai packages
- Removes interact command

Plugins:
- Forks plugins, unfortunately cannot maintain plugin support for legacy aea plugins due to their dependency on legacy aea
- Fixes typing issues

Packages:
- Removes most fetchai packages apart from those currently used in tests
- Adds `open_aea/signing:1.0.0` protocol

Docs:
- Removes most demos

Chores:
- Makes all necessary changes to move to `open-aea`


# Release History - legacy AEA

## 1.1.0 (2021-10-13)

AEA:
- Adds public keys to agent identity and skill context
- Adds contract test tool
- Adds multiprocess support for task manager
- Adds multiprocess backed support to `MultiAgentManager`
- Adds support for excluding connection on `aea run`
- Adds support for adding a key that is being generated (`—add-key` option for `generate-key` command)
- Adds check for dependencies to be present in registry on a package push
- Makes more efficient installing of project dependencies on `aea install`
- Adds dependency conflict detection on `aea install`
- Improves pip install error details on `aea install`
- Adds validation of `aea_version` when loading configuration
- Adds a check for consistency of package versions in `MultiAgent Manager`
- Adds better error reporting for aea registry requests
- Fixes IPFS hash calculation for large files
- Fixes protobuf dictionary serializer's uncovered cases and makes it deterministic
- Fixes scaffolding of error and decision maker handlers
- Fixes pywin32 problem when checking dependency
- Improves existing testing tools

Benchmarks:
- Adds agents construction and decision maker benchmark cases

Plugins:
- Upgrades fetchai plugin to use CosmPy instead of CLI calls
- Upgrades cosmos plugin to use CosmPy instead of CLI calls
- Upgrades fetchai plugin to use StargateWorld
- Upgrades cosmos plugin to Stargate
- Sets the correct maximum Gas for fetch.ai plugin

Packages:
- Adds support for Tac to be run against fetchai StargateWorld test-net
- Adds more informative error messages to CosmWasm ERC1155 contract
- Adds support for atomic swap to CosmWasm ERC1155 contract
- Adds an ACN protocol that formalises ACN communication using the framework's protocol language
- Adds `cosm_trade` protocol for preparing atomic swap transactions for cosmos-based networks
- Adds https support for server connection
- Adds parametrising of http(s) in soef connection
- Fixes http server content length response problem
- Updates Oracle contract to 0.14
- Implements the full ACN spec throughout the ACN packages
- Implements correct error code usage in ACN packages
- Refactors ACN packages to unify reused logic
- Adds tests for gym skills
- Adds dockerised SOEF
- Adds libp2p mailbox connection
- Multiple fixes and stability improvements for `p2p_libp2p` connections

Docs:
- Adds ACN internals documentation
- Fixes tutorial for HTTP connection and skill
- Multiple additional docs updates
- Adds more context to private keys docs

Chores:
- Various development features bumped
- Bumped Mermaid-JS, for UML diagrams to major version 8
- Applies darglint to the code

Examples:
- Adds a unified script for running various versions/modes of Tac

## 1.0.2 (2021-06-03)

AEA:
- Bounds versions of dependencies by next major
- Fixes incoherent warning message during package loading
- Improves various incomprehensible error messages
- Adds debug log message when abstract components are loaded
- Adds tests and minor fixes for password related CLI commands and password usage in `MultiAgentManager`
- Adds default error handler in `MultiAgentManager`
- Ensures private key checks are performed after override setting in `MultiAgentManager`
- Applies docstring fixes suggested by `darglint`
- Fixes `aea push --local` command to use correct author
- Fixes `aea get-multiaddress` command to consider overrides

Plugins:
- Bounds versions of dependencies by next major

Packages:
- Updates `p2p_libp2p` connection to use TCP sockets for all platforms
- Multiple fixes on `libp2p_node` including better error handling and stream creation
- Adds sending queue in `p2p_libp2p` connection to handle sending failures
- Adds unit tests for `libp2p_node` utils
- Adds additional tests for `p2p_libp2p` connection
- Fixes location bug in AW5
- Improves connection check handling in soef connection
- Updates oracle and oracle client contracts for better access control
- Adds skill tests for `erc1155` skills
- Adds skill tests for `aries` skills
- Fixes minor bug in ML skills
- Multiple additional tests and test stability fixes

Docs:
- Extends demo docs to include guidance of usage in AEA Manager
- Adds short guide on Kubernetes deployment
- Multiple additional docs updates

Chores:
- Adds `--no-bump` option to `generate_all_protocols` script
- Adds script to detect if aea or plugins need bumping
- Bumps various development dependencies
- Adds Golang and GCC in Windows install script
- Adds `darglint` to CI

Examples:
- Updates TAC deployment scripts and images

## - (2021-05-05)

Packages:
- Adds node watcher to `p2p_libp2p` connection
- Improves logging and error handling in `p2p_libp2p` node
- Addresses potential overflow issue in `p2p_libp2p` node
- Fixes concurrency issue in `p2p_libp2p` node which could lead to wrongly ordered envelopes
- Improves logging in TAC skills
- Fixes Exception handling in connect/disconnect calls of soef connection
- Extends public DHT tests to include staging
- Adds tests for envelope ordering for all routes
- Multiple additional tests and test stability fixes

## 1.0.1 (2021-04-30)

AEA:
- Fixes wheels issue for Windows
- Fixes password propagation for certificate issuance in `MultiAgentManager`
- Improves error message when local registry not present

AEALite:
- Adds full protocol support
- Adds end-to-end interaction example with AEA (based on `fetchai/fipa` protocol)
- Multiple additional tests and test stability fixes

Packages:
- Fixes multiple bugs in `ERC1155` version of TAC
- Refactors p2p connections for better separation of concerns and maintainability
- Integrates aggregation with simple oracle skill
- Ensures genus and classifications are used in all skills using SOEF
- Extends SOEF connection to implement `oef_search` protocol fully
- Handles SOEF failures in skills
- Adds simple aggregation skills including tests and docs
- Adds tests for registration AW agents
- Adds tests for reconnection logic in p2p connections
- Multiple additional tests and test stability fixes

Docs:
- Extends car park demo with usage guide for AEA manager
- Multiple additional docs updates

Examples:
- Adds TAC deployment example

## 1.0.0 (2021-03-30)

- Improves contributor guide
- Enables additional pylint checks
- Adds configuration support on exception behaviour in ledger plugins
- Improves exception handling in `aea-ledger-cosmos` and `aea-ledger-fetchai` plugins
- Improves quickstart guide
- Fixes multiple flaky tests
- Fixes various outdated metadata
- Resolves a CVE (CVE-2021-27291) affecting development dependencies
- Adds end-to-end support and tests for simple oracle on Ethereum and Fetch.ai ledgers
- Multiple minor fixes
- Multiple additional tests and test stability fixes

## 1.0.0rc2 (2021-03-28)

- Extends CLI command `aea fingerprint` to allow fingerprinting of agents
- Improves `deploy-image` Docker example
- Fixes a bug in `MultiAgentManager` which leaves it in an unclean state when project adding fails
- Fixes dependencies of `aea-legder-fetchai`
- Improves guide on HTTP client and server connection
- Removes pickle library usage in the ML skills
- Adds various consistency checks in configurations
- Replaces usage of `pyaes` with `pycryptodome` in plugins
- Changes generator to avoid non-idiomatic usage of type checks
- Multiple minor fixes
- Multiple additional tests and test stability fixes

## 1.0.0rc1 (2021-03-24)

- Adds CLI command `aea get-public-key`
- Adds support for encrypting private keys at rest
- Adds support for configuration of decision maker and error handler instances from `aea-config.yaml`
- Adds support for explicitly marking behaviours and handlers as dynamic
- Adds support for fetchai ledger to oracle skills and contract
- Adds timeout support on multiplexer calls to connections
- Fixes bug in regex constrained string for id validation
- Adds docs section on how AEAs satisfy 12-factor methodology
- Adds docs section on tradeoffs made in `v1`
- Adds example for logs streaming to browser
- Removes multiple temporary hacks for backwards compatibility
- Adds skills tests coverage for `echo` and `http_echo` skills
- Adds `required_ledgers` field in `aea-config.yaml`
- Removes `registry_path` field in `aea-config.yaml`
- Adds `message_format` field to cert requests
- Removes requirement for exact protocol buffers compiler, prints version used in protocols
- Adds support to configure task manager mode via `aea-config.yaml`
- Fixed spelling across docstrings in code base
- Multiple minor fixes
- Multiple docs updates to fix order of CLI commands with respect to installing dependencies
- Multiple additional tests and test stability fixes


## 0.11.2 (2021-03-17)

- Fixes a package import issue
- Fixes an issue where `AgentLoop` did not teardown properly under certain conditions
- Fixes a bug in testing tools
- Fixes a bug where plugins are not loaded after installation in `MultiAgentManager`
- Adds unit tests for weather, thermometer and car park skills
- Fixes a missing dependency in Windows
- Improves SOEF connections' error handling
- Fixes bug in ML skills and adds unit tests
- Adds script to bump plugin versions
- Adds gas price strategy support in `aea-ledger-ethereum` plugin
- Adds CLI plugin for IPFS interactions (add/get)
- Adds support for CLI plugins to framework
- Multiple additional tests and test stability fixes

## 0.11.1 (2021-03-06)

- Bumps `aiohttp` to `>=3.7.4` to address a CVE affecting `http_server`, `http_client` and `webhook` connections
- Adds script to ensure Pipfile and `tox.ini` dependencies align
- Enforces presence of `protocol_specification_id` in `protocol.yaml`
- Adds support for installation of agent-level PyPI dependencies in `AEABuilder`
- Sets default ledger plugin during `aea create`
- Updates various agent packages with missing ledger plugin dependencies
- Bumps various development dependencies
- Renames `coin_price` skill to `advanced_data_request` skill and generalises it
- Updates `fetch_beacon` skill to use `ledger` connection
- Multiple docs updates to fix order of CLI commands with respect to installing dependencies
- Multiple additional tests and test stability fixes

## 0.11.0 (2021-03-04)

- Adds slots usage in frequently used framework objects, including `Dialogue`
- Fixes a bug in `aea upgrade` command where eject prompt was not offered
- Refactors skill component configurations to allow for skill components (`Handler`, `Behaviour`, `Model`) to be placed anywhere in a skill
- Extends skill component configuration to specify optional `file_path` field
- Extracts all ledger specific functionality in plugins
- Improves error logging in http server connection
- Updates `Development - Use case` documentation
- Adds restart support to `p2p_libp2p` connection on read/write failure
- Adds validation of default routing and default connection configuration
- Refactors and significantly simplifies routing between components
- Limits usage of `EnvelopeContext`
- Adds support for new CosmWasm message format in ledger plugins
- Adds project loading checks and optional auto removal in `MultiAgentManager`
- Adds support for reuse of threaded `Multiplexer`
- Fixes bug in TAC which caused agents to make suboptimal trades
- Adds support to specify dependencies on `aea-config.yaml` level
- Improves release scripts
- Adds lightweight Golang AEALite library
- Adds support for skill-to-skill messages
- Removes CLI GUI
- Multiple docs updates based on user feedback
- Multiple additional tests and test stability fixes

## 0.10.1 (2021-02-21)

- Changes default URL of `soef` connection to https
- Improves teardown, retry and edge case handling of `p2p_libp2p` and `p2p_libp2p_client` connections
- Adds auto-generation of private keys to `MultiAgentManager`
- Exposes address getters on `MultiAgentManager`
- Improves package validation error messages
- Simplifies default `DecisionMakerHandler` and extracts advanced features in separate class
- Fixes task manager and its usage in skills
- Adds support for multi-language protocol stub generation
- Adds `data_dir` usage to additional connections
- Adds IO helper function for consistent file usage
- Extends release helper scripts
- Removes stub connection as default connection
- Adds support for AEA usage without connections
- Multiple docs updates based on user feedback
- Multiple additional tests and test stability fixes

## 0.10.0 (2021-02-11)

- Removes error skill from agents which do not need it
- Adds support for relay connection reconnect in ACN
- Multiplexer refactoring for easier connection handling
- Fix `erc1155` skill tests on CosmWasm chains
- Extends docs on usage of CosmWasm chains
- Adds version compatibility in `aea upgrade` command
- Introduces protocol specification id and related changes for better interoperability
- Adds synchronous connection base class
- Exposes state setter in connection base class
- Adds Yoti protocol and connection
- Multiple updates to generic buyer
- Adds additional automation to `MultiAgentManager`, including automated handling of certs, keys and other package specific data
- Multiple test improvements and fixes
- Add stricter typing and checks
- Fixes to MacOS install script
- Adds threading patch for web3
- Multiple docs updates based on user feedback
- Multiple additional tests and test stability fixes

## 0.9.2 (2021-01-21)

- Fixes `CosmosApi`, in particular for CosmWasm
- Fixes error output from `add-key` CLI command
- Update `aea_version` in non-vendor packages when calling `upgrade` CLI command
- Extend `upgrade` command to fetch newer agent if present on registry
- Add support for mixed fetch mode in `MultiAgentManager`
- Fixes logging overrides in `MultiAgentManager`
- Configuration overrides now properly handle `None` values
- Multiple docs updates based on user feedback
- Multiple additional tests and test stability fixes

## 0.9.1 (2021-01-14)

- Fixes multiple issues with `MultiAgentManager` including overrides not being correctly applied
- Restructures docs navigation
- Updates `MultiAgentManager` documentation
- Extends functionality of `aea upgrade` command to cover more cases
- Fixes a bug in the `aea upgrade` command which prevented upgrading across version minors
- Fixes a bug in `aea fetch` where the console output was inconsistent with the actual error
- Fixes scaffold connection constructor
- Multiple additional tests to improve stability
- Multiple docs updates based on user feedback
- Multiple additional tests and test stability fixes

## 0.9.0 (2021-01-06)

- Adds multiple bug fixes on `MultiAgentManager`
- Adds `AgentConfigManager` for better programmatic configuration management
- Fixes auto-filling of `aea_version` field in AEA configuration
- Adds tests for confirmation skills AW2/3
- Extends `MultiAgentManager` to support proper configuration overriding
- Fixes ML skills demo
- Fixes environment variable resolution in configuration files
- Adds support to fingerprint packages by providing a path
- Adds `local-registry-sync` CLI command to sync local and remote registry
- Adds support to push vendorised packages to local registry
- Adds missing tests for code in documentation
- Adds prompt in `scaffold protocol` CLI command to hint at protocol generator
- Adds `issue-certificates` CLI command for Proof of Representation
- Adds `cert_requests` support in connections for Proof of Representation
- Adds support for Proof of Representation in ACN (`p2p_libp2p*` connections)
- Adds automated spell checking for all `.md` files and makes related fixes
- Multiple additional tests to improve stability
- Multiple docs updates based on user feedback
- Multiple additional tests and test stability fixes

## 0.8.0 (2020-12-17)

- Adds support for protocol dialogue rules validation
- Fixes URL forwarding in http server connection
- Revises protocols to correctly define terminal states
- Adds a build command
- Adds build command support for libp2p connection
- Adds multiple fixes to libp2p connection
- Adds prometheus connection and protocol
- Adds tests for confirmation AW1 skill
- Adds oracle demo docs
- Replaces pickle with protobuf in all protocols
- Refactors OEF models to account for semantic irregularities
- Updates docs for demos relying on Ganache
- Adds generic storage support
- Adds configurable dialogue offloading
- Fixes transaction generation on confirmation bugs
- Fixes transaction processing order in all buyer skills
- Extends ledger API protocol to query ledger state
- Adds remove-key command in CLI
- Multiple tac stability fixes
- Adds support for configurable error handler
- Multiple additional tests to improve stability
- Multiple docs updates based on user feedback
- Multiple additional tests and test stability fixes

## 0.7.5 (2020-11-25)

- Adds AW3 AEAs
- Adds basic oracle skills and contracts
- Replaces usage of Ropsten testnet with Ganache in packages
- Fixes multiplexer setup when used outside AEA
- Improves help command output of CLI
- Adds integration tests for simple skills
- Adds version check on CLI push
- Adds integration tests for tac negotiation skills
- Multiple docs updates based on user feedback
- Multiple additional tests and test stability fixes

## 0.7.4 (2020-11-18)

- Replaces error skill handler usage with built in handler
- Extends `MultiAgentManager` to support persistence between runs
- Replaces usage of Ropsten testnet with Ganache
- Adds support for symlink creation during scaffold and add
- Makes contract interface loading extensible
- Adds support for PEP561
- Adds integration tests for launcher command
- Adds support for storage of unique page address in SOEF
- Fixes publish command bug on Windows
- Refactors constants usage throughout
- Adds support for profiling on `aea run`
- Multiple stability improvements to core asynchronous modules
- Multiple docs updates based on user feedback
- Multiple additional tests and test stability fixes

## 0.7.3 (2020-11-12)

- Extends AW AEAs
- Fixes overwriting of private key files on startup
- Fixes behaviour bugs
- Adds tests for tac participation skill
- Adds development setup guide
- Improves exception logging for easier debugging
- Fixes mixed mode in upgrade command
- Reduces verbosity of some CLI commands
- Multiple docs updates based on user feedback
- Multiple additional tests and test stability fixes

## 0.7.2 (2020-11-09)

- Fixes some AW2 AEAs
- Improves generic buyer AEA
- Fixes a few backwards incompatibilities on CLI (upgrade, add, fetch) introduced in 0.7.1
- Fixes geolocation in some tests
- Multiple docs updates based on user feedback
- Multiple additional tests and test stability fixes

## 0.7.1 (2020-11-05)

- Adds two AEAs for Agent World 2
- Refactors dialogue class to optimize for memory
- Refactors message class to optimize for memory
- Adds mixed registry mode to CLI and makes it default
- Extends upgrade command to automatically update references of non-vendor packages
- Adds deployment scripts for `kubernetes`
- Extends configuration set/get support for lists and dictionaries
- Fixes location specifiers throughout code base
- Imposes limits on length of user defined strings like author and package name
- Relaxes version specifiers for some dependencies
- Adds support for skills to reference connections as dependencies
- Makes ledger and currency ids configurable
- Adds test coverage for the tac control skills
- Improves quick start guidance and adds docker images
- Multiple docs updates based on user feedback
- Multiple additional tests and test stability fixes

## 0.7.0 (2020-10-22)

- Adds two AEAs for Agent World 1
- Adds support to apply configuration overrides to CLI calls transfer and get-wealth
- Adds install scripts to install AEA and dependencies on all major OS (Windows, MacOs, Ubuntu)
- Adds developer mailing list opt-in step to CLI `init`
- Modifies custom configurations in `aea-config` to use public id
- Adds all non-optional fields in `aea-config` by default
- Fixes upgrade command to properly handle dependencies of non-vendor packages
- Remove all distributed packages and add them to registry
- Adds public ids to all skill `init` files and makes it a requirement
- Adds primitive benchmarks for libp2p node
- Adds Prometheus monitoring to libp2p node
- Makes body a private attribute in message base class
- Renames `bodyy` to `body` in HTTP protocol
- Adds support for abstract connections
- Refactors protobuf schemas for protocols to avoid code duplication
- Multiple docs updates based on user feedback
- Multiple additional tests and test stability fixes

## 0.6.3 (2020-10-16)

- Adds skill testing tools and documentation
- Adds human readable log output regarding configuration for `p2p_libp2p` connection
- Adds support to install PyPI dependencies from `AEABuilder` and `MultiAgentManager`
- Adds CLI upgrade command to upgrade entire agent project and components
- Extends CLI remove command to include option to remove dependencies
- Extends SOEF chain identifier support
- Adds CLI transfer command to transfer wealth
- Adds integration tests for skills generic buyer and seller using skill testing tool
- Adds validation of component configurations when setting component configuration overrides
- Multiple refactoring of internal configuration and helper objects and methods
- Fix a bug on CLI push local with latest rather than version specifier
- Adds `README.md` files in all agent projects
- Adds agent name in logger paths of runnable objects
- Fixes tac skills to work with and without ERC1155 contract
- Adds additional validations on message flow
- Multiple docs updates based on user feedback
- Multiple additional tests and test stability fixes

## 0.6.2 (2020-10-01)

- Adds `MultiAgentManager` to manage multiple agent projects programmatically
- Improves SOEF connection reliability on unregister
- Extends configuration classes to handle overriding configurations programmatically
- Improves configuration schemas and validations
- Fixes Multiplexer termination errors
- Allow finer-grained override of component configurations from `aea-config`
- Fixes tac controller to work with Ethereum contracts again
- Fixes multiple deploy and development scripts
- Introduces `isort` to development dependencies for automated import sorting
- Adds reset password command to CLI
- Adds support for abbreviated public ids (latest) to CLI and configurations
- Adds additional documentation string linters for improved API documentation checks
- Multiple docs updates including additional explanations of ACN architecture
- Multiple additional tests and test stability fixes

## 0.6.1 (2020-09-17)

- Adds a standalone script to deploy an ACN node
- Adds filtering of out-dated addresses in DHT lookups
- Updates multiple developer scripts
- Increases code coverage of all protocols to 100%
- Fixes a disconnection issue of the multiplexer
- Extends soef connection to support additional registration commands and search responses
- Extends `oef_search` protocol to include success performative and agent info in search response
- Adds `README.md` files to all skills
- Adds configurable exception policy handling for multiplexer
- Fixes support for http headers in http server connection
- Adds additional consistency checks on addresses in dialogues
- Exposes decision maker address on skill context
- Adds comprehensive benchmark scripts
- Multiple docs updates including additional explanations of soef usage
- Multiple additional tests and test stability fixes

## 0.6.0 (2020-09-01)

- Makes `FetchAICrypto` default again
- Bumps `web3` dependencies
- Introduces support for arbitrary protocol handling by DM
- Removes custom fields in signing protocol
- Refactors and updates dialogue and dialogues models
- Moves dialogue module to protocols module
- Introduces `MultiplexerStatus` to collect aggregate connection status
- Moves Address types from mail to common
- Updates `FetchAICrypto` to work with Agentland
- Fixes circular dependencies in helpers and configurations
- Unifies contract loading with loading mechanism of other packages
- Adds get-multiaddress command to CLI
- Updates helpers scripts
- Introduces `MultiInbox` to unify internal message handling
- Adds additional linters (eradicate, more `pylint` options)
- Improves error reporting in libp2p connection
- Replaces all assert statements with proper exceptions
- Adds skill id to envelope context for improved routing
- Refactors IPC pipes
- Refactors core dependencies
- Adds support for multi-page agent configurations
- Adds type field to all package configurations
- Multiple docs updates including additional explanations of contracts usage
- Multiple additional tests and test stability fixes

## 0.5.4 (2020-08-13)

- Adds support for Windows in P2P connections
- Makes all tests Windows compatible
- Adds integration tests for P2P public DHT
- Modifies contract base class to make it cross-ledger compatible
- Changes dialogue reference nonce generation
- Fixes tac skills (non-contract versions)
- Fixes Aries identity skills
- Extends cosmos crypto API to support `cosmwasm`
- Adds full test coverage for framework and connection packages
- Multiple docs updates including automated link integrity checks
- Multiple additional tests and test stability fixes

## 0.5.3 (2020-08-05)

- Adds support for re-starting agent after stopping it
- Adds full test coverage for protocols generator
- Adds support for dynamically adding handlers
- Improves P2P connection startup reliability
- Addresses P2P connection race condition with long running processes
- Adds connection states in connections
- Applies consistent logger usage throughout
- Adds key rotation and randomised locations for integration tests
- Adds request delays in SOEF connection to avoid request limits
- Exposes runtime states on agent and removes agent liveness object
- Adds readme files in protocols and connections
- Improves edge case handling in dialogue models
- Adds support for `cosmwasm` message signing
- Adds test coverage for test tools
- Adds dialogues models in all connections where required
- Transitions ERC1155 skills and simple search to SOEF and P2P
- Adds full test coverage for skills modules
- Multiple docs updates
- Multiple additional tests and test stability fixes

## 0.5.2 (2020-07-21)

- Transitions demos to agent-land test network, P2P and SOEF connections
- Adds full test coverage for helpers modules
- Adds full test coverage for core modules
- Adds CLI functionality to upload `README.md` files with packages
- Adds full test coverage for registries module
- Multiple docs updates
- Multiple additional tests and test stability fixes

## 0.5.1 (2020-07-14)

- Adds support for agent name being appended to all log statements
- Adds redesigned GUI
- Extends dialogue API for easier dialogue maintenance
- Resolves blocking logic in OEF and gym connections
- Adds full test coverage on AEA modules configurations, components and mail
- Adds ping background task for soef connection
- Adds full test coverage for all connection packages
- Multiple docs updates
- Multiple additional tests and test stability fixes

## 0.5.0 (2020-07-06)

- Refactors all connections to be fully asynchronous friendly
- Adds almost complete test coverage on connections
- Adds complete test coverage for CLI and CLI GUI
- Fixes CLI GUI functionality and removes OEF node dependency
- Refactors P2P go code and increases test coverage
- Refactors protocol generator for higher code reusability
- Adds option for skills to depend on other skills
- Adds abstract skills option
- Adds ledger connections to execute ledger related queries and transactions, removes ledger APIs from skill context
- Adds contracts registry and removes them from skill context
- Rewrites all skills to be fully message based
- Replaces internal messages with protocols (signing and state update)
- Multiple refactoring to improve `pylint` adherence
- Multiple docs updates
- Multiple test stability fixes

## 0.4.1 (2020-06-15)

- Updates component package module loading for skill and connection
- Unifies component package loading across package types
- Adds connections registry to resources
- Upgrades CLI commands for easier programmatic usage
- Adds `AEARunner` and `AEALauncher` for programmatic launch of multiple agents
- Refactors `AEABuilder` to support reentrancy and resetting
- Fixes tac packages to work with ERC1155 contract
- Multiple refactoring to improve public and private access patterns
- Multiple docs updates
- Multiple test stability fixes

## 0.4.0 (2020-06-08)

- Updates message handling in skills
- Replaces serialiser implementation; all serialization is now performed framework side
- Updates all skills for compatibility with new message handling
- Updates all protocols and protocol generator
- Updates package loading mechanism
- Adds `p2p_libp2p_client` connection
- Fixes CLI bugs and refactors CLI
- Adds eject command to CLI
- Exposes identity and connection cryptos to all connections
- Updates connection loading mechanism
- Updates all connections for compatibility with new loading mechanism
- Extracts multiplexer into its own module
- Implements list all CLI command
- Updates wallet to split into several crypto stores
- Refactors component registry and resources
- Extends soef connection functionality
- Implements `AEABuilder` reentrancy
- Updates `p2p_libp2p` connection
- Adds support for configurable runtime
- Refactors documentation
- Multiple docs updates
- Multiple test stability fixes

## 0.3.3 (2020-05-24)

- Adds option to pass ledger APIs to `AEABuilder`
- Refactors decision maker: separates interface and implementation; adds loading mechanisms so framework users can provide their own implementation
- Adds asynchronous and synchronous agent loop implementations; agent can be run in both `sync` and `async` mode
- Completes transition to atomic CLI commands (fetch, generate, scaffold)
- Refactors dialogue API: adds much simplified API; updates generator accordingly; updates skills
- Adds support for crypto module extensions: framework users can register their own crypto module
- Adds crypto module and ledger support for cosmos
- Adds simple-oef (soef) connection
- Adds `p2p_libp2p` connection for true P2P connectivity
- Adds PyPI dependency consistency checks for AEA projects
- Refactors CLI for improved programmatic usage of components
- Adds skill exception handling policies and configuration options
- Adds comprehensive documentation of configuration files
- Multiple docs updates
- Multiple test stability fixes

## 0.3.2 (2020-05-07)

- Adds dialogue generation functionality to protocol generator
- Fixes add CLI commands to be atomic
- Adds Windows platform support
- Stability improvements to test pipeline
- Improves test coverage of CLI
- Implements missing doc tests
- Implements end-to-end tests for all skills
- Adds missing agent projects to registry
- Improves `AEABuilder` class for programmatic usage
- Exposes missing AEA configurations on agent configuration file
- Extends Aries demo
- Adds method to check stdout for test cases
- Adds code of conduct and security guidelines to repo
- Multiple docs updates
- Multiple additional unit tests
- Multiple additional minor fixes and changes

## 0.3.1 (2020-04-27)

- Adds `p2p_stub` connection
- Adds `p2p_noise` connection
- Adds webhook connection
- Upgrades error handling for error skill
- Fixes default timeout on main agent loop and provides setter in `AEABuilder`
- Adds multithreading support for launch command
- Provides support for keyword arguments to AEA constructor to be set on skill context
- Renames `ConfigurationType` with `PackageType` for consistency
- Provides a new `AEATestCase` class for improved testing
- Adds execution time limits for act/react calls
- TAC skills refactoring and contract integration
- Supports contract dependencies being added automatically
- Adds HTTP example skill
- Allows for skill inactivation during initialisation
- Improves error messages on skill loading errors
- Improves `README.md` files, particularly for PyPI
- Adds support for Location based queries and descriptions
- Refactors skills tests to use `AEATestCase`
- Adds fingerprint and scaffold CLI command for contract
- Adds multiple additional docs tests
- Makes task manager initialize pool lazily
- Multiple docs updates
- Multiple additional unit tests
- Multiple additional minor fixes and changes

## 0.3.0 (2020-04-02)

- Introduces IPFS based hashing of files to detect changes, ensure consistency and allow for content addressing
- Introduces `aea fingerprint` command to CLI
- Adds support for contract type packages which wrap smart contracts and their APIs
- Introduces `AEABuilder` class for much improved programmatic usage of the framework
- Moves protocol generator into alpha stage for light protocols
- Switches CLI to use remote registry by default
- Comprehensive documentation updates on new and existing features
- Additional demos to introduce the contracts functionality
- Protocol, Contract, Skill and Connection inherits from the same class, Component
- Improved APIs for Configuration classes
- All protocols now generated with protocol generator
- Multiple additional unit tests
- Multiple additional minor fixes and changes

## 0.2.4 (2020-03-25)

- Breaking change to all protocols as we transition to auto-generated protocols
- Fixes to protocol generator to move it to alpha status
- Updates to documentation on protocols and OEF search and communication nodes
- Improvements and fixes to AEA launch command
- Multiple docs updates and restructuring
- Multiple additional minor fixes and changes

## 0.2.3 (2020-03-19)

- Fixes stub connection file I/O
- Fixes OEF connection teardown
- Fixes CLI GUI subprocesses issues
- Adds support for URI based routing of envelopes
- Improves skill guide by adding a service provider agent
- Protocol generator bug fixes
- Add `aea_version` field to package YAML files for version management
- Multiple docs updates and restructuring
- Multiple additional minor fixes and changes

## 0.2.2 (2020-03-09)

- Fixes registry to only load registered packages
- Migrates default protocol to generator produced version
- Adds http connection and http protocol
- Adds CLI `init` command for easier setting of author
- Refactoring and behind the scenes improvements to CLI
- Multiple docs updates
- Protocol generator improvements and fixes
- Adds CLI launch command to launch multiple agents
- Increases test coverage for AEA package and tests package
- Make project comply with PEP 518
- Multiple additional minor fixes and changes

## 0.2.1 (2020-02-21)

- Add minimal `aea install`
- Updates finite state machine behaviour to use any simple behaviour in states
- Adds example of programmatic and CLI based AEAs interacting
- Exposes the logger on the skill context
- Adds serialization (encoding/decoding) support to protocol generator
- Adds additional docs and videos
- Introduces test coverage to all code in docs
- Increases test coverage for AEA package
- Multiple additional minor fixes and changes

## 0.2.0 (2020-02-07)

- Skills can now programmatically register behaviours
- Tasks are no longer a core component of the skill, the functor pattern is used
- Refactors the task manager
- Adds nonces to transaction data so transactions can be verified
- Adds documentation for the protocol generator
- Fixes several compatibility issues between CLI and registry
- Adds skills to connect a thermometer to an AEA
- Adds generic buyer and seller skills
- Adds much more documentation on AEA vs MVC frameworks, core components, new guides and more
- Removes the wallet from the agent constructor and moves it to the AEA constructor
- Allows behaviours to be initialized from a skill
- Adds multiple improvements to the protocol generator, including custom types and serialization
- Removes the default crypto object
- Replaces `SharedClass` with `Model` taxonomy for easier transition for web developers
- Adds bandit to CLI for security checks
- Makes private key paths in configurations a dictionary so values can be set from CLI
- Introduces Identity object
- Increases test coverage
- Multiple additional minor fixes and changes

## 0.1.17 (2020-01-27)

- Add programmatic mode flag to AEA
- Introduces vendorised project structure
- Adds further tests for decision maker
- Upgrades sign transaction function for Ethereum API proxy
- Adds black and bugbear to linters
- Applies public id usage throughout AEA business logic
- Adds guide on how to deploy an AEA on a raspberry pi
- Addresses multiple issues in the protocol generator
- Fixes `aea-config`
- Adds CLI commands to create wealth and get wealth and address
- Change default author and license
- Adds guide on agent vs AEAs
- Updates docs and improves guides
- Adds support for inactivating skills programmatically
- Makes decision maker run in separate thread
- Multiple additional minor fixes and changes

## 0.1.16 (2020-01-12)

- Completes tac skills implementation
- Adds default ledger field to agent configuration
- Converts ledger APIs to dictionary fields in agent configuration
- Introduces public ids to CLI and deprecate usage of package names only
- Adds local push and public commands to CLI
- Introduces ledger API abstract class
- Unifies import paths for static and dynamic imports
- Disambiguates import paths by introducing pattern of `packages.author.package_type_pluralized.package_name`
- Adds agent directory to packages with some samples
- Adds protocol generator and exposes on CLI
- Removes unused configuration fields
- Updates docs to align with recent changes
- Adds additional tests on CLI
- Multiple additional minor fixes and changes

## 0.1.15 (2019-12-19)

- Moves non-default packages from AEA to packages directory
- Supports get & set on package configurations
- Changes skill configuration resource types from lists to dictionaries
- Adds additional features to decision maker
- Refactors most protocols and improves their API
- Removes multiple unintended side-effects of the CLI
- Improves dependency referencing in configuration files
- Adds push and publish functionality to CLI
- Introduces simple and composite behaviours and applies them in skills
- Adds URI to envelopes
- Adds guide for programmatic assembly of an AEA
- Adds guide on agent-oriented development
- Multiple minor doc updates
- Adds additional tests
- Multiple additional minor fixes and changes

## 0.1.14 (2019-11-29)

- Removes dependency on OEF SDK's FIPA API
- Replaces dialogue id with dialogue references
- Improves CLI logging and list/search command output
- Introduces multiplexer and removes mailbox
- Adds much improved tac skills
- Adds support for CLI integration with registry
- Increases test coverage to 99%
- Introduces integration tests for skills and examples
- Adds support to run multiple connections from CLI
- Updates the docs and adds UML diagrams
- Multiple additional minor fixes and changes

## 0.1.13 (2019-11-08)

- Adds envelope serialiser
- Adds support for programmatically initializing an AEA
- Adds some tests for the GUI and other components
- Exposes connection status to skills
- Updates OEF connection to re-establish dropped connections
- Updates the car park agent
- Multiple additional minor fixes and changes

## 0.1.12 (2019-11-01)

- Adds TCP connection (server and client)
- Fixes some examples and docs
- Refactors crypto modules and adds additional tests
- Multiple additional minor fixes and changes

## 0.1.11 (2019-10-30)

- Adds Python 3.8 test coverage
- Adds almost complete test coverage on AEA package
- Adds filter concept for message routing
- Adds ledger integrations for Fetch.ai and Ethereum
- Adds car park examples and ledger examples
- Multiple additional minor fixes and changes

## 0.1.10 (2019-10-19)

- Compatibility fixes for Ubuntu and Windows platforms
- Multiple additional minor fixes and changes

## 0.1.9 (2019-10-18)

- Stability improvements
- Higher test coverage, including on Python 3.6
- Multiple additional minor fixes and changes

## 0.1.8 (2019-10-18)

- Multiple bug fixes and improvements to GUI of CLI
- Adds full test coverage on CLI
- Improves docs
- Multiple additional minor fixes and changes

## 0.1.7 (2019-10-14)

- Adds GUI to interact with CLI
- Adds new connection stub to read from/write to file
- Adds ledger entities (fetchai and Ethereum); creates wallet for ledger entities
- Adds more documentation and fixes old one
- Multiple additional minor fixes and changes

## 0.1.6 (2019-10-04)

- Adds several new skills
- Extended docs on framework and skills
- Introduces core framework components like decision maker and shared classes
- Multiple additional minor fixes and changes

## 0.1.5 (2019-09-26)

- Adds scaffolding command to the CLI tool
- Extended docs
- Increased test coverage
- Multiple additional minor fixes and changes


## 0.1.4 (2019-09-20)

- Adds CLI functionality to add connections
- Multiple additional minor fixes and changes

## 0.1.3 (2019-09-19)

- Adds Jenkins for CI
- Adds docker develop image
- Parses dependencies of connections/protocols/skills on the fly
- Adds validations of configuration files
- Adds first two working skills and fixes gym examples
- Adds docs
- Multiple additional minor fixes and changes

## 0.1.2 (2019-09-16)

- Adds AEA CLI tool.
- Adds AEA skills framework.
- Introduces static typing checks across AEA, using `Mypy`.
- Extends gym example

## 0.1.1 (2019-09-04)

- Provides examples and fixes.

## 0.1.0 (2019-08-21)

- Initial release of the package.
