versionhq 1.1.10.5__tar.gz → 1.1.10.6__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 (81) hide show
  1. {versionhq-1.1.10.5 → versionhq-1.1.10.6}/PKG-INFO +26 -22
  2. {versionhq-1.1.10.5 → versionhq-1.1.10.6}/README.md +25 -21
  3. {versionhq-1.1.10.5 → versionhq-1.1.10.6}/pyproject.toml +1 -1
  4. {versionhq-1.1.10.5 → versionhq-1.1.10.6}/src/versionhq/__init__.py +1 -1
  5. {versionhq-1.1.10.5 → versionhq-1.1.10.6}/src/versionhq.egg-info/PKG-INFO +26 -22
  6. {versionhq-1.1.10.5 → versionhq-1.1.10.6}/.github/workflows/publish.yml +0 -0
  7. {versionhq-1.1.10.5 → versionhq-1.1.10.6}/.github/workflows/publish_testpypi.yml +0 -0
  8. {versionhq-1.1.10.5 → versionhq-1.1.10.6}/.github/workflows/run_tests.yml +0 -0
  9. {versionhq-1.1.10.5 → versionhq-1.1.10.6}/.github/workflows/security_check.yml +0 -0
  10. {versionhq-1.1.10.5 → versionhq-1.1.10.6}/.gitignore +0 -0
  11. {versionhq-1.1.10.5 → versionhq-1.1.10.6}/.pre-commit-config.yaml +0 -0
  12. {versionhq-1.1.10.5 → versionhq-1.1.10.6}/.python-version +0 -0
  13. {versionhq-1.1.10.5 → versionhq-1.1.10.6}/LICENSE +0 -0
  14. {versionhq-1.1.10.5 → versionhq-1.1.10.6}/SECURITY.md +0 -0
  15. {versionhq-1.1.10.5 → versionhq-1.1.10.6}/db/preprocess.py +0 -0
  16. {versionhq-1.1.10.5 → versionhq-1.1.10.6}/requirements-dev.txt +0 -0
  17. {versionhq-1.1.10.5 → versionhq-1.1.10.6}/requirements.txt +0 -0
  18. {versionhq-1.1.10.5 → versionhq-1.1.10.6}/runtime.txt +0 -0
  19. {versionhq-1.1.10.5 → versionhq-1.1.10.6}/setup.cfg +0 -0
  20. {versionhq-1.1.10.5 → versionhq-1.1.10.6}/src/versionhq/_utils/__init__.py +0 -0
  21. {versionhq-1.1.10.5 → versionhq-1.1.10.6}/src/versionhq/_utils/i18n.py +0 -0
  22. {versionhq-1.1.10.5 → versionhq-1.1.10.6}/src/versionhq/_utils/logger.py +0 -0
  23. {versionhq-1.1.10.5 → versionhq-1.1.10.6}/src/versionhq/_utils/process_config.py +0 -0
  24. {versionhq-1.1.10.5 → versionhq-1.1.10.6}/src/versionhq/_utils/rpm_controller.py +0 -0
  25. {versionhq-1.1.10.5 → versionhq-1.1.10.6}/src/versionhq/_utils/usage_metrics.py +0 -0
  26. {versionhq-1.1.10.5 → versionhq-1.1.10.6}/src/versionhq/agent/TEMPLATES/Backstory.py +0 -0
  27. {versionhq-1.1.10.5 → versionhq-1.1.10.6}/src/versionhq/agent/TEMPLATES/__init__.py +0 -0
  28. {versionhq-1.1.10.5 → versionhq-1.1.10.6}/src/versionhq/agent/__init__.py +0 -0
  29. {versionhq-1.1.10.5 → versionhq-1.1.10.6}/src/versionhq/agent/model.py +0 -0
  30. {versionhq-1.1.10.5 → versionhq-1.1.10.6}/src/versionhq/agent/parser.py +0 -0
  31. {versionhq-1.1.10.5 → versionhq-1.1.10.6}/src/versionhq/cli/__init__.py +0 -0
  32. {versionhq-1.1.10.5 → versionhq-1.1.10.6}/src/versionhq/clients/__init__.py +0 -0
  33. {versionhq-1.1.10.5 → versionhq-1.1.10.6}/src/versionhq/clients/customer/__init__.py +0 -0
  34. {versionhq-1.1.10.5 → versionhq-1.1.10.6}/src/versionhq/clients/customer/model.py +0 -0
  35. {versionhq-1.1.10.5 → versionhq-1.1.10.6}/src/versionhq/clients/product/__init__.py +0 -0
  36. {versionhq-1.1.10.5 → versionhq-1.1.10.6}/src/versionhq/clients/product/model.py +0 -0
  37. {versionhq-1.1.10.5 → versionhq-1.1.10.6}/src/versionhq/clients/workflow/__init__.py +0 -0
  38. {versionhq-1.1.10.5 → versionhq-1.1.10.6}/src/versionhq/clients/workflow/model.py +0 -0
  39. {versionhq-1.1.10.5 → versionhq-1.1.10.6}/src/versionhq/llm/__init__.py +0 -0
  40. {versionhq-1.1.10.5 → versionhq-1.1.10.6}/src/versionhq/llm/llm_vars.py +0 -0
  41. {versionhq-1.1.10.5 → versionhq-1.1.10.6}/src/versionhq/llm/model.py +0 -0
  42. {versionhq-1.1.10.5 → versionhq-1.1.10.6}/src/versionhq/storage/__init__.py +0 -0
  43. {versionhq-1.1.10.5 → versionhq-1.1.10.6}/src/versionhq/storage/task_output_storage.py +0 -0
  44. {versionhq-1.1.10.5 → versionhq-1.1.10.6}/src/versionhq/task/__init__.py +0 -0
  45. {versionhq-1.1.10.5 → versionhq-1.1.10.6}/src/versionhq/task/formatter.py +0 -0
  46. {versionhq-1.1.10.5 → versionhq-1.1.10.6}/src/versionhq/task/log_handler.py +0 -0
  47. {versionhq-1.1.10.5 → versionhq-1.1.10.6}/src/versionhq/task/model.py +0 -0
  48. {versionhq-1.1.10.5 → versionhq-1.1.10.6}/src/versionhq/task/structured_response.py +0 -0
  49. {versionhq-1.1.10.5 → versionhq-1.1.10.6}/src/versionhq/team/__init__.py +0 -0
  50. {versionhq-1.1.10.5 → versionhq-1.1.10.6}/src/versionhq/team/model.py +0 -0
  51. {versionhq-1.1.10.5 → versionhq-1.1.10.6}/src/versionhq/team/team_planner.py +0 -0
  52. {versionhq-1.1.10.5 → versionhq-1.1.10.6}/src/versionhq/tool/__init__.py +0 -0
  53. {versionhq-1.1.10.5 → versionhq-1.1.10.6}/src/versionhq/tool/cache_handler.py +0 -0
  54. {versionhq-1.1.10.5 → versionhq-1.1.10.6}/src/versionhq/tool/composio_tool.py +0 -0
  55. {versionhq-1.1.10.5 → versionhq-1.1.10.6}/src/versionhq/tool/composio_tool_vars.py +0 -0
  56. {versionhq-1.1.10.5 → versionhq-1.1.10.6}/src/versionhq/tool/decorator.py +0 -0
  57. {versionhq-1.1.10.5 → versionhq-1.1.10.6}/src/versionhq/tool/model.py +0 -0
  58. {versionhq-1.1.10.5 → versionhq-1.1.10.6}/src/versionhq/tool/tool_handler.py +0 -0
  59. {versionhq-1.1.10.5 → versionhq-1.1.10.6}/src/versionhq.egg-info/SOURCES.txt +0 -0
  60. {versionhq-1.1.10.5 → versionhq-1.1.10.6}/src/versionhq.egg-info/dependency_links.txt +0 -0
  61. {versionhq-1.1.10.5 → versionhq-1.1.10.6}/src/versionhq.egg-info/requires.txt +0 -0
  62. {versionhq-1.1.10.5 → versionhq-1.1.10.6}/src/versionhq.egg-info/top_level.txt +0 -0
  63. {versionhq-1.1.10.5 → versionhq-1.1.10.6}/tests/__init__.py +0 -0
  64. {versionhq-1.1.10.5 → versionhq-1.1.10.6}/tests/agent/__init__.py +0 -0
  65. {versionhq-1.1.10.5 → versionhq-1.1.10.6}/tests/agent/agent_test.py +0 -0
  66. {versionhq-1.1.10.5 → versionhq-1.1.10.6}/tests/cli/__init__.py +0 -0
  67. {versionhq-1.1.10.5 → versionhq-1.1.10.6}/tests/clients/customer_test.py +0 -0
  68. {versionhq-1.1.10.5 → versionhq-1.1.10.6}/tests/clients/product_test.py +0 -0
  69. {versionhq-1.1.10.5 → versionhq-1.1.10.6}/tests/clients/workflow_test.py +0 -0
  70. {versionhq-1.1.10.5 → versionhq-1.1.10.6}/tests/conftest.py +0 -0
  71. {versionhq-1.1.10.5 → versionhq-1.1.10.6}/tests/llm/__init__.py +0 -0
  72. {versionhq-1.1.10.5 → versionhq-1.1.10.6}/tests/llm/llm_test.py +0 -0
  73. {versionhq-1.1.10.5 → versionhq-1.1.10.6}/tests/task/__init__.py +0 -0
  74. {versionhq-1.1.10.5 → versionhq-1.1.10.6}/tests/task/task_test.py +0 -0
  75. {versionhq-1.1.10.5 → versionhq-1.1.10.6}/tests/team/Prompts/Demo_test.py +0 -0
  76. {versionhq-1.1.10.5 → versionhq-1.1.10.6}/tests/team/__init__.py +0 -0
  77. {versionhq-1.1.10.5 → versionhq-1.1.10.6}/tests/team/team_test.py +0 -0
  78. {versionhq-1.1.10.5 → versionhq-1.1.10.6}/tests/tool/__init__.py +0 -0
  79. {versionhq-1.1.10.5 → versionhq-1.1.10.6}/tests/tool/composio_test.py +0 -0
  80. {versionhq-1.1.10.5 → versionhq-1.1.10.6}/tests/tool/tool_test.py +0 -0
  81. {versionhq-1.1.10.5 → versionhq-1.1.10.6}/uv.lock +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: versionhq
3
- Version: 1.1.10.5
3
+ Version: 1.1.10.6
4
4
  Summary: LLM orchestration frameworks for model-agnostic AI agents that handle complex outbound workflows
5
5
  Author-email: Kuriko Iwai <kuriko@versi0n.io>
6
6
  License: MIT License
@@ -100,7 +100,7 @@ LLM-powered `agent`s and `team`s use `tool`s and their own knowledge to complete
100
100
 
101
101
  - [Key Features](#key-features)
102
102
  - [Usage](#usage)
103
- - [Case 1. Build an AI agent on LLM of your choice and execute a task:](#case-1-build-an-ai-agent-on-llm-of-your-choice-and-execute-a-task)
103
+ - [Case 1. Single agent handling task:](#case-1-single-agent-handling-task)
104
104
  - [Case 2. Form a team to handle multiple tasks:](#case-2-form-a-team-to-handle-multiple-tasks)
105
105
  - [Technologies Used](#technologies-used)
106
106
  - [Project Structure](#project-structure)
@@ -142,45 +142,49 @@ Multiple `agents` can form a `team` to complete complex tasks together.
142
142
 
143
143
  1. Install `versionhq` package:
144
144
  ```
145
- uv pip install versionhq
145
+ pip install versionhq
146
146
  ```
147
147
 
148
148
  2. You can use the `versionhq` module in your Python app.
149
149
 
150
150
 
151
- ### Case 1. Build an AI agent on LLM of your choice and execute a task:
151
+ ### Case 1. Single agent handling task:
152
152
 
153
153
  ```
154
+ from pydantic import BaseModel
154
155
  from versionhq.agent.model import Agent
155
- from versionhq.task.model import Task, ResponseField
156
+ from versionhq.task.model import Task
156
157
 
157
- def my_callback_func():
158
- """callback func"""
158
+ class CustomOutput(BaseModel):
159
+ test1: str
160
+ test2: list[str]
159
161
 
160
- agent = Agent(
161
- role="demo",
162
- goal="amazing project goal",
163
- skillsets=["skill_1", "skill_2", ],
164
- tools=["amazing RAG tool",]
165
- llm="llm-of-your-choice"
166
- )
162
+ def dummy_func(message: str, test1: str, test2: list[str]) -> str:
163
+ return f"{message}: {test1}, {", ".join(test2)}"
164
+
165
+
166
+ agent = Agent(role="demo", goal="amazing project goal")
167
167
 
168
168
  task = Task(
169
169
  description="Amazing task",
170
- response_fields=[
171
- ResponseField(title="test1", data_type=str, required=True),
172
- ResponseField(title="test2", data_type=list, items=str, required=True),
173
- ],
174
- callbacks=[my_callback_func]
170
+ pydantic_custom_output=CustomOutput,
171
+ callback=dummy_func,
172
+ callback_kwargs=dict(message="Hi! Here is the result: ")
175
173
  )
174
+
176
175
  res = task.execute_sync(agent=agent, context="amazing context to consider.")
177
- return res.to_dict()
176
+ print(res)
178
177
  ```
179
178
 
180
- This will return a dictionary with keys defined in the `ResponseField`.
179
+ This will return a `TaskOutput` instance with response in raw, JSON dict, and Pydantic model: `CustomOutput` formats with a callback result.
181
180
 
182
181
  ```
183
- { test1: "answer1", "test2": ["answer2-1", "answer2-2", "answer2-3",] }
182
+ res == TaskOutput(
183
+ raw="{\\"test1\\": \\"random str\\", \\"test2\\": [\\"item1\\", \\"item2\\"]}",
184
+ json_dict={"test1": "random str", "test2": ["item1", "item2"]},
185
+ pydantic=CustomOutput(test1="random str", test2=["item 1", "item 2"]),
186
+ callback_output="Hi! Here is the result: random str, item 1, item 2",
187
+ )
184
188
  ```
185
189
 
186
190
  ### Case 2. Form a team to handle multiple tasks:
@@ -41,7 +41,7 @@ LLM-powered `agent`s and `team`s use `tool`s and their own knowledge to complete
41
41
 
42
42
  - [Key Features](#key-features)
43
43
  - [Usage](#usage)
44
- - [Case 1. Build an AI agent on LLM of your choice and execute a task:](#case-1-build-an-ai-agent-on-llm-of-your-choice-and-execute-a-task)
44
+ - [Case 1. Single agent handling task:](#case-1-single-agent-handling-task)
45
45
  - [Case 2. Form a team to handle multiple tasks:](#case-2-form-a-team-to-handle-multiple-tasks)
46
46
  - [Technologies Used](#technologies-used)
47
47
  - [Project Structure](#project-structure)
@@ -83,45 +83,49 @@ Multiple `agents` can form a `team` to complete complex tasks together.
83
83
 
84
84
  1. Install `versionhq` package:
85
85
  ```
86
- uv pip install versionhq
86
+ pip install versionhq
87
87
  ```
88
88
 
89
89
  2. You can use the `versionhq` module in your Python app.
90
90
 
91
91
 
92
- ### Case 1. Build an AI agent on LLM of your choice and execute a task:
92
+ ### Case 1. Single agent handling task:
93
93
 
94
94
  ```
95
+ from pydantic import BaseModel
95
96
  from versionhq.agent.model import Agent
96
- from versionhq.task.model import Task, ResponseField
97
+ from versionhq.task.model import Task
97
98
 
98
- def my_callback_func():
99
- """callback func"""
99
+ class CustomOutput(BaseModel):
100
+ test1: str
101
+ test2: list[str]
100
102
 
101
- agent = Agent(
102
- role="demo",
103
- goal="amazing project goal",
104
- skillsets=["skill_1", "skill_2", ],
105
- tools=["amazing RAG tool",]
106
- llm="llm-of-your-choice"
107
- )
103
+ def dummy_func(message: str, test1: str, test2: list[str]) -> str:
104
+ return f"{message}: {test1}, {", ".join(test2)}"
105
+
106
+
107
+ agent = Agent(role="demo", goal="amazing project goal")
108
108
 
109
109
  task = Task(
110
110
  description="Amazing task",
111
- response_fields=[
112
- ResponseField(title="test1", data_type=str, required=True),
113
- ResponseField(title="test2", data_type=list, items=str, required=True),
114
- ],
115
- callbacks=[my_callback_func]
111
+ pydantic_custom_output=CustomOutput,
112
+ callback=dummy_func,
113
+ callback_kwargs=dict(message="Hi! Here is the result: ")
116
114
  )
115
+
117
116
  res = task.execute_sync(agent=agent, context="amazing context to consider.")
118
- return res.to_dict()
117
+ print(res)
119
118
  ```
120
119
 
121
- This will return a dictionary with keys defined in the `ResponseField`.
120
+ This will return a `TaskOutput` instance with response in raw, JSON dict, and Pydantic model: `CustomOutput` formats with a callback result.
122
121
 
123
122
  ```
124
- { test1: "answer1", "test2": ["answer2-1", "answer2-2", "answer2-3",] }
123
+ res == TaskOutput(
124
+ raw="{\\"test1\\": \\"random str\\", \\"test2\\": [\\"item1\\", \\"item2\\"]}",
125
+ json_dict={"test1": "random str", "test2": ["item1", "item2"]},
126
+ pydantic=CustomOutput(test1="random str", test2=["item 1", "item 2"]),
127
+ callback_output="Hi! Here is the result: random str, item 1, item 2",
128
+ )
125
129
  ```
126
130
 
127
131
  ### Case 2. Form a team to handle multiple tasks:
@@ -15,7 +15,7 @@ exclude = ["test*", "__pycache__"]
15
15
 
16
16
  [project]
17
17
  name = "versionhq"
18
- version = "1.1.10.5"
18
+ version = "1.1.10.6"
19
19
  authors = [{ name = "Kuriko Iwai", email = "kuriko@versi0n.io" }]
20
20
  description = "LLM orchestration frameworks for model-agnostic AI agents that handle complex outbound workflows"
21
21
  readme = "README.md"
@@ -18,7 +18,7 @@ from versionhq.tool.model import Tool
18
18
  from versionhq.tool.composio_tool import ComposioHandler
19
19
 
20
20
 
21
- __version__ = "1.1.10.5"
21
+ __version__ = "1.1.10.6"
22
22
  __all__ = [
23
23
  "Agent",
24
24
  "Customer",
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: versionhq
3
- Version: 1.1.10.5
3
+ Version: 1.1.10.6
4
4
  Summary: LLM orchestration frameworks for model-agnostic AI agents that handle complex outbound workflows
5
5
  Author-email: Kuriko Iwai <kuriko@versi0n.io>
6
6
  License: MIT License
@@ -100,7 +100,7 @@ LLM-powered `agent`s and `team`s use `tool`s and their own knowledge to complete
100
100
 
101
101
  - [Key Features](#key-features)
102
102
  - [Usage](#usage)
103
- - [Case 1. Build an AI agent on LLM of your choice and execute a task:](#case-1-build-an-ai-agent-on-llm-of-your-choice-and-execute-a-task)
103
+ - [Case 1. Single agent handling task:](#case-1-single-agent-handling-task)
104
104
  - [Case 2. Form a team to handle multiple tasks:](#case-2-form-a-team-to-handle-multiple-tasks)
105
105
  - [Technologies Used](#technologies-used)
106
106
  - [Project Structure](#project-structure)
@@ -142,45 +142,49 @@ Multiple `agents` can form a `team` to complete complex tasks together.
142
142
 
143
143
  1. Install `versionhq` package:
144
144
  ```
145
- uv pip install versionhq
145
+ pip install versionhq
146
146
  ```
147
147
 
148
148
  2. You can use the `versionhq` module in your Python app.
149
149
 
150
150
 
151
- ### Case 1. Build an AI agent on LLM of your choice and execute a task:
151
+ ### Case 1. Single agent handling task:
152
152
 
153
153
  ```
154
+ from pydantic import BaseModel
154
155
  from versionhq.agent.model import Agent
155
- from versionhq.task.model import Task, ResponseField
156
+ from versionhq.task.model import Task
156
157
 
157
- def my_callback_func():
158
- """callback func"""
158
+ class CustomOutput(BaseModel):
159
+ test1: str
160
+ test2: list[str]
159
161
 
160
- agent = Agent(
161
- role="demo",
162
- goal="amazing project goal",
163
- skillsets=["skill_1", "skill_2", ],
164
- tools=["amazing RAG tool",]
165
- llm="llm-of-your-choice"
166
- )
162
+ def dummy_func(message: str, test1: str, test2: list[str]) -> str:
163
+ return f"{message}: {test1}, {", ".join(test2)}"
164
+
165
+
166
+ agent = Agent(role="demo", goal="amazing project goal")
167
167
 
168
168
  task = Task(
169
169
  description="Amazing task",
170
- response_fields=[
171
- ResponseField(title="test1", data_type=str, required=True),
172
- ResponseField(title="test2", data_type=list, items=str, required=True),
173
- ],
174
- callbacks=[my_callback_func]
170
+ pydantic_custom_output=CustomOutput,
171
+ callback=dummy_func,
172
+ callback_kwargs=dict(message="Hi! Here is the result: ")
175
173
  )
174
+
176
175
  res = task.execute_sync(agent=agent, context="amazing context to consider.")
177
- return res.to_dict()
176
+ print(res)
178
177
  ```
179
178
 
180
- This will return a dictionary with keys defined in the `ResponseField`.
179
+ This will return a `TaskOutput` instance with response in raw, JSON dict, and Pydantic model: `CustomOutput` formats with a callback result.
181
180
 
182
181
  ```
183
- { test1: "answer1", "test2": ["answer2-1", "answer2-2", "answer2-3",] }
182
+ res == TaskOutput(
183
+ raw="{\\"test1\\": \\"random str\\", \\"test2\\": [\\"item1\\", \\"item2\\"]}",
184
+ json_dict={"test1": "random str", "test2": ["item1", "item2"]},
185
+ pydantic=CustomOutput(test1="random str", test2=["item 1", "item 2"]),
186
+ callback_output="Hi! Here is the result: random str, item 1, item 2",
187
+ )
184
188
  ```
185
189
 
186
190
  ### Case 2. Form a team to handle multiple tasks:
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes