botrun-flow-lang 5.10.32__py3-none-any.whl → 5.10.82__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.
- botrun_flow_lang/api/auth_api.py +39 -39
- botrun_flow_lang/api/auth_utils.py +183 -183
- botrun_flow_lang/api/botrun_back_api.py +65 -65
- botrun_flow_lang/api/flow_api.py +3 -3
- botrun_flow_lang/api/hatch_api.py +481 -481
- botrun_flow_lang/api/langgraph_api.py +796 -796
- botrun_flow_lang/api/line_bot_api.py +1357 -1357
- botrun_flow_lang/api/model_api.py +300 -300
- botrun_flow_lang/api/rate_limit_api.py +32 -32
- botrun_flow_lang/api/routes.py +79 -79
- botrun_flow_lang/api/search_api.py +53 -53
- botrun_flow_lang/api/storage_api.py +316 -316
- botrun_flow_lang/api/subsidy_api.py +290 -290
- botrun_flow_lang/api/subsidy_api_system_prompt.txt +109 -109
- botrun_flow_lang/api/user_setting_api.py +70 -70
- botrun_flow_lang/api/version_api.py +31 -31
- botrun_flow_lang/api/youtube_api.py +26 -26
- botrun_flow_lang/constants.py +13 -13
- botrun_flow_lang/langgraph_agents/agents/agent_runner.py +174 -174
- botrun_flow_lang/langgraph_agents/agents/agent_tools/step_planner.py +77 -77
- botrun_flow_lang/langgraph_agents/agents/checkpointer/firestore_checkpointer.py +666 -666
- botrun_flow_lang/langgraph_agents/agents/gov_researcher/GOV_RESEARCHER_PRD.md +192 -192
- botrun_flow_lang/langgraph_agents/agents/gov_researcher/gov_researcher_2_graph.py +1002 -1002
- botrun_flow_lang/langgraph_agents/agents/gov_researcher/gov_researcher_graph.py +822 -822
- botrun_flow_lang/langgraph_agents/agents/langgraph_react_agent.py +548 -548
- botrun_flow_lang/langgraph_agents/agents/search_agent_graph.py +864 -864
- botrun_flow_lang/langgraph_agents/agents/tools/__init__.py +4 -4
- botrun_flow_lang/langgraph_agents/agents/tools/gemini_code_execution.py +376 -376
- botrun_flow_lang/langgraph_agents/agents/util/gemini_grounding.py +66 -66
- botrun_flow_lang/langgraph_agents/agents/util/html_util.py +316 -316
- botrun_flow_lang/langgraph_agents/agents/util/img_util.py +294 -294
- botrun_flow_lang/langgraph_agents/agents/util/local_files.py +345 -345
- botrun_flow_lang/langgraph_agents/agents/util/mermaid_util.py +86 -86
- botrun_flow_lang/langgraph_agents/agents/util/model_utils.py +143 -143
- botrun_flow_lang/langgraph_agents/agents/util/pdf_analyzer.py +160 -160
- botrun_flow_lang/langgraph_agents/agents/util/perplexity_search.py +464 -464
- botrun_flow_lang/langgraph_agents/agents/util/plotly_util.py +59 -59
- botrun_flow_lang/langgraph_agents/agents/util/tavily_search.py +199 -199
- botrun_flow_lang/langgraph_agents/agents/util/youtube_util.py +90 -90
- botrun_flow_lang/langgraph_agents/cache/langgraph_botrun_cache.py +197 -197
- botrun_flow_lang/llm_agent/llm_agent.py +19 -19
- botrun_flow_lang/llm_agent/llm_agent_util.py +83 -83
- botrun_flow_lang/log/.gitignore +2 -2
- botrun_flow_lang/main.py +61 -61
- botrun_flow_lang/main_fast.py +51 -51
- botrun_flow_lang/mcp_server/__init__.py +10 -10
- botrun_flow_lang/mcp_server/default_mcp.py +711 -711
- botrun_flow_lang/models/nodes/utils.py +205 -205
- botrun_flow_lang/models/token_usage.py +34 -34
- botrun_flow_lang/requirements.txt +21 -21
- botrun_flow_lang/services/base/firestore_base.py +30 -30
- botrun_flow_lang/services/hatch/hatch_factory.py +11 -11
- botrun_flow_lang/services/hatch/hatch_fs_store.py +372 -372
- botrun_flow_lang/services/storage/storage_cs_store.py +202 -202
- botrun_flow_lang/services/storage/storage_factory.py +12 -12
- botrun_flow_lang/services/storage/storage_store.py +65 -65
- botrun_flow_lang/services/user_setting/user_setting_factory.py +9 -9
- botrun_flow_lang/services/user_setting/user_setting_fs_store.py +66 -66
- botrun_flow_lang/static/docs/tools/index.html +926 -926
- botrun_flow_lang/tests/api_functional_tests.py +1525 -1525
- botrun_flow_lang/tests/api_stress_test.py +357 -357
- botrun_flow_lang/tests/shared_hatch_tests.py +333 -333
- botrun_flow_lang/tests/test_botrun_app.py +46 -46
- botrun_flow_lang/tests/test_html_util.py +31 -31
- botrun_flow_lang/tests/test_img_analyzer.py +190 -190
- botrun_flow_lang/tests/test_img_util.py +39 -39
- botrun_flow_lang/tests/test_local_files.py +114 -114
- botrun_flow_lang/tests/test_mermaid_util.py +103 -103
- botrun_flow_lang/tests/test_pdf_analyzer.py +104 -104
- botrun_flow_lang/tests/test_plotly_util.py +151 -151
- botrun_flow_lang/tests/test_run_workflow_engine.py +65 -65
- botrun_flow_lang/tools/generate_docs.py +133 -133
- botrun_flow_lang/tools/templates/tools.html +153 -153
- botrun_flow_lang/utils/__init__.py +7 -7
- botrun_flow_lang/utils/botrun_logger.py +344 -344
- botrun_flow_lang/utils/clients/rate_limit_client.py +209 -209
- botrun_flow_lang/utils/clients/token_verify_client.py +153 -153
- botrun_flow_lang/utils/google_drive_utils.py +654 -654
- botrun_flow_lang/utils/langchain_utils.py +324 -324
- botrun_flow_lang/utils/yaml_utils.py +9 -9
- {botrun_flow_lang-5.10.32.dist-info → botrun_flow_lang-5.10.82.dist-info}/METADATA +2 -2
- botrun_flow_lang-5.10.82.dist-info/RECORD +99 -0
- botrun_flow_lang-5.10.32.dist-info/RECORD +0 -99
- {botrun_flow_lang-5.10.32.dist-info → botrun_flow_lang-5.10.82.dist-info}/WHEEL +0 -0
|
@@ -1,66 +1,66 @@
|
|
|
1
|
-
from typing import Union, List
|
|
2
|
-
from google.cloud.exceptions import GoogleCloudError
|
|
3
|
-
from botrun_flow_lang.constants import USER_SETTING_STORE_NAME
|
|
4
|
-
from botrun_hatch.models.user_setting import UserSetting
|
|
5
|
-
from botrun_flow_lang.services.base.firestore_base import FirestoreBase
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
class UserSettingFsStore(FirestoreBase):
|
|
9
|
-
def __init__(self, env_name: str):
|
|
10
|
-
super().__init__(f"{env_name}-{USER_SETTING_STORE_NAME}")
|
|
11
|
-
|
|
12
|
-
async def get_user_setting(self, user_id: str) -> Union[UserSetting, None]:
|
|
13
|
-
doc_ref = self.collection.document(user_id)
|
|
14
|
-
doc = doc_ref.get()
|
|
15
|
-
if doc.exists:
|
|
16
|
-
data = doc.to_dict()
|
|
17
|
-
return UserSetting(**data)
|
|
18
|
-
else:
|
|
19
|
-
print(f">============Getting user setting for {user_id} not exists")
|
|
20
|
-
return None
|
|
21
|
-
|
|
22
|
-
async def set_user_setting(self, user_setting: UserSetting):
|
|
23
|
-
try:
|
|
24
|
-
doc_ref = self.collection.document(user_setting.user_id)
|
|
25
|
-
doc_ref.set(user_setting.model_dump())
|
|
26
|
-
return True, user_setting
|
|
27
|
-
except GoogleCloudError as e:
|
|
28
|
-
print(f"Error setting user setting for {user_setting.user_id}: {e}")
|
|
29
|
-
return False, None
|
|
30
|
-
|
|
31
|
-
async def delete_user_setting(self, user_id: str):
|
|
32
|
-
try:
|
|
33
|
-
doc_ref = self.collection.document(user_id)
|
|
34
|
-
doc_ref.delete()
|
|
35
|
-
return True
|
|
36
|
-
except GoogleCloudError as e:
|
|
37
|
-
print(f"Error deleting user setting for {user_id}: {e}")
|
|
38
|
-
return False
|
|
39
|
-
|
|
40
|
-
async def get_all_user_ids(self) -> List[str]:
|
|
41
|
-
"""Get all user IDs (document IDs) from the collection.
|
|
42
|
-
|
|
43
|
-
Returns:
|
|
44
|
-
List[str]: List of all user IDs
|
|
45
|
-
"""
|
|
46
|
-
try:
|
|
47
|
-
all_user_ids = []
|
|
48
|
-
# Get first batch
|
|
49
|
-
query = self.collection.limit(20)
|
|
50
|
-
while True:
|
|
51
|
-
docs = list(query.stream())
|
|
52
|
-
if not docs:
|
|
53
|
-
break
|
|
54
|
-
|
|
55
|
-
# Add document IDs from current batch
|
|
56
|
-
all_user_ids.extend([doc.id for doc in docs])
|
|
57
|
-
|
|
58
|
-
# Get last document from current batch
|
|
59
|
-
last_doc = docs[-1]
|
|
60
|
-
# Update query to start after the last document
|
|
61
|
-
query = self.collection.limit(20).start_after(last_doc)
|
|
62
|
-
|
|
63
|
-
return all_user_ids
|
|
64
|
-
except GoogleCloudError as e:
|
|
65
|
-
print(f"Error getting all user IDs: {e}")
|
|
66
|
-
return []
|
|
1
|
+
from typing import Union, List
|
|
2
|
+
from google.cloud.exceptions import GoogleCloudError
|
|
3
|
+
from botrun_flow_lang.constants import USER_SETTING_STORE_NAME
|
|
4
|
+
from botrun_hatch.models.user_setting import UserSetting
|
|
5
|
+
from botrun_flow_lang.services.base.firestore_base import FirestoreBase
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
class UserSettingFsStore(FirestoreBase):
|
|
9
|
+
def __init__(self, env_name: str):
|
|
10
|
+
super().__init__(f"{env_name}-{USER_SETTING_STORE_NAME}")
|
|
11
|
+
|
|
12
|
+
async def get_user_setting(self, user_id: str) -> Union[UserSetting, None]:
|
|
13
|
+
doc_ref = self.collection.document(user_id)
|
|
14
|
+
doc = doc_ref.get()
|
|
15
|
+
if doc.exists:
|
|
16
|
+
data = doc.to_dict()
|
|
17
|
+
return UserSetting(**data)
|
|
18
|
+
else:
|
|
19
|
+
print(f">============Getting user setting for {user_id} not exists")
|
|
20
|
+
return None
|
|
21
|
+
|
|
22
|
+
async def set_user_setting(self, user_setting: UserSetting):
|
|
23
|
+
try:
|
|
24
|
+
doc_ref = self.collection.document(user_setting.user_id)
|
|
25
|
+
doc_ref.set(user_setting.model_dump())
|
|
26
|
+
return True, user_setting
|
|
27
|
+
except GoogleCloudError as e:
|
|
28
|
+
print(f"Error setting user setting for {user_setting.user_id}: {e}")
|
|
29
|
+
return False, None
|
|
30
|
+
|
|
31
|
+
async def delete_user_setting(self, user_id: str):
|
|
32
|
+
try:
|
|
33
|
+
doc_ref = self.collection.document(user_id)
|
|
34
|
+
doc_ref.delete()
|
|
35
|
+
return True
|
|
36
|
+
except GoogleCloudError as e:
|
|
37
|
+
print(f"Error deleting user setting for {user_id}: {e}")
|
|
38
|
+
return False
|
|
39
|
+
|
|
40
|
+
async def get_all_user_ids(self) -> List[str]:
|
|
41
|
+
"""Get all user IDs (document IDs) from the collection.
|
|
42
|
+
|
|
43
|
+
Returns:
|
|
44
|
+
List[str]: List of all user IDs
|
|
45
|
+
"""
|
|
46
|
+
try:
|
|
47
|
+
all_user_ids = []
|
|
48
|
+
# Get first batch
|
|
49
|
+
query = self.collection.limit(20)
|
|
50
|
+
while True:
|
|
51
|
+
docs = list(query.stream())
|
|
52
|
+
if not docs:
|
|
53
|
+
break
|
|
54
|
+
|
|
55
|
+
# Add document IDs from current batch
|
|
56
|
+
all_user_ids.extend([doc.id for doc in docs])
|
|
57
|
+
|
|
58
|
+
# Get last document from current batch
|
|
59
|
+
last_doc = docs[-1]
|
|
60
|
+
# Update query to start after the last document
|
|
61
|
+
query = self.collection.limit(20).start_after(last_doc)
|
|
62
|
+
|
|
63
|
+
return all_user_ids
|
|
64
|
+
except GoogleCloudError as e:
|
|
65
|
+
print(f"Error getting all user IDs: {e}")
|
|
66
|
+
return []
|