sunholo 0.144.12__tar.gz → 0.145.1__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 (206) hide show
  1. {sunholo-0.144.12/src/sunholo.egg-info → sunholo-0.145.1}/PKG-INFO +2 -2
  2. {sunholo-0.144.12 → sunholo-0.145.1}/pyproject.toml +3 -3
  3. {sunholo-0.144.12 → sunholo-0.145.1}/src/sunholo/agents/fastapi/vac_routes.py +12 -4
  4. {sunholo-0.144.12 → sunholo-0.145.1}/src/sunholo/invoke/__init__.py +1 -1
  5. sunholo-0.145.1/src/sunholo/invoke/async_task_runner.py +619 -0
  6. {sunholo-0.144.12 → sunholo-0.145.1}/src/sunholo/mcp/vac_mcp_server_fastmcp.py +13 -3
  7. {sunholo-0.144.12 → sunholo-0.145.1/src/sunholo.egg-info}/PKG-INFO +2 -2
  8. {sunholo-0.144.12 → sunholo-0.145.1}/src/sunholo.egg-info/SOURCES.txt +3 -3
  9. {sunholo-0.144.12 → sunholo-0.145.1}/src/sunholo.egg-info/requires.txt +1 -0
  10. sunholo-0.145.1/tests/test_async_task_runner.py +355 -0
  11. sunholo-0.144.12/tests/test_vac_routes_fastapi.py +0 -226
  12. sunholo-0.144.12/tests/test_vac_routes_mcp.py +0 -398
  13. {sunholo-0.144.12 → sunholo-0.145.1}/LICENSE.txt +0 -0
  14. {sunholo-0.144.12 → sunholo-0.145.1}/MANIFEST.in +0 -0
  15. {sunholo-0.144.12 → sunholo-0.145.1}/README.md +0 -0
  16. {sunholo-0.144.12 → sunholo-0.145.1}/setup.cfg +0 -0
  17. {sunholo-0.144.12 → sunholo-0.145.1}/src/sunholo/__init__.py +0 -0
  18. {sunholo-0.144.12 → sunholo-0.145.1}/src/sunholo/a2a/__init__.py +0 -0
  19. {sunholo-0.144.12 → sunholo-0.145.1}/src/sunholo/a2a/agent_card.py +0 -0
  20. {sunholo-0.144.12 → sunholo-0.145.1}/src/sunholo/a2a/task_manager.py +0 -0
  21. {sunholo-0.144.12 → sunholo-0.145.1}/src/sunholo/a2a/vac_a2a_agent.py +0 -0
  22. {sunholo-0.144.12 → sunholo-0.145.1}/src/sunholo/agents/__init__.py +0 -0
  23. {sunholo-0.144.12 → sunholo-0.145.1}/src/sunholo/agents/chat_history.py +0 -0
  24. {sunholo-0.144.12 → sunholo-0.145.1}/src/sunholo/agents/dispatch_to_qa.py +0 -0
  25. {sunholo-0.144.12 → sunholo-0.145.1}/src/sunholo/agents/fastapi/__init__.py +0 -0
  26. {sunholo-0.144.12 → sunholo-0.145.1}/src/sunholo/agents/fastapi/base.py +0 -0
  27. {sunholo-0.144.12 → sunholo-0.145.1}/src/sunholo/agents/fastapi/qna_routes.py +0 -0
  28. {sunholo-0.144.12 → sunholo-0.145.1}/src/sunholo/agents/flask/__init__.py +0 -0
  29. {sunholo-0.144.12 → sunholo-0.145.1}/src/sunholo/agents/flask/base.py +0 -0
  30. {sunholo-0.144.12 → sunholo-0.145.1}/src/sunholo/agents/flask/vac_routes.py +0 -0
  31. {sunholo-0.144.12 → sunholo-0.145.1}/src/sunholo/agents/langserve.py +0 -0
  32. {sunholo-0.144.12 → sunholo-0.145.1}/src/sunholo/agents/pubsub.py +0 -0
  33. {sunholo-0.144.12 → sunholo-0.145.1}/src/sunholo/agents/route.py +0 -0
  34. {sunholo-0.144.12 → sunholo-0.145.1}/src/sunholo/agents/special_commands.py +0 -0
  35. {sunholo-0.144.12 → sunholo-0.145.1}/src/sunholo/agents/swagger.py +0 -0
  36. {sunholo-0.144.12 → sunholo-0.145.1}/src/sunholo/archive/__init__.py +0 -0
  37. {sunholo-0.144.12 → sunholo-0.145.1}/src/sunholo/archive/archive.py +0 -0
  38. {sunholo-0.144.12 → sunholo-0.145.1}/src/sunholo/auth/__init__.py +0 -0
  39. {sunholo-0.144.12 → sunholo-0.145.1}/src/sunholo/auth/gcloud.py +0 -0
  40. {sunholo-0.144.12 → sunholo-0.145.1}/src/sunholo/auth/refresh.py +0 -0
  41. {sunholo-0.144.12 → sunholo-0.145.1}/src/sunholo/auth/run.py +0 -0
  42. {sunholo-0.144.12 → sunholo-0.145.1}/src/sunholo/azure/__init__.py +0 -0
  43. {sunholo-0.144.12 → sunholo-0.145.1}/src/sunholo/azure/auth.py +0 -0
  44. {sunholo-0.144.12 → sunholo-0.145.1}/src/sunholo/azure/blobs.py +0 -0
  45. {sunholo-0.144.12 → sunholo-0.145.1}/src/sunholo/azure/event_grid.py +0 -0
  46. {sunholo-0.144.12 → sunholo-0.145.1}/src/sunholo/bots/__init__.py +0 -0
  47. {sunholo-0.144.12 → sunholo-0.145.1}/src/sunholo/bots/discord.py +0 -0
  48. {sunholo-0.144.12 → sunholo-0.145.1}/src/sunholo/bots/github_webhook.py +0 -0
  49. {sunholo-0.144.12 → sunholo-0.145.1}/src/sunholo/bots/webapp.py +0 -0
  50. {sunholo-0.144.12 → sunholo-0.145.1}/src/sunholo/chunker/__init__.py +0 -0
  51. {sunholo-0.144.12 → sunholo-0.145.1}/src/sunholo/chunker/azure.py +0 -0
  52. {sunholo-0.144.12 → sunholo-0.145.1}/src/sunholo/chunker/doc_handling.py +0 -0
  53. {sunholo-0.144.12 → sunholo-0.145.1}/src/sunholo/chunker/encode_metadata.py +0 -0
  54. {sunholo-0.144.12 → sunholo-0.145.1}/src/sunholo/chunker/images.py +0 -0
  55. {sunholo-0.144.12 → sunholo-0.145.1}/src/sunholo/chunker/loaders.py +0 -0
  56. {sunholo-0.144.12 → sunholo-0.145.1}/src/sunholo/chunker/message_data.py +0 -0
  57. {sunholo-0.144.12 → sunholo-0.145.1}/src/sunholo/chunker/pdfs.py +0 -0
  58. {sunholo-0.144.12 → sunholo-0.145.1}/src/sunholo/chunker/process_chunker_data.py +0 -0
  59. {sunholo-0.144.12 → sunholo-0.145.1}/src/sunholo/chunker/publish.py +0 -0
  60. {sunholo-0.144.12 → sunholo-0.145.1}/src/sunholo/chunker/pubsub.py +0 -0
  61. {sunholo-0.144.12 → sunholo-0.145.1}/src/sunholo/chunker/splitter.py +0 -0
  62. {sunholo-0.144.12 → sunholo-0.145.1}/src/sunholo/cli/__init__.py +0 -0
  63. {sunholo-0.144.12 → sunholo-0.145.1}/src/sunholo/cli/chat_vac.py +0 -0
  64. {sunholo-0.144.12 → sunholo-0.145.1}/src/sunholo/cli/cli.py +0 -0
  65. {sunholo-0.144.12 → sunholo-0.145.1}/src/sunholo/cli/cli_init.py +0 -0
  66. {sunholo-0.144.12 → sunholo-0.145.1}/src/sunholo/cli/configs.py +0 -0
  67. {sunholo-0.144.12 → sunholo-0.145.1}/src/sunholo/cli/deploy.py +0 -0
  68. {sunholo-0.144.12 → sunholo-0.145.1}/src/sunholo/cli/embedder.py +0 -0
  69. {sunholo-0.144.12 → sunholo-0.145.1}/src/sunholo/cli/merge_texts.py +0 -0
  70. {sunholo-0.144.12 → sunholo-0.145.1}/src/sunholo/cli/run_proxy.py +0 -0
  71. {sunholo-0.144.12 → sunholo-0.145.1}/src/sunholo/cli/sun_rich.py +0 -0
  72. {sunholo-0.144.12 → sunholo-0.145.1}/src/sunholo/cli/swagger.py +0 -0
  73. {sunholo-0.144.12 → sunholo-0.145.1}/src/sunholo/cli/vertex.py +0 -0
  74. {sunholo-0.144.12 → sunholo-0.145.1}/src/sunholo/components/__init__.py +0 -0
  75. {sunholo-0.144.12 → sunholo-0.145.1}/src/sunholo/components/llm.py +0 -0
  76. {sunholo-0.144.12 → sunholo-0.145.1}/src/sunholo/components/retriever.py +0 -0
  77. {sunholo-0.144.12 → sunholo-0.145.1}/src/sunholo/components/vectorstore.py +0 -0
  78. {sunholo-0.144.12 → sunholo-0.145.1}/src/sunholo/custom_logging.py +0 -0
  79. {sunholo-0.144.12 → sunholo-0.145.1}/src/sunholo/database/__init__.py +0 -0
  80. {sunholo-0.144.12 → sunholo-0.145.1}/src/sunholo/database/alloydb.py +0 -0
  81. {sunholo-0.144.12 → sunholo-0.145.1}/src/sunholo/database/alloydb_client.py +0 -0
  82. {sunholo-0.144.12 → sunholo-0.145.1}/src/sunholo/database/database.py +0 -0
  83. {sunholo-0.144.12 → sunholo-0.145.1}/src/sunholo/database/lancedb.py +0 -0
  84. {sunholo-0.144.12 → sunholo-0.145.1}/src/sunholo/database/sql/sb/create_function.sql +0 -0
  85. {sunholo-0.144.12 → sunholo-0.145.1}/src/sunholo/database/sql/sb/create_function_time.sql +0 -0
  86. {sunholo-0.144.12 → sunholo-0.145.1}/src/sunholo/database/sql/sb/create_table.sql +0 -0
  87. {sunholo-0.144.12 → sunholo-0.145.1}/src/sunholo/database/sql/sb/delete_source_row.sql +0 -0
  88. {sunholo-0.144.12 → sunholo-0.145.1}/src/sunholo/database/sql/sb/return_sources.sql +0 -0
  89. {sunholo-0.144.12 → sunholo-0.145.1}/src/sunholo/database/sql/sb/setup.sql +0 -0
  90. {sunholo-0.144.12 → sunholo-0.145.1}/src/sunholo/database/static_dbs.py +0 -0
  91. {sunholo-0.144.12 → sunholo-0.145.1}/src/sunholo/database/uuid.py +0 -0
  92. {sunholo-0.144.12 → sunholo-0.145.1}/src/sunholo/discovery_engine/__init__.py +0 -0
  93. {sunholo-0.144.12 → sunholo-0.145.1}/src/sunholo/discovery_engine/chunker_handler.py +0 -0
  94. {sunholo-0.144.12 → sunholo-0.145.1}/src/sunholo/discovery_engine/cli.py +0 -0
  95. {sunholo-0.144.12 → sunholo-0.145.1}/src/sunholo/discovery_engine/create_new.py +0 -0
  96. {sunholo-0.144.12 → sunholo-0.145.1}/src/sunholo/discovery_engine/discovery_engine_client.py +0 -0
  97. {sunholo-0.144.12 → sunholo-0.145.1}/src/sunholo/discovery_engine/get_ai_search_chunks.py +0 -0
  98. {sunholo-0.144.12 → sunholo-0.145.1}/src/sunholo/embedder/__init__.py +0 -0
  99. {sunholo-0.144.12 → sunholo-0.145.1}/src/sunholo/embedder/embed_chunk.py +0 -0
  100. {sunholo-0.144.12 → sunholo-0.145.1}/src/sunholo/embedder/embed_metadata.py +0 -0
  101. {sunholo-0.144.12 → sunholo-0.145.1}/src/sunholo/excel/__init__.py +0 -0
  102. {sunholo-0.144.12 → sunholo-0.145.1}/src/sunholo/excel/plugin.py +0 -0
  103. {sunholo-0.144.12 → sunholo-0.145.1}/src/sunholo/gcs/__init__.py +0 -0
  104. {sunholo-0.144.12 → sunholo-0.145.1}/src/sunholo/gcs/add_file.py +0 -0
  105. {sunholo-0.144.12 → sunholo-0.145.1}/src/sunholo/gcs/download_folder.py +0 -0
  106. {sunholo-0.144.12 → sunholo-0.145.1}/src/sunholo/gcs/download_gcs_text.py +0 -0
  107. {sunholo-0.144.12 → sunholo-0.145.1}/src/sunholo/gcs/download_url.py +0 -0
  108. {sunholo-0.144.12 → sunholo-0.145.1}/src/sunholo/gcs/extract_and_sign.py +0 -0
  109. {sunholo-0.144.12 → sunholo-0.145.1}/src/sunholo/gcs/metadata.py +0 -0
  110. {sunholo-0.144.12 → sunholo-0.145.1}/src/sunholo/genai/__init__.py +0 -0
  111. {sunholo-0.144.12 → sunholo-0.145.1}/src/sunholo/genai/file_handling.py +0 -0
  112. {sunholo-0.144.12 → sunholo-0.145.1}/src/sunholo/genai/genaiv2.py +0 -0
  113. {sunholo-0.144.12 → sunholo-0.145.1}/src/sunholo/genai/images.py +0 -0
  114. {sunholo-0.144.12 → sunholo-0.145.1}/src/sunholo/genai/init.py +0 -0
  115. {sunholo-0.144.12 → sunholo-0.145.1}/src/sunholo/genai/process_funcs_cls.py +0 -0
  116. {sunholo-0.144.12 → sunholo-0.145.1}/src/sunholo/genai/safety.py +0 -0
  117. {sunholo-0.144.12 → sunholo-0.145.1}/src/sunholo/invoke/async_class.py +0 -0
  118. {sunholo-0.144.12 → sunholo-0.145.1}/src/sunholo/invoke/direct_vac_func.py +0 -0
  119. {sunholo-0.144.12 → sunholo-0.145.1}/src/sunholo/invoke/invoke_vac_utils.py +0 -0
  120. {sunholo-0.144.12 → sunholo-0.145.1}/src/sunholo/langchain_types.py +0 -0
  121. {sunholo-0.144.12 → sunholo-0.145.1}/src/sunholo/langfuse/__init__.py +0 -0
  122. {sunholo-0.144.12 → sunholo-0.145.1}/src/sunholo/langfuse/callback.py +0 -0
  123. {sunholo-0.144.12 → sunholo-0.145.1}/src/sunholo/langfuse/evals.py +0 -0
  124. {sunholo-0.144.12 → sunholo-0.145.1}/src/sunholo/langfuse/prompts.py +0 -0
  125. {sunholo-0.144.12 → sunholo-0.145.1}/src/sunholo/llamaindex/__init__.py +0 -0
  126. {sunholo-0.144.12 → sunholo-0.145.1}/src/sunholo/llamaindex/get_files.py +0 -0
  127. {sunholo-0.144.12 → sunholo-0.145.1}/src/sunholo/llamaindex/import_files.py +0 -0
  128. {sunholo-0.144.12 → sunholo-0.145.1}/src/sunholo/llamaindex/llamaindex_class.py +0 -0
  129. {sunholo-0.144.12 → sunholo-0.145.1}/src/sunholo/llamaindex/user_history.py +0 -0
  130. {sunholo-0.144.12 → sunholo-0.145.1}/src/sunholo/lookup/__init__.py +0 -0
  131. {sunholo-0.144.12 → sunholo-0.145.1}/src/sunholo/lookup/model_lookup.yaml +0 -0
  132. {sunholo-0.144.12 → sunholo-0.145.1}/src/sunholo/mcp/__init__.py +0 -0
  133. {sunholo-0.144.12 → sunholo-0.145.1}/src/sunholo/mcp/cli.py +0 -0
  134. {sunholo-0.144.12 → sunholo-0.145.1}/src/sunholo/mcp/cli_fastmcp.py +0 -0
  135. {sunholo-0.144.12 → sunholo-0.145.1}/src/sunholo/mcp/extensible_mcp_server.py +0 -0
  136. {sunholo-0.144.12 → sunholo-0.145.1}/src/sunholo/mcp/mcp_manager.py +0 -0
  137. {sunholo-0.144.12 → sunholo-0.145.1}/src/sunholo/mcp/sse_utils.py +0 -0
  138. {sunholo-0.144.12 → sunholo-0.145.1}/src/sunholo/mcp/stdio_http_bridge.py +0 -0
  139. {sunholo-0.144.12 → sunholo-0.145.1}/src/sunholo/mcp/vac_mcp_server.py +0 -0
  140. {sunholo-0.144.12 → sunholo-0.145.1}/src/sunholo/mcp/vac_tools.py +0 -0
  141. {sunholo-0.144.12 → sunholo-0.145.1}/src/sunholo/ollama/__init__.py +0 -0
  142. {sunholo-0.144.12 → sunholo-0.145.1}/src/sunholo/ollama/ollama_images.py +0 -0
  143. {sunholo-0.144.12 → sunholo-0.145.1}/src/sunholo/pubsub/__init__.py +0 -0
  144. {sunholo-0.144.12 → sunholo-0.145.1}/src/sunholo/pubsub/process_pubsub.py +0 -0
  145. {sunholo-0.144.12 → sunholo-0.145.1}/src/sunholo/pubsub/pubsub_manager.py +0 -0
  146. {sunholo-0.144.12 → sunholo-0.145.1}/src/sunholo/qna/__init__.py +0 -0
  147. {sunholo-0.144.12 → sunholo-0.145.1}/src/sunholo/qna/parsers.py +0 -0
  148. {sunholo-0.144.12 → sunholo-0.145.1}/src/sunholo/qna/retry.py +0 -0
  149. {sunholo-0.144.12 → sunholo-0.145.1}/src/sunholo/senses/__init__.py +0 -0
  150. {sunholo-0.144.12 → sunholo-0.145.1}/src/sunholo/senses/stream_voice.py +0 -0
  151. {sunholo-0.144.12 → sunholo-0.145.1}/src/sunholo/streaming/__init__.py +0 -0
  152. {sunholo-0.144.12 → sunholo-0.145.1}/src/sunholo/streaming/content_buffer.py +0 -0
  153. {sunholo-0.144.12 → sunholo-0.145.1}/src/sunholo/streaming/langserve.py +0 -0
  154. {sunholo-0.144.12 → sunholo-0.145.1}/src/sunholo/streaming/stream_lookup.py +0 -0
  155. {sunholo-0.144.12 → sunholo-0.145.1}/src/sunholo/streaming/streaming.py +0 -0
  156. {sunholo-0.144.12 → sunholo-0.145.1}/src/sunholo/summarise/__init__.py +0 -0
  157. {sunholo-0.144.12 → sunholo-0.145.1}/src/sunholo/summarise/summarise.py +0 -0
  158. {sunholo-0.144.12 → sunholo-0.145.1}/src/sunholo/templates/agent/__init__.py +0 -0
  159. {sunholo-0.144.12 → sunholo-0.145.1}/src/sunholo/templates/agent/agent_service.py +0 -0
  160. {sunholo-0.144.12 → sunholo-0.145.1}/src/sunholo/templates/agent/app.py +0 -0
  161. {sunholo-0.144.12 → sunholo-0.145.1}/src/sunholo/templates/agent/my_log.py +0 -0
  162. {sunholo-0.144.12 → sunholo-0.145.1}/src/sunholo/templates/agent/tools/__init__.py +0 -0
  163. {sunholo-0.144.12 → sunholo-0.145.1}/src/sunholo/templates/agent/tools/your_agent.py +0 -0
  164. {sunholo-0.144.12 → sunholo-0.145.1}/src/sunholo/templates/agent/vac_service.py +0 -0
  165. {sunholo-0.144.12 → sunholo-0.145.1}/src/sunholo/templates/project/__init__.py +0 -0
  166. {sunholo-0.144.12 → sunholo-0.145.1}/src/sunholo/templates/project/app.py +0 -0
  167. {sunholo-0.144.12 → sunholo-0.145.1}/src/sunholo/templates/project/my_log.py +0 -0
  168. {sunholo-0.144.12 → sunholo-0.145.1}/src/sunholo/templates/project/vac_service.py +0 -0
  169. {sunholo-0.144.12 → sunholo-0.145.1}/src/sunholo/templates/system_services/__init__.py +0 -0
  170. {sunholo-0.144.12 → sunholo-0.145.1}/src/sunholo/templates/system_services/app.py +0 -0
  171. {sunholo-0.144.12 → sunholo-0.145.1}/src/sunholo/templates/system_services/my_log.py +0 -0
  172. {sunholo-0.144.12 → sunholo-0.145.1}/src/sunholo/terraform/__init__.py +0 -0
  173. {sunholo-0.144.12 → sunholo-0.145.1}/src/sunholo/terraform/tfvars_editor.py +0 -0
  174. {sunholo-0.144.12 → sunholo-0.145.1}/src/sunholo/tools/__init__.py +0 -0
  175. {sunholo-0.144.12 → sunholo-0.145.1}/src/sunholo/tools/web_browser.py +0 -0
  176. {sunholo-0.144.12 → sunholo-0.145.1}/src/sunholo/utils/__init__.py +0 -0
  177. {sunholo-0.144.12 → sunholo-0.145.1}/src/sunholo/utils/api_key.py +0 -0
  178. {sunholo-0.144.12 → sunholo-0.145.1}/src/sunholo/utils/big_context.py +0 -0
  179. {sunholo-0.144.12 → sunholo-0.145.1}/src/sunholo/utils/config.py +0 -0
  180. {sunholo-0.144.12 → sunholo-0.145.1}/src/sunholo/utils/config_class.py +0 -0
  181. {sunholo-0.144.12 → sunholo-0.145.1}/src/sunholo/utils/config_schema.py +0 -0
  182. {sunholo-0.144.12 → sunholo-0.145.1}/src/sunholo/utils/gcp.py +0 -0
  183. {sunholo-0.144.12 → sunholo-0.145.1}/src/sunholo/utils/gcp_project.py +0 -0
  184. {sunholo-0.144.12 → sunholo-0.145.1}/src/sunholo/utils/mime.py +0 -0
  185. {sunholo-0.144.12 → sunholo-0.145.1}/src/sunholo/utils/parsers.py +0 -0
  186. {sunholo-0.144.12 → sunholo-0.145.1}/src/sunholo/utils/proto_convert.py +0 -0
  187. {sunholo-0.144.12 → sunholo-0.145.1}/src/sunholo/utils/timedelta.py +0 -0
  188. {sunholo-0.144.12 → sunholo-0.145.1}/src/sunholo/utils/user_ids.py +0 -0
  189. {sunholo-0.144.12 → sunholo-0.145.1}/src/sunholo/utils/version.py +0 -0
  190. {sunholo-0.144.12 → sunholo-0.145.1}/src/sunholo/vertex/__init__.py +0 -0
  191. {sunholo-0.144.12 → sunholo-0.145.1}/src/sunholo/vertex/extensions_call.py +0 -0
  192. {sunholo-0.144.12 → sunholo-0.145.1}/src/sunholo/vertex/extensions_class.py +0 -0
  193. {sunholo-0.144.12 → sunholo-0.145.1}/src/sunholo/vertex/genai_functions.py +0 -0
  194. {sunholo-0.144.12 → sunholo-0.145.1}/src/sunholo/vertex/init.py +0 -0
  195. {sunholo-0.144.12 → sunholo-0.145.1}/src/sunholo/vertex/memory_tools.py +0 -0
  196. {sunholo-0.144.12 → sunholo-0.145.1}/src/sunholo/vertex/safety.py +0 -0
  197. {sunholo-0.144.12 → sunholo-0.145.1}/src/sunholo/vertex/type_dict_to_json.py +0 -0
  198. {sunholo-0.144.12 → sunholo-0.145.1}/src/sunholo.egg-info/dependency_links.txt +0 -0
  199. {sunholo-0.144.12 → sunholo-0.145.1}/src/sunholo.egg-info/entry_points.txt +0 -0
  200. {sunholo-0.144.12 → sunholo-0.145.1}/src/sunholo.egg-info/top_level.txt +0 -0
  201. {sunholo-0.144.12 → sunholo-0.145.1}/tests/test_async.py +0 -0
  202. {sunholo-0.144.12 → sunholo-0.145.1}/tests/test_async_genai2.py +0 -0
  203. {sunholo-0.144.12 → sunholo-0.145.1}/tests/test_chat_history.py +0 -0
  204. {sunholo-0.144.12 → sunholo-0.145.1}/tests/test_config.py +0 -0
  205. {sunholo-0.144.12 → sunholo-0.145.1}/tests/test_genai2.py +0 -0
  206. {sunholo-0.144.12 → sunholo-0.145.1}/tests/test_unstructured.py +0 -0
@@ -1,11 +1,10 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: sunholo
3
- Version: 0.144.12
3
+ Version: 0.145.1
4
4
  Summary: AI DevOps - a package to help deploy GenAI to the Cloud.
5
5
  Author-email: Holosun ApS <multivac@sunholo.com>
6
6
  License: Apache License, Version 2.0
7
7
  Project-URL: Homepage, https://github.com/sunholo-data/sunholo-py
8
- Project-URL: Download, https://github.com/sunholo-data/sunholo-py/archive/refs/tags/v0.118.0.tar.gz
9
8
  Keywords: llms,devops,google_cloud_platform
10
9
  Classifier: Development Status :: 3 - Alpha
11
10
  Classifier: Intended Audience :: Developers
@@ -107,6 +106,7 @@ Requires-Dist: azure-storage-blob; extra == "azure"
107
106
  Provides-Extra: cli
108
107
  Requires-Dist: jsonschema>=4.21.1; extra == "cli"
109
108
  Requires-Dist: rich; extra == "cli"
109
+ Requires-Dist: fastmcp; extra == "cli"
110
110
  Provides-Extra: database
111
111
  Requires-Dist: asyncpg; extra == "database"
112
112
  Requires-Dist: supabase; extra == "database"
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "sunholo"
7
- version = "0.144.12"
7
+ version = "0.145.1"
8
8
  description = "AI DevOps - a package to help deploy GenAI to the Cloud."
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.11"
@@ -33,7 +33,6 @@ dependencies = [
33
33
 
34
34
  [project.urls]
35
35
  Homepage = "https://github.com/sunholo-data/sunholo-py"
36
- Download = "https://github.com/sunholo-data/sunholo-py/archive/refs/tags/v0.118.0.tar.gz"
37
36
 
38
37
  [project.scripts]
39
38
  sunholo = "sunholo.cli.cli:main"
@@ -140,7 +139,8 @@ azure = [
140
139
  ]
141
140
  cli = [
142
141
  "jsonschema>=4.21.1",
143
- "rich"
142
+ "rich",
143
+ "fastmcp"
144
144
  ]
145
145
  database = [
146
146
  "asyncpg",
@@ -395,11 +395,14 @@ class VACRoutesFastAPI:
395
395
  ## MCP Server Integration
396
396
 
397
397
  When VACMCPServer is available, the following happens automatically:
398
- 1. MCP server is mounted at /mcp endpoint
398
+ 1. MCP server is mounted at /mcp/mcp endpoint (NOTE: /mcp/mcp not /mcp!)
399
399
  2. Built-in VAC tools are automatically registered:
400
400
  - vac_stream, vac_query, list_available_vacs, get_vac_info
401
401
  3. You can add custom MCP tools using add_mcp_tool()
402
- 4. Claude Desktop/Code can connect to http://your-server/mcp
402
+ 4. Claude Desktop/Code can connect to http://your-server/mcp/mcp
403
+
404
+ IMPORTANT: The endpoint is /mcp/mcp to avoid the MCP app intercepting other routes.
405
+ DO NOT change the mounting point to "" (root) as it will break other FastAPI routes!
403
406
 
404
407
  ## Complete Example
405
408
 
@@ -696,8 +699,13 @@ class VACRoutesFastAPI:
696
699
  # so we can't easily check if it's configured. The error will be
697
700
  # caught below if lifespan is missing.
698
701
 
699
- # Mount at /mcp/mcp - the MCP app has path="" configured
700
- # This gives us /mcp/mcp endpoint without intercepting other routes
702
+ # CRITICAL: Mount at /mcp/mcp (NOT at root "")
703
+ # - The MCP app from get_http_app() has path="" configured
704
+ # - Mounting at "/mcp/mcp" creates the /mcp/mcp endpoint
705
+ # - This prevents the MCP app from intercepting other routes like /info, /test
706
+ #
707
+ # DO NOT mount at "" (root) - it will break all other FastAPI routes!
708
+ # The endpoint will be available at /mcp/mcp as expected by Claude Code
701
709
  self.app.mount("/mcp/mcp", mcp_app)
702
710
  log.info("✅ MCP server mounted at /mcp/mcp endpoint")
703
711
 
@@ -1,3 +1,3 @@
1
1
  from .invoke_vac_utils import invoke_vac
2
2
  from .direct_vac_func import direct_vac, direct_vac_stream, async_direct_vac, async_direct_vac_stream
3
- from .async_class import AsyncTaskRunner
3
+ from .async_task_runner import AsyncTaskRunner, CallbackContext, TaskConfig