hyperpocket 0.4.3__py3-none-any.whl → 0.4.5__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.
- hyperpocket/auth/kraken/README.md +8 -0
- hyperpocket/auth/kraken/__init__.py +0 -0
- hyperpocket/auth/kraken/context.py +14 -0
- hyperpocket/auth/kraken/keypair_context.py +17 -0
- hyperpocket/auth/kraken/keypair_handler.py +97 -0
- hyperpocket/auth/kraken/keypair_schema.py +10 -0
- hyperpocket/auth/provider.py +2 -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 +93 -0
- hyperpocket/auth/valyu/token_schema.py +9 -0
- hyperpocket/pocket_main.py +8 -5
- hyperpocket/server/auth/kraken.py +58 -0
- hyperpocket/server/auth/valyu.py +14 -0
- hyperpocket/tool/function/annotation.py +4 -0
- hyperpocket/util/json_schema_to_model.py +2 -2
- {hyperpocket-0.4.3.dist-info → hyperpocket-0.4.5.dist-info}/METADATA +1 -1
- {hyperpocket-0.4.3.dist-info → hyperpocket-0.4.5.dist-info}/RECORD +22 -8
- {hyperpocket-0.4.3.dist-info → hyperpocket-0.4.5.dist-info}/WHEEL +0 -0
- {hyperpocket-0.4.3.dist-info → hyperpocket-0.4.5.dist-info}/entry_points.txt +0 -0
File without changes
|
@@ -0,0 +1,14 @@
|
|
1
|
+
from hyperpocket.auth.context import AuthContext
|
2
|
+
|
3
|
+
|
4
|
+
class KrakenAuthContext(AuthContext):
|
5
|
+
def to_dict(self) -> dict[str, str]:
|
6
|
+
return {
|
7
|
+
'KRAKEN_API_KEY': self.detail["KRAKEN_API_KEY"],
|
8
|
+
'KRAKEN_API_SECRET': self.detail["KRAKEN_API_SECRET"],
|
9
|
+
}
|
10
|
+
|
11
|
+
def to_profiled_dict(self, profile: str) -> dict[str, str]:
|
12
|
+
return {
|
13
|
+
f"{profile.upper()}_{self._ACCESS_TOKEN_KEY}": self.access_token,
|
14
|
+
}
|
@@ -0,0 +1,17 @@
|
|
1
|
+
from hyperpocket.auth.kraken.context import KrakenAuthContext
|
2
|
+
from hyperpocket.auth.kraken.keypair_schema import KrakenKeypairResponse
|
3
|
+
|
4
|
+
|
5
|
+
class KrakenKeypairAuthContext(KrakenAuthContext):
|
6
|
+
@classmethod
|
7
|
+
def from_kraken_keypair_response(cls, response: KrakenKeypairResponse):
|
8
|
+
description = f"Kraken Keypair Context logged in"
|
9
|
+
return cls(
|
10
|
+
access_token="",
|
11
|
+
detail={
|
12
|
+
"KRAKEN_API_KEY": response.kraken_api_key,
|
13
|
+
"KRAKEN_API_SECRET": response.kraken_api_secret,
|
14
|
+
},
|
15
|
+
description=description,
|
16
|
+
expires_at=None,
|
17
|
+
)
|
@@ -0,0 +1,97 @@
|
|
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.kraken.keypair_context import KrakenKeypairAuthContext
|
9
|
+
from hyperpocket.auth.kraken.keypair_schema import KrakenKeypairRequest, KrakenKeypairResponse
|
10
|
+
from hyperpocket.config import config
|
11
|
+
from hyperpocket.futures import FutureStore
|
12
|
+
|
13
|
+
|
14
|
+
class KrakeyKeypairAuthHandler(AuthHandlerInterface):
|
15
|
+
name: str = "kraken-keypair"
|
16
|
+
description: str = (
|
17
|
+
"This handler is used to authenticate users using the Kraken keypair."
|
18
|
+
)
|
19
|
+
scoped: bool = False
|
20
|
+
|
21
|
+
_TOKEN_URL: str = urljoin(
|
22
|
+
config().public_base_url + "/",
|
23
|
+
f"{config().callback_url_rewrite_prefix}/auth/kraken/keypair",
|
24
|
+
)
|
25
|
+
|
26
|
+
@staticmethod
|
27
|
+
def provider() -> AuthProvider:
|
28
|
+
return AuthProvider.KRAKEN
|
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/kraken/keypair/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: KrakenKeypairRequest, future_uid: str, *args, **kwargs
|
67
|
+
) -> AuthContext:
|
68
|
+
future_data = FutureStore.get_future(future_uid)
|
69
|
+
kraken_api_keypair = await future_data.future
|
70
|
+
|
71
|
+
response = KrakenKeypairResponse(
|
72
|
+
kraken_api_key=kraken_api_keypair["kraken_api_key"],
|
73
|
+
kraken_api_secret=kraken_api_keypair["kraken_api_secret"],
|
74
|
+
)
|
75
|
+
context = KrakenKeypairAuthContext.from_kraken_keypair_response(response)
|
76
|
+
|
77
|
+
return context
|
78
|
+
|
79
|
+
async def refresh(
|
80
|
+
self, auth_req: KrakenKeypairRequest, context: AuthContext, *args, **kwargs
|
81
|
+
) -> AuthContext:
|
82
|
+
raise Exception("Kraken keypair doesn't support refresh")
|
83
|
+
|
84
|
+
def _make_auth_url(
|
85
|
+
self, auth_req: KrakenKeypairRequest, redirect_uri: str, state: str
|
86
|
+
):
|
87
|
+
params = {
|
88
|
+
"redirect_uri": redirect_uri,
|
89
|
+
"state": state,
|
90
|
+
}
|
91
|
+
auth_url = f"{self._TOKEN_URL}?{urlencode(params)}"
|
92
|
+
return auth_url
|
93
|
+
|
94
|
+
def make_request(
|
95
|
+
self, auth_scopes: Optional[list[str]] = None, **kwargs
|
96
|
+
) -> KrakenKeypairRequest:
|
97
|
+
return KrakenKeypairRequest()
|
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,93 @@
|
|
1
|
+
from typing import Optional
|
2
|
+
from urllib.parse import urljoin, urlencode
|
3
|
+
|
4
|
+
from hyperpocket.auth import AuthProvider
|
5
|
+
from hyperpocket.auth.context import AuthContext
|
6
|
+
from hyperpocket.auth.handler import AuthHandlerInterface
|
7
|
+
from hyperpocket.auth.valyu.token_context import ValyuTokenAuthContext
|
8
|
+
from hyperpocket.auth.valyu.token_schema import ValyuTokenRequest, ValyuTokenResponse
|
9
|
+
from hyperpocket.config import config
|
10
|
+
from hyperpocket.futures import FutureStore
|
11
|
+
|
12
|
+
|
13
|
+
class ValyuTokenAuthHandler(AuthHandlerInterface):
|
14
|
+
name: str = "valyu-token"
|
15
|
+
description: str = (
|
16
|
+
"This handler is used to authenticate users using the Valyu token."
|
17
|
+
)
|
18
|
+
scoped: bool = False
|
19
|
+
|
20
|
+
_TOKEN_URL: str = urljoin(
|
21
|
+
config().public_base_url + "/",
|
22
|
+
f"{config().callback_url_rewrite_prefix}/auth/token",
|
23
|
+
)
|
24
|
+
|
25
|
+
@staticmethod
|
26
|
+
def provider() -> AuthProvider:
|
27
|
+
return AuthProvider.VALYU
|
28
|
+
|
29
|
+
@staticmethod
|
30
|
+
def provider_default() -> bool:
|
31
|
+
return True
|
32
|
+
|
33
|
+
@staticmethod
|
34
|
+
def recommended_scopes() -> set[str]:
|
35
|
+
return set()
|
36
|
+
|
37
|
+
def prepare(
|
38
|
+
self,
|
39
|
+
auth_req: ValyuTokenRequest,
|
40
|
+
thread_id: str,
|
41
|
+
profile: str,
|
42
|
+
future_uid: str,
|
43
|
+
*args,
|
44
|
+
**kwargs,
|
45
|
+
) -> str:
|
46
|
+
redirect_uri = urljoin(
|
47
|
+
config().public_base_url + "/",
|
48
|
+
f"{config().callback_url_rewrite_prefix}/auth/valyu/token/callback",
|
49
|
+
)
|
50
|
+
url = self._make_auth_url(
|
51
|
+
auth_req=auth_req, redirect_uri=redirect_uri, state=future_uid
|
52
|
+
)
|
53
|
+
FutureStore.create_future(
|
54
|
+
future_uid,
|
55
|
+
data={
|
56
|
+
"redirect_uri": redirect_uri,
|
57
|
+
"thread_id": thread_id,
|
58
|
+
"profile": profile,
|
59
|
+
},
|
60
|
+
)
|
61
|
+
|
62
|
+
return f"User needs to authenticate using the following URL: {url}"
|
63
|
+
|
64
|
+
async def authenticate(
|
65
|
+
self, auth_req: ValyuTokenRequest, future_uid: str, *args, **kwargs
|
66
|
+
) -> AuthContext:
|
67
|
+
future_data = FutureStore.get_future(future_uid)
|
68
|
+
access_token = await future_data.future
|
69
|
+
|
70
|
+
response = ValyuTokenResponse(access_token=access_token)
|
71
|
+
context = ValyuTokenAuthContext.from_valyu_token_response(response)
|
72
|
+
|
73
|
+
return context
|
74
|
+
|
75
|
+
async def refresh(
|
76
|
+
self, auth_req: ValyuTokenRequest, context: AuthContext, *args, **kwargs
|
77
|
+
) -> AuthContext:
|
78
|
+
raise Exception("Valyu token doesn't support refresh")
|
79
|
+
|
80
|
+
def _make_auth_url(
|
81
|
+
self, auth_req: ValyuTokenRequest, redirect_uri: str, state: str
|
82
|
+
):
|
83
|
+
params = {
|
84
|
+
"redirect_uri": redirect_uri,
|
85
|
+
"state": state,
|
86
|
+
}
|
87
|
+
auth_url = f"{self._TOKEN_URL}?{urlencode(params)}"
|
88
|
+
return auth_url
|
89
|
+
|
90
|
+
def make_request(
|
91
|
+
self, auth_scopes: Optional[list[str]] = None, **kwargs
|
92
|
+
) -> ValyuTokenRequest:
|
93
|
+
return ValyuTokenRequest()
|
hyperpocket/pocket_main.py
CHANGED
@@ -30,10 +30,9 @@ class Pocket(object):
|
|
30
30
|
auth=auth,
|
31
31
|
)
|
32
32
|
except Exception as e:
|
33
|
-
|
34
|
-
self.server.refcnt_down(self._uid)
|
33
|
+
self.teardown()
|
35
34
|
pocket_logger.error(f"Failed to initialize pocket server. error : {e}")
|
36
|
-
self._teardown_server()
|
35
|
+
# self._teardown_server()
|
37
36
|
raise e
|
38
37
|
|
39
38
|
try:
|
@@ -337,15 +336,19 @@ class Pocket(object):
|
|
337
336
|
|
338
337
|
def _teardown_server(self):
|
339
338
|
self.server.teardown()
|
339
|
+
|
340
|
+
def teardown(self):
|
341
|
+
if hasattr(self, 'server'):
|
342
|
+
self.server.refcnt_down(self._uid)
|
340
343
|
|
341
344
|
def __enter__(self):
|
342
345
|
return self
|
343
346
|
|
344
347
|
def __exit__(self, exc_type, exc_val, exc_tb):
|
345
|
-
self.
|
348
|
+
self.teardown()
|
346
349
|
|
347
350
|
def __del__(self):
|
348
|
-
self.
|
351
|
+
self.teardown()
|
349
352
|
|
350
353
|
def __getstate__(self):
|
351
354
|
state = self.__dict__.copy()
|
@@ -0,0 +1,58 @@
|
|
1
|
+
from http import HTTPStatus
|
2
|
+
|
3
|
+
from fastapi import APIRouter, Form
|
4
|
+
from starlette.responses import HTMLResponse, RedirectResponse
|
5
|
+
from hyperpocket.futures import FutureStore
|
6
|
+
from hyperpocket.server.auth.token import add_query_params
|
7
|
+
|
8
|
+
kraken_auth_router = APIRouter(prefix="/kraken")
|
9
|
+
|
10
|
+
@kraken_auth_router.get("/keypair", response_class=HTMLResponse)
|
11
|
+
async def keypair_form(redirect_uri: str, state: str = ""):
|
12
|
+
html = f"""
|
13
|
+
<html>
|
14
|
+
<body>
|
15
|
+
<h2>Enter Token</h2>
|
16
|
+
<form action="submit" method="post">
|
17
|
+
<input type="hidden" name="redirect_uri" value="{redirect_uri}">
|
18
|
+
<input type="hidden" name="state" value="{state}">
|
19
|
+
|
20
|
+
<label for="kraken_api_key">Kraken API Key:</label>
|
21
|
+
<input type="text" id="kraken_api_key" name="kraken_api_key" required>
|
22
|
+
|
23
|
+
<label for="kraken_api_secret">Kraken API Secret:</label>
|
24
|
+
<input type="text" id="kraken_api_secret" name="kraken_api_secret" required>
|
25
|
+
|
26
|
+
<button type="submit">submit</button>
|
27
|
+
</form>
|
28
|
+
</body>
|
29
|
+
</html>
|
30
|
+
"""
|
31
|
+
return HTMLResponse(content=html)
|
32
|
+
|
33
|
+
@kraken_auth_router.post("/submit", response_class=RedirectResponse)
|
34
|
+
async def submit_keypair(
|
35
|
+
kraken_api_key: str = Form(...),
|
36
|
+
kraken_api_secret: str = Form(...),
|
37
|
+
redirect_uri: str = Form(...),
|
38
|
+
state: str = Form(...),
|
39
|
+
):
|
40
|
+
new_callback_url = add_query_params(
|
41
|
+
redirect_uri, {
|
42
|
+
"kraken_api_key": kraken_api_key,
|
43
|
+
"kraken_api_secret": kraken_api_secret,
|
44
|
+
"state": state,
|
45
|
+
}
|
46
|
+
)
|
47
|
+
return RedirectResponse(url=new_callback_url, status_code=HTTPStatus.SEE_OTHER)
|
48
|
+
|
49
|
+
@kraken_auth_router.get("/keypair/callback")
|
50
|
+
async def kraken_keypair_callback(state: str, kraken_api_key: str, kraken_api_secret: str):
|
51
|
+
try:
|
52
|
+
FutureStore.resolve_future(state, {
|
53
|
+
"kraken_api_key": kraken_api_key,
|
54
|
+
"kraken_api_secret": kraken_api_secret,
|
55
|
+
})
|
56
|
+
except ValueError:
|
57
|
+
return HTMLResponse(content="failed")
|
58
|
+
return HTMLResponse(content="success")
|
@@ -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,4 +1,4 @@
|
|
1
|
-
from typing import Type, Union
|
1
|
+
from typing import Type, Union, Optional
|
2
2
|
|
3
3
|
from pydantic import BaseModel, Field, create_model
|
4
4
|
|
@@ -42,7 +42,7 @@ def json_schema_to_model(
|
|
42
42
|
fields[property_name] = (field_type, Field(description=field_description))
|
43
43
|
else:
|
44
44
|
fields[property_name] = (
|
45
|
-
field_type,
|
45
|
+
Optional[field_type],
|
46
46
|
Field(default=field_default, description=field_description),
|
47
47
|
)
|
48
48
|
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: hyperpocket
|
3
|
-
Version: 0.4.
|
3
|
+
Version: 0.4.5
|
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
|
@@ -3,14 +3,14 @@ hyperpocket/builtin.py,sha256=SOrVrNjoKadDMksfB1rt6pKreJFzHG2YGBsLGVsg72c,2385
|
|
3
3
|
hyperpocket/constants.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
4
4
|
hyperpocket/pocket_auth.py,sha256=VzpGpHOOQIiEgrk1sYg5DYa5WYV6gRQmFlm8Kb2C9V0,17611
|
5
5
|
hyperpocket/pocket_core.py,sha256=WkY7Dp7KcJTORAFNuxDbZ5PDgicRANUtKkpZmI5gg6s,10021
|
6
|
-
hyperpocket/pocket_main.py,sha256=
|
6
|
+
hyperpocket/pocket_main.py,sha256=_YoxA01tFqnU3MavJndiXn1cKYWZ7z9_v0IihCzlHmo,10228
|
7
7
|
hyperpocket/prompts.py,sha256=N1bCzCLZvGUVhH1Vn_cgeBPsdY3MdIU7ZGqVgexoj5E,472
|
8
8
|
hyperpocket/tool_like.py,sha256=lUk9kUHPUmugqHCLbnWflKtZbCwtgcoYWtqGqUQtV38,187
|
9
9
|
hyperpocket/auth/README.md,sha256=zn4QqnFZCA_4X3x8Wb6lE3OP5otYxpByZaCiUkBvaNs,11562
|
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=qZGenhTsL8vqd9zmUMM52TVlmdNNOTsmLmCPmZshUNg,2103
|
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
|
@@ -240,6 +240,12 @@ hyperpocket/auth/klaviyo/context.py,sha256=JLALnthzihgMZkAQhKpzf8X07iHt0Iz2lEYsD
|
|
240
240
|
hyperpocket/auth/klaviyo/token_context.py,sha256=OwckVoIbJaNH65WmIgi7C03TCHR0eCInA20RYmNX9Vc,455
|
241
241
|
hyperpocket/auth/klaviyo/token_handler.py,sha256=0IiLFRhMhAm2LAMSGhkOoIoSiBbx0b776YTfB9VlJpw,2938
|
242
242
|
hyperpocket/auth/klaviyo/token_schema.py,sha256=-x9e36JdNkMmgjRkXzzmpDBdeLsA_yA1wS2svhqNqlI,276
|
243
|
+
hyperpocket/auth/kraken/README.md,sha256=QeSzmWSS86cXG1CmhAnGWLaVAeAo4ZpMWYwJ8OlCOMg,148
|
244
|
+
hyperpocket/auth/kraken/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
245
|
+
hyperpocket/auth/kraken/context.py,sha256=LNa6UjosOg880PmBinubg8pHqjQWFqJ5sKBklZrhD38,455
|
246
|
+
hyperpocket/auth/kraken/keypair_context.py,sha256=KyyJOlCE2wo3EIFFz5DGmHCPNb0tBOICvma9KrPyJHA,624
|
247
|
+
hyperpocket/auth/kraken/keypair_handler.py,sha256=JdYLFV-S9IcCHQuKa2xYLh7oYAmxO29GQrcUvvmik_c,3123
|
248
|
+
hyperpocket/auth/kraken/keypair_schema.py,sha256=xpZqmIg743Gf0OOfq9KNOg6Y-q5Yv67xOf9uBL7xq-0,242
|
243
249
|
hyperpocket/auth/lever/README.md,sha256=00OuO_5cJ7RwZ4ZuWzYonSaQwnO4BYYycH3IvbBNgPM,166
|
244
250
|
hyperpocket/auth/lever/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
245
251
|
hyperpocket/auth/lever/context.py,sha256=rNqjJyM4AToXEKT9DDKMdux2xk5vhwy6B6Fg84YCPIg,425
|
@@ -422,6 +428,12 @@ hyperpocket/auth/trello/context.py,sha256=EFB3Jk4DtngnAkySOJ4BxODFVo9YGPuKYwmlDv
|
|
422
428
|
hyperpocket/auth/trello/token_context.py,sha256=xrHxG0sBnln13XxdkojFeoMYMO6PWKXXvsb9j5FmgRs,446
|
423
429
|
hyperpocket/auth/trello/token_handler.py,sha256=Gc6RIzljxGfCsCW3c7YtxT0LMaYXxSc1af5z61MT72k,2905
|
424
430
|
hyperpocket/auth/trello/token_schema.py,sha256=1N-SfXzgxFUyWwomMaf44tiuQmpY3sAWkfAYLcgMXxw,274
|
431
|
+
hyperpocket/auth/valyu/README.md,sha256=QeSzmWSS86cXG1CmhAnGWLaVAeAo4ZpMWYwJ8OlCOMg,148
|
432
|
+
hyperpocket/auth/valyu/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
433
|
+
hyperpocket/auth/valyu/context.py,sha256=He1n_Yo9CNOoOG_2ESKEJi8F5OphLbMruxK20zgUDHA,427
|
434
|
+
hyperpocket/auth/valyu/token_context.py,sha256=0FKxYQUu4Zvu2gywcNdvRIEto4k_Iff9qQt_hE3-gd4,437
|
435
|
+
hyperpocket/auth/valyu/token_handler.py,sha256=iDLEkB3dG5Ag8jm7xP7bkLL3wElfU6Xdyxjwr7P7YL8,2864
|
436
|
+
hyperpocket/auth/valyu/token_schema.py,sha256=1yaf4fSREnTpvwmzKDrVh1oBxrwPSRnRPbKPOub-iPM,207
|
425
437
|
hyperpocket/auth/wandb/README.md,sha256=Zsohbn6yELf8pfhBddDRm_iqs4NgQBZZhnC00yP5mVE,252
|
426
438
|
hyperpocket/auth/wandb/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
427
439
|
hyperpocket/auth/wandb/context.py,sha256=YKtk8yz-LnKHMwLs0CGZ3HUqvvtS6J2eAWQ7B-Z1rZg,425
|
@@ -527,6 +539,7 @@ hyperpocket/server/auth/heygen.py,sha256=dtHq_CkBkDFsj2QfebpLRuFIByVE9PXX3fe3z8P
|
|
527
539
|
hyperpocket/server/auth/hubspot.py,sha256=6ApquQXemvjuFattNDALrz3932w20rFEOZaz_71bvBg,722
|
528
540
|
hyperpocket/server/auth/jira.py,sha256=xYzQ7Ve-z90wvChoVF_7rWuez9vcjHXB3FdZEVshSXo,703
|
529
541
|
hyperpocket/server/auth/klaviyo.py,sha256=5EShL4tD5JpeYh7lserpv_PFEC-fyn4QpKNNP8RUVJo,445
|
542
|
+
hyperpocket/server/auth/kraken.py,sha256=vhKhEI8NQiaMOBWbw1dROBBOCia91AYXYRozX8TyDds,2146
|
530
543
|
hyperpocket/server/auth/lever.py,sha256=AJjd852iUgfbudd-ILknC7HykgaKBKlMWfEUIWZ81ok,437
|
531
544
|
hyperpocket/server/auth/lever_sandbox.py,sha256=RrhBvEZUAfj26Nj7Ic5MQAauyMmhT9rE__tkMhmAT6Y,469
|
532
545
|
hyperpocket/server/auth/linear.py,sha256=vUW4TEqdOYqAyx9YLJC4-dVldPTDuIPXRvoo-a89ai8,988
|
@@ -557,6 +570,7 @@ hyperpocket/server/auth/tavily.py,sha256=gLQtoxmtiv0zbsdL0iX-_qaig_LdLrhUO9-KzVs
|
|
557
570
|
hyperpocket/server/auth/timekit.py,sha256=8pC-DT_gbm6vmd1oZaquD4Z68998BEDb1nYVAIXldu4,445
|
558
571
|
hyperpocket/server/auth/token.py,sha256=Yq5Ym-uEO_3cBpQOsmCBuqtFIdImrNcVUgF5ozs5NHk,1763
|
559
572
|
hyperpocket/server/auth/trello.py,sha256=1T3ez62h8-KMvu2Zj1Tyv2afgqLUbtG2LM4QbISLOGA,441
|
573
|
+
hyperpocket/server/auth/valyu.py,sha256=orPvPC_Wt-rqaycFGliv1XGhTE73AxHSzwhFV_cH8Zc,437
|
560
574
|
hyperpocket/server/auth/wandb.py,sha256=jfwg-lQVrr5TgEL7QETnaFucDvi057SJvVZlBe7cOqQ,709
|
561
575
|
hyperpocket/server/auth/weaviate.py,sha256=WnBQu4H9mOGYEq7JcGqUkk3QXRO8FpGa9TLRHMQfpCE,732
|
562
576
|
hyperpocket/server/auth/workiom.py,sha256=0apFB5-3rmcJaQeEl1_XZ_QlsZORdq8kixJBGkTpZ3Y,445
|
@@ -575,7 +589,7 @@ hyperpocket/tool/dock/__init__.py,sha256=gEFaYTgTIzzaAHW6Bl1CJL8RQlU23NK--bojLqP
|
|
575
589
|
hyperpocket/tool/dock/dock.py,sha256=Uk3Lggmj_piGFiPVde2ZvRXOKncIYqjPaRQ3LD8DWT0,859
|
576
590
|
hyperpocket/tool/function/README.md,sha256=6Y9a8FlFjEdbrVqF0NoQ1j34VoV8Zt6Pf9-xlLIHkTc,3676
|
577
591
|
hyperpocket/tool/function/__init__.py,sha256=n0IYvfoyoFWv76iwK2kBC-X6468dl5XyYFl1mudYSe4,261
|
578
|
-
hyperpocket/tool/function/annotation.py,sha256=
|
592
|
+
hyperpocket/tool/function/annotation.py,sha256=qVBhjFUXY_MXysPN61FJuX4mgVZHuMJTtn0L5QCY4eg,1159
|
579
593
|
hyperpocket/tool/function/tool.py,sha256=HwsTI__DapAoYxQMuy45ivD4Lxyd7_-MO0GHlqfuI5c,7466
|
580
594
|
hyperpocket/tool/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
581
595
|
hyperpocket/util/__init__.py,sha256=7vN8c7dy7nhGhjXtSUGAsc6GIlUnuBMvXSl1yW1M4js,35
|
@@ -586,8 +600,8 @@ hyperpocket/util/flatten_json_schema.py,sha256=iuNBEmMSKFtPi-uqo6fb3RWN0koHOAihW
|
|
586
600
|
hyperpocket/util/function_to_model.py,sha256=TXUs-qPbzL8C9-qqpz4Ad4D9MOPP61n_p0iPU6SoBeM,2318
|
587
601
|
hyperpocket/util/generate_slug.py,sha256=gwwf9gfTlqribrvybMQQj7VIHX5FspVoTm5-EYH-X74,150
|
588
602
|
hyperpocket/util/get_objects_from_subpackage.py,sha256=4mR_S8eaJSdU68YfCkiXeIcXxb6q7LjFGsY_IHeNIZw,929
|
589
|
-
hyperpocket/util/json_schema_to_model.py,sha256=
|
590
|
-
hyperpocket-0.4.
|
591
|
-
hyperpocket-0.4.
|
592
|
-
hyperpocket-0.4.
|
593
|
-
hyperpocket-0.4.
|
603
|
+
hyperpocket/util/json_schema_to_model.py,sha256=nc5AmnqkrdeFLELu-7_O9sEAaUaD8_KGlvIMDRobt-4,3751
|
604
|
+
hyperpocket-0.4.5.dist-info/METADATA,sha256=vFdzt3Dz_z0naddvIBneuu-KAqGYi1lwtnUaYnAKUmk,13074
|
605
|
+
hyperpocket-0.4.5.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
606
|
+
hyperpocket-0.4.5.dist-info/entry_points.txt,sha256=KpBleaYr0SaENXOa-dFvJ_cvFCHYFEQ4LMl11ShAcBI,61
|
607
|
+
hyperpocket-0.4.5.dist-info/RECORD,,
|
File without changes
|
File without changes
|