botrun-flow-lang 5.12.261__tar.gz → 5.12.263__tar.gz

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 (152) hide show
  1. {botrun_flow_lang-5.12.261 → botrun_flow_lang-5.12.263}/CHANGELOG.md +10 -0
  2. {botrun_flow_lang-5.12.261 → botrun_flow_lang-5.12.263}/PKG-INFO +1 -1
  3. {botrun_flow_lang-5.12.261 → botrun_flow_lang-5.12.263}/botrun_flow_lang/services/hatch/hatch_fs_store.py +32 -0
  4. {botrun_flow_lang-5.12.261 → botrun_flow_lang-5.12.263}/pyproject.toml +1 -1
  5. botrun_flow_lang-5.12.263/requirements.txt +182 -0
  6. {botrun_flow_lang-5.12.261 → botrun_flow_lang-5.12.263}/uv.lock +1 -1
  7. botrun_flow_lang-5.12.261/requirements.txt +0 -657
  8. {botrun_flow_lang-5.12.261 → botrun_flow_lang-5.12.263}/.env_template +0 -0
  9. {botrun_flow_lang-5.12.261 → botrun_flow_lang-5.12.263}/.gcloudignore +0 -0
  10. {botrun_flow_lang-5.12.261 → botrun_flow_lang-5.12.263}/.gitignore +0 -0
  11. {botrun_flow_lang-5.12.261 → botrun_flow_lang-5.12.263}/.vscode/launch.json +0 -0
  12. {botrun_flow_lang-5.12.261 → botrun_flow_lang-5.12.263}/CLAUDE.md +0 -0
  13. {botrun_flow_lang-5.12.261 → botrun_flow_lang-5.12.263}/Dockerfile.template +0 -0
  14. {botrun_flow_lang-5.12.261 → botrun_flow_lang-5.12.263}/README.md +0 -0
  15. {botrun_flow_lang-5.12.261 → botrun_flow_lang-5.12.263}/botrun_flow_lang/__init__.py +0 -0
  16. {botrun_flow_lang-5.12.261 → botrun_flow_lang-5.12.263}/botrun_flow_lang/api/__init__.py +0 -0
  17. {botrun_flow_lang-5.12.261 → botrun_flow_lang-5.12.263}/botrun_flow_lang/api/auth_api.py +0 -0
  18. {botrun_flow_lang-5.12.261 → botrun_flow_lang-5.12.263}/botrun_flow_lang/api/auth_utils.py +0 -0
  19. {botrun_flow_lang-5.12.261 → botrun_flow_lang-5.12.263}/botrun_flow_lang/api/botrun_back_api.py +0 -0
  20. {botrun_flow_lang-5.12.261 → botrun_flow_lang-5.12.263}/botrun_flow_lang/api/flow_api.py +0 -0
  21. {botrun_flow_lang-5.12.261 → botrun_flow_lang-5.12.263}/botrun_flow_lang/api/hatch_api.py +0 -0
  22. {botrun_flow_lang-5.12.261 → botrun_flow_lang-5.12.263}/botrun_flow_lang/api/langgraph_api.py +0 -0
  23. {botrun_flow_lang-5.12.261 → botrun_flow_lang-5.12.263}/botrun_flow_lang/api/line_bot_api.py +0 -0
  24. {botrun_flow_lang-5.12.261 → botrun_flow_lang-5.12.263}/botrun_flow_lang/api/model_api.py +0 -0
  25. {botrun_flow_lang-5.12.261 → botrun_flow_lang-5.12.263}/botrun_flow_lang/api/rate_limit_api.py +0 -0
  26. {botrun_flow_lang-5.12.261 → botrun_flow_lang-5.12.263}/botrun_flow_lang/api/routes.py +0 -0
  27. {botrun_flow_lang-5.12.261 → botrun_flow_lang-5.12.263}/botrun_flow_lang/api/search_api.py +0 -0
  28. {botrun_flow_lang-5.12.261 → botrun_flow_lang-5.12.263}/botrun_flow_lang/api/storage_api.py +0 -0
  29. {botrun_flow_lang-5.12.261 → botrun_flow_lang-5.12.263}/botrun_flow_lang/api/subsidy_api.py +0 -0
  30. {botrun_flow_lang-5.12.261 → botrun_flow_lang-5.12.263}/botrun_flow_lang/api/subsidy_api_system_prompt.txt +0 -0
  31. {botrun_flow_lang-5.12.261 → botrun_flow_lang-5.12.263}/botrun_flow_lang/api/user_setting_api.py +0 -0
  32. {botrun_flow_lang-5.12.261 → botrun_flow_lang-5.12.263}/botrun_flow_lang/api/version_api.py +0 -0
  33. {botrun_flow_lang-5.12.261 → botrun_flow_lang-5.12.263}/botrun_flow_lang/api/youtube_api.py +0 -0
  34. {botrun_flow_lang-5.12.261 → botrun_flow_lang-5.12.263}/botrun_flow_lang/constants.py +0 -0
  35. {botrun_flow_lang-5.12.261 → botrun_flow_lang-5.12.263}/botrun_flow_lang/langgraph_agents/__init__.py +0 -0
  36. {botrun_flow_lang-5.12.261 → botrun_flow_lang-5.12.263}/botrun_flow_lang/langgraph_agents/agents/__init__.py +0 -0
  37. {botrun_flow_lang-5.12.261 → botrun_flow_lang-5.12.263}/botrun_flow_lang/langgraph_agents/agents/agent_runner.py +0 -0
  38. {botrun_flow_lang-5.12.261 → botrun_flow_lang-5.12.263}/botrun_flow_lang/langgraph_agents/agents/agent_tools/__init__.py +0 -0
  39. {botrun_flow_lang-5.12.261 → botrun_flow_lang-5.12.263}/botrun_flow_lang/langgraph_agents/agents/agent_tools/step_planner.py +0 -0
  40. {botrun_flow_lang-5.12.261 → botrun_flow_lang-5.12.263}/botrun_flow_lang/langgraph_agents/agents/checkpointer/__init__.py +0 -0
  41. {botrun_flow_lang-5.12.261 → botrun_flow_lang-5.12.263}/botrun_flow_lang/langgraph_agents/agents/checkpointer/firestore_checkpointer.py +0 -0
  42. {botrun_flow_lang-5.12.261 → botrun_flow_lang-5.12.263}/botrun_flow_lang/langgraph_agents/agents/gov_researcher/GOV_RESEARCHER_PRD.md +0 -0
  43. {botrun_flow_lang-5.12.261 → botrun_flow_lang-5.12.263}/botrun_flow_lang/langgraph_agents/agents/gov_researcher/__init__.py +0 -0
  44. {botrun_flow_lang-5.12.261 → botrun_flow_lang-5.12.263}/botrun_flow_lang/langgraph_agents/agents/gov_researcher/gemini_subsidy_graph.py +0 -0
  45. {botrun_flow_lang-5.12.261 → botrun_flow_lang-5.12.263}/botrun_flow_lang/langgraph_agents/agents/gov_researcher/gov_researcher_2_graph.py +0 -0
  46. {botrun_flow_lang-5.12.261 → botrun_flow_lang-5.12.263}/botrun_flow_lang/langgraph_agents/agents/gov_researcher/gov_researcher_graph.py +0 -0
  47. {botrun_flow_lang-5.12.261 → botrun_flow_lang-5.12.263}/botrun_flow_lang/langgraph_agents/agents/langgraph_react_agent.py +0 -0
  48. {botrun_flow_lang-5.12.261 → botrun_flow_lang-5.12.263}/botrun_flow_lang/langgraph_agents/agents/search_agent_graph.py +0 -0
  49. {botrun_flow_lang-5.12.261 → botrun_flow_lang-5.12.263}/botrun_flow_lang/langgraph_agents/agents/tools/__init__.py +0 -0
  50. {botrun_flow_lang-5.12.261 → botrun_flow_lang-5.12.263}/botrun_flow_lang/langgraph_agents/agents/tools/gemini_code_execution.py +0 -0
  51. {botrun_flow_lang-5.12.261 → botrun_flow_lang-5.12.263}/botrun_flow_lang/langgraph_agents/agents/util/__init__.py +0 -0
  52. {botrun_flow_lang-5.12.261 → botrun_flow_lang-5.12.263}/botrun_flow_lang/langgraph_agents/agents/util/gemini_grounding.py +0 -0
  53. {botrun_flow_lang-5.12.261 → botrun_flow_lang-5.12.263}/botrun_flow_lang/langgraph_agents/agents/util/html_util.py +0 -0
  54. {botrun_flow_lang-5.12.261 → botrun_flow_lang-5.12.263}/botrun_flow_lang/langgraph_agents/agents/util/img_util.py +0 -0
  55. {botrun_flow_lang-5.12.261 → botrun_flow_lang-5.12.263}/botrun_flow_lang/langgraph_agents/agents/util/local_files.py +0 -0
  56. {botrun_flow_lang-5.12.261 → botrun_flow_lang-5.12.263}/botrun_flow_lang/langgraph_agents/agents/util/mermaid_util.py +0 -0
  57. {botrun_flow_lang-5.12.261 → botrun_flow_lang-5.12.263}/botrun_flow_lang/langgraph_agents/agents/util/model_utils.py +0 -0
  58. {botrun_flow_lang-5.12.261 → botrun_flow_lang-5.12.263}/botrun_flow_lang/langgraph_agents/agents/util/pdf_analyzer.py +0 -0
  59. {botrun_flow_lang-5.12.261 → botrun_flow_lang-5.12.263}/botrun_flow_lang/langgraph_agents/agents/util/pdf_cache.py +0 -0
  60. {botrun_flow_lang-5.12.261 → botrun_flow_lang-5.12.263}/botrun_flow_lang/langgraph_agents/agents/util/pdf_processor.py +0 -0
  61. {botrun_flow_lang-5.12.261 → botrun_flow_lang-5.12.263}/botrun_flow_lang/langgraph_agents/agents/util/perplexity_search.py +0 -0
  62. {botrun_flow_lang-5.12.261 → botrun_flow_lang-5.12.263}/botrun_flow_lang/langgraph_agents/agents/util/plotly_util.py +0 -0
  63. {botrun_flow_lang-5.12.261 → botrun_flow_lang-5.12.263}/botrun_flow_lang/langgraph_agents/agents/util/tavily_search.py +0 -0
  64. {botrun_flow_lang-5.12.261 → botrun_flow_lang-5.12.263}/botrun_flow_lang/langgraph_agents/agents/util/youtube_util.py +0 -0
  65. {botrun_flow_lang-5.12.261 → botrun_flow_lang-5.12.263}/botrun_flow_lang/langgraph_agents/cache/__init__.py +0 -0
  66. {botrun_flow_lang-5.12.261 → botrun_flow_lang-5.12.263}/botrun_flow_lang/langgraph_agents/cache/langgraph_botrun_cache.py +0 -0
  67. {botrun_flow_lang-5.12.261 → botrun_flow_lang-5.12.263}/botrun_flow_lang/llm_agent/__init__.py +0 -0
  68. {botrun_flow_lang-5.12.261 → botrun_flow_lang-5.12.263}/botrun_flow_lang/llm_agent/llm_agent.py +0 -0
  69. {botrun_flow_lang-5.12.261 → botrun_flow_lang-5.12.263}/botrun_flow_lang/llm_agent/llm_agent_util.py +0 -0
  70. {botrun_flow_lang-5.12.261 → botrun_flow_lang-5.12.263}/botrun_flow_lang/log/.gitignore +0 -0
  71. {botrun_flow_lang-5.12.261 → botrun_flow_lang-5.12.263}/botrun_flow_lang/main.py +0 -0
  72. {botrun_flow_lang-5.12.261 → botrun_flow_lang-5.12.263}/botrun_flow_lang/main_fast.py +0 -0
  73. {botrun_flow_lang-5.12.261 → botrun_flow_lang-5.12.263}/botrun_flow_lang/mcp_server/__init__.py +0 -0
  74. {botrun_flow_lang-5.12.261 → botrun_flow_lang-5.12.263}/botrun_flow_lang/mcp_server/default_mcp.py +0 -0
  75. {botrun_flow_lang-5.12.261 → botrun_flow_lang-5.12.263}/botrun_flow_lang/models/__init__.py +0 -0
  76. {botrun_flow_lang-5.12.261 → botrun_flow_lang-5.12.263}/botrun_flow_lang/models/nodes/utils.py +0 -0
  77. {botrun_flow_lang-5.12.261 → botrun_flow_lang-5.12.263}/botrun_flow_lang/models/token_usage.py +0 -0
  78. {botrun_flow_lang-5.12.261 → botrun_flow_lang-5.12.263}/botrun_flow_lang/requirements.txt +0 -0
  79. {botrun_flow_lang-5.12.261 → botrun_flow_lang-5.12.263}/botrun_flow_lang/services/__init__.py +0 -0
  80. {botrun_flow_lang-5.12.261 → botrun_flow_lang-5.12.263}/botrun_flow_lang/services/base/firestore_base.py +0 -0
  81. {botrun_flow_lang-5.12.261 → botrun_flow_lang-5.12.263}/botrun_flow_lang/services/hatch/__init__.py +0 -0
  82. {botrun_flow_lang-5.12.261 → botrun_flow_lang-5.12.263}/botrun_flow_lang/services/hatch/hatch_factory.py +0 -0
  83. {botrun_flow_lang-5.12.261 → botrun_flow_lang-5.12.263}/botrun_flow_lang/services/storage/__init__.py +0 -0
  84. {botrun_flow_lang-5.12.261 → botrun_flow_lang-5.12.263}/botrun_flow_lang/services/storage/storage_cs_store.py +0 -0
  85. {botrun_flow_lang-5.12.261 → botrun_flow_lang-5.12.263}/botrun_flow_lang/services/storage/storage_factory.py +0 -0
  86. {botrun_flow_lang-5.12.261 → botrun_flow_lang-5.12.263}/botrun_flow_lang/services/storage/storage_store.py +0 -0
  87. {botrun_flow_lang-5.12.261 → botrun_flow_lang-5.12.263}/botrun_flow_lang/services/user_setting/__init__.py +0 -0
  88. {botrun_flow_lang-5.12.261 → botrun_flow_lang-5.12.263}/botrun_flow_lang/services/user_setting/user_setting_factory.py +0 -0
  89. {botrun_flow_lang-5.12.261 → botrun_flow_lang-5.12.263}/botrun_flow_lang/services/user_setting/user_setting_fs_store.py +0 -0
  90. {botrun_flow_lang-5.12.261 → botrun_flow_lang-5.12.263}/botrun_flow_lang/static/docs/tools/index.html +0 -0
  91. {botrun_flow_lang-5.12.261 → botrun_flow_lang-5.12.263}/botrun_flow_lang/tests/api_functional_tests.py +0 -0
  92. {botrun_flow_lang-5.12.261 → botrun_flow_lang-5.12.263}/botrun_flow_lang/tests/api_stress_test.py +0 -0
  93. {botrun_flow_lang-5.12.261 → botrun_flow_lang-5.12.263}/botrun_flow_lang/tests/shared_hatch_tests.py +0 -0
  94. {botrun_flow_lang-5.12.261 → botrun_flow_lang-5.12.263}/botrun_flow_lang/tests/test_botrun_app.py +0 -0
  95. {botrun_flow_lang-5.12.261 → botrun_flow_lang-5.12.263}/botrun_flow_lang/tests/test_files/(/346/272/253/351/246/250/346/210/220/346/236/234 /350/241/214/346/224/277/350/253/213/347/244/272/345/214/257/347/270/275)20250210/345/220/221 /344/270/212/344/272/272/345/240/261/345/221/212/347/260/241/345/240/261 (1).pdf" +0 -0
  96. {botrun_flow_lang-5.12.261 → botrun_flow_lang-5.12.263}/botrun_flow_lang/tests/test_files/11206_10808/344/272/272/345/217/243/346/225/270(3/346/256/265/345/271/264/351/275/241/347/265/204+/346/257/224/347/216/207)/345/244/251/344/270/213/351/233/234/350/252/2141.pdf" +0 -0
  97. {botrun_flow_lang-5.12.261 → botrun_flow_lang-5.12.263}/botrun_flow_lang/tests/test_files/1120701A/346/265/267/345/273/243/351/233/242/345/262/270/351/242/250/345/212/233/347/231/274/351/233/273/350/250/210/347/225/253/347/222/260/345/242/203/345/275/261/351/237/277/350/252/252/346/230/216/346/233/270-C04.PDF" +0 -0
  98. {botrun_flow_lang-5.12.261 → botrun_flow_lang-5.12.263}/botrun_flow_lang/tests/test_files/ImportedPhoto.760363950.029251.jpeg +0 -0
  99. {botrun_flow_lang-5.12.261 → botrun_flow_lang-5.12.263}/botrun_flow_lang/tests/test_files/ImportedPhoto.760363950.030446.jpeg +0 -0
  100. {botrun_flow_lang-5.12.261 → botrun_flow_lang-5.12.263}/botrun_flow_lang/tests/test_files/ImportedPhoto.760363950.031127.jpeg +0 -0
  101. {botrun_flow_lang-5.12.261 → botrun_flow_lang-5.12.263}/botrun_flow_lang/tests/test_files/d5712343.jpg +0 -0
  102. {botrun_flow_lang-5.12.261 → botrun_flow_lang-5.12.263}/botrun_flow_lang/tests/test_files/spot_difference_1.png +0 -0
  103. {botrun_flow_lang-5.12.261 → botrun_flow_lang-5.12.263}/botrun_flow_lang/tests/test_files/spot_difference_2.png +0 -0
  104. {botrun_flow_lang-5.12.261 → botrun_flow_lang-5.12.263}/botrun_flow_lang/tests/test_html_util.py +0 -0
  105. {botrun_flow_lang-5.12.261 → botrun_flow_lang-5.12.263}/botrun_flow_lang/tests/test_img_analyzer.py +0 -0
  106. {botrun_flow_lang-5.12.261 → botrun_flow_lang-5.12.263}/botrun_flow_lang/tests/test_img_util.py +0 -0
  107. {botrun_flow_lang-5.12.261 → botrun_flow_lang-5.12.263}/botrun_flow_lang/tests/test_local_files.py +0 -0
  108. {botrun_flow_lang-5.12.261 → botrun_flow_lang-5.12.263}/botrun_flow_lang/tests/test_mermaid_util.py +0 -0
  109. {botrun_flow_lang-5.12.261 → botrun_flow_lang-5.12.263}/botrun_flow_lang/tests/test_pdf_analyzer.py +0 -0
  110. {botrun_flow_lang-5.12.261 → botrun_flow_lang-5.12.263}/botrun_flow_lang/tests/test_plotly_util.py +0 -0
  111. {botrun_flow_lang-5.12.261 → botrun_flow_lang-5.12.263}/botrun_flow_lang/tests/test_run_workflow_engine.py +0 -0
  112. {botrun_flow_lang-5.12.261 → botrun_flow_lang-5.12.263}/botrun_flow_lang/tools/generate_docs.py +0 -0
  113. {botrun_flow_lang-5.12.261 → botrun_flow_lang-5.12.263}/botrun_flow_lang/tools/templates/tools.html +0 -0
  114. {botrun_flow_lang-5.12.261 → botrun_flow_lang-5.12.263}/botrun_flow_lang/utils/__init__.py +0 -0
  115. {botrun_flow_lang-5.12.261 → botrun_flow_lang-5.12.263}/botrun_flow_lang/utils/botrun_logger.py +0 -0
  116. {botrun_flow_lang-5.12.261 → botrun_flow_lang-5.12.263}/botrun_flow_lang/utils/clients/__init__.py +0 -0
  117. {botrun_flow_lang-5.12.261 → botrun_flow_lang-5.12.263}/botrun_flow_lang/utils/clients/rate_limit_client.py +0 -0
  118. {botrun_flow_lang-5.12.261 → botrun_flow_lang-5.12.263}/botrun_flow_lang/utils/clients/token_verify_client.py +0 -0
  119. {botrun_flow_lang-5.12.261 → botrun_flow_lang-5.12.263}/botrun_flow_lang/utils/google_drive_utils.py +0 -0
  120. {botrun_flow_lang-5.12.261 → botrun_flow_lang-5.12.263}/botrun_flow_lang/utils/langchain_utils.py +0 -0
  121. {botrun_flow_lang-5.12.261 → botrun_flow_lang-5.12.263}/botrun_flow_lang/utils/yaml_utils.py +0 -0
  122. {botrun_flow_lang-5.12.261 → botrun_flow_lang-5.12.263}/cloudbuild_template.yaml +0 -0
  123. {botrun_flow_lang-5.12.261 → botrun_flow_lang-5.12.263}/convert_newlines.sh +0 -0
  124. {botrun_flow_lang-5.12.261 → botrun_flow_lang-5.12.263}/deploy.sh +0 -0
  125. {botrun_flow_lang-5.12.261 → botrun_flow_lang-5.12.263}/langgraph.json +0 -0
  126. {botrun_flow_lang-5.12.261 → botrun_flow_lang-5.12.263}/poetry.lock +0 -0
  127. {botrun_flow_lang-5.12.261 → botrun_flow_lang-5.12.263}/poetry.toml +0 -0
  128. {botrun_flow_lang-5.12.261 → botrun_flow_lang-5.12.263}/requirements_fast.txt +0 -0
  129. {botrun_flow_lang-5.12.261 → botrun_flow_lang-5.12.263}/sh/deploy_bigline.sh +0 -0
  130. {botrun_flow_lang-5.12.261 → botrun_flow_lang-5.12.263}/sh/deploy_dev.sh +0 -0
  131. {botrun_flow_lang-5.12.261 → botrun_flow_lang-5.12.263}/sh/deploy_evaldev.sh +0 -0
  132. {botrun_flow_lang-5.12.261 → botrun_flow_lang-5.12.263}/sh/deploy_fast.sh +0 -0
  133. {botrun_flow_lang-5.12.261 → botrun_flow_lang-5.12.263}/sh/deploy_modaline.sh +0 -0
  134. {botrun_flow_lang-5.12.261 → botrun_flow_lang-5.12.263}/sh/deploy_prod.sh +0 -0
  135. {botrun_flow_lang-5.12.261 → botrun_flow_lang-5.12.263}/sh/deploy_sebaline.sh +0 -0
  136. {botrun_flow_lang-5.12.261 → botrun_flow_lang-5.12.263}/sh/firestore_checkpointer_delete_thread.py +0 -0
  137. {botrun_flow_lang-5.12.261 → botrun_flow_lang-5.12.263}/sh/generate_docs.sh +0 -0
  138. {botrun_flow_lang-5.12.261 → botrun_flow_lang-5.12.263}/sh/llm_time_test.py +0 -0
  139. {botrun_flow_lang-5.12.261 → botrun_flow_lang-5.12.263}/sh/run_langgraph.py +0 -0
  140. {botrun_flow_lang-5.12.261 → botrun_flow_lang-5.12.263}/sh/run_langgraph_react.py +0 -0
  141. {botrun_flow_lang-5.12.261 → botrun_flow_lang-5.12.263}/sh/run_youtube_summary.py +0 -0
  142. {botrun_flow_lang-5.12.261 → botrun_flow_lang-5.12.263}/sh/scrape_pdf.py +0 -0
  143. {botrun_flow_lang-5.12.261 → botrun_flow_lang-5.12.263}/sh/seba_pypi.sh +0 -0
  144. {botrun_flow_lang-5.12.261 → botrun_flow_lang-5.12.263}/sh/subsidy_test.py +0 -0
  145. {botrun_flow_lang-5.12.261 → botrun_flow_lang-5.12.263}/specs/gov-search/agent-architecture-upgrade.excalidraw +0 -0
  146. {botrun_flow_lang-5.12.261 → botrun_flow_lang-5.12.263}/specs/gov-search/line_dev.excalidraw +0 -0
  147. {botrun_flow_lang-5.12.261 → botrun_flow_lang-5.12.263}/specs/gov-search/subsidy_agent.excalidraw +0 -0
  148. {botrun_flow_lang-5.12.261 → botrun_flow_lang-5.12.263}/specs/gov-search/subsidy_agent_dev.excalidraw +0 -0
  149. {botrun_flow_lang-5.12.261 → botrun_flow_lang-5.12.263}/specs/gov-search/temp_txt.md +0 -0
  150. {botrun_flow_lang-5.12.261 → botrun_flow_lang-5.12.263}/specs/gov-search/temp_txt2.md +0 -0
  151. {botrun_flow_lang-5.12.261 → botrun_flow_lang-5.12.263}/specs/gov-search//346/264/245/350/262/274line/345/276/205/350/250/216/350/253/226.excalidraw" +0 -0
  152. {botrun_flow_lang-5.12.261 → botrun_flow_lang-5.12.263}/specs/system_thinking.excalidraw +0 -0
@@ -1,3 +1,13 @@
1
+ ## [5.12.263]
2
+ - 優化 `get_hatches` 向下相容機制:
3
+ - 使用 Firestore batch write 批量更新缺少 `updated_at` 的記錄(每批最多 500 個)
4
+ - 解決 Firestore 無法直接篩選"字段不存在"的架構限制
5
+ - 自動為舊記錄補充 `updated_at` 時間戳,確保所有 hatch 都能被正確查詢和排序
6
+ - 首次查詢時自動遷移,後續查詢效能正常
7
+
8
+ ## [5.12.262]
9
+ - 更新 requirement.txt,支援新版 botrun_hatch
10
+
1
11
  ## [5.12.261]
2
12
  - Hatch 模型新增 `updated_at` 欄位(UTC ISO format),記錄最後更新時間
3
13
  - `set_hatch` 方法在每次保存時自動更新 `updated_at` 時間戳
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: botrun-flow-lang
3
- Version: 5.12.261
3
+ Version: 5.12.263
4
4
  Summary: A flow language for botrun
5
5
  Author-email: sebastian-hsu <sebastian.hsu@gmail.com>
6
6
  License: MIT
@@ -61,6 +61,38 @@ class HatchFsStore(FirestoreBase):
61
61
  order: str = "desc",
62
62
  ) -> Tuple[List[Hatch], str]:
63
63
  try:
64
+ # 向下兼容:先找出没有 updated_at 字段的记录并批量更新
65
+ # 注意:Firestore 不支持直接筛选"字段不存在",必须遍历所有记录
66
+ if sort_by == "updated_at":
67
+ missing_query = self.collection.where(
68
+ filter=firestore.FieldFilter("user_id", "==", user_id)
69
+ )
70
+
71
+ # 收集需要更新的文档
72
+ docs_to_update = []
73
+ current_time = datetime.now(timezone.utc).isoformat()
74
+
75
+ for doc in missing_query.stream():
76
+ data = doc.to_dict()
77
+ # 如果没有 updated_at 字段或为空,收集起来
78
+ if "updated_at" not in data or not data.get("updated_at"):
79
+ docs_to_update.append((doc.reference, data))
80
+
81
+ # 使用批量写入更新(每批最多 500 个)
82
+ if docs_to_update:
83
+ batch_size = 500
84
+ for i in range(0, len(docs_to_update), batch_size):
85
+ batch = self.db.batch()
86
+ batch_docs = docs_to_update[i:i + batch_size]
87
+
88
+ for doc_ref, data in batch_docs:
89
+ data["updated_at"] = current_time
90
+ batch.set(doc_ref, data)
91
+
92
+ batch.commit()
93
+
94
+ logging.info(f"Auto-migrated {len(docs_to_update)} hatches with updated_at for user {user_id}")
95
+
64
96
  # Build base query
65
97
  query = self.collection.where(
66
98
  filter=firestore.FieldFilter("user_id", "==", user_id)
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "botrun-flow-lang"
3
- version = "5.12.261"
3
+ version = "5.12.263"
4
4
  description = "A flow language for botrun"
5
5
  authors = [
6
6
  { name = "sebastian-hsu", email = "sebastian.hsu@gmail.com" }
@@ -0,0 +1,182 @@
1
+ # This file was autogenerated by uv via the following command:
2
+ # uv export --format requirements-txt --output-file requirements.txt --no-hashes
3
+ -e .
4
+ aenum==3.1.16
5
+ aiohappyeyeballs==2.6.1
6
+ aiohttp==3.12.15
7
+ aiosignal==1.4.0
8
+ annotated-types==0.7.0
9
+ anthropic==0.64.0
10
+ anyio==4.10.0
11
+ attrs==25.3.0
12
+ backports-tarfile==1.2.0 ; python_full_version < '3.12' and platform_machine != 'ppc64le' and platform_machine != 's390x'
13
+ beautifulsoup4==4.13.4
14
+ boto3==1.40.11
15
+ botocore==1.40.11
16
+ botrun-hatch==5.12.261
17
+ botrun-log==0.3.0
18
+ bottleneck==1.6.0
19
+ build==1.3.0
20
+ cachetools==5.5.2
21
+ certifi==2025.8.3
22
+ cffi==1.17.1 ; platform_python_implementation != 'PyPy'
23
+ chardet==5.2.0
24
+ charset-normalizer==3.4.3
25
+ click==8.2.1
26
+ colorama==0.4.6 ; platform_system == 'Windows' or os_name == 'nt'
27
+ cryptography==45.0.6
28
+ dataclasses-json==0.6.7
29
+ deepdiff==8.6.0
30
+ deprecated==1.2.18
31
+ distro==1.9.0
32
+ docstring-parser==0.17.0
33
+ docutils==0.22
34
+ dydantic==0.0.8
35
+ fastapi==0.116.1
36
+ filetype==1.2.0
37
+ frozenlist==1.7.0
38
+ future==1.0.0
39
+ google-ai-generativelanguage==0.6.18
40
+ google-api-core==2.25.1
41
+ google-api-python-client==2.179.0
42
+ google-auth==2.40.3
43
+ google-auth-httplib2==0.2.0
44
+ google-cloud-aiplatform==1.115.0
45
+ google-cloud-appengine-logging==1.6.2
46
+ google-cloud-audit-log==0.3.2
47
+ google-cloud-bigquery==3.35.1
48
+ google-cloud-core==2.4.3
49
+ google-cloud-discoveryengine==0.13.11
50
+ google-cloud-firestore==2.21.0
51
+ google-cloud-logging==3.12.1
52
+ google-cloud-resource-manager==1.14.2
53
+ google-cloud-storage==2.19.0
54
+ google-crc32c==1.7.1
55
+ google-genai==1.30.0
56
+ google-resumable-media==2.7.2
57
+ googleapis-common-protos==1.70.0
58
+ greenlet==3.2.4 ; platform_machine == 'AMD64' or platform_machine == 'WIN32' or platform_machine == 'aarch64' or platform_machine == 'amd64' or platform_machine == 'ppc64le' or platform_machine == 'win32' or platform_machine == 'x86_64'
59
+ grpc-google-iam-v1==0.14.2
60
+ grpcio==1.74.0
61
+ grpcio-status==1.74.0
62
+ h11==0.16.0
63
+ httpcore==1.0.9
64
+ httplib2==0.22.0
65
+ httpx==0.28.1
66
+ httpx-sse==0.4.1
67
+ id==1.5.0
68
+ idna==3.10
69
+ importlib-metadata==8.7.0
70
+ jaraco-classes==3.4.0 ; platform_machine != 'ppc64le' and platform_machine != 's390x'
71
+ jaraco-context==6.0.1 ; platform_machine != 'ppc64le' and platform_machine != 's390x'
72
+ jaraco-functools==4.2.1 ; platform_machine != 'ppc64le' and platform_machine != 's390x'
73
+ jeepney==0.9.0 ; platform_machine != 'ppc64le' and platform_machine != 's390x' and sys_platform == 'linux'
74
+ jinja2==3.1.6
75
+ jiter==0.10.0
76
+ jmespath==1.0.1
77
+ jsonpatch==1.33
78
+ jsonpointer==3.0.0
79
+ jsonschema==4.25.0
80
+ jsonschema-specifications==2025.4.1
81
+ keyring==25.6.0 ; platform_machine != 'ppc64le' and platform_machine != 's390x'
82
+ langchain==0.3.27
83
+ langchain-anthropic==0.3.18
84
+ langchain-aws==0.2.30
85
+ langchain-community==0.3.27
86
+ langchain-core==0.3.79
87
+ langchain-google-community==2.0.7
88
+ langchain-google-genai==2.1.9
89
+ langchain-google-vertexai==2.1.2
90
+ langchain-mcp-adapters==0.1.9
91
+ langchain-openai==0.3.30
92
+ langchain-text-splitters==0.3.9
93
+ langgraph==0.6.5
94
+ langgraph-checkpoint==2.1.1
95
+ langgraph-cli==0.3.6
96
+ langgraph-prebuilt==0.6.4
97
+ langgraph-sdk==0.2.0
98
+ langgraph-supervisor==0.0.29
99
+ langsmith==0.4.14
100
+ line-bot-sdk==3.18.1
101
+ markdown-it-py==4.0.0
102
+ markupsafe==3.0.2
103
+ marshmallow==3.26.1
104
+ mcp==1.10.1
105
+ mdurl==0.1.2
106
+ more-itertools==10.7.0 ; platform_machine != 'ppc64le' and platform_machine != 's390x'
107
+ multidict==6.6.4
108
+ mypy-extensions==1.1.0
109
+ narwhals==2.1.2
110
+ nh3==0.3.0
111
+ numexpr==2.14.1
112
+ numpy==1.26.4
113
+ openai==1.99.9
114
+ opentelemetry-api==1.36.0
115
+ orderly-set==5.5.0
116
+ orjson==3.11.2
117
+ ormsgpack==1.10.0
118
+ packaging==25.0
119
+ pandas==2.3.1
120
+ pdfminer-six==20250506
121
+ plotly==6.3.0
122
+ propcache==0.3.2
123
+ proto-plus==1.26.1
124
+ protobuf==6.32.0
125
+ psycopg2-binary==2.9.10
126
+ pyarrow==21.0.0
127
+ pyasn1==0.6.1
128
+ pyasn1-modules==0.4.2
129
+ pycparser==2.22 ; platform_python_implementation != 'PyPy'
130
+ pydantic==2.11.7
131
+ pydantic-core==2.33.2
132
+ pydantic-settings==2.10.1
133
+ pygments==2.19.2
134
+ pyparsing==3.2.3
135
+ pypdf==6.4.2
136
+ pyproject-hooks==1.2.0
137
+ python-dateutil==2.9.0.post0
138
+ python-dotenv==1.1.1
139
+ python-multipart==0.0.20
140
+ pytz==2025.2
141
+ pywin32-ctypes==0.2.3 ; platform_machine != 'ppc64le' and platform_machine != 's390x' and sys_platform == 'win32'
142
+ pyyaml==6.0.2
143
+ readme-renderer==44.0
144
+ referencing==0.36.2
145
+ regex==2025.7.34
146
+ requests==2.32.4
147
+ requests-toolbelt==1.0.0
148
+ rfc3986==2.0.0
149
+ rich==14.1.0
150
+ rpds-py==0.27.0
151
+ rsa==4.9.1
152
+ s3transfer==0.13.1
153
+ secretstorage==3.3.3 ; platform_machine != 'ppc64le' and platform_machine != 's390x' and sys_platform == 'linux'
154
+ shapely==2.1.2
155
+ six==1.17.0
156
+ sniffio==1.3.1
157
+ soupsieve==2.7
158
+ sqlalchemy==2.0.43
159
+ sse-starlette==3.0.2
160
+ starlette==0.47.2
161
+ tavily-python==0.7.10
162
+ tenacity==9.1.2
163
+ tiktoken==0.11.0
164
+ tomli==2.2.1
165
+ tqdm==4.67.1
166
+ trustcall==0.0.39
167
+ twine==6.1.0
168
+ typing-extensions==4.14.1
169
+ typing-inspect==0.9.0
170
+ typing-inspection==0.4.1
171
+ tzdata==2025.2
172
+ uritemplate==4.2.0
173
+ urllib3==2.5.0
174
+ uvicorn==0.35.0
175
+ validators==0.35.0
176
+ websockets==15.0.1
177
+ wikipedia==1.4.0
178
+ wrapt==1.17.3
179
+ xxhash==3.5.0
180
+ yarl==1.20.1
181
+ zipp==3.23.0
182
+ zstandard==0.24.0
@@ -188,7 +188,7 @@ wheels = [
188
188
 
189
189
  [[package]]
190
190
  name = "botrun-flow-lang"
191
- version = "5.12.172"
191
+ version = "5.12.261"
192
192
  source = { editable = "." }
193
193
  dependencies = [
194
194
  { name = "aiohttp" },