hyperpocket 0.0.2__py3-none-any.whl → 0.1.8__py3-none-any.whl
Sign up to get free protection for your applications and to get access to all the features.
- hyperpocket/auth/README.md +3 -3
- hyperpocket/auth/__init__.py +0 -8
- hyperpocket/auth/gumloop/context.py +13 -0
- hyperpocket/auth/gumloop/token_context.py +15 -0
- hyperpocket/auth/gumloop/token_handler.py +66 -0
- hyperpocket/auth/gumloop/token_schema.py +8 -0
- hyperpocket/auth/linear/token_context.py +1 -1
- hyperpocket/auth/notion/README.md +28 -0
- hyperpocket/auth/notion/context.py +15 -0
- hyperpocket/auth/notion/token_context.py +14 -0
- hyperpocket/auth/notion/token_handler.py +65 -0
- hyperpocket/auth/notion/token_schema.py +10 -0
- hyperpocket/auth/provider.py +8 -5
- hyperpocket/auth/reddit/context.py +15 -0
- hyperpocket/auth/reddit/oauth2_context.py +32 -0
- hyperpocket/auth/reddit/oauth2_handler.py +151 -0
- hyperpocket/auth/reddit/oauth2_schema.py +18 -0
- hyperpocket/auth/slack/token_context.py +1 -1
- hyperpocket/builtin.py +63 -0
- hyperpocket/cli/__main__.py +12 -0
- hyperpocket/cli/auth.py +83 -0
- hyperpocket/cli/codegen/auth/__init__.py +13 -0
- hyperpocket/cli/codegen/auth/auth_context_template.py +16 -0
- hyperpocket/cli/codegen/auth/auth_token_context_template.py +16 -0
- hyperpocket/cli/codegen/auth/auth_token_handler_template.py +69 -0
- hyperpocket/cli/codegen/auth/auth_token_schema_template.py +12 -0
- hyperpocket/cli/codegen/auth/server_auth_template.py +18 -0
- hyperpocket/cli/eject.py +19 -0
- hyperpocket/cli/sync.py +5 -5
- hyperpocket/config/settings.py +2 -4
- hyperpocket/futures/futurestore.py +0 -1
- hyperpocket/pocket_auth.py +25 -5
- hyperpocket/pocket_core.py +262 -0
- hyperpocket/pocket_main.py +125 -171
- hyperpocket/prompts.py +6 -8
- hyperpocket/repository/__init__.py +2 -2
- hyperpocket/repository/lock.py +19 -0
- hyperpocket/repository/lockfile.py +19 -13
- hyperpocket/repository/repository.py +26 -1
- hyperpocket/server/auth/__init__.py +0 -6
- hyperpocket/server/auth/gumloop.py +16 -0
- hyperpocket/server/auth/notion.py +19 -0
- hyperpocket/server/auth/reddit.py +16 -0
- hyperpocket/server/server.py +52 -16
- hyperpocket/server/tool/dto/script.py +15 -2
- hyperpocket/server/tool/wasm.py +20 -8
- hyperpocket/session/README.md +2 -2
- hyperpocket/session/in_memory.py +18 -5
- hyperpocket/session/interface.py +14 -0
- hyperpocket/session/redis.py +29 -5
- hyperpocket/tool/README.md +16 -12
- hyperpocket/tool/__init__.py +4 -3
- hyperpocket/tool/function/README.md +39 -10
- hyperpocket/tool/function/__init__.py +2 -0
- hyperpocket/tool/function/annotation.py +2 -1
- hyperpocket/tool/function/tool.py +98 -13
- hyperpocket/tool/tests/test_function_tool.py +55 -0
- hyperpocket/tool/tests/test_wasm_tool.py +73 -0
- hyperpocket/tool/tool.py +65 -2
- hyperpocket/tool/wasm/README.md +27 -5
- hyperpocket/tool/wasm/script.py +40 -1
- hyperpocket/tool/wasm/templates/python.py +32 -14
- hyperpocket/tool/wasm/tool.py +21 -18
- hyperpocket/tool_like.py +5 -0
- hyperpocket/util/__init__.py +1 -1
- hyperpocket/util/extract_func_param_desc_from_docstring.py +4 -4
- hyperpocket/util/function_to_model.py +5 -2
- hyperpocket/util/json_schema_to_model.py +45 -26
- {hyperpocket-0.0.2.dist-info → hyperpocket-0.1.8.dist-info}/METADATA +101 -72
- hyperpocket-0.1.8.dist-info/RECORD +139 -0
- {hyperpocket-0.0.2.dist-info → hyperpocket-0.1.8.dist-info}/WHEEL +1 -1
- hyperpocket-0.1.8.dist-info/entry_points.txt +2 -0
- hyperpocket/auth/README.KR.md +0 -309
- hyperpocket/auth/slack/tests/test_oauth2_handler.py +0 -32
- hyperpocket/auth/slack/tests/test_token_handler.py +0 -23
- hyperpocket/auth/tests/test_google_oauth2_handler.py +0 -147
- hyperpocket/auth/tests/test_slack_oauth2_handler.py +0 -147
- hyperpocket/auth/tests/test_slack_token_handler.py +0 -66
- hyperpocket/external/__init__.py +0 -7
- hyperpocket/external/github_client.py +0 -19
- hyperpocket/session/README.KR.md +0 -62
- hyperpocket/session/tests/test_in_memory.py +0 -145
- hyperpocket/session/tests/test_redis.py +0 -151
- hyperpocket/tests/test_pocket.py +0 -116
- hyperpocket/tests/test_pocket_auth.py +0 -982
- hyperpocket/tool/README.KR.md +0 -68
- hyperpocket/tool/builtins/__init__.py +0 -0
- hyperpocket/tool/builtins/example/__init__.py +0 -0
- hyperpocket/tool/builtins/example/add_tool.py +0 -18
- hyperpocket/tool/function/README.KR.md +0 -159
- hyperpocket/tool/wasm/README.KR.md +0 -144
- hyperpocket-0.0.2.dist-info/RECORD +0 -130
- hyperpocket-0.0.2.dist-info/entry_points.txt +0 -3
- /hyperpocket/auth/{slack/tests → gumloop}/__init__.py +0 -0
- /hyperpocket/auth/{tests → notion}/__init__.py +0 -0
- /hyperpocket/{session/tests → auth/reddit}/__init__.py +0 -0
- /hyperpocket/{tests → cli/codegen}/__init__.py +0 -0
hyperpocket/tool/wasm/tool.py
CHANGED
@@ -1,11 +1,11 @@
|
|
1
|
+
import os
|
1
2
|
import json
|
2
3
|
import pathlib
|
3
4
|
from typing import Any, Optional
|
4
5
|
|
5
6
|
import toml
|
6
|
-
|
7
7
|
from hyperpocket.auth import AuthProvider
|
8
|
-
from hyperpocket.config import pocket_logger
|
8
|
+
from hyperpocket.config import settings, pocket_logger
|
9
9
|
from hyperpocket.repository import Lock, Lockfile
|
10
10
|
from hyperpocket.repository.lock import GitLock, LocalLock
|
11
11
|
from hyperpocket.tool import Tool, ToolRequest
|
@@ -18,26 +18,23 @@ class WasmToolRequest(ToolRequest):
|
|
18
18
|
lock: Lock
|
19
19
|
rel_path: str
|
20
20
|
|
21
|
-
def __init__(self, lock: Lock, rel_path: str):
|
21
|
+
def __init__(self, lock: Lock, rel_path: str, tool_vars: dict):
|
22
22
|
self.lock = lock
|
23
23
|
self.rel_path = rel_path
|
24
|
+
self.overridden_tool_vars = tool_vars
|
24
25
|
|
25
26
|
def __str__(self):
|
26
27
|
return f"ToolRequest(lock={self.lock}, rel_path={self.rel_path})"
|
27
28
|
|
29
|
+
def from_local(path: str, tool_vars: Optional[dict[str, str]] = None) -> WasmToolRequest:
|
30
|
+
if tool_vars is None:
|
31
|
+
tool_vars = dict()
|
32
|
+
return WasmToolRequest(LocalLock(path), "", tool_vars)
|
28
33
|
|
29
|
-
def
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
def from_git(repository: str, ref: str, rel_path: str) -> WasmToolRequest:
|
34
|
-
return WasmToolRequest(GitLock(repository_url=repository, git_ref=ref), rel_path)
|
35
|
-
|
36
|
-
|
37
|
-
def from_github(owner: str, repo: str, ref: str, rel_path: str) -> WasmToolRequest:
|
38
|
-
repository = f"https://github.com/{owner}/{repo}"
|
39
|
-
return from_git(repository, ref, rel_path)
|
40
|
-
|
34
|
+
def from_git(repository: str, ref: str, rel_path: str, tool_vars: Optional[dict[str, str]] = None) -> WasmToolRequest:
|
35
|
+
if not tool_vars:
|
36
|
+
tool_vars = dict()
|
37
|
+
return WasmToolRequest(GitLock(repository_url=repository, git_ref=ref), rel_path, tool_vars)
|
41
38
|
|
42
39
|
class WasmTool(Tool):
|
43
40
|
"""
|
@@ -76,6 +73,7 @@ class WasmTool(Tool):
|
|
76
73
|
pocket_logger.warning(f"{toolpkg_path} failed to load json schema. error : {e}")
|
77
74
|
json_schema = None
|
78
75
|
|
76
|
+
default_tool_vars = dict()
|
79
77
|
try:
|
80
78
|
with config_path.open("r") as f:
|
81
79
|
config = toml.load(f)
|
@@ -92,6 +90,7 @@ class WasmTool(Tool):
|
|
92
90
|
else:
|
93
91
|
raise ValueError("`language` field is required in config.toml")
|
94
92
|
auth = cls._get_auth(config)
|
93
|
+
default_tool_vars = config.get("tool_vars", {})
|
95
94
|
except Exception as e:
|
96
95
|
raise ValueError(f"Failed to load config.toml: {e}")
|
97
96
|
|
@@ -100,6 +99,7 @@ class WasmTool(Tool):
|
|
100
99
|
readme = f.read()
|
101
100
|
else:
|
102
101
|
readme = None
|
102
|
+
|
103
103
|
return cls(
|
104
104
|
name=name,
|
105
105
|
description=description,
|
@@ -109,6 +109,9 @@ class WasmTool(Tool):
|
|
109
109
|
readme=readme,
|
110
110
|
pkg_lock=tool_req.lock,
|
111
111
|
rel_path=tool_req.rel_path,
|
112
|
+
postprocessings=tool_req.postprocessings,
|
113
|
+
default_tool_vars=default_tool_vars,
|
114
|
+
overridden_tool_vars=tool_req.overridden_tool_vars,
|
112
115
|
)
|
113
116
|
|
114
117
|
@classmethod
|
@@ -124,7 +127,7 @@ class WasmTool(Tool):
|
|
124
127
|
auth_handler=auth_handler,
|
125
128
|
scopes=scopes,
|
126
129
|
)
|
127
|
-
|
130
|
+
|
128
131
|
def template_arguments(self) -> dict[str, str]:
|
129
132
|
return {}
|
130
133
|
|
@@ -133,7 +136,7 @@ class WasmTool(Tool):
|
|
133
136
|
str(self.pkg_lock.toolpkg_path() / self.rel_path),
|
134
137
|
self.runtime,
|
135
138
|
body,
|
136
|
-
envs,
|
139
|
+
envs | self.tool_vars,
|
137
140
|
**kwargs,
|
138
141
|
)
|
139
142
|
|
@@ -142,6 +145,6 @@ class WasmTool(Tool):
|
|
142
145
|
str(self.pkg_lock.toolpkg_path() / self.rel_path),
|
143
146
|
self.runtime,
|
144
147
|
body,
|
145
|
-
envs,
|
148
|
+
envs | self.tool_vars,
|
146
149
|
**kwargs,
|
147
150
|
)
|
hyperpocket/tool_like.py
ADDED
hyperpocket/util/__init__.py
CHANGED
@@ -1 +1 @@
|
|
1
|
-
__all__ = ['json_schema_to_model'
|
1
|
+
__all__ = ['json_schema_to_model']
|
@@ -41,13 +41,13 @@ def extract_param_docstring_mapping(func) -> dict[str, str]:
|
|
41
41
|
pocket_logger.debug(f"try to extract docstring of {func.__name__} by plain text style..")
|
42
42
|
param_descriptions = []
|
43
43
|
for line in docstring.split("\n"):
|
44
|
-
|
45
|
-
if len(
|
44
|
+
split_line = line.strip().split(":")
|
45
|
+
if len(split_line) < 2:
|
46
46
|
continue
|
47
47
|
|
48
|
-
param_name =
|
48
|
+
param_name = split_line[0]
|
49
49
|
cleaned_param_name = clean_bracket_content(param_name)
|
50
|
-
description = ":".join(
|
50
|
+
description = ":".join(split_line[1:]).strip()
|
51
51
|
if cleaned_param_name in func_params:
|
52
52
|
param_descriptions.append((cleaned_param_name, description))
|
53
53
|
|
@@ -1,6 +1,6 @@
|
|
1
1
|
import inspect
|
2
2
|
from inspect import signature, Parameter
|
3
|
-
from typing import Any, Dict, Type, Tuple
|
3
|
+
from typing import Any, Dict, Type, Tuple
|
4
4
|
|
5
5
|
from pydantic import BaseModel, create_model
|
6
6
|
from pydantic.fields import FieldInfo
|
@@ -33,7 +33,10 @@ def function_to_model(func: callable) -> Type[BaseModel]:
|
|
33
33
|
if param.annotation is Parameter.empty:
|
34
34
|
raise Exception(f"Should all arguments be annotated but {param_name} is not annotated")
|
35
35
|
|
36
|
-
if param.annotation.__module__
|
36
|
+
if param.annotation.__module__ == "typing" and param.annotation.__name__ == "Optional":
|
37
|
+
fields[param_name] = (
|
38
|
+
param.annotation.__args__[0], FieldInfo(default=param.default, description=param_desc_map.get(param_name, "")))
|
39
|
+
elif param.annotation.__module__ != "builtins" and not issubclass(param.annotation, BaseModel):
|
37
40
|
raise Exception(
|
38
41
|
f"currently only support builtin types and pydantic BaseModel but {param_name} is not builtin type")
|
39
42
|
|
@@ -1,4 +1,4 @@
|
|
1
|
-
from typing import Type
|
1
|
+
from typing import Type, Union
|
2
2
|
|
3
3
|
from pydantic import BaseModel, create_model, Field
|
4
4
|
|
@@ -12,32 +12,25 @@ def json_schema_to_model(schema: dict, model_name: str = "DynamicModel") -> Type
|
|
12
12
|
required_fields = schema.get("required", [])
|
13
13
|
for property_name, property_schema in schema.get("properties", {}).items():
|
14
14
|
field_type, field_default, field_description, required = None, None, None, False
|
15
|
-
if "type" in property_schema:
|
16
|
-
json_type = property_schema["type"]
|
17
|
-
if json_type == "integer":
|
18
|
-
field_type = int
|
19
|
-
elif json_type == "string":
|
20
|
-
field_type = str
|
21
|
-
elif json_type == "object":
|
22
|
-
if "properties" in property_schema:
|
23
|
-
# Recursively create nested models
|
24
|
-
field_type = json_schema_to_model(property_schema, model_name)
|
25
|
-
else:
|
26
|
-
field_type = dict
|
27
15
|
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
16
|
+
if "anyOf" in property_schema:
|
17
|
+
types = []
|
18
|
+
for item in property_schema["anyOf"]:
|
19
|
+
sub_type = _convert_to_python_type(item["type"], model_name, property_schema)
|
20
|
+
types.append(sub_type)
|
21
|
+
|
22
|
+
field_type = Union[tuple(types)]
|
23
|
+
elif "type" in property_schema:
|
24
|
+
field_type = _convert_to_python_type(property_schema["type"], model_name, property_schema)
|
25
|
+
else:
|
26
|
+
raise RuntimeError("have no type in json schema.")
|
27
|
+
|
28
|
+
if "default" in property_schema:
|
29
|
+
field_default = property_schema["default"]
|
30
|
+
if "description" in property_schema:
|
31
|
+
field_description = property_schema["description"]
|
32
|
+
if property_name in required_fields:
|
33
|
+
required = True
|
41
34
|
|
42
35
|
if required:
|
43
36
|
fields[property_name] = (field_type, Field(description=field_description))
|
@@ -67,3 +60,29 @@ def json_schema_to_model(schema: dict, model_name: str = "DynamicModel") -> Type
|
|
67
60
|
model.Config = Config
|
68
61
|
|
69
62
|
return model
|
63
|
+
|
64
|
+
|
65
|
+
def _convert_to_python_type(json_type, model_name, property_schema):
|
66
|
+
field_type = None
|
67
|
+
if json_type == "integer":
|
68
|
+
field_type = int
|
69
|
+
elif json_type == "string":
|
70
|
+
field_type = str
|
71
|
+
elif json_type == "boolean":
|
72
|
+
field_type = bool
|
73
|
+
elif json_type == "none":
|
74
|
+
field_type = type(None)
|
75
|
+
elif json_type == "object":
|
76
|
+
if "properties" in property_schema:
|
77
|
+
# Recursively create nested models
|
78
|
+
field_type = json_schema_to_model(property_schema, model_name)
|
79
|
+
else:
|
80
|
+
field_type = dict
|
81
|
+
elif json_type == "array":
|
82
|
+
# Handle arrays; currently assuming array of objects or primitives
|
83
|
+
item_schema = property_schema.get("items", {})
|
84
|
+
if item_schema.get("type") == "object":
|
85
|
+
field_type = list[json_schema_to_model(item_schema, model_name)]
|
86
|
+
else:
|
87
|
+
field_type = list
|
88
|
+
return field_type
|
@@ -1,31 +1,26 @@
|
|
1
|
-
Metadata-Version: 2.
|
1
|
+
Metadata-Version: 2.4
|
2
2
|
Name: hyperpocket
|
3
|
-
Version: 0.
|
3
|
+
Version: 0.1.8
|
4
4
|
Summary: Building AI agent with hyperpocket tool in a flash
|
5
|
-
|
6
|
-
Author: VESSL AI Devs
|
7
|
-
Author-email: dev@vessl.ai
|
8
|
-
Requires-Python: >=3.11,<4.0
|
9
|
-
Classifier: Programming Language :: Python :: 3
|
10
|
-
Classifier: Programming Language :: Python :: 3.11
|
11
|
-
Classifier: Programming Language :: Python :: 3.12
|
12
|
-
Classifier: Programming Language :: Python :: 3.13
|
13
|
-
Requires-Dist: click (>=8.1.7,<9.0.0)
|
14
|
-
Requires-Dist: dynaconf (>=3.2.6,<4.0.0)
|
15
|
-
Requires-Dist: fastapi (>=0.115.5,<0.116.0)
|
16
|
-
Requires-Dist: gitpython (>=3.1.43,<4.0.0)
|
17
|
-
Requires-Dist: httpx (==0.27)
|
18
|
-
Requires-Dist: jinja2 (>=3.1.4,<4.0.0)
|
19
|
-
Requires-Dist: multiprocess (>=0.70.17,<0.71.0)
|
20
|
-
Requires-Dist: playwright (>=1.49.0,<2.0.0)
|
21
|
-
Requires-Dist: pydantic (>=2.10.2,<3.0.0)
|
22
|
-
Requires-Dist: pygithub (>=2.5.0,<3.0.0)
|
23
|
-
Requires-Dist: python-multipart (>=0.0.19,<0.0.20)
|
24
|
-
Requires-Dist: redis (>=5.2.1,<6.0.0)
|
25
|
-
Requires-Dist: requests (>=2.32.3,<3.0.0)
|
26
|
-
Requires-Dist: toml (>=0.10.2,<0.11.0)
|
27
|
-
Requires-Dist: uvicorn (>=0.32.1,<0.33.0)
|
5
|
+
Project-URL: Homepage, https://vessl-ai.github.io/hyperpocket
|
28
6
|
Project-URL: Repository, https://github.com/vessl-ai/hyperpocket
|
7
|
+
Author-email: VESSL AI Devs <dev@vessl.ai>
|
8
|
+
Requires-Python: >=3.10
|
9
|
+
Requires-Dist: click>=8.1.7
|
10
|
+
Requires-Dist: dynaconf>=3.2.6
|
11
|
+
Requires-Dist: fastapi>=0.115.5
|
12
|
+
Requires-Dist: gitpython>=3.1.43
|
13
|
+
Requires-Dist: httpx==0.27
|
14
|
+
Requires-Dist: jinja2>=3.1.4
|
15
|
+
Requires-Dist: multiprocess>=0.70.17
|
16
|
+
Requires-Dist: playwright>=1.49.0
|
17
|
+
Requires-Dist: pydantic>=2.10.2
|
18
|
+
Requires-Dist: pygithub>=2.5.0
|
19
|
+
Requires-Dist: python-multipart>=0.0.19
|
20
|
+
Requires-Dist: redis>=5.2.1
|
21
|
+
Requires-Dist: requests>=2.32.3
|
22
|
+
Requires-Dist: toml>=0.10.2
|
23
|
+
Requires-Dist: uvicorn>=0.32.1
|
29
24
|
Description-Content-Type: text/markdown
|
30
25
|
|
31
26
|
# Pocket 👛
|
@@ -59,10 +54,10 @@ with the dependency spaghetti.
|
|
59
54
|
|
60
55
|
## Installation
|
61
56
|
|
62
|
-
1. install
|
57
|
+
1. install hyperpocket
|
63
58
|
|
64
59
|
```bash
|
65
|
-
pip install
|
60
|
+
pip install hyperpocket
|
66
61
|
```
|
67
62
|
|
68
63
|
2. install playwright
|
@@ -87,17 +82,15 @@ Or just use LLM API Clients out of the box.
|
|
87
82
|
### Using out-of-the-box tools
|
88
83
|
|
89
84
|
```python
|
85
|
+
from hyperpocket.tool import from_git
|
90
86
|
from langchain_openai import ChatOpenAI
|
91
87
|
|
92
|
-
|
93
|
-
import hyperpocket.curated_tools
|
94
|
-
from pocket_langchain import PocketLangchain
|
88
|
+
from hyperpocket_langchain import PocketLangchain
|
95
89
|
|
96
90
|
pklc = PocketLangchain(
|
97
91
|
tools=[
|
98
|
-
|
99
|
-
|
100
|
-
"https://github.com/my-org/some-awesome-tool",
|
92
|
+
from_git("https://github.com/vessl-ai/hyperawesometools", "main", "managed-tools/slack/get-message"),
|
93
|
+
from_git("https://github.com/vessl-ai/hyperawesometools", "main", "managed-tools/slack/post-message"),
|
101
94
|
]
|
102
95
|
)
|
103
96
|
tools = pklc.get_tools()
|
@@ -116,40 +109,38 @@ Pocket provides way to use end user auth easily.
|
|
116
109
|
|
117
110
|
- Supported methods
|
118
111
|
|
119
|
-
|
120
|
-
|
121
|
-
|
112
|
+
- [x] OAuth
|
113
|
+
- [x] Token
|
114
|
+
- [ ] Basic Auth (Username, Password)
|
122
115
|
|
123
116
|
- Supported OAuth Providers
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
117
|
+
- [x] Google
|
118
|
+
- [x] GitHub
|
119
|
+
- [x] Slack
|
120
|
+
- [x] Linear
|
121
|
+
- [ ] Facebook
|
122
|
+
- [ ] X (Previously Twitter)
|
123
|
+
- [ ] LinkedIn
|
124
|
+
- [ ] Discord
|
125
|
+
- [ ] Zoom
|
126
|
+
- [ ] Microsoft
|
127
|
+
- [ ] Spotify
|
128
|
+
- [ ] Twitch
|
136
129
|
|
137
130
|
You can manage your auths in request-wise level. (e.g. you can use different auths for different requests)
|
138
131
|
|
139
132
|
```python
|
133
|
+
from hyperpocket.tool import from_git
|
140
134
|
from langchain_openai import ChatOpenAI
|
141
135
|
from langgraph.graph import StateGraph, START, MessagesState
|
142
136
|
from langgraph.prebuilt import tools_condition
|
143
137
|
|
144
|
-
|
145
|
-
import hyperpocket.curated_tools
|
146
|
-
from pocket_langgraph import PocketLanggraph
|
138
|
+
from hyperpocket_langgraph import PocketLanggraph
|
147
139
|
|
148
140
|
pklg = PocketLanggraph(
|
149
141
|
tools=[
|
150
|
-
|
151
|
-
|
152
|
-
"https://github.com/my-org/some-awesome-tool",
|
142
|
+
from_git("https://github.com/vessl-ai/hyperawesometools", "main", "managed-tools/slack/get-message"),
|
143
|
+
from_git("https://github.com/vessl-ai/hyperawesometools", "main", "managed-tools/slack/post-message"),
|
153
144
|
],
|
154
145
|
)
|
155
146
|
llm = ChatOpenAI()
|
@@ -175,12 +166,12 @@ graph_builder.compile()
|
|
175
166
|
```
|
176
167
|
|
177
168
|
```python
|
169
|
+
from hyperpocket.config import secret
|
170
|
+
from hyperpocket.tool import from_git
|
178
171
|
from llama_index.core.agent import FunctionCallingAgent
|
179
172
|
from llama_index.llms.openai import OpenAI
|
180
|
-
from pocket_llamaindex import PocketLlamaindex
|
181
173
|
|
182
|
-
from
|
183
|
-
from hyperpocket.tool import from_git
|
174
|
+
from hyperpocket_llamaindex import PocketLlamaindex
|
184
175
|
|
185
176
|
llm = OpenAI(api_key=secret["OPENAI_API_KEY"])
|
186
177
|
pocket = PocketLlamaindex(
|
@@ -273,11 +264,11 @@ client_secret = "" # your github client secret
|
|
273
264
|
|
274
265
|
- While creating your github OAuth app, configuring your app's `Authorization callback URL` is different for your
|
275
266
|
development environment and production environment.
|
276
|
-
|
277
|
-
|
278
|
-
|
279
|
-
|
280
|
-
|
267
|
+
- For development environment, you can use `http://localhost:8000/auth/github/callback`
|
268
|
+
- **Note**: Default port for pocket dev server is `8000`. If you are using a different port, make sure to
|
269
|
+
replace `8000` with your actual port number.
|
270
|
+
- For production environment, you can use `https://yourdomain.com/auth/github/callback`
|
271
|
+
- **Note**: Make sure to replace `yourdomain.com` with your actual domain name that this app will be hosted on.
|
281
272
|
|
282
273
|
#### How to integrate SLACK OAuth app
|
283
274
|
|
@@ -288,15 +279,53 @@ client_secret = "" # your github client secret
|
|
288
279
|
- Redirect URLs :
|
289
280
|
`{public_server_protocol}://{public_hostname}:[{public_server_port}]/{callback_url_rewrite_prefix}/auth/slack/oauth2/callback`
|
290
281
|
- Scopes : What you want to request to user.
|
291
|
-
|
292
|
-
|
293
|
-
|
294
|
-
|
295
|
-
|
296
|
-
|
297
|
-
|
298
|
-
|
299
|
-
|
300
|
-
|
282
|
+
- Recommended scopes :
|
283
|
+
- channels:history,
|
284
|
+
- channels:read,
|
285
|
+
- chat:write,
|
286
|
+
- groups:history,
|
287
|
+
- groups:read,
|
288
|
+
- im:history,
|
289
|
+
- mpim:history,
|
290
|
+
- reactions:read,
|
291
|
+
- reactions:write,
|
301
292
|
|
302
293
|
3. Set your Slack APP Client ID / Client Secret in `$HOME/.pocket/settings.toml`
|
294
|
+
|
295
|
+
#### How to start adding a new token auth
|
296
|
+
|
297
|
+
1. Generate boilerplate codes for token-based auth services ?
|
298
|
+
|
299
|
+
```
|
300
|
+
# service_name should be lowercase including underscore
|
301
|
+
poetry run hyperpocket devtool create-token-auth-template {service_name}
|
302
|
+
```
|
303
|
+
|
304
|
+
It will generate boilerplate code lines for a new token-based auth service
|
305
|
+
|
306
|
+
2. Extend AuthProvider enum to add your new auth provider.
|
307
|
+
|
308
|
+
```python
|
309
|
+
class AuthProvider(Enum):
|
310
|
+
SERVICE = 'service'
|
311
|
+
```
|
312
|
+
|
313
|
+
3. Specify auth provider for tools
|
314
|
+
|
315
|
+
1) github repo or local
|
316
|
+
|
317
|
+
```toml
|
318
|
+
[auth]
|
319
|
+
auth_provider = "{service_name}"
|
320
|
+
auth_handler = "{service_name}-token"
|
321
|
+
scopes = []
|
322
|
+
```
|
323
|
+
|
324
|
+
2. function_tool
|
325
|
+
|
326
|
+
```python
|
327
|
+
@function_tool(
|
328
|
+
auth_provider=AuthProvider.SERVICE
|
329
|
+
)
|
330
|
+
def my_function(**kwargs):
|
331
|
+
```
|
@@ -0,0 +1,139 @@
|
|
1
|
+
hyperpocket/__init__.py,sha256=iaJvrZ0rgHwAndGFVv8m1Iz_DWtWEcphFPL-1D8f9SY,136
|
2
|
+
hyperpocket/builtin.py,sha256=FnsASGfieQKvVrFVESjvm73qsxPvCf7iiHGd7HNVpuQ,2371
|
3
|
+
hyperpocket/constants.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
4
|
+
hyperpocket/pocket_auth.py,sha256=-d5UvLkjvsSkem5DGrDphowckVCB3NCLt2jOw9k5U9c,16934
|
5
|
+
hyperpocket/pocket_core.py,sha256=xyma8ucYVYID2gSnc5h5nF_nNMFFtimE-8la1IW1RZA,10035
|
6
|
+
hyperpocket/pocket_main.py,sha256=UPdRS7ydQAmkqyGUj6ANf4lIr_oKXw-_71k37XCsOa4,10148
|
7
|
+
hyperpocket/prompts.py,sha256=XAmTTCzCkXWK50zcmWmGA25v9-HKd_4dL5o85uisbGM,472
|
8
|
+
hyperpocket/tool_like.py,sha256=ur8oMU5p4DUYBEF5MBP3faQ7CKsOzb0lLOaL6p8JqSw,134
|
9
|
+
hyperpocket/auth/README.md,sha256=zn4QqnFZCA_4X3x8Wb6lE3OP5otYxpByZaCiUkBvaNs,11562
|
10
|
+
hyperpocket/auth/__init__.py,sha256=YcwSdDbOasFDzz0mYJR3aQi3nYfbqtrCSppDWZHOBGY,588
|
11
|
+
hyperpocket/auth/context.py,sha256=r19VtTK5FGcmvCgCOr16oNJ0GMFYmgaMEe2EHKJhtQY,1302
|
12
|
+
hyperpocket/auth/handler.py,sha256=9R6uQ7bPwmkZUUyg0Q1iOSwmWEQKnGEe92XiLeaxM0w,6580
|
13
|
+
hyperpocket/auth/provider.py,sha256=zBuVvrp6SwGRGcfWy6mqIXabw-bfahGfsxpBi899RHs,503
|
14
|
+
hyperpocket/auth/schema.py,sha256=8J6PIXpFIJyuVhkZzz6X_TiKOz7sFGdUW0qmZD8x3MA,529
|
15
|
+
hyperpocket/auth/calendly/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
16
|
+
hyperpocket/auth/calendly/context.py,sha256=oUQzLy_w5NPvbXjFPOhLD-ggONVSy9VVpFabvX4ZpsY,408
|
17
|
+
hyperpocket/auth/calendly/oauth2_context.py,sha256=SiMeZaoWh3aneZVH_MXsT_cZ8qCSVeL-pWHVbfYUS6g,848
|
18
|
+
hyperpocket/auth/calendly/oauth2_handler.py,sha256=ulfhIcj_GCGIIZHVV9v42p2miHVsE3fpKODnrwz4qU0,5296
|
19
|
+
hyperpocket/auth/calendly/oauth2_schema.py,sha256=9JFogAWFAB7nzCww7NXDYuunY6S28wQZzPX41TWfMig,373
|
20
|
+
hyperpocket/auth/github/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
21
|
+
hyperpocket/auth/github/context.py,sha256=Y0QOCNbtQfNDsmgq47s0YGUxTl1QQC-qq4Hm2aZonJ8,404
|
22
|
+
hyperpocket/auth/github/oauth2_context.py,sha256=Ge8rkScRpcAWMMzSWTt2gWrDyi0UehTeZepf39Q6BK0,828
|
23
|
+
hyperpocket/auth/github/oauth2_handler.py,sha256=4HP0WE9cd3I6v4s9ZXvwNPhFPNk9b6L_MByTOvFvAIc,5059
|
24
|
+
hyperpocket/auth/github/oauth2_schema.py,sha256=XfeSF820natq9kwoDKbY2I9TgdjxP-hPkdoGGrKjSuA,371
|
25
|
+
hyperpocket/auth/github/token_context.py,sha256=evstL4mZsWHe9Io1RwBc90VfFOnVAbRk8BI1HseYwg8,446
|
26
|
+
hyperpocket/auth/github/token_handler.py,sha256=Vz5CqkGk8a6mb4xpw_Lhidwy4cZD7wTrK6iPKIRb15E,2777
|
27
|
+
hyperpocket/auth/github/token_schema.py,sha256=8vbJIYWqX_p4GPAtM5xMx5iwo9oZOtZTuSYcnpFGeio,209
|
28
|
+
hyperpocket/auth/google/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
29
|
+
hyperpocket/auth/google/context.py,sha256=1ziH27dXPsxp4WkdlyKos37lF623IIs4kX8cmat8QrY,426
|
30
|
+
hyperpocket/auth/google/oauth2_context.py,sha256=u7TayAfxPUFWuggtlceub22vHIURF0ZV5Do4jUqLWQ0,1023
|
31
|
+
hyperpocket/auth/google/oauth2_handler.py,sha256=547NPhFhi7lpmeVgZ99g_O3IizBMKZ9iAd27RrRNhS4,4880
|
32
|
+
hyperpocket/auth/google/oauth2_schema.py,sha256=E_hyNrb-Ro2UWs2AjhmFDBHwaTEsHZa0rQBhUcCWWKk,411
|
33
|
+
hyperpocket/auth/gumloop/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
34
|
+
hyperpocket/auth/gumloop/context.py,sha256=6y-5cpQCSEig6qnCWHu1Rvp35DJAibFxKREey8IYFFw,402
|
35
|
+
hyperpocket/auth/gumloop/token_context.py,sha256=P92g9O8sKjrJs6RyPAnAwYQxPB6yG0EuljSyIhLvT04,468
|
36
|
+
hyperpocket/auth/gumloop/token_handler.py,sha256=nqsHlLU_F4EfA1P629INH2RrUGyof2mOAfp9QnLmM14,2633
|
37
|
+
hyperpocket/auth/gumloop/token_schema.py,sha256=hTWWxvL70L35CWtXbBzMF4OMpUDFQIKbDKkjJEQWN7g,209
|
38
|
+
hyperpocket/auth/linear/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
39
|
+
hyperpocket/auth/linear/context.py,sha256=hkxVDYO2jB3FCqIz_bMyB3n6OO74PpLI4LiW-42NFNQ,429
|
40
|
+
hyperpocket/auth/linear/token_context.py,sha256=KJQXBRSRC1GuIfaIWVahfb-DDraiodAUAL1nxM0vKCQ,471
|
41
|
+
hyperpocket/auth/linear/token_handler.py,sha256=wLOodmgXHH4AQWz1tJEHtjrglP3tP1uEDeMQOgQHrRA,2683
|
42
|
+
hyperpocket/auth/linear/token_schema.py,sha256=oTy-gOZvXEmGVStgFfnNmlbkknNepOTI5KIeTQLRxus,209
|
43
|
+
hyperpocket/auth/notion/README.md,sha256=-pDvDU0CPoM_ZN6HobREV4yHDP0dF2T9_vVJ1cQQz3s,565
|
44
|
+
hyperpocket/auth/notion/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
45
|
+
hyperpocket/auth/notion/context.py,sha256=Qa-4fCXK661__lXHf5TGu-4mOFlqYCxuDa4IVIDkncA,426
|
46
|
+
hyperpocket/auth/notion/token_context.py,sha256=9U5EjgEumYVPT8wEbWrmK0Zz7MzglDl3vGFaVevTqwQ,470
|
47
|
+
hyperpocket/auth/notion/token_handler.py,sha256=eK0lJxsGhngXAAaKz_v7aK9YKyiFuMQsLndLPjaOPNs,2586
|
48
|
+
hyperpocket/auth/notion/token_schema.py,sha256=z0Ddy438aB8bsEY69B99Bg2KDNnBw2a-DVrbQgehiwg,210
|
49
|
+
hyperpocket/auth/reddit/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
50
|
+
hyperpocket/auth/reddit/context.py,sha256=WlOvIb4u1PvfrbkYbEq5cSRnXxmIEFuHa4LlKjLEtMc,431
|
51
|
+
hyperpocket/auth/reddit/oauth2_context.py,sha256=v1u_uy6O52REp2anteTPNgvb_nX-hI6bM7jNngBZXq4,1015
|
52
|
+
hyperpocket/auth/reddit/oauth2_handler.py,sha256=0PLn_A9kkKAXeiEoS11sOaD2p-vyeYFho6_kQhumZJg,5220
|
53
|
+
hyperpocket/auth/reddit/oauth2_schema.py,sha256=O93px57D9WMyiY0He-1tAImkCNtorsriRldhlobU6xk,468
|
54
|
+
hyperpocket/auth/slack/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
55
|
+
hyperpocket/auth/slack/context.py,sha256=f8dMs7QtSSyissOlPGw8rCZXsVUckFnZWjZ_LAmNXpA,429
|
56
|
+
hyperpocket/auth/slack/oauth2_context.py,sha256=0FJjJIIcVp1-G4EZu85gJeSXor-zOFI4ua2z0R_sFqI,1374
|
57
|
+
hyperpocket/auth/slack/oauth2_handler.py,sha256=8v9gSGkKMPoqEFGFyjCI1qdvklpyeml-5qeoUFo54Xg,5902
|
58
|
+
hyperpocket/auth/slack/oauth2_schema.py,sha256=eu2jF2thmaz66AKcnivTvIBLTbeF-a-xQFMkR4RQYX8,1056
|
59
|
+
hyperpocket/auth/slack/token_context.py,sha256=isoyUzWlUQ_PliXZ9kKsrbWdOw5oGzrq7MNpnqJ-r5I,461
|
60
|
+
hyperpocket/auth/slack/token_handler.py,sha256=yaJtlOqJP436ubY2VluGxLuFpPo0jh8Y8V3PHUai4X8,2557
|
61
|
+
hyperpocket/auth/slack/token_schema.py,sha256=mAwOtRO2tW5OtDzbllDJtR_uhLD8ShQAjezkAZnAgd0,207
|
62
|
+
hyperpocket/cli/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
63
|
+
hyperpocket/cli/__main__.py,sha256=4f-ks-2Pzo5QfXEx-JwSpz1C43qTJSBBvnERUwsn6rE,416
|
64
|
+
hyperpocket/cli/auth.py,sha256=ypxEpa1L3pqrBdABmRdss23uwE-CnMMNDGHGg4UhBYY,4218
|
65
|
+
hyperpocket/cli/eject.py,sha256=Te1YhDONk_VCgZ6l2HjLqONJrn04EfPk19sD6D5SOyY,636
|
66
|
+
hyperpocket/cli/pull.py,sha256=1Ku0WKLtlZFnEDvU0m10XsVJcysMxDwdEMzTYgNz0xE,548
|
67
|
+
hyperpocket/cli/sync.py,sha256=OO5zFrLOMXk7TSAFEew04ZzW4HLoQ1uVb80UKvIJha0,517
|
68
|
+
hyperpocket/cli/codegen/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
69
|
+
hyperpocket/cli/codegen/auth/__init__.py,sha256=1R2FwRuReAWyeRe1t3-CpR0Mhvb3xWzF8fEkL2mwuB0,545
|
70
|
+
hyperpocket/cli/codegen/auth/auth_context_template.py,sha256=FK8ahapEkx-EyGt5WuS4j3kHnS6-8EcXVhZa9KEmjns,569
|
71
|
+
hyperpocket/cli/codegen/auth/auth_token_context_template.py,sha256=sOVeGlt7VKNDuQoB3FPC3S2CaU1qZuHuc6F6aXxb0w4,763
|
72
|
+
hyperpocket/cli/codegen/auth/auth_token_handler_template.py,sha256=AMb_uZVBKoQlTPofzO_J1FllLqS99eAPA7t_c7RGpTE,3148
|
73
|
+
hyperpocket/cli/codegen/auth/auth_token_schema_template.py,sha256=qXpPcTjnhUizVmBlc6VE6IXwe9NSC9fvYxWPipheuXo,427
|
74
|
+
hyperpocket/cli/codegen/auth/server_auth_template.py,sha256=28h8s6-C1AqWhghWHDJieuNufdq1UpPvQQ8OIu_NBGw,620
|
75
|
+
hyperpocket/config/__init__.py,sha256=deIffu5NBOlSS1X774QuMlf_yb6P2qBQm6tkcf4s8DU,307
|
76
|
+
hyperpocket/config/auth.py,sha256=5Zk7OZmElIqIn7LxsT7H4g3bimBxaKpnbL2v9Fs9MlA,797
|
77
|
+
hyperpocket/config/git.py,sha256=CGbY7J1LyN4ccZr9CFGAQwwhjC9kvdU0On_nsAsZ1FQ,362
|
78
|
+
hyperpocket/config/logger.py,sha256=Wwl-8lllaCNLZruxXU-bcC74Ciy5SmPOX4AJE5BUzWM,2769
|
79
|
+
hyperpocket/config/session.py,sha256=CSXENtWx6Gh4DiPh4u9E-4MFYkM8JRjl2hSPV9PVfrE,801
|
80
|
+
hyperpocket/config/settings.py,sha256=tKOFZdOk4pFa7RrPBTY7-NE7Bo_bBZS1Eeez03SedAU,2042
|
81
|
+
hyperpocket/futures/__init__.py,sha256=_pRnYZLbogkYFInA3jokkxrcEVRt6YNaBmkf_dSk3SM,136
|
82
|
+
hyperpocket/futures/futurestore.py,sha256=WIJGX-XUdB4gWFu2Trto8vd3nTiLFOrnVzQhQP9bO_U,1316
|
83
|
+
hyperpocket/repository/__init__.py,sha256=P4Ge__W5wqNgNILNzHjx7qgS8KRcbwri-nb4IPVVErs,219
|
84
|
+
hyperpocket/repository/lock.py,sha256=nLuiszT3oECJJxVmTDdBARqv4x25DsKuL4253gJEJfI,6075
|
85
|
+
hyperpocket/repository/lockfile.py,sha256=1cNkAv5WHU9o8b6arJn9wcosSp3gHMFe11mbAv72Cgs,2187
|
86
|
+
hyperpocket/repository/repository.py,sha256=a0HA6eVA88Xq6MYe3SdqBji0U8_RuiaN2v2OYkT8nZY,1349
|
87
|
+
hyperpocket/server/__init__.py,sha256=TLqok_mBeV3VRnbZ_spwrwwbsjJ1q9o375AdBk7tKNA,89
|
88
|
+
hyperpocket/server/proxy.py,sha256=OhpAWpilM5ioKAsqInKudtvpYk56nMFeZ-dwoGAYIDA,1905
|
89
|
+
hyperpocket/server/server.py,sha256=yktdzmh5vZj9y1n8i1vBHuNV5TAXeJBpKovO_RkAax0,7810
|
90
|
+
hyperpocket/server/auth/__init__.py,sha256=IMjz9PCzD7qh4QIf2g-gWIdkDeU36jt-9F55vaHvLoM,286
|
91
|
+
hyperpocket/server/auth/calendly.py,sha256=mi9_ysn0SffhnEgaoNa2jcHWCcD_yzqkS0rvzpJG2Qg,478
|
92
|
+
hyperpocket/server/auth/github.py,sha256=cgUtdCYPhf_e51fEQgiYjyG6yuPfMV5RmltjujuWcBw,759
|
93
|
+
hyperpocket/server/auth/google.py,sha256=_C33Bzow7yzjnvf0WUObu8p-dSU5rXqBgSPrENORAmY,470
|
94
|
+
hyperpocket/server/auth/gumloop.py,sha256=t_BUQ7RR8_x-ogqXnQ3iNHTVthzJyUTN03iqtRpWUTU,475
|
95
|
+
hyperpocket/server/auth/linear.py,sha256=3Ii8jewBCwS2pH3_mSJzBWot1t8IcVghC9K_ohid-H8,448
|
96
|
+
hyperpocket/server/auth/notion.py,sha256=CNOLVh2gA2xrVxXgqIAc18dpSTPwM98M-5rFGObBr3k,458
|
97
|
+
hyperpocket/server/auth/reddit.py,sha256=UloBQNEdhU1_eXaF8qVSQ5ivq5xtWINsHvBDGwgFSLM,443
|
98
|
+
hyperpocket/server/auth/slack.py,sha256=HSfru4_S3B_sEF_keCBLEsNyYeyc92eL5I2a-2TKf64,716
|
99
|
+
hyperpocket/server/auth/token.py,sha256=Q38Tt5ly2vLsR0dxjmnJNX2IqS-FkTsm94bO6e2wtYk,1700
|
100
|
+
hyperpocket/server/tool/__init__.py,sha256=khNLe3H2W7WXKQlHjXuuvd9R87eHOAZhDsQmjDcbYsg,210
|
101
|
+
hyperpocket/server/tool/wasm.py,sha256=N14Sg70cIqTCegmXkrf3HPEwZ_jjKkeiw9G6xJJc-NE,1705
|
102
|
+
hyperpocket/server/tool/dto/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
103
|
+
hyperpocket/server/tool/dto/script.py,sha256=yRBFBz1T4TpssyEqMTEf_E1IdklY0twn1o-FDcXcjDw,847
|
104
|
+
hyperpocket/session/README.md,sha256=Wmh-qWJQ-40vU9hP5jNxuM33i0STNfaIjOecba7H-oc,1968
|
105
|
+
hyperpocket/session/__init__.py,sha256=-zdfZfXwR336liAYjwcZULIHg_72NxMMcDFz_RQGLGk,260
|
106
|
+
hyperpocket/session/in_memory.py,sha256=pD4ZEqsFqLmVOvsDbEcJkUN9nvlJgCXTGapH_PLljYk,3449
|
107
|
+
hyperpocket/session/interface.py,sha256=0o5IwXezaR5NKB6F9vfumLnrBSYv7JzY_FAvZB6uuvw,4879
|
108
|
+
hyperpocket/session/redis.py,sha256=6SHR2ZJ5E3RS-G_xzeh5ls_cPZ0NarPetlEuaAtqEAk,5467
|
109
|
+
hyperpocket/tool/README.md,sha256=vbHvP3fnfihq-H481MiSZEVJNhVoUu0djENb9tiy78c,3026
|
110
|
+
hyperpocket/tool/__init__.py,sha256=PlSewsugQ6x4BXszWvmTiW-MfVS87TALvWi4TcIgreY,346
|
111
|
+
hyperpocket/tool/tool.py,sha256=uP22MWN50nauFD9xkzc3jjGRO-nhxkYBaO1FVKiWu-Q,6778
|
112
|
+
hyperpocket/tool/function/README.md,sha256=6Y9a8FlFjEdbrVqF0NoQ1j34VoV8Zt6Pf9-xlLIHkTc,3676
|
113
|
+
hyperpocket/tool/function/__init__.py,sha256=elshxOWjKUCKSsSSkae8GB65bZ4xG1Xa4o2GCT5QbF4,259
|
114
|
+
hyperpocket/tool/function/annotation.py,sha256=UaeawAkX3QNAWLYHCQ-V5UNZyfxpOOvbYs3w5Q8bJq4,1018
|
115
|
+
hyperpocket/tool/function/tool.py,sha256=E9xND4Kv9nHGDGZEQTnQi9qEUmsnkwvl9J-k2LOJFKI,5953
|
116
|
+
hyperpocket/tool/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
117
|
+
hyperpocket/tool/tests/test_function_tool.py,sha256=If8M9DKkfh5voJyNU6Wdk-gqC9-ZpPEpinu8C7Mz2Zo,9569
|
118
|
+
hyperpocket/tool/tests/test_wasm_tool.py,sha256=bKcx-w__pa1Yr3ZwB8TMODn95xczH-_cRKCSUAPR8iA,2420
|
119
|
+
hyperpocket/tool/wasm/README.md,sha256=QeR7mI8RD6OJ2AXdZCpzNLBW0KUVgYQ0IqCc-wVXgFs,3896
|
120
|
+
hyperpocket/tool/wasm/__init__.py,sha256=KGOPPyA1CnbW-T9bgSpfIXf9952l_p5HJDhHGBb3b9o,71
|
121
|
+
hyperpocket/tool/wasm/browser.py,sha256=X2aw9sZy306dKDR0knqn4fGC6O1fw08M9t_zIkjUeWs,2083
|
122
|
+
hyperpocket/tool/wasm/invoker.py,sha256=u8ZfGW871IVBaG4_XbOQHfp7QYLS093QdwVa3HOL-_k,1520
|
123
|
+
hyperpocket/tool/wasm/script.py,sha256=b0il5tTF8bcMDcfR_ME8V2TppdnPDjNK2rB1GxeH5Pk,4251
|
124
|
+
hyperpocket/tool/wasm/tool.py,sha256=GPTxgXEV9DbBbW848TqzNHvVbwk2oMmI__kUhHsuLNw,5199
|
125
|
+
hyperpocket/tool/wasm/templates/__init__.py,sha256=cQ-uNsO418xvv54i8bD0IrqcAKUxMuyZoG3ShP72olw,949
|
126
|
+
hyperpocket/tool/wasm/templates/node.py,sha256=8ghVQGS9L3IJGdBB8waLK_ej4FS34dCA_bwPKjm8QSU,2782
|
127
|
+
hyperpocket/tool/wasm/templates/python.py,sha256=Gi_tn3QQZjolFpbhVDXHLoj4juRLTEGsq_A-iyvTyUk,2733
|
128
|
+
hyperpocket/util/__init__.py,sha256=V36_ztskLaKQxOhW2OhrhxRFn4QCxtX3jGjAT4lqNQE,35
|
129
|
+
hyperpocket/util/extract_func_param_desc_from_docstring.py,sha256=3bek0BRwDGdlKBATDAhBrSSqzdVshXKD02zNi6KvxO4,4067
|
130
|
+
hyperpocket/util/find_all_leaf_class_in_package.py,sha256=afGLqe5s7irOOPh7DI70v-utDL2a0vhNzHjtgSmDeZU,528
|
131
|
+
hyperpocket/util/find_all_subclass_in_package.py,sha256=CfsM5sWHHbFZD6M-jbJRN8Zo3m57R1E7FGg_V__HdFU,964
|
132
|
+
hyperpocket/util/flatten_json_schema.py,sha256=PXK6I1S2QDxwSGmUVEl5bbSPrjTa38GBllBQ8uKXJNQ,1587
|
133
|
+
hyperpocket/util/function_to_model.py,sha256=zPBrxtvfieJearmvJeMOeIGGLn1ymXNvL9PlMoXZbwA,2061
|
134
|
+
hyperpocket/util/get_objects_from_subpackage.py,sha256=Aq87PD_H57c2IjLS28Hf0Wu5vLVyoOtDoBvKzvQ1UPw,929
|
135
|
+
hyperpocket/util/json_schema_to_model.py,sha256=fmIdIAkWfh7qLLoUrK4gqBV1JCHGQgjiEA8rwbpqoMg,3406
|
136
|
+
hyperpocket-0.1.8.dist-info/METADATA,sha256=azLitNUYizbwI_VGTUmY2KvbQjtt-b6uaCkGeXq61dE,10170
|
137
|
+
hyperpocket-0.1.8.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
138
|
+
hyperpocket-0.1.8.dist-info/entry_points.txt,sha256=KpBleaYr0SaENXOa-dFvJ_cvFCHYFEQ4LMl11ShAcBI,61
|
139
|
+
hyperpocket-0.1.8.dist-info/RECORD,,
|