versionhq 1.2.2.1__py3-none-any.whl → 1.2.2.2__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- versionhq/__init__.py +1 -1
- versionhq/agent_network/model.py +2 -0
- versionhq/knowledge/source_docling.py +4 -4
- versionhq/memory/contextual_memory.py +37 -15
- versionhq/storage/ltm_sqlite_storage.py +1 -1
- {versionhq-1.2.2.1.dist-info → versionhq-1.2.2.2.dist-info}/METADATA +1 -1
- {versionhq-1.2.2.1.dist-info → versionhq-1.2.2.2.dist-info}/RECORD +10 -10
- {versionhq-1.2.2.1.dist-info → versionhq-1.2.2.2.dist-info}/LICENSE +0 -0
- {versionhq-1.2.2.1.dist-info → versionhq-1.2.2.2.dist-info}/WHEEL +0 -0
- {versionhq-1.2.2.1.dist-info → versionhq-1.2.2.2.dist-info}/top_level.txt +0 -0
versionhq/__init__.py
CHANGED
versionhq/agent_network/model.py
CHANGED
@@ -263,6 +263,8 @@ class AgentNetwork(BaseModel):
|
|
263
263
|
task = self.tasks[0]
|
264
264
|
responsible_agent = self._get_responsible_agent(task=task)
|
265
265
|
res = task.execute(agent=responsible_agent)
|
266
|
+
node = Node(task=task)
|
267
|
+
task_graph = TaskGraph(nodes={ node.identifier: node, }, concl=res if res else None)
|
266
268
|
return res, task_graph
|
267
269
|
|
268
270
|
nodes = [
|
@@ -9,10 +9,10 @@ try:
|
|
9
9
|
from docling_core.transforms.chunker.hierarchical_chunker import HierarchicalChunker
|
10
10
|
from docling_core.types.doc.document import DoclingDocument
|
11
11
|
DOCLING_AVAILABLE = True
|
12
|
-
except ImportError:
|
13
|
-
import envoy
|
14
|
-
envoy.run("uv add docling --optional docling")
|
15
|
-
DOCLING_AVAILABLE = True
|
12
|
+
# except ImportError:
|
13
|
+
# import envoy
|
14
|
+
# envoy.run("uv add docling --optional docling")
|
15
|
+
# DOCLING_AVAILABLE = True
|
16
16
|
except:
|
17
17
|
DOCLING_AVAILABLE = False
|
18
18
|
|
@@ -23,25 +23,25 @@ class ContextualMemory:
|
|
23
23
|
self.um = um
|
24
24
|
|
25
25
|
|
26
|
-
def
|
27
|
-
"""
|
28
|
-
Automatically builds a minimal, highly relevant set of contextual information for a given task.
|
29
|
-
"""
|
26
|
+
def _sanitize_query(self, query: str = None) -> str:
|
30
27
|
if not query:
|
31
28
|
return ""
|
32
29
|
|
33
|
-
|
34
|
-
context.append(self._fetch_stm_context(query))
|
35
|
-
if self.memory_provider == "mem0":
|
36
|
-
context.append(self._fetch_user_context(query))
|
37
|
-
return "\n".join(filter(None, context))
|
30
|
+
return query.replace("{", "").replace("}", "")
|
38
31
|
|
39
32
|
|
40
|
-
def _fetch_stm_context(self, query) -> str:
|
33
|
+
def _fetch_stm_context(self, query: str = None) -> str:
|
41
34
|
"""
|
42
|
-
Fetches recent relevant insights from STM
|
35
|
+
Fetches recent relevant insights from STM
|
43
36
|
"""
|
37
|
+
if not query:
|
38
|
+
return ""
|
39
|
+
|
40
|
+
|
44
41
|
stm_results = self.stm.search(query)
|
42
|
+
if not stm_results:
|
43
|
+
return ""
|
44
|
+
|
45
45
|
formatted_results = "\n".join(
|
46
46
|
[
|
47
47
|
f"- {result['memory'] if self.memory_provider == 'mem0' else result['context']}"
|
@@ -51,13 +51,16 @@ class ContextualMemory:
|
|
51
51
|
return f"Recent Insights:\n{formatted_results}" if stm_results else ""
|
52
52
|
|
53
53
|
|
54
|
-
def _fetch_ltm_context(self,
|
54
|
+
def _fetch_ltm_context(self, query: str = None) -> Optional[str]:
|
55
55
|
"""
|
56
56
|
Fetches historical data or insights from LTM that are relevant to the task's description and expected_output, formatted as bullet points.
|
57
57
|
"""
|
58
|
-
|
58
|
+
if not query:
|
59
|
+
return ""
|
60
|
+
|
61
|
+
ltm_results = self.ltm.search(query, latest_n=2)
|
59
62
|
if not ltm_results:
|
60
|
-
return
|
63
|
+
return ""
|
61
64
|
|
62
65
|
formatted_results = [suggestion for result in ltm_results for suggestion in result["metadata"]["suggestions"]]
|
63
66
|
formatted_results = list(dict.fromkeys(formatted_results))
|
@@ -65,10 +68,12 @@ class ContextualMemory:
|
|
65
68
|
return f"Historical Data:\n{formatted_results}" if ltm_results else ""
|
66
69
|
|
67
70
|
|
68
|
-
def _fetch_user_context(self, query: str) -> str:
|
71
|
+
def _fetch_user_context(self, query: str = None) -> str:
|
69
72
|
"""
|
70
73
|
Fetches and formats relevant user information from User Memory.
|
71
74
|
"""
|
75
|
+
if not query:
|
76
|
+
return ""
|
72
77
|
|
73
78
|
user_memories = self.um.search(query)
|
74
79
|
if not user_memories:
|
@@ -78,6 +83,23 @@ class ContextualMemory:
|
|
78
83
|
return f"User memories/preferences:\n{formatted_memories}"
|
79
84
|
|
80
85
|
|
86
|
+
def build_context_for_task(self, query: str = None) -> str:
|
87
|
+
"""
|
88
|
+
Automatically builds a minimal, highly relevant set of contextual information for a given task.
|
89
|
+
"""
|
90
|
+
if not query:
|
91
|
+
return ""
|
92
|
+
|
93
|
+
query = self._sanitize_query(query=query)
|
94
|
+
|
95
|
+
context = []
|
96
|
+
context.append(self._fetch_stm_context(query))
|
97
|
+
context.append(self._fetch_ltm_context(query))
|
98
|
+
if self.memory_provider == "mem0":
|
99
|
+
context.append(self._fetch_user_context(query))
|
100
|
+
return "\n".join(filter(None, context))
|
101
|
+
|
102
|
+
|
81
103
|
# def _fetch_entity_context(self, query) -> str:
|
82
104
|
# """
|
83
105
|
# Fetches relevant entity information from Entity Memory related to the task's description and expected_output,
|
@@ -97,7 +97,7 @@ class LTMSQLiteStorage:
|
|
97
97
|
]
|
98
98
|
|
99
99
|
except sqlite3.Error as e:
|
100
|
-
self._logger.log(level="error", message=f"MEMORY ERROR: An error occurred while querying LTM: {e}",color="red")
|
100
|
+
self._logger.log(level="error", message=f"MEMORY ERROR: An error occurred while querying LTM: {str(e)}",color="red")
|
101
101
|
return None
|
102
102
|
|
103
103
|
|
@@ -1,4 +1,4 @@
|
|
1
|
-
versionhq/__init__.py,sha256=
|
1
|
+
versionhq/__init__.py,sha256=vGvxfqX6PuindBNVOX_OoewD27MqktESYpdzvLvkX_U,2857
|
2
2
|
versionhq/_utils/__init__.py,sha256=d-vYVcORZKG-kkLe_fzE8VbViDpAk9DDOKe2fVK25ew,178
|
3
3
|
versionhq/_utils/i18n.py,sha256=TwA_PnYfDLA6VqlUDPuybdV9lgi3Frh_ASsb_X8jJo8,1483
|
4
4
|
versionhq/_utils/logger.py,sha256=iHxGjm3BvUo5dHKLU88_pc0Z45wzSHOjyJGQkb7OADk,3255
|
@@ -14,7 +14,7 @@ versionhq/agent/TEMPLATES/Backstory.py,sha256=IAhGnnt6VUMe3wO6IzeyZPDNu7XE7Uiu3V
|
|
14
14
|
versionhq/agent/TEMPLATES/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
15
15
|
versionhq/agent_network/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
16
16
|
versionhq/agent_network/formation.py,sha256=CYKNUeKC392wW3leIDIAaGiKADSsumC_vTe0VOnNwRs,7901
|
17
|
-
versionhq/agent_network/model.py,sha256=
|
17
|
+
versionhq/agent_network/model.py,sha256=lr63cmH7ecQrfVAtnN44mtijrnOsfKe-8xOVNBXv-3Q,15696
|
18
18
|
versionhq/cli/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
19
19
|
versionhq/clients/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
20
20
|
versionhq/clients/customer/__init__.py,sha256=-YXh1FQfvpfLacK8SUC7bD7Wx_eIEi4yrkCC_cUasFg,217
|
@@ -28,17 +28,17 @@ versionhq/knowledge/_utils.py,sha256=YWRF8U533cfZes_gZqUvdj-K24MD2ri1R0gjc_aPYyc
|
|
28
28
|
versionhq/knowledge/embedding.py,sha256=KfHc__1THxb5jrg1EMrF-v944RDuIr2hE0l-MtM3Bp0,6826
|
29
29
|
versionhq/knowledge/model.py,sha256=ixH8n5kLtJEp1nPAFYA0piYm-n0nnFDtWFp0r9YEVAs,1787
|
30
30
|
versionhq/knowledge/source.py,sha256=-hEUPtJUHHMx4rUKtiHl19J8xAMw-WVBw34zwa2jZ08,13630
|
31
|
-
versionhq/knowledge/source_docling.py,sha256=
|
31
|
+
versionhq/knowledge/source_docling.py,sha256=OUdWUZ6CCaddvmOKNYpYVzXCzqy9kwuTqsl0supT6GI,5429
|
32
32
|
versionhq/knowledge/storage.py,sha256=7oxCg3W9mFjYH1YmuH9kFtTbNxquzYFjuUjd_TlsB9E,8170
|
33
33
|
versionhq/llm/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
34
34
|
versionhq/llm/llm_vars.py,sha256=wjQK20cKvph6Vq1v71o4d16zBGcHlwq0bzOT_zWno7w,7041
|
35
35
|
versionhq/llm/model.py,sha256=HIBmf8FYV6-cDbZK1ZBu6z3dmF0ZUbKbCelfwxMlgyY,17177
|
36
36
|
versionhq/memory/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
37
|
-
versionhq/memory/contextual_memory.py,sha256=
|
37
|
+
versionhq/memory/contextual_memory.py,sha256=QEMVvHuEXxY7M6-12S8HhyFKf108KfX8Zzt7paPW048,3882
|
38
38
|
versionhq/memory/model.py,sha256=VQR1229t7GQPMItlGAHLtJrb6LrZfSoRA1DRW4z0SOU,8234
|
39
39
|
versionhq/storage/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
40
40
|
versionhq/storage/base.py,sha256=p-Jas0fXQan_qotnRD6seQxrT2lj-uw9-SmHQhdppcs,355
|
41
|
-
versionhq/storage/ltm_sqlite_storage.py,sha256=
|
41
|
+
versionhq/storage/ltm_sqlite_storage.py,sha256=K0Assani1QfFuq5FMxkcMmRlmLUOvw-RNkKyMV70U3g,3956
|
42
42
|
versionhq/storage/mem0_storage.py,sha256=ZY8MELBWaINRv9YuRW5MxH7dj2cII-L0i3xSD6o1-2M,3781
|
43
43
|
versionhq/storage/rag_storage.py,sha256=bS2eE874obarYl-4hT6ZWYWTRsqtfuGpKgKzERmM6Uo,7433
|
44
44
|
versionhq/storage/task_output_storage.py,sha256=M8vInLJ5idGAq17w1juHKXtyPyF-B-rK_P8UcqD-Px8,5357
|
@@ -60,8 +60,8 @@ versionhq/tool/composio_tool_vars.py,sha256=FvBuEXsOQUYnN7RTFxT20kAkiEYkxWKkiVtg
|
|
60
60
|
versionhq/tool/decorator.py,sha256=C4ZM7Xi2gwtEMaSeRo-geo_g_MAkY77WkSLkAuY0AyI,1205
|
61
61
|
versionhq/tool/model.py,sha256=PO4zNWBZcJhYVur381YL1dy6zqurio2jWjtbxOxZMGI,12194
|
62
62
|
versionhq/tool/tool_handler.py,sha256=2m41K8qo5bGCCbwMFferEjT-XZ-mE9F0mDUOBkgivOI,1416
|
63
|
-
versionhq-1.2.2.
|
64
|
-
versionhq-1.2.2.
|
65
|
-
versionhq-1.2.2.
|
66
|
-
versionhq-1.2.2.
|
67
|
-
versionhq-1.2.2.
|
63
|
+
versionhq-1.2.2.2.dist-info/LICENSE,sha256=cRoGGdM73IiDs6nDWKqPlgSv7aR4n-qBXYnJlCMHCeE,1082
|
64
|
+
versionhq-1.2.2.2.dist-info/METADATA,sha256=XZ5QDEnQP1G4U-VFHBsGKBPvVc4vqZMafEp6rZvj89s,22015
|
65
|
+
versionhq-1.2.2.2.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
|
66
|
+
versionhq-1.2.2.2.dist-info/top_level.txt,sha256=DClQwxDWqIUGeRJkA8vBlgeNsYZs4_nJWMonzFt5Wj0,10
|
67
|
+
versionhq-1.2.2.2.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|