diff --git a/poetry.lock b/poetry.lock index 9ccd375b..02f68d3b 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1,4 +1,4 @@ -# This file is automatically @generated by Poetry 1.8.3 and should not be changed by hand. +# This file is automatically @generated by Poetry 1.8.5 and should not be changed by hand. [[package]] name = "aioconsole" @@ -1487,7 +1487,6 @@ files = [ {file = "cryptography-44.0.0-cp37-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:761817a3377ef15ac23cd7834715081791d4ec77f9297ee694ca1ee9c2c7e5eb"}, {file = "cryptography-44.0.0-cp37-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:3c672a53c0fb4725a29c303be906d3c1fa99c32f58abe008a82705f9ee96f40b"}, {file = "cryptography-44.0.0-cp37-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:4ac4c9f37eba52cb6fbeaf5b59c152ea976726b865bd4cf87883a7e7006cc543"}, - {file = "cryptography-44.0.0-cp37-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:60eb32934076fa07e4316b7b2742fa52cbb190b42c2df2863dbc4230a0a9b385"}, {file = "cryptography-44.0.0-cp37-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:ed3534eb1090483c96178fcb0f8893719d96d5274dfde98aa6add34614e97c8e"}, {file = "cryptography-44.0.0-cp37-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:f3f6fdfa89ee2d9d496e2c087cebef9d4fcbb0ad63c40e821b39f74bf48d9c5e"}, {file = "cryptography-44.0.0-cp37-abi3-win32.whl", hash = "sha256:eb33480f1bad5b78233b0ad3e1b0be21e8ef1da745d8d2aecbb20671658b9053"}, @@ -1498,7 +1497,6 @@ files = [ {file = "cryptography-44.0.0-cp39-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:c5eb858beed7835e5ad1faba59e865109f3e52b3783b9ac21e7e47dc5554e289"}, {file = "cryptography-44.0.0-cp39-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:f53c2c87e0fb4b0c00fa9571082a057e37690a8f12233306161c8f4b819960b7"}, {file = "cryptography-44.0.0-cp39-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:9e6fc8a08e116fb7c7dd1f040074c9d7b51d74a8ea40d4df2fc7aa08b76b9e6c"}, - {file = "cryptography-44.0.0-cp39-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:9abcc2e083cbe8dde89124a47e5e53ec38751f0d7dfd36801008f316a127d7ba"}, {file = "cryptography-44.0.0-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:d2436114e46b36d00f8b72ff57e598978b37399d2786fd39793c36c6d5cb1c64"}, {file = "cryptography-44.0.0-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:a01956ddfa0a6790d594f5b34fc1bfa6098aca434696a03cfdbe469b8ed79285"}, {file = "cryptography-44.0.0-cp39-abi3-win32.whl", hash = "sha256:eca27345e1214d1b9f9490d200f9db5a874479be914199194e746c893788d417"}, @@ -1835,19 +1833,19 @@ files = [ [[package]] name = "duckduckgo-search" -version = "7.2.0" +version = "7.2.1" description = "Search for words, documents, images, news, maps and text translation using the DuckDuckGo.com search engine." optional = false python-versions = ">=3.8" files = [ - {file = "duckduckgo_search-7.2.0-py3-none-any.whl", hash = "sha256:511abfa5e3e98592ae6a155d819b981adaac9e66c1ee2bb2eb0d7086e29316e2"}, - {file = "duckduckgo_search-7.2.0.tar.gz", hash = "sha256:2163d4b78388ab70731094fdc86f4474d9fb9027c975e5aa2f0638e596a7e7b8"}, + {file = "duckduckgo_search-7.2.1-py3-none-any.whl", hash = "sha256:72ebbf6ad8759e3c3c79521cd66256e7a4ac741c522fd9342db94de91745ef87"}, + {file = "duckduckgo_search-7.2.1.tar.gz", hash = "sha256:cb214b6cd9505a41c228445a9c254620b93519c59292662d62ef19d0220618a0"}, ] [package.dependencies] click = ">=8.1.7" lxml = ">=5.3.0" -primp = ">=0.9.3" +primp = ">=0.10.0" [package.extras] dev = ["mypy (>=1.13.0)", "pytest (>=8.3.4)", "pytest-dependency (>=0.6.0)", "ruff (>=0.8.3)"] @@ -2804,13 +2802,13 @@ httplib2 = ">=0.19.0" [[package]] name = "google-cloud-aiplatform" -version = "1.75.0" +version = "1.76.0" description = "Vertex AI API client library" optional = false python-versions = ">=3.8" files = [ - {file = "google_cloud_aiplatform-1.75.0-py2.py3-none-any.whl", hash = "sha256:eb5d79b5f7210d79a22b53c93a69b5bae5680dfc829387ea020765b97786b3d0"}, - {file = "google_cloud_aiplatform-1.75.0.tar.gz", hash = "sha256:eb8404abf1134b3b368535fe429c4eec2fd12d444c2e9ffbc329ddcbc72b36c9"}, + {file = "google_cloud_aiplatform-1.76.0-py2.py3-none-any.whl", hash = "sha256:0b0348525b9528db7b69538ff6e86289ea2ce0d80f3784a42865fc994fe10dd1"}, + {file = "google_cloud_aiplatform-1.76.0.tar.gz", hash = "sha256:910fb7fb6ef7ec73a48523872d669370755f59ac6d764dc8bf2fc91e7c0b2fca"}, ] [package.dependencies] @@ -2825,6 +2823,7 @@ proto-plus = ">=1.22.3,<2.0.0dev" protobuf = ">=3.20.2,<4.21.0 || >4.21.0,<4.21.1 || >4.21.1,<4.21.2 || >4.21.2,<4.21.3 || >4.21.3,<4.21.4 || >4.21.4,<4.21.5 || >4.21.5,<6.0.0dev" pydantic = "<3" shapely = "<3.0.0dev" +typing-extensions = "*" [package.extras] autologging = ["mlflow (>=1.27.0,<=2.16.0)"] @@ -2834,7 +2833,7 @@ endpoint = ["requests (>=2.28.1)"] evaluation = ["pandas (>=1.0.0)", "tqdm (>=4.23.0)"] full = ["docker (>=5.0.3)", "explainable-ai-sdk (>=1.0.0)", "fastapi (>=0.71.0,<=0.114.0)", "google-cloud-bigquery", "google-cloud-bigquery-storage", "google-vizier (>=0.1.6)", "httpx (>=0.23.0,<0.25.0)", "immutabledict", "lit-nlp (==0.4.0)", "mlflow (>=1.27.0,<=2.16.0)", "numpy (>=1.15.0)", "pandas (>=1.0.0)", "pyarrow (>=10.0.1)", "pyarrow (>=14.0.0)", "pyarrow (>=3.0.0,<8.0dev)", "pyarrow (>=6.0.1)", "pyyaml (>=5.3.1,<7)", "ray[default] (>=2.4,<2.5.dev0 || >2.9.0,!=2.9.1,!=2.9.2,<2.10.dev0 || >=2.33.dev0,<=2.33.0)", "ray[default] (>=2.5,<=2.33.0)", "requests (>=2.28.1)", "setuptools (<70.0.0)", "starlette (>=0.17.1)", "tensorboard-plugin-profile (>=2.4.0,<2.18.0)", "tensorflow (>=2.3.0,<3.0.0dev)", "tensorflow (>=2.3.0,<3.0.0dev)", "tensorflow (>=2.4.0,<3.0.0dev)", "tqdm (>=4.23.0)", "urllib3 (>=1.21.1,<1.27)", "uvicorn[standard] (>=0.16.0)", "werkzeug (>=2.0.0,<2.1.0dev)"] langchain = ["langchain (>=0.1.16,<0.4)", "langchain-core (<0.4)", "langchain-google-vertexai (<3)", "openinference-instrumentation-langchain (>=0.1.19,<0.2)"] -langchain-testing = ["absl-py", "cloudpickle (>=3.0,<4.0)", "google-cloud-trace (<2)", "langchain (>=0.1.16,<0.4)", "langchain-core (<0.4)", "langchain-google-vertexai (<3)", "openinference-instrumentation-langchain (>=0.1.19,<0.2)", "opentelemetry-exporter-gcp-trace (<2)", "opentelemetry-sdk (<2)", "pydantic (>=2.6.3,<2.10)", "pytest-xdist"] +langchain-testing = ["absl-py", "cloudpickle (>=3.0,<4.0)", "google-cloud-trace (<2)", "langchain (>=0.1.16,<0.4)", "langchain-core (<0.4)", "langchain-google-vertexai (<3)", "openinference-instrumentation-langchain (>=0.1.19,<0.2)", "opentelemetry-exporter-gcp-trace (<2)", "opentelemetry-sdk (<2)", "pydantic (>=2.6.3,<3)", "pytest-xdist", "typing-extensions"] lit = ["explainable-ai-sdk (>=1.0.0)", "lit-nlp (==0.4.0)", "pandas (>=1.0.0)", "tensorflow (>=2.3.0,<3.0.0dev)"] metadata = ["numpy (>=1.15.0)", "pandas (>=1.0.0)"] pipelines = ["pyyaml (>=5.3.1,<7)"] @@ -2842,7 +2841,7 @@ prediction = ["docker (>=5.0.3)", "fastapi (>=0.71.0,<=0.114.0)", "httpx (>=0.23 private-endpoints = ["requests (>=2.28.1)", "urllib3 (>=1.21.1,<1.27)"] ray = ["google-cloud-bigquery", "google-cloud-bigquery-storage", "immutabledict", "pandas (>=1.0.0)", "pyarrow (>=6.0.1)", "ray[default] (>=2.4,<2.5.dev0 || >2.9.0,!=2.9.1,!=2.9.2,<2.10.dev0 || >=2.33.dev0,<=2.33.0)", "ray[default] (>=2.5,<=2.33.0)", "setuptools (<70.0.0)"] ray-testing = ["google-cloud-bigquery", "google-cloud-bigquery-storage", "immutabledict", "pandas (>=1.0.0)", "pyarrow (>=6.0.1)", "pytest-xdist", "ray[default] (>=2.4,<2.5.dev0 || >2.9.0,!=2.9.1,!=2.9.2,<2.10.dev0 || >=2.33.dev0,<=2.33.0)", "ray[default] (>=2.5,<=2.33.0)", "ray[train]", "scikit-learn (<1.6.0)", "setuptools (<70.0.0)", "tensorflow", "torch (>=2.0.0,<2.1.0)", "xgboost", "xgboost-ray"] -reasoningengine = ["cloudpickle (>=3.0,<4.0)", "google-cloud-trace (<2)", "opentelemetry-exporter-gcp-trace (<2)", "opentelemetry-sdk (<2)", "pydantic (>=2.6.3,<2.10)"] +reasoningengine = ["cloudpickle (>=3.0,<4.0)", "google-cloud-trace (<2)", "opentelemetry-exporter-gcp-trace (<2)", "opentelemetry-sdk (<2)", "pydantic (>=2.6.3,<3)", "typing-extensions"] tensorboard = ["tensorboard-plugin-profile (>=2.4.0,<2.18.0)", "tensorflow (>=2.3.0,<3.0.0dev)", "tensorflow (>=2.4.0,<3.0.0dev)", "werkzeug (>=2.0.0,<2.1.0dev)"] testing = ["aiohttp", "bigframes", "docker (>=5.0.3)", "explainable-ai-sdk (>=1.0.0)", "fastapi (>=0.71.0,<=0.114.0)", "google-api-core (>=2.11,<3.0.0)", "google-cloud-bigquery", "google-cloud-bigquery-storage", "google-vizier (>=0.1.6)", "grpcio-testing", "httpx (>=0.23.0,<0.25.0)", "immutabledict", "ipython", "kfp (>=2.6.0,<3.0.0)", "lit-nlp (==0.4.0)", "mlflow (>=1.27.0,<=2.16.0)", "nltk", "numpy (>=1.15.0)", "pandas (>=1.0.0)", "pyarrow (>=10.0.1)", "pyarrow (>=14.0.0)", "pyarrow (>=3.0.0,<8.0dev)", "pyarrow (>=6.0.1)", "pytest-asyncio", "pytest-xdist", "pyyaml (>=5.3.1,<7)", "ray[default] (>=2.4,<2.5.dev0 || >2.9.0,!=2.9.1,!=2.9.2,<2.10.dev0 || >=2.33.dev0,<=2.33.0)", "ray[default] (>=2.5,<=2.33.0)", "requests (>=2.28.1)", "requests-toolbelt (<1.0.0)", "scikit-learn", "scikit-learn (<1.6.0)", "sentencepiece (>=0.2.0)", "setuptools (<70.0.0)", "starlette (>=0.17.1)", "tensorboard-plugin-profile (>=2.4.0,<2.18.0)", "tensorflow (==2.13.0)", "tensorflow (==2.16.1)", "tensorflow (>=2.3.0,<3.0.0dev)", "tensorflow (>=2.3.0,<3.0.0dev)", "tensorflow (>=2.4.0,<3.0.0dev)", "torch (>=2.0.0,<2.1.0)", "torch (>=2.2.0)", "tqdm (>=4.23.0)", "urllib3 (>=1.21.1,<1.27)", "uvicorn[standard] (>=0.16.0)", "werkzeug (>=2.0.0,<2.1.0dev)", "xgboost"] tokenization = ["sentencepiece (>=0.2.0)"] @@ -6605,13 +6604,13 @@ test = ["coverage", "django", "flake8", "freezegun (==0.3.15)", "mock (>=2.0.0)" [[package]] name = "prediction-market-agent-tooling" -version = "0.57.9" +version = "0.57.10" description = "Tools to benchmark, deploy and monitor prediction market agents." optional = false python-versions = "<3.12,>=3.10" files = [ - {file = "prediction_market_agent_tooling-0.57.9-py3-none-any.whl", hash = "sha256:73afad95f539fc43af9516961f38b62cd5d2df46067ee555cca4a248d13fafa8"}, - {file = "prediction_market_agent_tooling-0.57.9.tar.gz", hash = "sha256:4e2c96ff43aa80fbfe6e6f2669abd834fdfc3cb1a4a257d426c1f1f03c15373c"}, + {file = "prediction_market_agent_tooling-0.57.10-py3-none-any.whl", hash = "sha256:c11105d0d6e7e086ee5d193f66dc6791466f8fbd0e56179df0a6c8fbdf9bbe75"}, + {file = "prediction_market_agent_tooling-0.57.10.tar.gz", hash = "sha256:67c5ff4e30056a28ef74343d922ffca10bb817a89dd7da17093885738c8aacb9"}, ] [package.dependencies] @@ -6757,20 +6756,20 @@ murmurhash = ">=0.28.0,<1.1.0" [[package]] name = "primp" -version = "0.9.3" +version = "0.10.0" description = "HTTP client that can impersonate web browsers, mimicking their headers and `TLS/JA3/JA4/HTTP2` fingerprints" optional = false python-versions = ">=3.8" files = [ - {file = "primp-0.9.3-cp38-abi3-macosx_10_12_x86_64.whl", hash = "sha256:30d5c4f03abeab8fd307ddf4c615d8d093367f3be1a5299078f811982db7cb6f"}, - {file = "primp-0.9.3-cp38-abi3-macosx_11_0_arm64.whl", hash = "sha256:3e3bff0bcffdf746b68486db24ac6dc6db2f202f048f82e0303385ef76dc5c1e"}, - {file = "primp-0.9.3-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:15325ec0b916e48a65929f647d7dd12fb1400e76a6aeba72f7e205c94c4aaa82"}, - {file = "primp-0.9.3-cp38-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:de97cc10130a68edcd4e173cf01c628a10b9b6a6e19393200b12f1a1ddcb863d"}, - {file = "primp-0.9.3-cp38-abi3-manylinux_2_34_armv7l.whl", hash = "sha256:cba94e48c9b245a9daac96807aa020525c1a66c1141d4c2b11db4e2ccb69da33"}, - {file = "primp-0.9.3-cp38-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:1d1df5a9808b82b960df1f72ff53a9ab9c77dce61fcbe5776a11cf5f59dd7f28"}, - {file = "primp-0.9.3-cp38-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:484fc69dbed5ca14561d54aecd17f011c8ffa495023134bb9a94edb808ae3e1b"}, - {file = "primp-0.9.3-cp38-abi3-win_amd64.whl", hash = "sha256:824a5606ad67cb842ccc5158f19f9ccd1387e25e1374edd69f87cd7616cf3ea9"}, - {file = "primp-0.9.3.tar.gz", hash = "sha256:bc6490c659c741c6586bd160ed51b2e04f9dbc3b61bc1dd1af1ce66eefea663e"}, + {file = "primp-0.10.0-cp38-abi3-macosx_10_12_x86_64.whl", hash = "sha256:7a91a089bf2962b5b56c8d83d09535eb81cf55b53c09d83208b9e5a715cf2c17"}, + {file = "primp-0.10.0-cp38-abi3-macosx_11_0_arm64.whl", hash = "sha256:0128453cce81552f7aa6ac2bf9b8741b7816cdb2d10536e62c77daaf6483b9af"}, + {file = "primp-0.10.0-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a959e9a83cff0ae7a85a02cc183e4db636f69ff41dddb7c4e32f997924923417"}, + {file = "primp-0.10.0-cp38-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:8e711cfa019fa9bdc0cba4d5d596f319c884a4329e505bd73e92eee0b024061a"}, + {file = "primp-0.10.0-cp38-abi3-manylinux_2_34_armv7l.whl", hash = "sha256:b859336d9a35669b68a29c5d8f050e0dca380452dabf6c9667bb8599f010d164"}, + {file = "primp-0.10.0-cp38-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:dc875cc9a733fe3e6344a37f2b5888e0a9605bb37807fc3009f3b03786408f34"}, + {file = "primp-0.10.0-cp38-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:a27c5d997c37bf8237963c11e376eaa66e7eccee39164e3e259a1c3767c304d6"}, + {file = "primp-0.10.0-cp38-abi3-win_amd64.whl", hash = "sha256:7fe94c3164c2efffff08f7f54c018ac445112961b3ce4f4f499315ba0a9d1ef3"}, + {file = "primp-0.10.0.tar.gz", hash = "sha256:93142590a5a1958240ee5b74faaf2f55185ed499ccaabc622d71cb0cc8a47a0b"}, ] [package.extras] @@ -7039,6 +7038,7 @@ files = [ {file = "psycopg2_binary-2.9.10-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:bb89f0a835bcfc1d42ccd5f41f04870c1b936d8507c6df12b7737febc40f0909"}, {file = "psycopg2_binary-2.9.10-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:f0c2d907a1e102526dd2986df638343388b94c33860ff3bbe1384130828714b1"}, {file = "psycopg2_binary-2.9.10-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:f8157bed2f51db683f31306aa497311b560f2265998122abe1dce6428bd86567"}, + {file = "psycopg2_binary-2.9.10-cp313-cp313-win_amd64.whl", hash = "sha256:27422aa5f11fbcd9b18da48373eb67081243662f9b46e6fd07c3eb46e4535142"}, {file = "psycopg2_binary-2.9.10-cp38-cp38-macosx_12_0_x86_64.whl", hash = "sha256:eb09aa7f9cecb45027683bb55aebaaf45a0df8bf6de68801a6afdc7947bb09d4"}, {file = "psycopg2_binary-2.9.10-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b73d6d7f0ccdad7bc43e6d34273f70d587ef62f824d7261c4ae9b8b1b6af90e8"}, {file = "psycopg2_binary-2.9.10-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ce5ab4bf46a211a8e924d307c1b1fcda82368586a19d0a24f8ae166f5c784864"}, @@ -7232,6 +7232,7 @@ description = "Pure-Python implementation of ASN.1 types and DER/BER/CER codecs optional = false python-versions = ">=3.8" files = [ + {file = "pyasn1-0.6.1-py3-none-any.whl", hash = "sha256:0d632f46f2ba09143da3a8afe9e33fb6f92fa2320ab7e886e2d0f7672af84629"}, {file = "pyasn1-0.6.1.tar.gz", hash = "sha256:6f580d2bdd84365380830acf45550f2511469f673cb4a5ae3857a3170128b034"}, ] @@ -7242,6 +7243,7 @@ description = "A collection of ASN.1-based protocols modules" optional = false python-versions = ">=3.8" files = [ + {file = "pyasn1_modules-0.4.1-py3-none-any.whl", hash = "sha256:49bfa96b45a292b711e986f222502c1c9a5e1f4e568fc30e2574a6c7d07838fd"}, {file = "pyasn1_modules-0.4.1.tar.gz", hash = "sha256:c28e2dbf9c06ad61c71a075c7e0f9fd0f1b0bb2d2ad4377f240d33ac2ab60a7c"}, ] @@ -7797,13 +7799,13 @@ dev = ["argcomplete", "attrs (>=19.2)", "hypothesis (>=3.56)", "mock", "pygments [[package]] name = "pytest-asyncio" -version = "0.25.1" +version = "0.25.2" description = "Pytest support for asyncio" optional = false python-versions = ">=3.9" files = [ - {file = "pytest_asyncio-0.25.1-py3-none-any.whl", hash = "sha256:c84878849ec63ff2ca509423616e071ef9cd8cc93c053aa33b5b8fb70a990671"}, - {file = "pytest_asyncio-0.25.1.tar.gz", hash = "sha256:79be8a72384b0c917677e00daa711e07db15259f4d23203c59012bcd989d4aee"}, + {file = "pytest_asyncio-0.25.2-py3-none-any.whl", hash = "sha256:0d0bb693f7b99da304a0634afc0a4b19e49d5e0de2d670f38dc4bfa5727c5075"}, + {file = "pytest_asyncio-0.25.2.tar.gz", hash = "sha256:3f8ef9a98f45948ea91a0ed3dc4268b5326c0e7bce73892acc654df4262ad45f"}, ] [package.dependencies] @@ -8502,13 +8504,13 @@ trezor = ["trezor (==0.13.9)"] [[package]] name = "safe-eth-py" -version = "6.1.1" +version = "6.2.0" description = "Safe Ecosystem Foundation utilities for Ethereum projects" optional = false python-versions = ">=3.10" files = [ - {file = "safe_eth_py-6.1.1-py3-none-any.whl", hash = "sha256:c086fc9fd5a369b11ce644a1a5c96243da9d1ac8f467f82ddbecbe9dca77ccaf"}, - {file = "safe_eth_py-6.1.1.tar.gz", hash = "sha256:9b8322fb734e1d16b4fc5b2c81475887d8573f49a8a324ead15520259d457d2b"}, + {file = "safe_eth_py-6.2.0-py3-none-any.whl", hash = "sha256:d15c2eec59e23dd80de4529e115acf9efda5f63df035fc2ffb60ef42aaefeb6e"}, + {file = "safe_eth_py-6.2.0.tar.gz", hash = "sha256:64debe4f2f810b2ff320904fdf2c1208c3195414e60c39252ce7b4422e8f77c1"}, ] [package.dependencies] @@ -10699,4 +10701,4 @@ type = ["pytest-mypy"] [metadata] lock-version = "2.0" python-versions = "~3.10.0" -content-hash = "613d65cd51a0b897b15064151f2ede65240a445478ac5fffe58b043fbbf404b2" +content-hash = "5dc4dc0c17b884b3d0275ebf1df840d6c3179a84cd0c1b56e4f004d52f744ba8" diff --git a/prediction_market_agent/agents/microchain_agent/microchain_agent_keys.py b/prediction_market_agent/agents/microchain_agent/microchain_agent_keys.py index 54e580ce..6c8e9d95 100644 --- a/prediction_market_agent/agents/microchain_agent/microchain_agent_keys.py +++ b/prediction_market_agent/agents/microchain_agent/microchain_agent_keys.py @@ -1,6 +1,5 @@ from prediction_market_agent_tooling.gtypes import xDai, xdai_type from prediction_market_agent_tooling.loggers import logger -from prediction_market_agent_tooling.markets.omen.omen import OMEN_TINY_BET_AMOUNT from prediction_market_agent.utils import APIKeys @@ -12,7 +11,6 @@ class MicrochainAgentKeys(APIKeys): SENDING_XDAI_CAP: xDai | None = xdai_type(0.1) # Double check to not transfer NFTs during testing. ENABLE_NFT_TRANSFER: bool = False - RECEIVER_MINIMUM_AMOUNT: xDai = OMEN_TINY_BET_AMOUNT def cap_sending_xdai(self, amount: xDai) -> xDai: if self.SENDING_XDAI_CAP is None: diff --git a/prediction_market_agent/agents/microchain_agent/nft_treasury_game/app_nft_treasury_game.py b/prediction_market_agent/agents/microchain_agent/nft_treasury_game/app_nft_treasury_game.py index a7eb02d1..b4cd11c0 100644 --- a/prediction_market_agent/agents/microchain_agent/nft_treasury_game/app_nft_treasury_game.py +++ b/prediction_market_agent/agents/microchain_agent/nft_treasury_game/app_nft_treasury_game.py @@ -41,6 +41,7 @@ from prediction_market_agent.db.agent_communication import ( fetch_count_unprocessed_transactions, fetch_unseen_transactions, + get_message_minimum_value, ) from prediction_market_agent.db.long_term_memory_table_handler import ( LongTermMemories, @@ -88,7 +89,7 @@ def send_message_via_wallet( def send_message_part(nft_agent: type[DeployableAgentNFTGameAbstract]) -> None: message = st.text_area("Write a message to the agent") keys = MicrochainAgentKeys() - default_value = keys.RECEIVER_MINIMUM_AMOUNT + default_value = get_message_minimum_value() amount_to_send = st.number_input( "Value in xDai", min_value=default_value, diff --git a/prediction_market_agent/agents/microchain_agent/nft_treasury_game/contracts_nft_treasury_game.py b/prediction_market_agent/agents/microchain_agent/nft_treasury_game/contracts_nft_treasury_game.py index ca3d3480..75f454bc 100644 --- a/prediction_market_agent/agents/microchain_agent/nft_treasury_game/contracts_nft_treasury_game.py +++ b/prediction_market_agent/agents/microchain_agent/nft_treasury_game/contracts_nft_treasury_game.py @@ -18,6 +18,16 @@ def max_supply(self, web3: Web3 | None = None) -> int: n_tokens: int = self.call("MAX_SUPPLY", web3=web3) return n_tokens + def token_ids_owned_by( + self, owner: ChecksumAddress, web3: Web3 | None = None + ) -> list[int]: + token_ids = list(range(self.max_supply(web3=web3))) + return [ + token_id + for token_id in token_ids + if self.ownerOf(tokenId=token_id, web3=web3) == owner + ] + @cache def get_nft_token_factory_max_supply() -> int: diff --git a/prediction_market_agent/agents/microchain_agent/nft_treasury_game/deploy_nft_treasury_game.py b/prediction_market_agent/agents/microchain_agent/nft_treasury_game/deploy_nft_treasury_game.py index e691cd58..0db89b9a 100644 --- a/prediction_market_agent/agents/microchain_agent/nft_treasury_game/deploy_nft_treasury_game.py +++ b/prediction_market_agent/agents/microchain_agent/nft_treasury_game/deploy_nft_treasury_game.py @@ -15,8 +15,10 @@ TREASURY_SAFE_ADDRESS, ) from prediction_market_agent.agents.microchain_agent.nft_treasury_game.contracts_nft_treasury_game import ( + ContractNFTFactoryOnGnosisChain, get_nft_token_factory_max_supply, ) +from prediction_market_agent.db.agent_communication import get_treasury_tax_ratio class DeployableAgentNFTGameAbstract(DeployableMicrochainAgentAbstract): @@ -188,6 +190,9 @@ def get_initial_system_prompt(cls) -> str: def nft_treasury_game_base_prompt(wallet_address: ChecksumAddress) -> str: keys = MicrochainAgentKeys() n_nft_keys = get_nft_token_factory_max_supply() + nft_token_ids_owned = ContractNFTFactoryOnGnosisChain().token_ids_owned_by( + wallet_address + ) other_agents_keys_formatted = ", ".join( x.wallet_address for x in DEPLOYED_NFT_AGENTS @@ -202,13 +207,17 @@ def nft_treasury_game_base_prompt(wallet_address: ChecksumAddress) -> str: - Address of the NFT contract is {NFT_TOKEN_FACTORY}, there are {n_nft_keys} keys, with token_id {list(range(n_nft_keys))}. - You can own multiple NFT keys. - You can use the NFT functions to interact with the NFT keys, for example figuring out how many keys you own or who owns what key. + - You currently own NFT keys with token_ids {nft_token_ids_owned}. + - Before accepting to transfer any NFT key, consider how much is the treasury worth at the moment. - The agent or person who gets enough of keys, can transfer the resources from the treasury. +- Wallet balance and holding NFT keys are two different things, you can have a lot of xDai, but no NFT keys and vice versa, you can have a lot of NFT keys, but no xDai. - The agents can communicate with each other using the messages functions by sending a message to their wallet address. - Sending a message costs you a fee. -- Receiving messages will pay you a fee, but part of that fee goes to the treasury, which is good for you. +- Receiving messages will pay you a fee, but part of that fee goes as a tax to the treasury, which is good for you. + - Treasury tax rate is currently {get_treasury_tax_ratio() * 100:.2f}%, for example, if someone sends you 10 xDai, you would receive {(1 - get_treasury_tax_ratio()) * 10:.2f} xDai. - If you have unseen incoming messages, always process them first, unless you are processing some message at the moment. -- Regularly check balances of your wallet and the treasury. -- Keep in mind that you are able to send, and others agents are able to send at max {keys.SENDING_XDAI_CAP} xDai. +- Regularly check balances of your wallet and the treasury, but not too often, keep doing other stuff as well! +- Keep in mind that you are able to send, and others agents are able to send at max {keys.SENDING_XDAI_CAP} xDai, however people can send you as much as they want. """ diff --git a/prediction_market_agent/agents/microchain_agent/nft_treasury_game/messages_functions.py b/prediction_market_agent/agents/microchain_agent/nft_treasury_game/messages_functions.py index 8d468c0e..aa5e2c74 100644 --- a/prediction_market_agent/agents/microchain_agent/nft_treasury_game/messages_functions.py +++ b/prediction_market_agent/agents/microchain_agent/nft_treasury_game/messages_functions.py @@ -13,6 +13,7 @@ ) from prediction_market_agent.db.agent_communication import ( fetch_count_unprocessed_transactions, + get_message_minimum_value, pop_message, send_message, ) @@ -43,11 +44,11 @@ class SendPaidMessageToAnotherAgent(Function): @property def description(self) -> str: return f"""Use {SendPaidMessageToAnotherAgent.__name__} to send a message to an another agent, given his wallet address. -You need to send a fee of at least {MicrochainAgentKeys().RECEIVER_MINIMUM_AMOUNT} xDai for other agent to read the message.""" +You need to send a fee of at least {get_message_minimum_value()} xDai for other agent to read the message.""" @property def example_args(self) -> list[str]: - return ["0x123", "Hello!", f"{MicrochainAgentKeys().RECEIVER_MINIMUM_AMOUNT}"] + return ["0x123", "Hello!", f"{get_message_minimum_value()}"] def __call__(self, address: str, message: str, fee: float) -> str: keys = MicrochainAgentKeys() @@ -62,9 +63,6 @@ def __call__(self, address: str, message: str, fee: float) -> str: class ReceiveMessage(Function): - # Percentage of message value that goes to the treasury. - TREASURY_ACCUMULATION_PERCENTAGE = 0.7 - @staticmethod def get_count_unseen_messages() -> int: keys = MicrochainAgentKeys() diff --git a/prediction_market_agent/db/agent_communication.py b/prediction_market_agent/db/agent_communication.py index 9a5d74d6..53c869f3 100644 --- a/prediction_market_agent/db/agent_communication.py +++ b/prediction_market_agent/db/agent_communication.py @@ -1,6 +1,8 @@ +from functools import cache + from eth_typing import ChecksumAddress from prediction_market_agent_tooling.config import APIKeys as APIKeys_PMAT -from prediction_market_agent_tooling.gtypes import HexBytes, Wei +from prediction_market_agent_tooling.gtypes import HexBytes, Wei, xDai from prediction_market_agent_tooling.tools.contract import ( AgentCommunicationContract, ContractOnGnosisChain, @@ -64,3 +66,13 @@ def send_message( amount_wei=amount_wei, web3=ContractOnGnosisChain.get_web3(), ) + + +@cache +def get_message_minimum_value() -> xDai: + return AgentCommunicationContract().minimum_message_value() + + +@cache +def get_treasury_tax_ratio() -> float: + return AgentCommunicationContract().ratio_given_to_treasury() diff --git a/pyproject.toml b/pyproject.toml index b809f49c..ce4abe5a 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -33,7 +33,7 @@ poetry = "^1.7.1" poetry-plugin-export = "^1.6.0" functions-framework = "^3.5.0" cron-validator = "^1.0.8" -prediction-market-agent-tooling = { version = "^0.57.9", extras = ["langchain", "google"] } +prediction-market-agent-tooling = { version = "^0.57.10", extras = ["langchain", "google"] } pydantic-settings = "^2.1.0" autoflake = "^2.2.1" isort = "^5.13.2"