hyperpocket 0.4.3__py3-none-any.whl → 0.4.4__py3-none-any.whl
Sign up to get free protection for your applications and to get access to all the features.
- hyperpocket/auth/provider.py +1 -0
- hyperpocket/auth/valyu/README.md +8 -0
- hyperpocket/auth/valyu/__init__.py +0 -0
- hyperpocket/auth/valyu/context.py +15 -0
- hyperpocket/auth/valyu/token_context.py +11 -0
- hyperpocket/auth/valyu/token_handler.py +94 -0
- hyperpocket/auth/valyu/token_schema.py +9 -0
- hyperpocket/server/auth/valyu.py +14 -0
- hyperpocket/tool/function/annotation.py +4 -0
- {hyperpocket-0.4.3.dist-info → hyperpocket-0.4.4.dist-info}/METADATA +1 -1
- {hyperpocket-0.4.3.dist-info → hyperpocket-0.4.4.dist-info}/RECORD +13 -6
- {hyperpocket-0.4.3.dist-info → hyperpocket-0.4.4.dist-info}/WHEEL +0 -0
- {hyperpocket-0.4.3.dist-info → hyperpocket-0.4.4.dist-info}/entry_points.txt +0 -0
hyperpocket/auth/provider.py
CHANGED
File without changes
|
@@ -0,0 +1,15 @@
|
|
1
|
+
from hyperpocket.auth.context import AuthContext
|
2
|
+
|
3
|
+
|
4
|
+
class ValyuAuthContext(AuthContext):
|
5
|
+
_ACCESS_TOKEN_KEY: str = "VALYU_API_KEY"
|
6
|
+
|
7
|
+
def to_dict(self) -> dict[str, str]:
|
8
|
+
return {
|
9
|
+
self._ACCESS_TOKEN_KEY: self.access_token,
|
10
|
+
}
|
11
|
+
|
12
|
+
def to_profiled_dict(self, profile: str) -> dict[str, str]:
|
13
|
+
return {
|
14
|
+
f"{profile.upper()}_{self._ACCESS_TOKEN_KEY}": self.access_token,
|
15
|
+
}
|
@@ -0,0 +1,11 @@
|
|
1
|
+
from hyperpocket.auth.valyu.context import ValyuAuthContext
|
2
|
+
from hyperpocket.auth.valyu.token_schema import ValyuTokenResponse
|
3
|
+
|
4
|
+
|
5
|
+
class ValyuTokenAuthContext(ValyuAuthContext):
|
6
|
+
@classmethod
|
7
|
+
def from_valyu_token_response(cls, response: ValyuTokenResponse):
|
8
|
+
description = f"Valyu Token Context logged in"
|
9
|
+
return cls(
|
10
|
+
access_token=response.access_token, description=description, expires_at=None
|
11
|
+
)
|
@@ -0,0 +1,94 @@
|
|
1
|
+
from typing import Optional
|
2
|
+
from urllib.parse import urljoin, urlencode
|
3
|
+
|
4
|
+
from hyperpocket.auth import AuthProvider
|
5
|
+
from hyperpocket.auth.ahrefs.token_schema import AhrefsTokenRequest
|
6
|
+
from hyperpocket.auth.context import AuthContext
|
7
|
+
from hyperpocket.auth.handler import AuthHandlerInterface
|
8
|
+
from hyperpocket.auth.valyu.token_context import ValyuTokenAuthContext
|
9
|
+
from hyperpocket.auth.valyu.token_schema import ValyuTokenRequest, ValyuTokenResponse
|
10
|
+
from hyperpocket.config import config
|
11
|
+
from hyperpocket.futures import FutureStore
|
12
|
+
|
13
|
+
|
14
|
+
class ValyuTokenAuthHandler(AuthHandlerInterface):
|
15
|
+
name: str = "valyu-token"
|
16
|
+
description: str = (
|
17
|
+
"This handler is used to authenticate users using the Valyu token."
|
18
|
+
)
|
19
|
+
scoped: bool = False
|
20
|
+
|
21
|
+
_TOKEN_URL: str = urljoin(
|
22
|
+
config().public_base_url + "/",
|
23
|
+
f"{config().callback_url_rewrite_prefix}/auth/token",
|
24
|
+
)
|
25
|
+
|
26
|
+
@staticmethod
|
27
|
+
def provider() -> AuthProvider:
|
28
|
+
return AuthProvider.VALYU
|
29
|
+
|
30
|
+
@staticmethod
|
31
|
+
def provider_default() -> bool:
|
32
|
+
return True
|
33
|
+
|
34
|
+
@staticmethod
|
35
|
+
def recommended_scopes() -> set[str]:
|
36
|
+
return set()
|
37
|
+
|
38
|
+
def prepare(
|
39
|
+
self,
|
40
|
+
auth_req: AhrefsTokenRequest,
|
41
|
+
thread_id: str,
|
42
|
+
profile: str,
|
43
|
+
future_uid: str,
|
44
|
+
*args,
|
45
|
+
**kwargs,
|
46
|
+
) -> str:
|
47
|
+
redirect_uri = urljoin(
|
48
|
+
config().public_base_url + "/",
|
49
|
+
f"{config().callback_url_rewrite_prefix}/auth/valyu/token/callback",
|
50
|
+
)
|
51
|
+
url = self._make_auth_url(
|
52
|
+
auth_req=auth_req, redirect_uri=redirect_uri, state=future_uid
|
53
|
+
)
|
54
|
+
FutureStore.create_future(
|
55
|
+
future_uid,
|
56
|
+
data={
|
57
|
+
"redirect_uri": redirect_uri,
|
58
|
+
"thread_id": thread_id,
|
59
|
+
"profile": profile,
|
60
|
+
},
|
61
|
+
)
|
62
|
+
|
63
|
+
return f"User needs to authenticate using the following URL: {url}"
|
64
|
+
|
65
|
+
async def authenticate(
|
66
|
+
self, auth_req: ValyuTokenRequest, future_uid: str, *args, **kwargs
|
67
|
+
) -> AuthContext:
|
68
|
+
future_data = FutureStore.get_future(future_uid)
|
69
|
+
access_token = await future_data.future
|
70
|
+
|
71
|
+
response = ValyuTokenResponse(access_token=access_token)
|
72
|
+
context = ValyuTokenAuthContext.from_valyu_token_response(response)
|
73
|
+
|
74
|
+
return context
|
75
|
+
|
76
|
+
async def refresh(
|
77
|
+
self, auth_req: ValyuTokenRequest, context: AuthContext, *args, **kwargs
|
78
|
+
) -> AuthContext:
|
79
|
+
raise Exception("Valyu token doesn't support refresh")
|
80
|
+
|
81
|
+
def _make_auth_url(
|
82
|
+
self, auth_req: ValyuTokenRequest, redirect_uri: str, state: str
|
83
|
+
):
|
84
|
+
params = {
|
85
|
+
"redirect_uri": redirect_uri,
|
86
|
+
"state": state,
|
87
|
+
}
|
88
|
+
auth_url = f"{self._TOKEN_URL}?{urlencode(params)}"
|
89
|
+
return auth_url
|
90
|
+
|
91
|
+
def make_request(
|
92
|
+
self, auth_scopes: Optional[list[str]] = None, **kwargs
|
93
|
+
) -> ValyuTokenRequest:
|
94
|
+
return ValyuTokenRequest()
|
@@ -0,0 +1,14 @@
|
|
1
|
+
from fastapi import APIRouter
|
2
|
+
from starlette.responses import HTMLResponse
|
3
|
+
from hyperpocket.futures import FutureStore
|
4
|
+
|
5
|
+
valyu_auth_router = APIRouter(prefix="/valyu")
|
6
|
+
|
7
|
+
|
8
|
+
@valyu_auth_router.get("/token/callback")
|
9
|
+
async def valyu_token_callback(state: str, token: str):
|
10
|
+
try:
|
11
|
+
FutureStore.resolve_future(state, token)
|
12
|
+
except ValueError:
|
13
|
+
return HTMLResponse(content="failed")
|
14
|
+
return HTMLResponse(content="success")
|
@@ -1,3 +1,4 @@
|
|
1
|
+
import inspect
|
1
2
|
from typing import Callable, List, Optional
|
2
3
|
|
3
4
|
from hyperpocket.auth import AuthProvider
|
@@ -24,6 +25,9 @@ def function_tool(
|
|
24
25
|
auth_handler=auth_handler,
|
25
26
|
)
|
26
27
|
|
28
|
+
if inspect.iscoroutinefunction(inner_func):
|
29
|
+
return FunctionTool.from_func(func=inner_func, afunc=inner_func, auth=auth, tool_vars=tool_vars)
|
30
|
+
|
27
31
|
return FunctionTool.from_func(func=inner_func, auth=auth, tool_vars=tool_vars)
|
28
32
|
|
29
33
|
if func is not None:
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: hyperpocket
|
3
|
-
Version: 0.4.
|
3
|
+
Version: 0.4.4
|
4
4
|
Summary: Building AI agent with hyperpocket tool in a flash
|
5
5
|
Project-URL: Homepage, https://vessl-ai.github.io/hyperpocket
|
6
6
|
Project-URL: Repository, https://github.com/vessl-ai/hyperpocket
|
@@ -10,7 +10,7 @@ hyperpocket/auth/README.md,sha256=zn4QqnFZCA_4X3x8Wb6lE3OP5otYxpByZaCiUkBvaNs,11
|
|
10
10
|
hyperpocket/auth/__init__.py,sha256=pO8M6SAuq0EPqi848_Iy650wqaLekx98e3RRnEAM_r0,607
|
11
11
|
hyperpocket/auth/context.py,sha256=m-j2gDYUKBMsiakLHsu9thhM4dYyFiXP0Wp0S_iC0bU,1303
|
12
12
|
hyperpocket/auth/handler.py,sha256=5cusl9ANEyG3gORVFjqh709txC0alw6eKtxgV6wjf6k,6683
|
13
|
-
hyperpocket/auth/provider.py,sha256=
|
13
|
+
hyperpocket/auth/provider.py,sha256=ZKgDYiwI82cfKTcSvlLiYWV1DFwJJEldRj6ZACNmoeQ,2081
|
14
14
|
hyperpocket/auth/schema.py,sha256=pl4oRTNj8PdqQg6UVPWf8ei2uYQ4DtOmmD58cVFMYQw,537
|
15
15
|
hyperpocket/auth/activeloop/README.md,sha256=xp8n0itbY9VNt8XEvCAE4Ealvj4uf_f1uSZyWG4Q5FE,172
|
16
16
|
hyperpocket/auth/activeloop/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
@@ -422,6 +422,12 @@ hyperpocket/auth/trello/context.py,sha256=EFB3Jk4DtngnAkySOJ4BxODFVo9YGPuKYwmlDv
|
|
422
422
|
hyperpocket/auth/trello/token_context.py,sha256=xrHxG0sBnln13XxdkojFeoMYMO6PWKXXvsb9j5FmgRs,446
|
423
423
|
hyperpocket/auth/trello/token_handler.py,sha256=Gc6RIzljxGfCsCW3c7YtxT0LMaYXxSc1af5z61MT72k,2905
|
424
424
|
hyperpocket/auth/trello/token_schema.py,sha256=1N-SfXzgxFUyWwomMaf44tiuQmpY3sAWkfAYLcgMXxw,274
|
425
|
+
hyperpocket/auth/valyu/README.md,sha256=QeSzmWSS86cXG1CmhAnGWLaVAeAo4ZpMWYwJ8OlCOMg,148
|
426
|
+
hyperpocket/auth/valyu/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
427
|
+
hyperpocket/auth/valyu/context.py,sha256=He1n_Yo9CNOoOG_2ESKEJi8F5OphLbMruxK20zgUDHA,427
|
428
|
+
hyperpocket/auth/valyu/token_context.py,sha256=0FKxYQUu4Zvu2gywcNdvRIEto4k_Iff9qQt_hE3-gd4,437
|
429
|
+
hyperpocket/auth/valyu/token_handler.py,sha256=s5KkRezfEEXjVa7qtAz8OvGh8-iVTWxy980zYeyNHkU,2933
|
430
|
+
hyperpocket/auth/valyu/token_schema.py,sha256=1yaf4fSREnTpvwmzKDrVh1oBxrwPSRnRPbKPOub-iPM,207
|
425
431
|
hyperpocket/auth/wandb/README.md,sha256=Zsohbn6yELf8pfhBddDRm_iqs4NgQBZZhnC00yP5mVE,252
|
426
432
|
hyperpocket/auth/wandb/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
427
433
|
hyperpocket/auth/wandb/context.py,sha256=YKtk8yz-LnKHMwLs0CGZ3HUqvvtS6J2eAWQ7B-Z1rZg,425
|
@@ -557,6 +563,7 @@ hyperpocket/server/auth/tavily.py,sha256=gLQtoxmtiv0zbsdL0iX-_qaig_LdLrhUO9-KzVs
|
|
557
563
|
hyperpocket/server/auth/timekit.py,sha256=8pC-DT_gbm6vmd1oZaquD4Z68998BEDb1nYVAIXldu4,445
|
558
564
|
hyperpocket/server/auth/token.py,sha256=Yq5Ym-uEO_3cBpQOsmCBuqtFIdImrNcVUgF5ozs5NHk,1763
|
559
565
|
hyperpocket/server/auth/trello.py,sha256=1T3ez62h8-KMvu2Zj1Tyv2afgqLUbtG2LM4QbISLOGA,441
|
566
|
+
hyperpocket/server/auth/valyu.py,sha256=orPvPC_Wt-rqaycFGliv1XGhTE73AxHSzwhFV_cH8Zc,437
|
560
567
|
hyperpocket/server/auth/wandb.py,sha256=jfwg-lQVrr5TgEL7QETnaFucDvi057SJvVZlBe7cOqQ,709
|
561
568
|
hyperpocket/server/auth/weaviate.py,sha256=WnBQu4H9mOGYEq7JcGqUkk3QXRO8FpGa9TLRHMQfpCE,732
|
562
569
|
hyperpocket/server/auth/workiom.py,sha256=0apFB5-3rmcJaQeEl1_XZ_QlsZORdq8kixJBGkTpZ3Y,445
|
@@ -575,7 +582,7 @@ hyperpocket/tool/dock/__init__.py,sha256=gEFaYTgTIzzaAHW6Bl1CJL8RQlU23NK--bojLqP
|
|
575
582
|
hyperpocket/tool/dock/dock.py,sha256=Uk3Lggmj_piGFiPVde2ZvRXOKncIYqjPaRQ3LD8DWT0,859
|
576
583
|
hyperpocket/tool/function/README.md,sha256=6Y9a8FlFjEdbrVqF0NoQ1j34VoV8Zt6Pf9-xlLIHkTc,3676
|
577
584
|
hyperpocket/tool/function/__init__.py,sha256=n0IYvfoyoFWv76iwK2kBC-X6468dl5XyYFl1mudYSe4,261
|
578
|
-
hyperpocket/tool/function/annotation.py,sha256=
|
585
|
+
hyperpocket/tool/function/annotation.py,sha256=qVBhjFUXY_MXysPN61FJuX4mgVZHuMJTtn0L5QCY4eg,1159
|
579
586
|
hyperpocket/tool/function/tool.py,sha256=HwsTI__DapAoYxQMuy45ivD4Lxyd7_-MO0GHlqfuI5c,7466
|
580
587
|
hyperpocket/tool/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
581
588
|
hyperpocket/util/__init__.py,sha256=7vN8c7dy7nhGhjXtSUGAsc6GIlUnuBMvXSl1yW1M4js,35
|
@@ -587,7 +594,7 @@ hyperpocket/util/function_to_model.py,sha256=TXUs-qPbzL8C9-qqpz4Ad4D9MOPP61n_p0i
|
|
587
594
|
hyperpocket/util/generate_slug.py,sha256=gwwf9gfTlqribrvybMQQj7VIHX5FspVoTm5-EYH-X74,150
|
588
595
|
hyperpocket/util/get_objects_from_subpackage.py,sha256=4mR_S8eaJSdU68YfCkiXeIcXxb6q7LjFGsY_IHeNIZw,929
|
589
596
|
hyperpocket/util/json_schema_to_model.py,sha256=BNTFYzBK-yZr2VkO6lAdZkXdZXfGSabzWa3DM6it4KI,3731
|
590
|
-
hyperpocket-0.4.
|
591
|
-
hyperpocket-0.4.
|
592
|
-
hyperpocket-0.4.
|
593
|
-
hyperpocket-0.4.
|
597
|
+
hyperpocket-0.4.4.dist-info/METADATA,sha256=CItp4XP56pSM5F32k5YsOIuaWAjJHzWVORyCbnz5vLM,13074
|
598
|
+
hyperpocket-0.4.4.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
599
|
+
hyperpocket-0.4.4.dist-info/entry_points.txt,sha256=KpBleaYr0SaENXOa-dFvJ_cvFCHYFEQ4LMl11ShAcBI,61
|
600
|
+
hyperpocket-0.4.4.dist-info/RECORD,,
|
File without changes
|
File without changes
|