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.
@@ -73,6 +73,7 @@ class AuthProvider(Enum):
73
73
  ZINC = "zinc"
74
74
  SEMANTIC_SCHOLAR = "semantic_scholar"
75
75
  WEAVIATE = "weaviate"
76
+ VALYU = "valyu"
76
77
 
77
78
  @classmethod
78
79
  def get_auth_provider(cls, auth_provider_name: str) -> "AuthProvider":
@@ -0,0 +1,8 @@
1
+ # Valyu Authentication
2
+
3
+ ## Supported Authentication Types
4
+ - Token
5
+
6
+ ## Additional Resources
7
+
8
+ - [Valyu API Documentation](https://www.valyu.network/)
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,9 @@
1
+ from hyperpocket.auth.schema import AuthenticateRequest, AuthenticateResponse
2
+
3
+
4
+ class ValyuTokenRequest(AuthenticateRequest):
5
+ pass
6
+
7
+
8
+ class ValyuTokenResponse(AuthenticateResponse):
9
+ access_token: str
@@ -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
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=7oRpa3ImMdQPXp2-VwTF3tZGhPkyIe0cOgQCJcljzgQ,2061
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=mHm_TN2X7xmivBZ8_tbnsaGt_GUQZ-l2IPv0PudZKb8,982
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.3.dist-info/METADATA,sha256=ipsj7-g41HnCurUcYUUFDglQKa2Ux-8ag1uiBLkIoyA,13074
591
- hyperpocket-0.4.3.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
592
- hyperpocket-0.4.3.dist-info/entry_points.txt,sha256=KpBleaYr0SaENXOa-dFvJ_cvFCHYFEQ4LMl11ShAcBI,61
593
- hyperpocket-0.4.3.dist-info/RECORD,,
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,,