chuk-ai-session-manager 0.7.1__py3-none-any.whl → 0.8__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.
Files changed (46) hide show
  1. chuk_ai_session_manager/__init__.py +84 -40
  2. chuk_ai_session_manager/api/__init__.py +1 -1
  3. chuk_ai_session_manager/api/simple_api.py +53 -59
  4. chuk_ai_session_manager/exceptions.py +31 -17
  5. chuk_ai_session_manager/guards/__init__.py +118 -0
  6. chuk_ai_session_manager/guards/bindings.py +217 -0
  7. chuk_ai_session_manager/guards/cache.py +163 -0
  8. chuk_ai_session_manager/guards/manager.py +819 -0
  9. chuk_ai_session_manager/guards/models.py +498 -0
  10. chuk_ai_session_manager/guards/ungrounded.py +159 -0
  11. chuk_ai_session_manager/infinite_conversation.py +86 -79
  12. chuk_ai_session_manager/memory/__init__.py +247 -0
  13. chuk_ai_session_manager/memory/artifacts_bridge.py +469 -0
  14. chuk_ai_session_manager/memory/context_packer.py +347 -0
  15. chuk_ai_session_manager/memory/fault_handler.py +507 -0
  16. chuk_ai_session_manager/memory/manifest.py +307 -0
  17. chuk_ai_session_manager/memory/models.py +1084 -0
  18. chuk_ai_session_manager/memory/mutation_log.py +186 -0
  19. chuk_ai_session_manager/memory/pack_cache.py +206 -0
  20. chuk_ai_session_manager/memory/page_table.py +275 -0
  21. chuk_ai_session_manager/memory/prefetcher.py +192 -0
  22. chuk_ai_session_manager/memory/tlb.py +247 -0
  23. chuk_ai_session_manager/memory/vm_prompts.py +238 -0
  24. chuk_ai_session_manager/memory/working_set.py +574 -0
  25. chuk_ai_session_manager/models/__init__.py +21 -9
  26. chuk_ai_session_manager/models/event_source.py +3 -1
  27. chuk_ai_session_manager/models/event_type.py +10 -1
  28. chuk_ai_session_manager/models/session.py +103 -68
  29. chuk_ai_session_manager/models/session_event.py +69 -68
  30. chuk_ai_session_manager/models/session_metadata.py +9 -10
  31. chuk_ai_session_manager/models/session_run.py +21 -22
  32. chuk_ai_session_manager/models/token_usage.py +76 -76
  33. chuk_ai_session_manager/procedural_memory/__init__.py +70 -0
  34. chuk_ai_session_manager/procedural_memory/formatter.py +407 -0
  35. chuk_ai_session_manager/procedural_memory/manager.py +523 -0
  36. chuk_ai_session_manager/procedural_memory/models.py +371 -0
  37. chuk_ai_session_manager/sample_tools.py +79 -46
  38. chuk_ai_session_manager/session_aware_tool_processor.py +27 -16
  39. chuk_ai_session_manager/session_manager.py +238 -197
  40. chuk_ai_session_manager/session_prompt_builder.py +163 -111
  41. chuk_ai_session_manager/session_storage.py +45 -52
  42. {chuk_ai_session_manager-0.7.1.dist-info → chuk_ai_session_manager-0.8.dist-info}/METADATA +79 -3
  43. chuk_ai_session_manager-0.8.dist-info/RECORD +45 -0
  44. {chuk_ai_session_manager-0.7.1.dist-info → chuk_ai_session_manager-0.8.dist-info}/WHEEL +1 -1
  45. chuk_ai_session_manager-0.7.1.dist-info/RECORD +0 -22
  46. {chuk_ai_session_manager-0.7.1.dist-info → chuk_ai_session_manager-0.8.dist-info}/top_level.txt +0 -0
@@ -40,15 +40,17 @@ class SessionAwareToolProcessor:
40
40
  max_retries: int = 2,
41
41
  retry_delay: float = 1.0,
42
42
  ) -> None:
43
- self.session_id = session_id
43
+ self.session_id = session_id
44
44
  self.enable_caching = enable_caching
45
- self.max_retries = max_retries
46
- self.retry_delay = retry_delay
45
+ self.max_retries = max_retries
46
+ self.retry_delay = retry_delay
47
47
  self.cache: Dict[str, ToolResult] = {}
48
48
 
49
49
  self._tp = ToolProcessor()
50
50
  if not hasattr(self._tp, "executor"):
51
- raise AttributeError("Installed chuk_tool_processor is too old - missing `.executor`")
51
+ raise AttributeError(
52
+ "Installed chuk_tool_processor is too old - missing `.executor`"
53
+ )
52
54
 
53
55
  @classmethod
54
56
  async def create(cls, session_id: str, **kwargs):
@@ -66,7 +68,7 @@ class SessionAwareToolProcessor:
66
68
  """Convert dicts → ToolCall and drive the executor."""
67
69
  tool_calls: list[ToolCall] = []
68
70
  for c in calls:
69
- fn = c.get("function", {})
71
+ fn = c.get("function", {})
70
72
  name = fn.get("name", "tool")
71
73
  try:
72
74
  args = json.loads(fn.get("arguments", "{}"))
@@ -94,11 +96,11 @@ class SessionAwareToolProcessor:
94
96
 
95
97
  ev = await SessionEvent.create_with_tokens(
96
98
  message={
97
- "tool": res.tool,
99
+ "tool": res.tool,
98
100
  "arguments": getattr(res, "arguments", None),
99
- "result": result_str,
100
- "error": res.error,
101
- "cached": cached,
101
+ "result": result_str,
102
+ "error": res.error,
103
+ "cached": cached,
102
104
  },
103
105
  prompt=f"{res.tool}({json.dumps(getattr(res, 'arguments', None), default=str)})",
104
106
  completion=result_str,
@@ -137,7 +139,7 @@ class SessionAwareToolProcessor:
137
139
 
138
140
  out: list[ToolResult] = []
139
141
  for call in calls:
140
- fn = call.get("function", {})
142
+ fn = call.get("function", {})
141
143
  name = fn.get("name", "tool")
142
144
  try:
143
145
  args = json.loads(fn.get("arguments", "{}"))
@@ -145,8 +147,11 @@ class SessionAwareToolProcessor:
145
147
  args = {"raw": fn.get("arguments")}
146
148
 
147
149
  cache_key = (
148
- hashlib.md5(f"{name}:{json.dumps(args, sort_keys=True)}".encode()).hexdigest()
149
- if self.enable_caching else None
150
+ hashlib.md5(
151
+ f"{name}:{json.dumps(args, sort_keys=True)}".encode()
152
+ ).hexdigest()
153
+ if self.enable_caching
154
+ else None
150
155
  )
151
156
 
152
157
  # 1) cache hit --------------------------------------------------
@@ -162,7 +167,9 @@ class SessionAwareToolProcessor:
162
167
  res = (await self._exec_calls([call]))[0]
163
168
  if cache_key:
164
169
  self.cache[cache_key] = res
165
- await self._log_event(session, parent_evt.id, res, attempt, cached=False)
170
+ await self._log_event(
171
+ session, parent_evt.id, res, attempt, cached=False
172
+ )
166
173
  out.append(res)
167
174
  break
168
175
  except Exception as exc: # noqa: BLE001
@@ -172,9 +179,13 @@ class SessionAwareToolProcessor:
172
179
  continue
173
180
  err_res = ToolResult(tool=name, result=None, error=last_err) # type: ignore[arg-type]
174
181
  await self._log_event(
175
- session, parent_evt.id, err_res, attempt,
176
- cached=False, failed=True
182
+ session,
183
+ parent_evt.id,
184
+ err_res,
185
+ attempt,
186
+ cached=False,
187
+ failed=True,
177
188
  )
178
189
  out.append(err_res)
179
190
 
180
- return out
191
+ return out