versionhq 1.2.2.10__tar.gz → 1.2.3.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 (159) hide show
  1. {versionhq-1.2.2.10 → versionhq-1.2.3.1}/.github/workflows/publish.yml +1 -1
  2. {versionhq-1.2.2.10 → versionhq-1.2.3.1}/.github/workflows/publish_testpypi.yml +1 -1
  3. {versionhq-1.2.2.10 → versionhq-1.2.3.1}/.github/workflows/run_tests.yml +1 -1
  4. {versionhq-1.2.2.10 → versionhq-1.2.3.1}/.gitignore +3 -0
  5. versionhq-1.2.3.1/.python-version +1 -0
  6. {versionhq-1.2.2.10 → versionhq-1.2.3.1}/PKG-INFO +13 -16
  7. {versionhq-1.2.2.10 → versionhq-1.2.3.1}/README.md +2 -7
  8. {versionhq-1.2.2.10 → versionhq-1.2.3.1}/docs/index.md +1 -7
  9. {versionhq-1.2.2.10 → versionhq-1.2.3.1}/docs/quickstart.md +1 -1
  10. {versionhq-1.2.2.10 → versionhq-1.2.3.1}/pyproject.toml +29 -12
  11. versionhq-1.2.3.1/runtime.txt +2 -0
  12. {versionhq-1.2.2.10 → versionhq-1.2.3.1}/src/versionhq/__init__.py +1 -1
  13. {versionhq-1.2.2.10 → versionhq-1.2.3.1}/src/versionhq/clients/workflow/model.py +4 -71
  14. {versionhq-1.2.2.10 → versionhq-1.2.3.1}/src/versionhq/task/TEMPLATES/Description.py +1 -1
  15. {versionhq-1.2.2.10 → versionhq-1.2.3.1}/src/versionhq/task/evaluation.py +29 -61
  16. {versionhq-1.2.2.10 → versionhq-1.2.3.1}/src/versionhq/task/model.py +11 -6
  17. {versionhq-1.2.2.10 → versionhq-1.2.3.1}/src/versionhq/tool/rag_tool.py +5 -1
  18. {versionhq-1.2.2.10 → versionhq-1.2.3.1}/src/versionhq.egg-info/PKG-INFO +13 -16
  19. {versionhq-1.2.2.10 → versionhq-1.2.3.1}/src/versionhq.egg-info/requires.txt +11 -10
  20. {versionhq-1.2.2.10 → versionhq-1.2.3.1}/tests/clients/workflow_test.py +2 -17
  21. {versionhq-1.2.2.10 → versionhq-1.2.3.1}/tests/task/doc_eval_test.py +0 -2
  22. {versionhq-1.2.2.10 → versionhq-1.2.3.1}/uv.lock +1315 -476
  23. versionhq-1.2.2.10/.python-version +0 -1
  24. versionhq-1.2.2.10/runtime.txt +0 -2
  25. {versionhq-1.2.2.10 → versionhq-1.2.3.1}/.env.sample +0 -0
  26. {versionhq-1.2.2.10 → versionhq-1.2.3.1}/.github/workflows/deploy_docs.yml +0 -0
  27. {versionhq-1.2.2.10 → versionhq-1.2.3.1}/.github/workflows/security_check.yml +0 -0
  28. {versionhq-1.2.2.10 → versionhq-1.2.3.1}/.pre-commit-config.yaml +0 -0
  29. {versionhq-1.2.2.10 → versionhq-1.2.3.1}/LICENSE +0 -0
  30. {versionhq-1.2.2.10 → versionhq-1.2.3.1}/SECURITY.md +0 -0
  31. {versionhq-1.2.2.10 → versionhq-1.2.3.1}/db/preprocess.py +0 -0
  32. {versionhq-1.2.2.10 → versionhq-1.2.3.1}/docs/CNAME +0 -0
  33. {versionhq-1.2.2.10 → versionhq-1.2.3.1}/docs/_logos/favicon.ico +0 -0
  34. {versionhq-1.2.2.10 → versionhq-1.2.3.1}/docs/_logos/logo192.png +0 -0
  35. {versionhq-1.2.2.10 → versionhq-1.2.3.1}/docs/core/agent/config.md +0 -0
  36. {versionhq-1.2.2.10 → versionhq-1.2.3.1}/docs/core/agent/index.md +0 -0
  37. {versionhq-1.2.2.10 → versionhq-1.2.3.1}/docs/core/agent/task-handling.md +0 -0
  38. {versionhq-1.2.2.10 → versionhq-1.2.3.1}/docs/core/agent-network/config.md +0 -0
  39. {versionhq-1.2.2.10 → versionhq-1.2.3.1}/docs/core/agent-network/form.md +0 -0
  40. {versionhq-1.2.2.10 → versionhq-1.2.3.1}/docs/core/agent-network/index.md +0 -0
  41. {versionhq-1.2.2.10 → versionhq-1.2.3.1}/docs/core/agent-network/ref.md +0 -0
  42. {versionhq-1.2.2.10 → versionhq-1.2.3.1}/docs/core/knowledge.md +0 -0
  43. {versionhq-1.2.2.10 → versionhq-1.2.3.1}/docs/core/llm/index.md +0 -0
  44. {versionhq-1.2.2.10 → versionhq-1.2.3.1}/docs/core/memory.md +0 -0
  45. {versionhq-1.2.2.10 → versionhq-1.2.3.1}/docs/core/rag-tool.md +0 -0
  46. {versionhq-1.2.2.10 → versionhq-1.2.3.1}/docs/core/task/evaluation.md +0 -0
  47. {versionhq-1.2.2.10 → versionhq-1.2.3.1}/docs/core/task/index.md +0 -0
  48. {versionhq-1.2.2.10 → versionhq-1.2.3.1}/docs/core/task/reference.md +0 -0
  49. {versionhq-1.2.2.10 → versionhq-1.2.3.1}/docs/core/task/response-field.md +0 -0
  50. {versionhq-1.2.2.10 → versionhq-1.2.3.1}/docs/core/task/task-execution.md +0 -0
  51. {versionhq-1.2.2.10 → versionhq-1.2.3.1}/docs/core/task/task-output.md +0 -0
  52. {versionhq-1.2.2.10 → versionhq-1.2.3.1}/docs/core/task/task-strc-response.md +0 -0
  53. {versionhq-1.2.2.10 → versionhq-1.2.3.1}/docs/core/task-graph/index.md +0 -0
  54. {versionhq-1.2.2.10 → versionhq-1.2.3.1}/docs/core/tool.md +0 -0
  55. {versionhq-1.2.2.10 → versionhq-1.2.3.1}/docs/stylesheets/main.css +0 -0
  56. {versionhq-1.2.2.10 → versionhq-1.2.3.1}/docs/tags.md +0 -0
  57. {versionhq-1.2.2.10 → versionhq-1.2.3.1}/mkdocs.yml +0 -0
  58. {versionhq-1.2.2.10 → versionhq-1.2.3.1}/requirements-dev.txt +0 -0
  59. {versionhq-1.2.2.10 → versionhq-1.2.3.1}/requirements.txt +0 -0
  60. {versionhq-1.2.2.10 → versionhq-1.2.3.1}/setup.cfg +0 -0
  61. {versionhq-1.2.2.10 → versionhq-1.2.3.1}/src/versionhq/_utils/__init__.py +0 -0
  62. {versionhq-1.2.2.10 → versionhq-1.2.3.1}/src/versionhq/_utils/i18n.py +0 -0
  63. {versionhq-1.2.2.10 → versionhq-1.2.3.1}/src/versionhq/_utils/llm_as_a_judge.py +0 -0
  64. {versionhq-1.2.2.10 → versionhq-1.2.3.1}/src/versionhq/_utils/logger.py +0 -0
  65. {versionhq-1.2.2.10 → versionhq-1.2.3.1}/src/versionhq/_utils/process_config.py +0 -0
  66. {versionhq-1.2.2.10 → versionhq-1.2.3.1}/src/versionhq/_utils/usage_metrics.py +0 -0
  67. {versionhq-1.2.2.10 → versionhq-1.2.3.1}/src/versionhq/_utils/vars.py +0 -0
  68. {versionhq-1.2.2.10 → versionhq-1.2.3.1}/src/versionhq/agent/TEMPLATES/Backstory.py +0 -0
  69. {versionhq-1.2.2.10 → versionhq-1.2.3.1}/src/versionhq/agent/TEMPLATES/__init__.py +0 -0
  70. {versionhq-1.2.2.10 → versionhq-1.2.3.1}/src/versionhq/agent/__init__.py +0 -0
  71. {versionhq-1.2.2.10 → versionhq-1.2.3.1}/src/versionhq/agent/inhouse_agents.py +0 -0
  72. {versionhq-1.2.2.10 → versionhq-1.2.3.1}/src/versionhq/agent/model.py +0 -0
  73. {versionhq-1.2.2.10 → versionhq-1.2.3.1}/src/versionhq/agent/parser.py +0 -0
  74. {versionhq-1.2.2.10 → versionhq-1.2.3.1}/src/versionhq/agent/rpm_controller.py +0 -0
  75. {versionhq-1.2.2.10 → versionhq-1.2.3.1}/src/versionhq/agent_network/__init__.py +0 -0
  76. {versionhq-1.2.2.10 → versionhq-1.2.3.1}/src/versionhq/agent_network/formation.py +0 -0
  77. {versionhq-1.2.2.10 → versionhq-1.2.3.1}/src/versionhq/agent_network/model.py +0 -0
  78. {versionhq-1.2.2.10 → versionhq-1.2.3.1}/src/versionhq/cli/__init__.py +0 -0
  79. {versionhq-1.2.2.10 → versionhq-1.2.3.1}/src/versionhq/clients/__init__.py +0 -0
  80. {versionhq-1.2.2.10 → versionhq-1.2.3.1}/src/versionhq/clients/customer/__init__.py +0 -0
  81. {versionhq-1.2.2.10 → versionhq-1.2.3.1}/src/versionhq/clients/customer/model.py +0 -0
  82. {versionhq-1.2.2.10 → versionhq-1.2.3.1}/src/versionhq/clients/product/__init__.py +0 -0
  83. {versionhq-1.2.2.10 → versionhq-1.2.3.1}/src/versionhq/clients/product/model.py +0 -0
  84. {versionhq-1.2.2.10 → versionhq-1.2.3.1}/src/versionhq/clients/workflow/__init__.py +0 -0
  85. {versionhq-1.2.2.10 → versionhq-1.2.3.1}/src/versionhq/knowledge/__init__.py +0 -0
  86. {versionhq-1.2.2.10 → versionhq-1.2.3.1}/src/versionhq/knowledge/_utils.py +0 -0
  87. {versionhq-1.2.2.10 → versionhq-1.2.3.1}/src/versionhq/knowledge/embedding.py +0 -0
  88. {versionhq-1.2.2.10 → versionhq-1.2.3.1}/src/versionhq/knowledge/model.py +0 -0
  89. {versionhq-1.2.2.10 → versionhq-1.2.3.1}/src/versionhq/knowledge/source.py +0 -0
  90. {versionhq-1.2.2.10 → versionhq-1.2.3.1}/src/versionhq/knowledge/source_docling.py +0 -0
  91. {versionhq-1.2.2.10 → versionhq-1.2.3.1}/src/versionhq/knowledge/storage.py +0 -0
  92. {versionhq-1.2.2.10 → versionhq-1.2.3.1}/src/versionhq/llm/__init__.py +0 -0
  93. {versionhq-1.2.2.10 → versionhq-1.2.3.1}/src/versionhq/llm/llm_vars.py +0 -0
  94. {versionhq-1.2.2.10 → versionhq-1.2.3.1}/src/versionhq/llm/model.py +0 -0
  95. {versionhq-1.2.2.10 → versionhq-1.2.3.1}/src/versionhq/memory/__init__.py +0 -0
  96. {versionhq-1.2.2.10 → versionhq-1.2.3.1}/src/versionhq/memory/contextual_memory.py +0 -0
  97. {versionhq-1.2.2.10 → versionhq-1.2.3.1}/src/versionhq/memory/model.py +0 -0
  98. {versionhq-1.2.2.10 → versionhq-1.2.3.1}/src/versionhq/storage/__init__.py +0 -0
  99. {versionhq-1.2.2.10 → versionhq-1.2.3.1}/src/versionhq/storage/base.py +0 -0
  100. {versionhq-1.2.2.10 → versionhq-1.2.3.1}/src/versionhq/storage/ltm_sqlite_storage.py +0 -0
  101. {versionhq-1.2.2.10 → versionhq-1.2.3.1}/src/versionhq/storage/mem0_storage.py +0 -0
  102. {versionhq-1.2.2.10 → versionhq-1.2.3.1}/src/versionhq/storage/rag_storage.py +0 -0
  103. {versionhq-1.2.2.10 → versionhq-1.2.3.1}/src/versionhq/storage/task_output_storage.py +0 -0
  104. {versionhq-1.2.2.10 → versionhq-1.2.3.1}/src/versionhq/storage/utils.py +0 -0
  105. {versionhq-1.2.2.10 → versionhq-1.2.3.1}/src/versionhq/task/__init__.py +0 -0
  106. {versionhq-1.2.2.10 → versionhq-1.2.3.1}/src/versionhq/task/formatter.py +0 -0
  107. {versionhq-1.2.2.10 → versionhq-1.2.3.1}/src/versionhq/task/structured_response.py +0 -0
  108. {versionhq-1.2.2.10 → versionhq-1.2.3.1}/src/versionhq/task_graph/__init__.py +0 -0
  109. {versionhq-1.2.2.10 → versionhq-1.2.3.1}/src/versionhq/task_graph/colors.py +0 -0
  110. {versionhq-1.2.2.10 → versionhq-1.2.3.1}/src/versionhq/task_graph/draft.py +0 -0
  111. {versionhq-1.2.2.10 → versionhq-1.2.3.1}/src/versionhq/task_graph/model.py +0 -0
  112. {versionhq-1.2.2.10 → versionhq-1.2.3.1}/src/versionhq/tool/__init__.py +0 -0
  113. {versionhq-1.2.2.10 → versionhq-1.2.3.1}/src/versionhq/tool/cache_handler.py +0 -0
  114. {versionhq-1.2.2.10 → versionhq-1.2.3.1}/src/versionhq/tool/composio_tool.py +0 -0
  115. {versionhq-1.2.2.10 → versionhq-1.2.3.1}/src/versionhq/tool/composio_tool_vars.py +0 -0
  116. {versionhq-1.2.2.10 → versionhq-1.2.3.1}/src/versionhq/tool/decorator.py +0 -0
  117. {versionhq-1.2.2.10 → versionhq-1.2.3.1}/src/versionhq/tool/model.py +0 -0
  118. {versionhq-1.2.2.10 → versionhq-1.2.3.1}/src/versionhq/tool/tool_handler.py +0 -0
  119. {versionhq-1.2.2.10 → versionhq-1.2.3.1}/src/versionhq.egg-info/SOURCES.txt +0 -0
  120. {versionhq-1.2.2.10 → versionhq-1.2.3.1}/src/versionhq.egg-info/dependency_links.txt +0 -0
  121. {versionhq-1.2.2.10 → versionhq-1.2.3.1}/src/versionhq.egg-info/top_level.txt +0 -0
  122. {versionhq-1.2.2.10 → versionhq-1.2.3.1}/tests/__init__.py +0 -0
  123. {versionhq-1.2.2.10 → versionhq-1.2.3.1}/tests/_sample/sample.csv +0 -0
  124. {versionhq-1.2.2.10 → versionhq-1.2.3.1}/tests/_sample/sample.json +0 -0
  125. {versionhq-1.2.2.10 → versionhq-1.2.3.1}/tests/agent/__init__.py +0 -0
  126. {versionhq-1.2.2.10 → versionhq-1.2.3.1}/tests/agent/agent_test.py +0 -0
  127. {versionhq-1.2.2.10 → versionhq-1.2.3.1}/tests/agent/doc_test.py +0 -0
  128. {versionhq-1.2.2.10 → versionhq-1.2.3.1}/tests/agent_network/Prompts/Demo_test.py +0 -0
  129. {versionhq-1.2.2.10 → versionhq-1.2.3.1}/tests/agent_network/__init__.py +0 -0
  130. {versionhq-1.2.2.10 → versionhq-1.2.3.1}/tests/agent_network/agent_network_test.py +0 -0
  131. {versionhq-1.2.2.10 → versionhq-1.2.3.1}/tests/agent_network/doc_test.py +0 -0
  132. {versionhq-1.2.2.10 → versionhq-1.2.3.1}/tests/cli/__init__.py +0 -0
  133. {versionhq-1.2.2.10 → versionhq-1.2.3.1}/tests/clients/customer_test.py +0 -0
  134. {versionhq-1.2.2.10 → versionhq-1.2.3.1}/tests/clients/product_test.py +0 -0
  135. {versionhq-1.2.2.10 → versionhq-1.2.3.1}/tests/conftest.py +0 -0
  136. {versionhq-1.2.2.10 → versionhq-1.2.3.1}/tests/doc_test.py +0 -0
  137. {versionhq-1.2.2.10 → versionhq-1.2.3.1}/tests/formation_test.py +0 -0
  138. {versionhq-1.2.2.10 → versionhq-1.2.3.1}/tests/knowledge/__init__.py +0 -0
  139. {versionhq-1.2.2.10 → versionhq-1.2.3.1}/tests/knowledge/knowledge_test.py +0 -0
  140. {versionhq-1.2.2.10 → versionhq-1.2.3.1}/tests/knowledge/mock_report_compressed.pdf +0 -0
  141. {versionhq-1.2.2.10 → versionhq-1.2.3.1}/tests/llm/__init__.py +0 -0
  142. {versionhq-1.2.2.10 → versionhq-1.2.3.1}/tests/llm/llm_connection_test.py +0 -0
  143. {versionhq-1.2.2.10 → versionhq-1.2.3.1}/tests/llm/llm_test.py +0 -0
  144. {versionhq-1.2.2.10 → versionhq-1.2.3.1}/tests/memory/__init__.py +0 -0
  145. {versionhq-1.2.2.10 → versionhq-1.2.3.1}/tests/memory/memory_test.py +0 -0
  146. {versionhq-1.2.2.10 → versionhq-1.2.3.1}/tests/task/__init__.py +0 -0
  147. {versionhq-1.2.2.10 → versionhq-1.2.3.1}/tests/task/doc_taskoutput_test.py +0 -0
  148. {versionhq-1.2.2.10 → versionhq-1.2.3.1}/tests/task/doc_test.py +0 -0
  149. {versionhq-1.2.2.10 → versionhq-1.2.3.1}/tests/task/eval_test.py +0 -0
  150. {versionhq-1.2.2.10 → versionhq-1.2.3.1}/tests/task/task_test.py +0 -0
  151. {versionhq-1.2.2.10 → versionhq-1.2.3.1}/tests/task_graph/__init__.py +0 -0
  152. {versionhq-1.2.2.10 → versionhq-1.2.3.1}/tests/task_graph/doc_test.py +0 -0
  153. {versionhq-1.2.2.10 → versionhq-1.2.3.1}/tests/task_graph/task_graph_test.py +0 -0
  154. {versionhq-1.2.2.10 → versionhq-1.2.3.1}/tests/tool/__init__.py +0 -0
  155. {versionhq-1.2.2.10 → versionhq-1.2.3.1}/tests/tool/composio_test.py +0 -0
  156. {versionhq-1.2.2.10 → versionhq-1.2.3.1}/tests/tool/doc_test.py +0 -0
  157. {versionhq-1.2.2.10 → versionhq-1.2.3.1}/tests/tool/rag_tool_test.py +0 -0
  158. {versionhq-1.2.2.10 → versionhq-1.2.3.1}/tests/tool/tool_test.py +0 -0
  159. {versionhq-1.2.2.10 → versionhq-1.2.3.1}/tests/usecase_test.py +0 -0
@@ -22,7 +22,7 @@ jobs:
22
22
 
23
23
  - name: Build release distributions
24
24
  run: |
25
- uv venv --python 3.12.8
25
+ uv venv
26
26
  source .venv/bin/activate
27
27
  uv pip install --upgrade pip twine
28
28
  uv pip install -r requirements.txt
@@ -22,7 +22,7 @@ jobs:
22
22
 
23
23
  - name: Build release distributions
24
24
  run: |
25
- uv venv --python 3.12.8
25
+ uv venv
26
26
  source .venv/bin/activate
27
27
  uv pip install --upgrade pip twine
28
28
  uv pip install -r requirements.txt
@@ -37,7 +37,7 @@ jobs:
37
37
 
38
38
  - name: Set up the project
39
39
  run: |
40
- uv venv --python 3.12.8
40
+ uv venv
41
41
  source .venv/bin/activate
42
42
  uv lock --upgrade
43
43
  uv sync --all-extras --no-extra pygraphviz
@@ -1,6 +1,9 @@
1
1
  deploy.py
2
2
  destinations.py
3
3
 
4
+ _auth/
5
+
6
+ cli/
4
7
  refine.py
5
8
 
6
9
  train.py
@@ -0,0 +1 @@
1
+ 3.13.1
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: versionhq
3
- Version: 1.2.2.10
3
+ Version: 1.2.3.1
4
4
  Summary: An agentic orchestration framework for building agent networks that handle task automation.
5
5
  Author-email: Kuriko Iwai <kuriko@versi0n.io>
6
6
  License: MIT License
@@ -34,13 +34,14 @@ Classifier: Programming Language :: Python
34
34
  Classifier: Programming Language :: Python :: 3
35
35
  Classifier: Programming Language :: Python :: 3.11
36
36
  Classifier: Programming Language :: Python :: 3.12
37
+ Classifier: Programming Language :: Python :: 3.13
37
38
  Classifier: License :: OSI Approved :: MIT License
38
39
  Classifier: Operating System :: OS Independent
39
40
  Classifier: Development Status :: 3 - Alpha
40
41
  Classifier: Intended Audience :: Developers
41
42
  Classifier: Intended Audience :: Information Technology
42
43
  Classifier: Topic :: Software Development :: Build Tools
43
- Requires-Python: <3.13,>=3.11
44
+ Requires-Python: >=3.11
44
45
  Description-Content-Type: text/markdown
45
46
  License-File: LICENSE
46
47
  Requires-Dist: regex==2024.11.6
@@ -67,23 +68,24 @@ Requires-Dist: composio-core==0.7.0
67
68
  Requires-Dist: networkx>=3.4.2
68
69
  Requires-Dist: matplotlib>=3.10.0
69
70
  Requires-Dist: boto3>=1.37.1
71
+ Requires-Dist: scikit-learn>=1.6.1
72
+ Requires-Dist: numpy>=1.26.4
73
+ Requires-Dist: pandas>=2.2.3
74
+ Provides-Extra: torch
75
+ Requires-Dist: torch>=2.6.0; extra == "torch"
76
+ Requires-Dist: torchvision>=0.21.0; extra == "torch"
77
+ Requires-Dist: pytorch-triton-xpu>=3.2.0; sys_platform == "linux" and extra == "torch"
70
78
  Provides-Extra: docling
71
- Requires-Dist: docling>=2.17.0; extra == "docling"
79
+ Requires-Dist: docling>=2.25.2; extra == "docling"
72
80
  Provides-Extra: mem0ai
73
81
  Requires-Dist: mem0ai>=0.1.55; extra == "mem0ai"
74
82
  Provides-Extra: pdfplumber
75
83
  Requires-Dist: pdfplumber>=0.11.5; extra == "pdfplumber"
76
- Provides-Extra: pandas
77
- Requires-Dist: pandas>=2.2.3; extra == "pandas"
78
- Provides-Extra: numpy
79
- Requires-Dist: numpy>=1.26.4; extra == "numpy"
80
84
  Provides-Extra: pygraphviz
81
85
  Requires-Dist: pygraphviz>=1.14; extra == "pygraphviz"
82
86
  Provides-Extra: tools
83
87
  Requires-Dist: html2text>=2024.2.26; extra == "tools"
84
88
  Requires-Dist: sec-api>=1.0.28; extra == "tools"
85
- Provides-Extra: eval
86
- Requires-Dist: scikit-learn>=1.6.1; extra == "eval"
87
89
 
88
90
  # Overview
89
91
 
@@ -91,7 +93,7 @@ Requires-Dist: scikit-learn>=1.6.1; extra == "eval"
91
93
  ![MIT license](https://img.shields.io/badge/License-MIT-green)
92
94
  [![Publisher](https://github.com/versionHQ/multi-agent-system/actions/workflows/publish.yml/badge.svg)](https://github.com/versionHQ/multi-agent-system/actions/workflows/publish.yml)
93
95
  ![PyPI](https://img.shields.io/badge/PyPI-v1.2.2+-blue)
94
- ![python ver](https://img.shields.io/badge/Python-3.11|3.12-purple)
96
+ ![python ver](https://img.shields.io/badge/Python-3.11|3.12|3.13-purple)
95
97
  ![pyenv ver](https://img.shields.io/badge/pyenv-2.5.0-orange)
96
98
 
97
99
 
@@ -252,7 +254,7 @@ agent.update(
252
254
  pip install versionhq
253
255
  ```
254
256
 
255
- (Python 3.11 / 3.12)
257
+ (Python 3.11 | 3.12 | 3.13)
256
258
 
257
259
 
258
260
  ### Launching an agent
@@ -384,7 +386,6 @@ Tasks can be delegated to a manager, peers within the agent network, or a comple
384
386
 
385
387
  **Deployment**
386
388
 
387
- * **Python**: Primary programming language. v3.12.x is recommended
388
389
  * [uv](https://docs.astral.sh/uv/): Python package installer and resolver
389
390
  * [pre-commit](https://pre-commit.com/): Manage and maintain pre-commit hooks
390
391
  * [setuptools](https://pypi.org/project/setuptools/): Build python modules
@@ -473,8 +474,6 @@ pyproject.toml # Project config
473
474
  uv sync --all-extras --no-extra pygraphviz
474
475
  ```
475
476
 
476
- - `torch`/`Docling` related errors: Set up default Python version either `3.11.x` or `3.12.x` (same as AssertionError)
477
-
478
477
  ### Adding env secrets to .env file
479
478
 
480
479
  Create `.env` file in the project root and add secret vars following `.env.sample` file.
@@ -580,8 +579,6 @@ Common issues and solutions:
580
579
 
581
580
  * Memory errors: If processing large contracts, you may need to increase the available memory for the Python process.
582
581
 
583
- * Issues related to the Python version: Docling/Pytorch is not ready for Python 3.13 as of Jan 2025. Use Python 3.12.x as default by running `uv venv --python 3.12.8` and `uv python pin 3.12.8`.
584
-
585
582
  * Issues related to dependencies: `rm -rf uv.lock`, `uv cache clean`, `uv venv`, and run `uv pip install -r requirements.txt -v`.
586
583
 
587
584
  * Issues related to agents and other systems: Check `.logs` directory located in the root directory for error messages and stack traces.
@@ -4,7 +4,7 @@
4
4
  ![MIT license](https://img.shields.io/badge/License-MIT-green)
5
5
  [![Publisher](https://github.com/versionHQ/multi-agent-system/actions/workflows/publish.yml/badge.svg)](https://github.com/versionHQ/multi-agent-system/actions/workflows/publish.yml)
6
6
  ![PyPI](https://img.shields.io/badge/PyPI-v1.2.2+-blue)
7
- ![python ver](https://img.shields.io/badge/Python-3.11|3.12-purple)
7
+ ![python ver](https://img.shields.io/badge/Python-3.11|3.12|3.13-purple)
8
8
  ![pyenv ver](https://img.shields.io/badge/pyenv-2.5.0-orange)
9
9
 
10
10
 
@@ -165,7 +165,7 @@ agent.update(
165
165
  pip install versionhq
166
166
  ```
167
167
 
168
- (Python 3.11 / 3.12)
168
+ (Python 3.11 | 3.12 | 3.13)
169
169
 
170
170
 
171
171
  ### Launching an agent
@@ -297,7 +297,6 @@ Tasks can be delegated to a manager, peers within the agent network, or a comple
297
297
 
298
298
  **Deployment**
299
299
 
300
- * **Python**: Primary programming language. v3.12.x is recommended
301
300
  * [uv](https://docs.astral.sh/uv/): Python package installer and resolver
302
301
  * [pre-commit](https://pre-commit.com/): Manage and maintain pre-commit hooks
303
302
  * [setuptools](https://pypi.org/project/setuptools/): Build python modules
@@ -386,8 +385,6 @@ pyproject.toml # Project config
386
385
  uv sync --all-extras --no-extra pygraphviz
387
386
  ```
388
387
 
389
- - `torch`/`Docling` related errors: Set up default Python version either `3.11.x` or `3.12.x` (same as AssertionError)
390
-
391
388
  ### Adding env secrets to .env file
392
389
 
393
390
  Create `.env` file in the project root and add secret vars following `.env.sample` file.
@@ -493,8 +490,6 @@ Common issues and solutions:
493
490
 
494
491
  * Memory errors: If processing large contracts, you may need to increase the available memory for the Python process.
495
492
 
496
- * Issues related to the Python version: Docling/Pytorch is not ready for Python 3.13 as of Jan 2025. Use Python 3.12.x as default by running `uv venv --python 3.12.8` and `uv python pin 3.12.8`.
497
-
498
493
  * Issues related to dependencies: `rm -rf uv.lock`, `uv cache clean`, `uv venv`, and run `uv pip install -r requirements.txt -v`.
499
494
 
500
495
  * Issues related to agents and other systems: Check `.logs` directory located in the root directory for error messages and stack traces.
@@ -4,7 +4,7 @@
4
4
  ![MIT license](https://img.shields.io/badge/License-MIT-green)
5
5
  [![Publisher](https://github.com/versionHQ/multi-agent-system/actions/workflows/publish.yml/badge.svg)](https://github.com/versionHQ/multi-agent-system/actions/workflows/publish.yml)
6
6
  ![PyPI](https://img.shields.io/badge/PyPI-v1.2.2+-blue)
7
- ![python ver](https://img.shields.io/badge/Python-3.11|3.12-purple)
7
+ ![python ver](https://img.shields.io/badge/Python-3.11|3.12|3.13-purple)
8
8
  ![pyenv ver](https://img.shields.io/badge/pyenv-2.5.0-orange)
9
9
 
10
10
  A Python framework for agentic orchestration that handles complex task automation.
@@ -175,8 +175,6 @@ agent.update(
175
175
  uv sync --all-extras --no-extra pygraphviz
176
176
  ```
177
177
 
178
- - `torch`/`Docling` related errors: Set up default Python version either `3.11.x` or `3.12.x` (same as AssertionError)
179
-
180
178
  **Setting up a local env file**
181
179
 
182
180
  Create `.env` file at the root of the project directry and add your keys following `.env.sample`.
@@ -221,8 +219,6 @@ Create `.env` file at the root of the project directry and add your keys followi
221
219
 
222
220
  **Deployment**
223
221
 
224
- * **Python**: Primary programming language. v3.12.x is recommended
225
-
226
222
  * [uv](https://docs.astral.sh/uv/): Python package installer and resolver
227
223
 
228
224
  * [pre-commit](https://pre-commit.com/): Manage and maintain pre-commit hooks
@@ -241,8 +237,6 @@ Common issues and solutions:
241
237
 
242
238
  * Memory errors: If processing large contracts, you may need to increase the available memory for the Python process.
243
239
 
244
- * Issues related to the Python version: Docling/Pytorch is not ready for Python 3.13 as of Jan 2025. Use Python 3.12.x as default by running `uv venv --python 3.12.8` and `uv python pin 3.12.8`.
245
-
246
240
  * Issues related to dependencies: `rm -rf uv.lock`, `uv cache clean`, `uv venv`, and run `uv pip install -r requirements.txt -v`.
247
241
 
248
242
  * Issues related to agents and other systems: Check `.logs` directory located in the root directory for detailed error messages and stack traces.
@@ -6,7 +6,7 @@
6
6
  pip install versionhq
7
7
  ```
8
8
 
9
- (Python 3.11, 3.12)
9
+ (Python 3.11 | 3.12 | 3.13)
10
10
 
11
11
  <hr />
12
12
 
@@ -15,11 +15,11 @@ exclude = ["test*", "__pycache__", "*.egg-info"]
15
15
 
16
16
  [project]
17
17
  name = "versionhq"
18
- version = "1.2.2.10"
18
+ version = "1.2.3.1"
19
19
  authors = [{ name = "Kuriko Iwai", email = "kuriko@versi0n.io" }]
20
20
  description = "An agentic orchestration framework for building agent networks that handle task automation."
21
21
  readme = "README.md"
22
- requires-python = ">=3.11,<3.13"
22
+ requires-python = ">=3.11"
23
23
  license = { file = "LICENSE" }
24
24
  keywords = ["orchestration framework", "orchestration", "ai agent", "multi-agent system", "RAG", "agent", "agentic orchestration", "llm"]
25
25
  dependencies = [
@@ -47,12 +47,16 @@ dependencies = [
47
47
  "networkx>=3.4.2",
48
48
  "matplotlib>=3.10.0",
49
49
  "boto3>=1.37.1",
50
+ "scikit-learn>=1.6.1",
51
+ "numpy>=1.26.4",
52
+ "pandas>=2.2.3",
50
53
  ]
51
54
  classifiers = [
52
55
  "Programming Language :: Python",
53
56
  "Programming Language :: Python :: 3",
54
57
  "Programming Language :: Python :: 3.11",
55
58
  "Programming Language :: Python :: 3.12",
59
+ "Programming Language :: Python :: 3.13",
56
60
  "License :: OSI Approved :: MIT License",
57
61
  "Operating System :: OS Independent",
58
62
  "Development Status :: 3 - Alpha",
@@ -68,8 +72,13 @@ Repository = "https://github.com/versionHQ/multi-agent-system"
68
72
  Issues = "https://github.com/versionHQ/multi-agent-system/issues"
69
73
 
70
74
  [project.optional-dependencies]
75
+ torch = [
76
+ "torch>=2.6.0",
77
+ "torchvision>=0.21.0",
78
+ "pytorch-triton-xpu>=3.2.0 ; sys_platform == 'linux'",
79
+ ]
71
80
  docling = [
72
- "docling>=2.17.0",
81
+ "docling>=2.25.2",
73
82
  ]
74
83
  mem0ai = [
75
84
  "mem0ai>=0.1.55",
@@ -77,12 +86,6 @@ mem0ai = [
77
86
  pdfplumber = [
78
87
  "pdfplumber>=0.11.5",
79
88
  ]
80
- pandas = [
81
- "pandas>=2.2.3",
82
- ]
83
- numpy = [
84
- "numpy>=1.26.4",
85
- ]
86
89
  pygraphviz = [
87
90
  "pygraphviz>=1.14",
88
91
  ]
@@ -90,9 +93,7 @@ tools = [
90
93
  "html2text>=2024.2.26",
91
94
  "sec-api>=1.0.28",
92
95
  ]
93
- eval = [
94
- "scikit-learn>=1.6.1",
95
- ]
96
+
96
97
 
97
98
  [tool.uv]
98
99
  dev-dependencies = [
@@ -110,6 +111,22 @@ dev-dependencies = [
110
111
  "pillow>=10.4.0",
111
112
  ]
112
113
 
114
+ [tool.uv.sources]
115
+ torch = [
116
+ { index = "pytorch-xpu", marker = "sys_platform == 'win32' or sys_platform == 'linux'" },
117
+ ]
118
+ torchvision = [
119
+ { index = "pytorch-xpu", marker = "sys_platform == 'win32' or sys_platform == 'linux'" },
120
+ ]
121
+ pytorch-triton-xpu = [
122
+ { index = "pytorch-xpu", marker = "sys_platform == 'linux'" },
123
+ ]
124
+
125
+ [[tool.uv.index]]
126
+ name = "pytorch-xpu"
127
+ url = "https://download.pytorch.org/whl/xpu"
128
+ explicit = true
129
+
113
130
  [tool.uv.workspace]
114
131
  members = ["Kuriko", "krik8235", "Kuriko IWAI"]
115
132
 
@@ -0,0 +1,2 @@
1
+ python-3.13.1
2
+ PYTHON_VERSION=3.13.1
@@ -32,7 +32,7 @@ from versionhq.agent_network.formation import form_agent_network
32
32
  from versionhq.task_graph.draft import workflow
33
33
 
34
34
 
35
- __version__ = "1.2.2.10"
35
+ __version__ = "1.2.3.1"
36
36
  __all__ = [
37
37
  "Agent",
38
38
 
@@ -2,92 +2,25 @@ import uuid
2
2
  from abc import ABC
3
3
  from datetime import datetime
4
4
  from typing import Any, Dict, List, Optional
5
- from typing_extensions import Self
5
+
6
6
  from pydantic import UUID4, InstanceOf, BaseModel, ConfigDict, Field, field_validator, model_validator
7
7
  from pydantic_core import PydanticCustomError
8
8
 
9
- from versionhq.clients.product.model import Product
10
- from versionhq.clients.customer.model import Customer
11
9
  from versionhq.agent.model import Agent
12
10
  from versionhq.agent_network.model import AgentNetwork
11
+ from versionhq.clients.product.model import Product
12
+ from versionhq.clients.customer.model import Customer
13
13
  from versionhq.tool.composio_tool_vars import ComposioAppName
14
14
 
15
15
 
16
- class ScoreFormat:
17
- def __init__(self, rate: float | int = 0, weight: int = 1):
18
- self.rate = rate
19
- self.weight = weight
20
- self.aggregate = rate * weight
21
-
22
-
23
- class Score:
24
- """
25
- Evaluate the score on 0 (no performance) to 1 scale.
26
- `rate`: Any float from 0.0 to 1.0 given by an agent.
27
- `weight`: Importance of each factor to the aggregated score.
28
- """
29
-
30
- def __init__(
31
- self,
32
- brand_tone: ScoreFormat = ScoreFormat(0, 0),
33
- audience: ScoreFormat = ScoreFormat(0, 0),
34
- track_record: ScoreFormat = ScoreFormat(0, 0),
35
- **kwargs: Optional[Dict[str, ScoreFormat]],
36
- ):
37
- self.brand_tone = brand_tone
38
- self.audience = audience
39
- self.track_record = track_record
40
- self.kwargs = kwargs
41
-
42
-
43
- def result(self) -> int:
44
- aggregate_score = int(self.brand_tone.aggregate) + int(self.audience.aggregate) + int(self.track_record.aggregate)
45
- denominator = self.brand_tone.weight + self.audience.weight + self.track_record.weight
46
-
47
- for k, v in self.kwargs.items():
48
- aggregate_score += v.aggregate
49
- denominator += v.weight
50
-
51
- if denominator == 0:
52
- return 0
53
-
54
- return round(aggregate_score / denominator, 2)
55
-
56
-
57
-
58
16
  class MessagingComponent(ABC, BaseModel):
59
17
  layer_id: int = Field(default=0, description="add id of the layer: 0, 1, 2")
60
18
  message: str = Field(default=None, max_length=1024, description="text message content to be sent")
61
- score: InstanceOf[Score] = Field(default=None)
19
+ score: Optional[float | int] = Field(default=None)
62
20
  condition: str = Field(default=None, description="condition to execute the next component")
63
21
  interval: Optional[str] = Field(default=None, description="ideal interval to set to assess the condition")
64
22
 
65
23
 
66
- def store_scoring_result(self, subject: str, score_raw: int | Score | ScoreFormat = None) -> Self:
67
- """
68
- Set up the `score` field
69
- """
70
-
71
- if isinstance(score_raw, Score):
72
- setattr(self, "score", score_raw)
73
-
74
- elif isinstance(score_raw, ScoreFormat):
75
- score_instance = Score()
76
- setattr(score_instance, subject, score_raw)
77
- setattr(self, "score", score_instance)
78
-
79
- elif isinstance(score_raw, int) or isinstance(score_raw, float):
80
- score_instance, score_format_instance = Score(), ScoreFormat(rate=score_raw, weight=1)
81
- setattr(score_instance, "kwargs", { subject: score_format_instance })
82
- setattr(self, "score", score_instance)
83
-
84
- else:
85
- pass
86
-
87
- return self
88
-
89
-
90
-
91
24
  class MessagingWorkflow(ABC, BaseModel):
92
25
  """
93
26
  Store 3 layers of messaging workflow sent to `customer` on the `product`
@@ -1,4 +1,4 @@
1
- EVALUATE="""Evaluate the provided task output against the given task description, assigning a score between 0 (worst) and 1 (best) based on the specified criteria. Scores should be numerical (integers or decimals). Provide specific suggestions for improvement. Do not assign identical scores to different criteria unless otherwise you have clear reasons to do so:
1
+ EVALUATE="""Evaluate the provided task output against the given task description, assigning a score between 0 (worst) and 1 (best) based on the specified criteria. Scores should be numerical (integers or decimals). Weight should be numerical (integers or decimals) and represents importance of the criteria to the final result. Provide specific suggestions for improvement. Do not assign identical scores to different criteria unless otherwise you have clear reasons to do so:
2
2
  Task output: {task_output}
3
3
  Task description: {task_description}
4
4
  Evaluation criteria: {eval_criteria}
@@ -2,63 +2,21 @@ from typing import List, Optional, Dict, Any
2
2
  from typing_extensions import Self
3
3
 
4
4
  from pydantic import BaseModel, model_validator
5
+ import pandas as pd
6
+ from sklearn.preprocessing import MinMaxScaler
5
7
 
6
8
  from versionhq.memory.model import MemoryMetadata
7
9
 
8
- """
9
- Evaluate task output from accuracy, token consumption, and latency perspectives, and mark the score from 0 to 1.
10
- """
11
-
12
-
13
- class ScoreFormat:
14
- def __init__(self, rate: float | int = 0, weight: int = 1):
15
- self.rate = rate
16
- self.weight = weight
17
- self.aggregate = rate * weight
18
-
19
-
20
- class Score:
21
- """
22
- Evaluate the score on 0 (no performance) to 1 scale.
23
- `rate`: Any float from 0.0 to 1.0 given by an agent.
24
- `weight`: Importance of each factor to the aggregated score.
25
- """
26
-
27
- def __init__(self, config: Optional[Dict[str, ScoreFormat]] = None):
28
- self.config = config
29
-
30
- if self.config:
31
- for k, v in self.config.items():
32
- if isinstance(v, ScoreFormat):
33
- setattr(self, k, v)
34
-
35
-
36
- def result(self) -> float:
37
- aggregate_score, denominator = 0, 0
38
-
39
- for k, v in self.__dict__.items():
40
- aggregate_score += v.aggregate
41
- denominator += v.weight
42
-
43
- if denominator == 0:
44
- return 0
45
-
46
- return round(aggregate_score / denominator, 3)
47
-
48
10
 
49
11
  class EvaluationItem(BaseModel):
50
12
  """
51
13
  A Pydantic class to store the evaluation result with scoring and suggestion based on the given criteria.
14
+ This class will be used as a response format for the eval task.
52
15
  """
53
16
  criteria: str
54
17
  suggestion: str
55
18
  score: float
56
-
57
- def _format_score(self, weight: int = 1) -> ScoreFormat | None:
58
- if self.score and isinstance(self.score, float):
59
- return ScoreFormat(rate=self.score, weight=weight)
60
-
61
- else: return None
19
+ weight: int = 1
62
20
 
63
21
 
64
22
  class Evaluation(BaseModel):
@@ -111,33 +69,43 @@ class Evaluation(BaseModel):
111
69
  return shot_prompt
112
70
 
113
71
 
114
- @property
115
- def aggregate_score(self) -> float:
72
+ def _normalize_df(self) -> pd.DataFrame:
116
73
  """
117
- Calcurate aggregate score from evaluation items.
74
+ Creates a pandas DataFrame from a list of EvaluationItem objects containing 'weight' and 'score' columns, and normalizes them using MinMaxScaler.
75
+
76
+ Args:
77
+ items: A list of EvaluationItem objects.
78
+
79
+ Returns:
80
+ A pandas DataFrame with normalized 'weight' and 'score' columns, or an empty DataFrame if the input is empty.
118
81
  """
119
82
  if not self.items:
120
- return 0
83
+ return pd.DataFrame()
121
84
 
122
- aggregate_score = 0
123
- denominator = 0
85
+ data = { 'weight': [item.weight for item in self.items], 'score': [item.score for item in self.items] }
86
+ df = pd.DataFrame(data)
124
87
 
125
- for item in self.items:
126
- score_format = item._format_score()
127
- aggregate_score += score_format.aggregate if score_format else 0
128
- denominator += score_format.weight if score_format else 0
88
+ scaler = MinMaxScaler(feature_range=(0, 1))
89
+ df[['weight', 'score']] = scaler.fit_transform(df[['weight', 'score']])
129
90
 
130
- if denominator == 0:
91
+ return df
92
+
93
+
94
+ @property
95
+ def aggregate_score(self) -> int | float:
96
+ if not self.items:
131
97
  return 0
132
98
 
133
- return round(aggregate_score / denominator, 2)
99
+ df = self._normalize_df()
100
+ df['weighted_score'] = df['weight'] * df['score']
101
+ aggregate_score = round(df['weighted_score'].sum(), 3)
102
+ return aggregate_score
134
103
 
135
104
 
136
105
  @property
137
106
  def suggestion_summary(self) -> str | None:
138
- """
139
- Returns a summary of the suggestions
140
- """
107
+ """Returns a summary of the suggestions"""
108
+
141
109
  if not self.items:
142
110
  return None
143
111
 
@@ -228,13 +228,21 @@ class TaskOutput(BaseModel):
228
228
  self._tokens += task_eval._tokens
229
229
 
230
230
  if res.pydantic:
231
- item = EvaluationItem(score=res.pydantic.score, suggestion=res.pydantic.suggestion, criteria=res.pydantic.criteria)
231
+ item = EvaluationItem(
232
+ score=res.pydantic.score,
233
+ weight=res.pydantic.weight,
234
+ suggestion=res.pydantic.suggestion,
235
+ criteria=res.pydantic.criteria
236
+ )
232
237
  self.evaluation.items.append(item)
233
238
 
234
239
  else:
235
240
  try:
236
241
  item = EvaluationItem(
237
- score=float(res.json_dict["score"]), suggestion=res.json_dict["suggestion"], criteria=res.json_dict["criteria"]
242
+ score=float(res.json_dict["score"]),
243
+ weight=float(res.json_dict["weight"]),
244
+ suggestion=res.json_dict["suggestion"],
245
+ criteria=res.json_dict["criteria"]
238
246
  )
239
247
  self.evaluation.items.append(item)
240
248
  except Exception as e:
@@ -246,10 +254,7 @@ class TaskOutput(BaseModel):
246
254
 
247
255
  @property
248
256
  def aggregate_score(self) -> float | int:
249
- if self.evaluation is None:
250
- return 0
251
- else:
252
- self.evaluation.aggregate_score
257
+ return self.evaluation.aggregate_score if self.evaluation is not None else 0
253
258
 
254
259
 
255
260
  @property
@@ -1,6 +1,5 @@
1
1
  import re
2
2
  import requests
3
- import html2text
4
3
  import gzip
5
4
  import http.client
6
5
  import urllib.request
@@ -37,6 +36,11 @@ class RagTool(BaseTool):
37
36
  if isinstance(source_code, bytes):
38
37
  source_code = source_code.decode('utf-8')
39
38
 
39
+ try:
40
+ import html2text
41
+ except:
42
+ Logger().log(message="Dependencies for tools are missing. Add tool packages by running: `uv add versionhq[tool]`.", color="red", level="error")
43
+
40
44
  h = html2text.HTML2Text()
41
45
  h.ignore_links = False
42
46
  text = h.handle(source_code)