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 CHANGED
@@ -31,7 +31,7 @@ from versionhq.agent_network.formation import form_agent_network
31
31
  from versionhq.task_graph.draft import workflow
32
32
 
33
33
 
34
- __version__ = "1.2.2.1"
34
+ __version__ = "1.2.2.2"
35
35
  __all__ = [
36
36
  "Agent",
37
37
 
@@ -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 build_context_for_task(self, query: str = None) -> str:
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
- context = []
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 related to the task's description and expected_output, formatted as bullet points.
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, task) -> Optional[str]:
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
- ltm_results = self.ltm.search(task, latest_n=2)
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 None
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,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: versionhq
3
- Version: 1.2.2.1
3
+ Version: 1.2.2.2
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
@@ -1,4 +1,4 @@
1
- versionhq/__init__.py,sha256=6i-QHTxLobpE8uqqoiPoPnfeTOqY4J8i3ptRaGfo_c0,2857
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=f2i26vyVagzq4g2lIxNivhab45i1dnK8HZV8mVO6Og8,15564
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=mg7bgvKePHn2LlA_XzSFCbS0zOo9xfu_aNOf5cEo6c4,5421
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=WeDujcEp4oud30OusXSPPNrMEQP-vGrt1mcfYopQruU,3483
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=wdUiuwHfJocdk0UGqyrdU4S5Nae1rgsoRNu3LWmGFcI,3951
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.1.dist-info/LICENSE,sha256=cRoGGdM73IiDs6nDWKqPlgSv7aR4n-qBXYnJlCMHCeE,1082
64
- versionhq-1.2.2.1.dist-info/METADATA,sha256=WIONV5Bz91sfCUeeiFQP4GU9TnIletGgOYW-f3mjbEo,22015
65
- versionhq-1.2.2.1.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
66
- versionhq-1.2.2.1.dist-info/top_level.txt,sha256=DClQwxDWqIUGeRJkA8vBlgeNsYZs4_nJWMonzFt5Wj0,10
67
- versionhq-1.2.2.1.dist-info/RECORD,,
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,,