chuk-ai-session-manager 0.7__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.
- chuk_ai_session_manager/__init__.py +84 -40
- chuk_ai_session_manager/api/__init__.py +1 -1
- chuk_ai_session_manager/api/simple_api.py +53 -59
- chuk_ai_session_manager/exceptions.py +31 -17
- chuk_ai_session_manager/guards/__init__.py +118 -0
- chuk_ai_session_manager/guards/bindings.py +217 -0
- chuk_ai_session_manager/guards/cache.py +163 -0
- chuk_ai_session_manager/guards/manager.py +819 -0
- chuk_ai_session_manager/guards/models.py +498 -0
- chuk_ai_session_manager/guards/ungrounded.py +159 -0
- chuk_ai_session_manager/infinite_conversation.py +86 -79
- chuk_ai_session_manager/memory/__init__.py +247 -0
- chuk_ai_session_manager/memory/artifacts_bridge.py +469 -0
- chuk_ai_session_manager/memory/context_packer.py +347 -0
- chuk_ai_session_manager/memory/fault_handler.py +507 -0
- chuk_ai_session_manager/memory/manifest.py +307 -0
- chuk_ai_session_manager/memory/models.py +1084 -0
- chuk_ai_session_manager/memory/mutation_log.py +186 -0
- chuk_ai_session_manager/memory/pack_cache.py +206 -0
- chuk_ai_session_manager/memory/page_table.py +275 -0
- chuk_ai_session_manager/memory/prefetcher.py +192 -0
- chuk_ai_session_manager/memory/tlb.py +247 -0
- chuk_ai_session_manager/memory/vm_prompts.py +238 -0
- chuk_ai_session_manager/memory/working_set.py +574 -0
- chuk_ai_session_manager/models/__init__.py +21 -9
- chuk_ai_session_manager/models/event_source.py +3 -1
- chuk_ai_session_manager/models/event_type.py +10 -1
- chuk_ai_session_manager/models/session.py +103 -68
- chuk_ai_session_manager/models/session_event.py +69 -68
- chuk_ai_session_manager/models/session_metadata.py +9 -10
- chuk_ai_session_manager/models/session_run.py +21 -22
- chuk_ai_session_manager/models/token_usage.py +76 -76
- chuk_ai_session_manager/procedural_memory/__init__.py +70 -0
- chuk_ai_session_manager/procedural_memory/formatter.py +407 -0
- chuk_ai_session_manager/procedural_memory/manager.py +523 -0
- chuk_ai_session_manager/procedural_memory/models.py +371 -0
- chuk_ai_session_manager/sample_tools.py +79 -46
- chuk_ai_session_manager/session_aware_tool_processor.py +27 -16
- chuk_ai_session_manager/session_manager.py +238 -197
- chuk_ai_session_manager/session_prompt_builder.py +163 -111
- chuk_ai_session_manager/session_storage.py +45 -52
- {chuk_ai_session_manager-0.7.dist-info → chuk_ai_session_manager-0.8.dist-info}/METADATA +78 -2
- chuk_ai_session_manager-0.8.dist-info/RECORD +45 -0
- {chuk_ai_session_manager-0.7.dist-info → chuk_ai_session_manager-0.8.dist-info}/WHEEL +1 -1
- chuk_ai_session_manager-0.7.dist-info/RECORD +0 -22
- {chuk_ai_session_manager-0.7.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
|
|
43
|
+
self.session_id = session_id
|
|
44
44
|
self.enable_caching = enable_caching
|
|
45
|
-
self.max_retries
|
|
46
|
-
self.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(
|
|
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
|
|
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":
|
|
99
|
+
"tool": res.tool,
|
|
98
100
|
"arguments": getattr(res, "arguments", None),
|
|
99
|
-
"result":
|
|
100
|
-
"error":
|
|
101
|
-
"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
|
|
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(
|
|
149
|
-
|
|
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(
|
|
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,
|
|
176
|
-
|
|
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
|