botrun-flow-lang 5.12.263__py3-none-any.whl → 6.2.21__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.
Files changed (89) hide show
  1. botrun_flow_lang/api/auth_api.py +39 -39
  2. botrun_flow_lang/api/auth_utils.py +183 -183
  3. botrun_flow_lang/api/botrun_back_api.py +65 -65
  4. botrun_flow_lang/api/flow_api.py +3 -3
  5. botrun_flow_lang/api/hatch_api.py +508 -508
  6. botrun_flow_lang/api/langgraph_api.py +816 -811
  7. botrun_flow_lang/api/langgraph_constants.py +11 -0
  8. botrun_flow_lang/api/line_bot_api.py +1484 -1484
  9. botrun_flow_lang/api/model_api.py +300 -300
  10. botrun_flow_lang/api/rate_limit_api.py +32 -32
  11. botrun_flow_lang/api/routes.py +79 -79
  12. botrun_flow_lang/api/search_api.py +53 -53
  13. botrun_flow_lang/api/storage_api.py +395 -395
  14. botrun_flow_lang/api/subsidy_api.py +290 -290
  15. botrun_flow_lang/api/subsidy_api_system_prompt.txt +109 -109
  16. botrun_flow_lang/api/user_setting_api.py +70 -70
  17. botrun_flow_lang/api/version_api.py +31 -31
  18. botrun_flow_lang/api/youtube_api.py +26 -26
  19. botrun_flow_lang/constants.py +13 -13
  20. botrun_flow_lang/langgraph_agents/agents/agent_runner.py +178 -178
  21. botrun_flow_lang/langgraph_agents/agents/agent_tools/step_planner.py +77 -77
  22. botrun_flow_lang/langgraph_agents/agents/checkpointer/firestore_checkpointer.py +666 -666
  23. botrun_flow_lang/langgraph_agents/agents/gov_researcher/GOV_RESEARCHER_PRD.md +192 -192
  24. botrun_flow_lang/langgraph_agents/agents/gov_researcher/gemini_subsidy_graph.py +460 -460
  25. botrun_flow_lang/langgraph_agents/agents/gov_researcher/gov_researcher_2_graph.py +1002 -1002
  26. botrun_flow_lang/langgraph_agents/agents/gov_researcher/gov_researcher_graph.py +822 -822
  27. botrun_flow_lang/langgraph_agents/agents/langgraph_react_agent.py +730 -723
  28. botrun_flow_lang/langgraph_agents/agents/search_agent_graph.py +864 -864
  29. botrun_flow_lang/langgraph_agents/agents/tools/__init__.py +4 -4
  30. botrun_flow_lang/langgraph_agents/agents/tools/gemini_code_execution.py +376 -376
  31. botrun_flow_lang/langgraph_agents/agents/util/gemini_grounding.py +66 -66
  32. botrun_flow_lang/langgraph_agents/agents/util/html_util.py +316 -316
  33. botrun_flow_lang/langgraph_agents/agents/util/img_util.py +336 -294
  34. botrun_flow_lang/langgraph_agents/agents/util/local_files.py +419 -419
  35. botrun_flow_lang/langgraph_agents/agents/util/mermaid_util.py +86 -86
  36. botrun_flow_lang/langgraph_agents/agents/util/model_utils.py +143 -143
  37. botrun_flow_lang/langgraph_agents/agents/util/pdf_analyzer.py +562 -486
  38. botrun_flow_lang/langgraph_agents/agents/util/pdf_cache.py +250 -250
  39. botrun_flow_lang/langgraph_agents/agents/util/pdf_processor.py +204 -204
  40. botrun_flow_lang/langgraph_agents/agents/util/perplexity_search.py +464 -464
  41. botrun_flow_lang/langgraph_agents/agents/util/plotly_util.py +59 -59
  42. botrun_flow_lang/langgraph_agents/agents/util/tavily_search.py +199 -199
  43. botrun_flow_lang/langgraph_agents/agents/util/usage_metadata.py +34 -0
  44. botrun_flow_lang/langgraph_agents/agents/util/youtube_util.py +90 -90
  45. botrun_flow_lang/langgraph_agents/cache/langgraph_botrun_cache.py +197 -197
  46. botrun_flow_lang/llm_agent/llm_agent.py +19 -19
  47. botrun_flow_lang/llm_agent/llm_agent_util.py +83 -83
  48. botrun_flow_lang/log/.gitignore +2 -2
  49. botrun_flow_lang/main.py +61 -61
  50. botrun_flow_lang/main_fast.py +51 -51
  51. botrun_flow_lang/mcp_server/__init__.py +10 -10
  52. botrun_flow_lang/mcp_server/default_mcp.py +854 -744
  53. botrun_flow_lang/models/nodes/utils.py +205 -205
  54. botrun_flow_lang/models/token_usage.py +34 -34
  55. botrun_flow_lang/requirements.txt +21 -21
  56. botrun_flow_lang/services/base/firestore_base.py +30 -30
  57. botrun_flow_lang/services/hatch/hatch_factory.py +11 -11
  58. botrun_flow_lang/services/hatch/hatch_fs_store.py +419 -419
  59. botrun_flow_lang/services/storage/storage_cs_store.py +206 -206
  60. botrun_flow_lang/services/storage/storage_factory.py +12 -12
  61. botrun_flow_lang/services/storage/storage_store.py +65 -65
  62. botrun_flow_lang/services/user_setting/user_setting_factory.py +9 -9
  63. botrun_flow_lang/services/user_setting/user_setting_fs_store.py +66 -66
  64. botrun_flow_lang/static/docs/tools/index.html +926 -926
  65. botrun_flow_lang/tests/api_functional_tests.py +1525 -1525
  66. botrun_flow_lang/tests/api_stress_test.py +357 -357
  67. botrun_flow_lang/tests/shared_hatch_tests.py +333 -333
  68. botrun_flow_lang/tests/test_botrun_app.py +46 -46
  69. botrun_flow_lang/tests/test_html_util.py +31 -31
  70. botrun_flow_lang/tests/test_img_analyzer.py +190 -190
  71. botrun_flow_lang/tests/test_img_util.py +39 -39
  72. botrun_flow_lang/tests/test_local_files.py +114 -114
  73. botrun_flow_lang/tests/test_mermaid_util.py +103 -103
  74. botrun_flow_lang/tests/test_pdf_analyzer.py +104 -104
  75. botrun_flow_lang/tests/test_plotly_util.py +151 -151
  76. botrun_flow_lang/tests/test_run_workflow_engine.py +65 -65
  77. botrun_flow_lang/tools/generate_docs.py +133 -133
  78. botrun_flow_lang/tools/templates/tools.html +153 -153
  79. botrun_flow_lang/utils/__init__.py +7 -7
  80. botrun_flow_lang/utils/botrun_logger.py +344 -344
  81. botrun_flow_lang/utils/clients/rate_limit_client.py +209 -209
  82. botrun_flow_lang/utils/clients/token_verify_client.py +153 -153
  83. botrun_flow_lang/utils/google_drive_utils.py +654 -654
  84. botrun_flow_lang/utils/langchain_utils.py +324 -324
  85. botrun_flow_lang/utils/yaml_utils.py +9 -9
  86. {botrun_flow_lang-5.12.263.dist-info → botrun_flow_lang-6.2.21.dist-info}/METADATA +6 -6
  87. botrun_flow_lang-6.2.21.dist-info/RECORD +104 -0
  88. botrun_flow_lang-5.12.263.dist-info/RECORD +0 -102
  89. {botrun_flow_lang-5.12.263.dist-info → botrun_flow_lang-6.2.21.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 []