prediction-market-agent-tooling 0.65.5__py3-none-any.whl → 0.65.7__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- prediction_market_agent_tooling/config.py +8 -0
- prediction_market_agent_tooling/logprobs_parser.py +2 -1
- prediction_market_agent_tooling/markets/data_models.py +21 -1
- prediction_market_agent_tooling/markets/omen/omen_resolving.py +5 -2
- prediction_market_agent_tooling/markets/seer/exceptions.py +2 -0
- prediction_market_agent_tooling/markets/seer/price_manager.py +5 -2
- prediction_market_agent_tooling/markets/seer/seer.py +28 -9
- prediction_market_agent_tooling/tools/perplexity/perplexity_client.py +86 -0
- prediction_market_agent_tooling/tools/perplexity/perplexity_models.py +26 -0
- prediction_market_agent_tooling/tools/perplexity/perplexity_search.py +73 -0
- {prediction_market_agent_tooling-0.65.5.dist-info → prediction_market_agent_tooling-0.65.7.dist-info}/METADATA +1 -1
- {prediction_market_agent_tooling-0.65.5.dist-info → prediction_market_agent_tooling-0.65.7.dist-info}/RECORD +15 -11
- {prediction_market_agent_tooling-0.65.5.dist-info → prediction_market_agent_tooling-0.65.7.dist-info}/LICENSE +0 -0
- {prediction_market_agent_tooling-0.65.5.dist-info → prediction_market_agent_tooling-0.65.7.dist-info}/WHEEL +0 -0
- {prediction_market_agent_tooling-0.65.5.dist-info → prediction_market_agent_tooling-0.65.7.dist-info}/entry_points.txt +0 -0
@@ -65,6 +65,8 @@ class APIKeys(BaseSettings):
|
|
65
65
|
|
66
66
|
SQLALCHEMY_DB_URL: t.Optional[SecretStr] = None
|
67
67
|
|
68
|
+
PERPLEXITY_API_KEY: t.Optional[SecretStr] = None
|
69
|
+
|
68
70
|
ENABLE_CACHE: bool = False
|
69
71
|
CACHE_DIR: str = "./.cache"
|
70
72
|
|
@@ -259,6 +261,12 @@ class APIKeys(BaseSettings):
|
|
259
261
|
if self.model_fields[k].annotation not in SECRET_TYPES and v is not None
|
260
262
|
}
|
261
263
|
|
264
|
+
@property
|
265
|
+
def perplexity_api_key(self) -> SecretStr:
|
266
|
+
return check_not_none(
|
267
|
+
self.PERPLEXITY_API_KEY, "PERPLEXITY_API_KEY missing in the environment."
|
268
|
+
)
|
269
|
+
|
262
270
|
def model_dump_secrets(self) -> dict[str, t.Any]:
|
263
271
|
return {
|
264
272
|
k: v.get_secret_value() if isinstance(v, SecretStr) else v
|
@@ -61,7 +61,8 @@ class LogprobsParser:
|
|
61
61
|
(
|
62
62
|
i
|
63
63
|
for i in range(result_start_index, len(logprobs))
|
64
|
-
if logprobs[i]["token"]
|
64
|
+
if logprobs[i]["token"]
|
65
|
+
in {",", '"', ",\n", "\",\n'", '",\n', '"\n', "\n"}
|
65
66
|
),
|
66
67
|
len(logprobs) - 1,
|
67
68
|
)
|
@@ -1,5 +1,5 @@
|
|
1
1
|
from enum import Enum
|
2
|
-
from typing import Annotated
|
2
|
+
from typing import Annotated, Sequence
|
3
3
|
|
4
4
|
from pydantic import BaseModel, BeforeValidator, computed_field
|
5
5
|
|
@@ -26,6 +26,26 @@ class Resolution(BaseModel):
|
|
26
26
|
def from_answer(answer: OutcomeStr) -> "Resolution":
|
27
27
|
return Resolution(outcome=answer, invalid=False)
|
28
28
|
|
29
|
+
def find_outcome_matching_market(
|
30
|
+
self, market_outcomes: Sequence[OutcomeStr]
|
31
|
+
) -> OutcomeStr | None:
|
32
|
+
"""
|
33
|
+
Finds a matching outcome in the provided market outcomes.
|
34
|
+
|
35
|
+
Performs case-insensitive matching between this resolution's outcome
|
36
|
+
and the provided market outcomes.
|
37
|
+
|
38
|
+
"""
|
39
|
+
|
40
|
+
if not self.outcome:
|
41
|
+
return None
|
42
|
+
|
43
|
+
normalized_outcome = self.outcome.lower()
|
44
|
+
for outcome in market_outcomes:
|
45
|
+
if outcome.lower() == normalized_outcome:
|
46
|
+
return outcome
|
47
|
+
return None
|
48
|
+
|
29
49
|
|
30
50
|
class Bet(BaseModel):
|
31
51
|
id: str
|
@@ -31,7 +31,7 @@ from prediction_market_agent_tooling.markets.omen.omen_subgraph_handler import (
|
|
31
31
|
from prediction_market_agent_tooling.tools.tokens.main_token import (
|
32
32
|
MINIMUM_NATIVE_TOKEN_IN_EOA_FOR_FEES,
|
33
33
|
)
|
34
|
-
from prediction_market_agent_tooling.tools.utils import utcnow
|
34
|
+
from prediction_market_agent_tooling.tools.utils import check_not_none, utcnow
|
35
35
|
from prediction_market_agent_tooling.tools.web3_utils import ZERO_BYTES
|
36
36
|
|
37
37
|
|
@@ -223,7 +223,10 @@ def omen_submit_answer_market_tx(
|
|
223
223
|
And after the period is over, you need to resolve the market using `omen_resolve_market_tx`.
|
224
224
|
"""
|
225
225
|
realitio_contract = OmenRealitioContract()
|
226
|
-
|
226
|
+
outcome_matching_market = check_not_none(
|
227
|
+
resolution.find_outcome_matching_market(market.outcomes)
|
228
|
+
)
|
229
|
+
outcome_index = market.outcomes.index(outcome_matching_market)
|
227
230
|
realitio_contract.submit_answer(
|
228
231
|
api_keys=api_keys,
|
229
232
|
question_id=market.question.id,
|
@@ -12,6 +12,9 @@ from prediction_market_agent_tooling.gtypes import (
|
|
12
12
|
)
|
13
13
|
from prediction_market_agent_tooling.loggers import logger
|
14
14
|
from prediction_market_agent_tooling.markets.seer.data_models import SeerMarket
|
15
|
+
from prediction_market_agent_tooling.markets.seer.exceptions import (
|
16
|
+
PriceCalculationError,
|
17
|
+
)
|
15
18
|
from prediction_market_agent_tooling.markets.seer.seer_subgraph_handler import (
|
16
19
|
SeerSubgraphHandler,
|
17
20
|
)
|
@@ -128,7 +131,7 @@ class PriceManager:
|
|
128
131
|
)
|
129
132
|
# It's okay if invalid (last) outcome has price 0, but not the other outcomes.
|
130
133
|
if price is None and idx != len(self.seer_market.wrapped_tokens) - 1:
|
131
|
-
raise
|
134
|
+
raise PriceCalculationError(
|
132
135
|
f"Couldn't get price for {wrapped_token} for market {self.seer_market.url}."
|
133
136
|
)
|
134
137
|
price_data[wrapped_token] = (
|
@@ -142,7 +145,7 @@ class PriceManager:
|
|
142
145
|
sum(price_data.values(), start=CollateralToken.zero())
|
143
146
|
== CollateralToken.zero()
|
144
147
|
):
|
145
|
-
raise
|
148
|
+
raise PriceCalculationError(
|
146
149
|
f"All prices for market {self.seer_market.url} are zero. This shouldn't happen."
|
147
150
|
)
|
148
151
|
|
@@ -31,6 +31,9 @@ from prediction_market_agent_tooling.markets.seer.data_models import (
|
|
31
31
|
RedeemParams,
|
32
32
|
SeerMarket,
|
33
33
|
)
|
34
|
+
from prediction_market_agent_tooling.markets.seer.exceptions import (
|
35
|
+
PriceCalculationError,
|
36
|
+
)
|
34
37
|
from prediction_market_agent_tooling.markets.seer.price_manager import PriceManager
|
35
38
|
from prediction_market_agent_tooling.markets.seer.seer_contracts import (
|
36
39
|
GnosisRouter,
|
@@ -275,18 +278,24 @@ class SeerAgentMarket(AgentMarket):
|
|
275
278
|
|
276
279
|
@staticmethod
|
277
280
|
def from_data_model_with_subgraph(
|
278
|
-
model: SeerMarket,
|
281
|
+
model: SeerMarket,
|
282
|
+
seer_subgraph: SeerSubgraphHandler,
|
283
|
+
must_have_prices: bool,
|
279
284
|
) -> t.Optional["SeerAgentMarket"]:
|
280
|
-
|
285
|
+
price_manager = PriceManager(seer_market=model, seer_subgraph=seer_subgraph)
|
281
286
|
|
282
|
-
probability_map =
|
283
|
-
|
287
|
+
probability_map = {}
|
288
|
+
try:
|
289
|
+
probability_map = price_manager.build_probability_map()
|
290
|
+
except PriceCalculationError as e:
|
284
291
|
logger.info(
|
285
|
-
f"
|
292
|
+
f"Error when calculating probabilities for market {model.id.hex()} - {e}"
|
286
293
|
)
|
287
|
-
|
294
|
+
if must_have_prices:
|
295
|
+
# Price calculation failed, so don't return the market
|
296
|
+
return None
|
288
297
|
|
289
|
-
|
298
|
+
market = SeerAgentMarket(
|
290
299
|
id=model.id.hex(),
|
291
300
|
question=model.title,
|
292
301
|
creator=model.creator,
|
@@ -305,6 +314,8 @@ class SeerAgentMarket(AgentMarket):
|
|
305
314
|
probabilities=probability_map,
|
306
315
|
)
|
307
316
|
|
317
|
+
return market
|
318
|
+
|
308
319
|
@staticmethod
|
309
320
|
def get_markets(
|
310
321
|
limit: int,
|
@@ -324,17 +335,25 @@ class SeerAgentMarket(AgentMarket):
|
|
324
335
|
|
325
336
|
# We exclude the None values below because `from_data_model_with_subgraph` can return None, which
|
326
337
|
# represents an invalid market.
|
327
|
-
|
338
|
+
seer_agent_markets = [
|
328
339
|
market
|
329
340
|
for m in markets
|
330
341
|
if (
|
331
342
|
market := SeerAgentMarket.from_data_model_with_subgraph(
|
332
|
-
model=m,
|
343
|
+
model=m,
|
344
|
+
seer_subgraph=seer_subgraph,
|
345
|
+
must_have_prices=filter_by == FilterBy.OPEN,
|
333
346
|
)
|
334
347
|
)
|
335
348
|
is not None
|
336
349
|
]
|
337
350
|
|
351
|
+
if filter_by == FilterBy.OPEN:
|
352
|
+
# Extra manual filter for liquidity, as subgraph is sometimes unreliable.
|
353
|
+
seer_agent_markets = [m for m in seer_agent_markets if m.has_liquidity()]
|
354
|
+
|
355
|
+
return seer_agent_markets
|
356
|
+
|
338
357
|
def get_outcome_str_from_idx(self, outcome_index: int) -> OutcomeStr:
|
339
358
|
return self.outcomes[outcome_index]
|
340
359
|
|
@@ -0,0 +1,86 @@
|
|
1
|
+
from typing import Any, Dict, List, Optional
|
2
|
+
|
3
|
+
import httpx
|
4
|
+
from pydantic import SecretStr
|
5
|
+
|
6
|
+
from prediction_market_agent_tooling.tools.perplexity.perplexity_models import (
|
7
|
+
PerplexityModelSettings,
|
8
|
+
PerplexityRequestParameters,
|
9
|
+
PerplexityResponse,
|
10
|
+
)
|
11
|
+
|
12
|
+
|
13
|
+
class PerplexityModel:
|
14
|
+
def __init__(
|
15
|
+
self,
|
16
|
+
model_name: str,
|
17
|
+
*,
|
18
|
+
api_key: SecretStr,
|
19
|
+
completition_endpoint: str = "https://api.perplexity.ai/chat/completions",
|
20
|
+
) -> None:
|
21
|
+
self.model_name = model_name
|
22
|
+
self.api_key = api_key
|
23
|
+
self.completition_endpoint = completition_endpoint
|
24
|
+
|
25
|
+
async def request(
|
26
|
+
self,
|
27
|
+
messages: List[dict[str, str]],
|
28
|
+
model_settings: Optional[PerplexityModelSettings],
|
29
|
+
model_request_parameters: PerplexityRequestParameters,
|
30
|
+
) -> PerplexityResponse:
|
31
|
+
payload: Dict[str, Any] = {"model": self.model_name, "messages": messages}
|
32
|
+
|
33
|
+
if model_settings:
|
34
|
+
model_settings_dict = model_settings.model_dump()
|
35
|
+
model_settings_dict = {
|
36
|
+
k: v for k, v in model_settings_dict.items() if v is not None
|
37
|
+
}
|
38
|
+
payload.update(model_settings_dict)
|
39
|
+
|
40
|
+
params_dict = model_request_parameters.model_dump()
|
41
|
+
params_dict = {k: v for k, v in params_dict.items() if v is not None}
|
42
|
+
|
43
|
+
# Extract and handle search_context_size specially
|
44
|
+
if "search_context_size" in params_dict:
|
45
|
+
search_context_size = params_dict.pop("search_context_size")
|
46
|
+
payload["web_search_options"] = {"search_context_size": search_context_size}
|
47
|
+
|
48
|
+
# Add remaining Perplexity parameters to payload
|
49
|
+
payload.update(params_dict)
|
50
|
+
|
51
|
+
try:
|
52
|
+
async with httpx.AsyncClient(timeout=180) as client:
|
53
|
+
response = await client.post(
|
54
|
+
self.completition_endpoint,
|
55
|
+
headers={
|
56
|
+
"Authorization": f"Bearer {self.api_key.get_secret_value()}",
|
57
|
+
"Content-Type": "application/json",
|
58
|
+
},
|
59
|
+
json=payload,
|
60
|
+
)
|
61
|
+
response.raise_for_status()
|
62
|
+
result: dict[str, Any] = response.json()
|
63
|
+
|
64
|
+
choices = result.get("choices", [])
|
65
|
+
if not choices:
|
66
|
+
raise ValueError("Invalid response: no choices")
|
67
|
+
|
68
|
+
content = choices[0].get("message", {}).get("content")
|
69
|
+
if not content:
|
70
|
+
raise ValueError("Invalid response: no content")
|
71
|
+
|
72
|
+
return PerplexityResponse(
|
73
|
+
content=content,
|
74
|
+
citations=result.get("citations", []),
|
75
|
+
usage=result.get("usage", {}),
|
76
|
+
)
|
77
|
+
except httpx.HTTPStatusError as e:
|
78
|
+
raise ValueError(
|
79
|
+
f"HTTP error from Perplexity API: {e.response.status_code} - {e.response.text}"
|
80
|
+
) from e
|
81
|
+
except httpx.RequestError as e:
|
82
|
+
raise ValueError(f"Request error to Perplexity API: {str(e)}") from e
|
83
|
+
except Exception as e:
|
84
|
+
raise ValueError(
|
85
|
+
f"Unexpected error in Perplexity API request: {str(e)}"
|
86
|
+
) from e
|
@@ -0,0 +1,26 @@
|
|
1
|
+
from typing import Any, List, Literal, Optional
|
2
|
+
|
3
|
+
from pydantic import BaseModel
|
4
|
+
|
5
|
+
|
6
|
+
class PerplexityRequestParameters(BaseModel):
|
7
|
+
search_context_size: Optional[Literal["low", "medium", "high"]]
|
8
|
+
search_recency_filter: Optional[Literal["any", "day", "week", "month", "year"]]
|
9
|
+
search_return_related_questions: Optional[bool]
|
10
|
+
search_domain_filter: Optional[List[str]]
|
11
|
+
search_after_date_filter: Optional[str]
|
12
|
+
search_before_date_filter: Optional[str]
|
13
|
+
|
14
|
+
|
15
|
+
class PerplexityResponse(BaseModel):
|
16
|
+
content: str
|
17
|
+
citations: list[str]
|
18
|
+
usage: dict[str, Any]
|
19
|
+
|
20
|
+
|
21
|
+
class PerplexityModelSettings(BaseModel):
|
22
|
+
max_tokens: Optional[int] = None
|
23
|
+
temperature: Optional[float] = None
|
24
|
+
top_p: Optional[float] = None
|
25
|
+
frequency_penalty: Optional[float] = None
|
26
|
+
presence_penalty: Optional[float] = None
|
@@ -0,0 +1,73 @@
|
|
1
|
+
import asyncio
|
2
|
+
import typing as t
|
3
|
+
from datetime import date, timedelta
|
4
|
+
|
5
|
+
import tenacity
|
6
|
+
|
7
|
+
from prediction_market_agent_tooling.config import APIKeys
|
8
|
+
from prediction_market_agent_tooling.tools.caches.db_cache import db_cache
|
9
|
+
from prediction_market_agent_tooling.tools.perplexity.perplexity_client import (
|
10
|
+
PerplexityModel,
|
11
|
+
)
|
12
|
+
from prediction_market_agent_tooling.tools.perplexity.perplexity_models import (
|
13
|
+
PerplexityModelSettings,
|
14
|
+
PerplexityRequestParameters,
|
15
|
+
PerplexityResponse,
|
16
|
+
)
|
17
|
+
|
18
|
+
SYSTEM_PROMPT = "You are a helpful search assistant. Your task is to provide accurate information based on web searches."
|
19
|
+
|
20
|
+
|
21
|
+
@tenacity.retry(stop=tenacity.stop_after_attempt(3), wait=tenacity.wait_fixed(1))
|
22
|
+
@db_cache(
|
23
|
+
max_age=timedelta(days=1),
|
24
|
+
ignore_args=["api_keys"],
|
25
|
+
log_error_on_unsavable_data=False,
|
26
|
+
)
|
27
|
+
def perplexity_search(
|
28
|
+
query: str,
|
29
|
+
api_keys: APIKeys,
|
30
|
+
search_context_size: t.Literal["low", "medium", "high"] = "medium",
|
31
|
+
search_recency_filter: t.Literal["any", "day", "week", "month", "year"]
|
32
|
+
| None = None,
|
33
|
+
search_filter_before_date: date | None = None,
|
34
|
+
search_filter_after_date: date | None = None,
|
35
|
+
search_return_related_questions: bool | None = None,
|
36
|
+
include_domains: list[str] | None = None,
|
37
|
+
temperature: float = 0,
|
38
|
+
model_name: str = "sonar-pro",
|
39
|
+
max_tokens: int = 2048,
|
40
|
+
) -> PerplexityResponse:
|
41
|
+
# Create messages in ModelMessage format
|
42
|
+
messages = [
|
43
|
+
{"role": "system", "content": SYSTEM_PROMPT},
|
44
|
+
{"role": "user", "content": query},
|
45
|
+
]
|
46
|
+
|
47
|
+
# Define special parameters for the request and create the settings
|
48
|
+
model_settings = PerplexityModelSettings(
|
49
|
+
max_tokens=max_tokens, temperature=temperature
|
50
|
+
)
|
51
|
+
|
52
|
+
# Create a basic request parameters object with required base parameters
|
53
|
+
request_params = PerplexityRequestParameters(
|
54
|
+
search_domain_filter=include_domains,
|
55
|
+
search_after_date_filter=search_filter_after_date.strftime("%Y-%m-%d")
|
56
|
+
if search_filter_after_date
|
57
|
+
else None,
|
58
|
+
search_before_date_filter=search_filter_before_date.strftime("%Y-%m-%d")
|
59
|
+
if search_filter_before_date
|
60
|
+
else None,
|
61
|
+
search_recency_filter=search_recency_filter,
|
62
|
+
search_context_size=search_context_size,
|
63
|
+
search_return_related_questions=search_return_related_questions,
|
64
|
+
)
|
65
|
+
|
66
|
+
model = PerplexityModel(model_name=model_name, api_key=api_keys.perplexity_api_key)
|
67
|
+
return asyncio.run(
|
68
|
+
model.request(
|
69
|
+
messages=messages,
|
70
|
+
model_settings=model_settings,
|
71
|
+
model_request_parameters=request_params,
|
72
|
+
)
|
73
|
+
)
|
@@ -23,7 +23,7 @@ prediction_market_agent_tooling/benchmark/agents.py,sha256=zC5tUM6pPTWtqSddOOSYV
|
|
23
23
|
prediction_market_agent_tooling/benchmark/benchmark.py,sha256=KwMZzwise3sgmhdjw7xCgHMmjKHdHqQC-zc9untOLWg,17832
|
24
24
|
prediction_market_agent_tooling/benchmark/utils.py,sha256=xQd7p9H08-OtN3iC4QT2i9bkUTmrXa6rxGXeg9yMhgU,2986
|
25
25
|
prediction_market_agent_tooling/chains.py,sha256=1qQstoqXMwqwM7k-KH7MjMz8Ei-D83KZByvDbCZpAxs,116
|
26
|
-
prediction_market_agent_tooling/config.py,sha256
|
26
|
+
prediction_market_agent_tooling/config.py,sha256=-kJfdDr-m0R-tGZ1KRI-hJJk0mXDt142CAlvwaJ2N2I,11778
|
27
27
|
prediction_market_agent_tooling/deploy/agent.py,sha256=ddFvBUhB_WVWtuUGkiZNKBME4Hd3AdquVv588c1rpu0,25602
|
28
28
|
prediction_market_agent_tooling/deploy/agent_example.py,sha256=yS1fWkHynr9MYGNOM2WsCnRWLPaffY4bOc6bIudrdd4,1377
|
29
29
|
prediction_market_agent_tooling/deploy/betting_strategy.py,sha256=YYayGjTKW02d3BUavJ8M3NmFk41oldEM3FHbwppZGRM,17184
|
@@ -37,12 +37,12 @@ prediction_market_agent_tooling/jobs/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeu
|
|
37
37
|
prediction_market_agent_tooling/jobs/jobs_models.py,sha256=DoZ9dlvVhpNrnINiR1uy6YUOsuzI_L-avBt362y5xXM,2467
|
38
38
|
prediction_market_agent_tooling/jobs/omen/omen_jobs.py,sha256=qbTZ9HVvu_iP4dDxuvOZxAp6JsRKejvEW2YDYCnRmd4,5039
|
39
39
|
prediction_market_agent_tooling/loggers.py,sha256=kFZ1BrI8hvWgZO1vzptFnYiOEDx9Ozs86DA9yF3bSgY,5212
|
40
|
-
prediction_market_agent_tooling/logprobs_parser.py,sha256=
|
40
|
+
prediction_market_agent_tooling/logprobs_parser.py,sha256=DBlBQtWX8_URXhzTU3YWIPa76Zx3QDHlx1ARqbgJsVI,5008
|
41
41
|
prediction_market_agent_tooling/markets/agent_market.py,sha256=smKuMaP1zyTtw31Robbj3ospF03xptWX0EDKPJbHH9I,19070
|
42
42
|
prediction_market_agent_tooling/markets/base_subgraph_handler.py,sha256=7RaYO_4qAmQ6ZGM8oPK2-CkiJfKmV9MxM-rJlduaecU,1971
|
43
43
|
prediction_market_agent_tooling/markets/blockchain_utils.py,sha256=gZMwCTO-1d2ALXeY7-LP6U4kCpotJ6GMPZwN11kFOfE,2604
|
44
44
|
prediction_market_agent_tooling/markets/categorize.py,sha256=orLZlPaHgeREU66m1amxfWikeV77idV4sZDPB8NgSD0,1300
|
45
|
-
prediction_market_agent_tooling/markets/data_models.py,sha256=
|
45
|
+
prediction_market_agent_tooling/markets/data_models.py,sha256=seifqxjVpzZdVKJQ7a5sKPPUM749EHV80SdI6pVQ3b4,7542
|
46
46
|
prediction_market_agent_tooling/markets/manifold/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
47
47
|
prediction_market_agent_tooling/markets/manifold/api.py,sha256=tWnjuqvU8pcCuja2B_ynHeds1iiEFc6QWHjeSO_GSxY,7676
|
48
48
|
prediction_market_agent_tooling/markets/manifold/data_models.py,sha256=QzRfR2g_3vzCw4azj_lOSKSFAZczjAWlM0lQy2dZry8,6704
|
@@ -59,7 +59,7 @@ prediction_market_agent_tooling/markets/omen/data_models.py,sha256=0jCxgUEVpaggt
|
|
59
59
|
prediction_market_agent_tooling/markets/omen/omen.py,sha256=jyoAV-E_Qcbqqs4oi7junE3rHTG3kaYLMtIVzEkNC6M,49981
|
60
60
|
prediction_market_agent_tooling/markets/omen/omen_constants.py,sha256=D9oflYKafLQiHYtB5sScMHqmXyzM8JP8J0yATmc4SQQ,233
|
61
61
|
prediction_market_agent_tooling/markets/omen/omen_contracts.py,sha256=f0dKbdVM2OUTSpkCSZdPtKqeckS2c48j3rjnK8oD3wE,29716
|
62
|
-
prediction_market_agent_tooling/markets/omen/omen_resolving.py,sha256=
|
62
|
+
prediction_market_agent_tooling/markets/omen/omen_resolving.py,sha256=h4iK7r57D0EaJqfk_n7ISaJHOB93ALL-fCPI1VztXbQ,10364
|
63
63
|
prediction_market_agent_tooling/markets/omen/omen_subgraph_handler.py,sha256=149T_tJxK2GFnGCulOlGr2Mwiaa7sa74E4lqYsuCv68,39962
|
64
64
|
prediction_market_agent_tooling/markets/polymarket/api.py,sha256=UZ4_TG8ceb9Y-qgsOKs8Qiv8zDt957QkT8IX2c83yqo,4800
|
65
65
|
prediction_market_agent_tooling/markets/polymarket/data_models.py,sha256=U1SXTz93FIG3GO1h5BJWSt1hPKn_YAMBeZ3k8IS-ook,4552
|
@@ -67,8 +67,9 @@ prediction_market_agent_tooling/markets/polymarket/data_models_web.py,sha256=wCw
|
|
67
67
|
prediction_market_agent_tooling/markets/polymarket/polymarket.py,sha256=meAhQ5_gwVDvlSxhGGVAvRB7B47zKLnRvZ-_13tKtwY,3433
|
68
68
|
prediction_market_agent_tooling/markets/polymarket/utils.py,sha256=8kTeVjXPcXC6DkDvWYsZQLY7x8DS6CEp_yznSEazsNU,2037
|
69
69
|
prediction_market_agent_tooling/markets/seer/data_models.py,sha256=G0i-fnVaK16KWDYVI6w3lvyte6Op7ca_iIC8IfrXmlM,4702
|
70
|
-
prediction_market_agent_tooling/markets/seer/
|
71
|
-
prediction_market_agent_tooling/markets/seer/
|
70
|
+
prediction_market_agent_tooling/markets/seer/exceptions.py,sha256=cEObdjluivD94tgOLzmimR7wgQEOt6SRakrYdhsRQtk,112
|
71
|
+
prediction_market_agent_tooling/markets/seer/price_manager.py,sha256=MClY2NGwOV70nZYIcmzXFy6Ogd8NBIq7telQcQ3VcU4,6243
|
72
|
+
prediction_market_agent_tooling/markets/seer/seer.py,sha256=9AsfvsCVxNvieDPqGtyjdESzFyPEzDVpTR-4P9mL9Y8,20966
|
72
73
|
prediction_market_agent_tooling/markets/seer/seer_contracts.py,sha256=kH9nPXsx6UM5er42g2f3fLvy36sY5JM2f_beXeuNgUc,3790
|
73
74
|
prediction_market_agent_tooling/markets/seer/seer_subgraph_handler.py,sha256=pJxch9_u0EdiIatQP1-UFClt8UEfMZAXBlk5wDO_ovk,9940
|
74
75
|
prediction_market_agent_tooling/markets/seer/subgraph_data_models.py,sha256=0izxS8Mtzonfdl9UqvFVXrdj0hVzieroekXhogfZKCw,1817
|
@@ -100,6 +101,9 @@ prediction_market_agent_tooling/tools/langfuse_client_utils.py,sha256=6IvsqqNNfB
|
|
100
101
|
prediction_market_agent_tooling/tools/omen/reality_accuracy.py,sha256=M1SF7iSW1gVlQSTskdVFTn09uPLST23YeipVIWj54io,2236
|
101
102
|
prediction_market_agent_tooling/tools/omen/sell_positions.py,sha256=Q4oI7_QI3AkyxlH10VvxDahYVrphQa1Wnox2Ce_cf_k,2452
|
102
103
|
prediction_market_agent_tooling/tools/parallelism.py,sha256=6Gou0hbjtMZrYvxjTDFUDZuxmE2nqZVbb6hkg1hF82A,1022
|
104
|
+
prediction_market_agent_tooling/tools/perplexity/perplexity_client.py,sha256=Oi5a_uaCAPtpTAEEVwD0SXWTsKkhCXOQjCBfa1eAuC0,3215
|
105
|
+
prediction_market_agent_tooling/tools/perplexity/perplexity_models.py,sha256=SfeR5FGQ2PqaxG4f4ij50LEnS9f2aeLplVwD7IZQh1s,820
|
106
|
+
prediction_market_agent_tooling/tools/perplexity/perplexity_search.py,sha256=Ii-5bqk6DygOCK1G78PDdz2sRTNvFYHVYVl2sajUbY4,2616
|
103
107
|
prediction_market_agent_tooling/tools/relevant_news_analysis/data_models.py,sha256=95l84aztFaxcRLLcRQ46yKJbIlOEuDAbIGLouyliDzA,1316
|
104
108
|
prediction_market_agent_tooling/tools/relevant_news_analysis/relevant_news_analysis.py,sha256=r4MdP5uEMlaCwoa2XQZzGq3oZEqnoo9S4dg8uzXfSOY,5473
|
105
109
|
prediction_market_agent_tooling/tools/relevant_news_analysis/relevant_news_cache.py,sha256=kNWq92T11Knb9mYBZlMiZUzOpKgCd-5adanylQUMRJA,3085
|
@@ -116,8 +120,8 @@ prediction_market_agent_tooling/tools/tokens/usd.py,sha256=yuW8iPPtcpP4eLH2nORMD
|
|
116
120
|
prediction_market_agent_tooling/tools/transaction_cache.py,sha256=K5YKNL2_tR10Iw2TD9fuP-CTGpBbZtNdgbd0B_R7pjg,1814
|
117
121
|
prediction_market_agent_tooling/tools/utils.py,sha256=Jzpck3_QwShhejhgbAhmNxPSOPQJssBQep0eVemVjZ4,7064
|
118
122
|
prediction_market_agent_tooling/tools/web3_utils.py,sha256=zRq-eeBGWt8uUGN9G_WfjmJ0eVvO8aWE9S0Pz_Y6AOA,12342
|
119
|
-
prediction_market_agent_tooling-0.65.
|
120
|
-
prediction_market_agent_tooling-0.65.
|
121
|
-
prediction_market_agent_tooling-0.65.
|
122
|
-
prediction_market_agent_tooling-0.65.
|
123
|
-
prediction_market_agent_tooling-0.65.
|
123
|
+
prediction_market_agent_tooling-0.65.7.dist-info/LICENSE,sha256=6or154nLLU6bELzjh0mCreFjt0m2v72zLi3yHE0QbeE,7650
|
124
|
+
prediction_market_agent_tooling-0.65.7.dist-info/METADATA,sha256=Swm7dO-d5M0d1OqUB21l3QZ8gsrlORPKbG_UDDnZRZo,8734
|
125
|
+
prediction_market_agent_tooling-0.65.7.dist-info/WHEEL,sha256=b4K_helf-jlQoXBBETfwnf4B04YC67LOev0jo4fX5m8,88
|
126
|
+
prediction_market_agent_tooling-0.65.7.dist-info/entry_points.txt,sha256=m8PukHbeH5g0IAAmOf_1Ahm-sGAMdhSSRQmwtpmi2s8,81
|
127
|
+
prediction_market_agent_tooling-0.65.7.dist-info/RECORD,,
|
File without changes
|
File without changes
|