chuk-ai-session-manager 0.7.1__py3-none-any.whl → 0.8.1__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 +259 -232
  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.1.dist-info}/METADATA +80 -4
  43. chuk_ai_session_manager-0.8.1.dist-info/RECORD +45 -0
  44. {chuk_ai_session_manager-0.7.1.dist-info → chuk_ai_session_manager-0.8.1.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.1.dist-info}/top_level.txt +0 -0
@@ -20,7 +20,7 @@ except ImportError as e:
20
20
  f"Cannot import SessionManager from chuk_sessions: {e}\n"
21
21
  "Please ensure chuk_sessions is properly installed with: uv add chuk-sessions\n"
22
22
  "Or check the available classes in chuk_sessions by running:\n"
23
- "python -c \"import chuk_sessions; print(dir(chuk_sessions))\""
23
+ 'python -c "import chuk_sessions; print(dir(chuk_sessions))"'
24
24
  ) from e
25
25
 
26
26
  from chuk_ai_session_manager.models.session import Session
@@ -31,81 +31,76 @@ logger = logging.getLogger(__name__)
31
31
  class SessionStorage:
32
32
  """
33
33
  CHUK Sessions backend for AI Session Manager.
34
-
34
+
35
35
  Stores AI sessions as JSON in CHUK Sessions custom metadata.
36
36
  All provider logic is handled by CHUK Sessions.
37
37
  """
38
-
38
+
39
39
  def __init__(
40
- self,
41
- sandbox_id: str = "ai-session-manager",
42
- default_ttl_hours: int = 24
40
+ self, sandbox_id: str = "ai-session-manager", default_ttl_hours: int = 24
43
41
  ):
44
42
  self.chuk = ChukSessionManager(
45
- sandbox_id=sandbox_id,
46
- default_ttl_hours=default_ttl_hours
43
+ sandbox_id=sandbox_id, default_ttl_hours=default_ttl_hours
47
44
  )
48
45
  self.sandbox_id = sandbox_id
49
46
  self._cache: Dict[str, Session] = {}
50
-
47
+
51
48
  logger.info(f"AI Session Manager using CHUK Sessions (sandbox: {sandbox_id})")
52
-
49
+
53
50
  async def get(self, session_id: str) -> Optional[Session]:
54
51
  """Get AI session by ID."""
55
52
  if session_id in self._cache:
56
53
  return self._cache[session_id]
57
-
54
+
58
55
  try:
59
56
  # Get session info from CHUK Sessions
60
57
  info = await self.chuk.get_session_info(session_id)
61
58
  if not info:
62
59
  return None
63
-
60
+
64
61
  # Check if it's an AI session manager session
65
- custom_metadata = info.get('custom_metadata', {})
66
- if custom_metadata.get('session_type') != 'ai_session_manager':
62
+ custom_metadata = info.get("custom_metadata", {})
63
+ if custom_metadata.get("session_type") != "ai_session_manager":
67
64
  return None
68
-
69
- ai_session_json = custom_metadata.get('ai_session_data')
65
+
66
+ ai_session_json = custom_metadata.get("ai_session_data")
70
67
  if not ai_session_json:
71
68
  return None
72
-
69
+
73
70
  # Parse the JSON data
74
71
  session_data = json.loads(ai_session_json)
75
72
  ai_session = Session.model_validate(session_data)
76
-
73
+
77
74
  self._cache[session_id] = ai_session
78
75
  return ai_session
79
-
76
+
80
77
  except Exception as e:
81
78
  logger.error(f"Failed to get AI session {session_id}: {e}")
82
79
  return None
83
-
80
+
84
81
  async def save(self, session: Session) -> None:
85
82
  """Save AI session to CHUK Sessions."""
86
83
  try:
87
84
  # Use Pydantic's model_dump_json which handles datetime serialization properly
88
85
  session_json = session.model_dump_json()
89
86
  user_id = self._extract_user_id(session)
90
-
87
+
91
88
  custom_metadata = {
92
- 'ai_session_data': session_json,
93
- 'event_count': len(session.events),
94
- 'session_type': 'ai_session_manager'
89
+ "ai_session_data": session_json,
90
+ "event_count": len(session.events),
91
+ "session_type": "ai_session_manager",
95
92
  }
96
-
93
+
97
94
  await self.chuk.allocate_session(
98
- session_id=session.id,
99
- user_id=user_id,
100
- custom_metadata=custom_metadata
95
+ session_id=session.id, user_id=user_id, custom_metadata=custom_metadata
101
96
  )
102
-
97
+
103
98
  self._cache[session.id] = session
104
-
99
+
105
100
  except Exception as e:
106
101
  logger.error(f"Failed to save AI session {session.id}: {e}")
107
102
  raise
108
-
103
+
109
104
  async def delete(self, session_id: str) -> None:
110
105
  """Delete AI session."""
111
106
  try:
@@ -114,34 +109,34 @@ class SessionStorage:
114
109
  except Exception as e:
115
110
  logger.error(f"Failed to delete AI session {session_id}: {e}")
116
111
  raise
117
-
112
+
118
113
  async def list_sessions(self, prefix: str = "") -> List[str]:
119
114
  """List AI session IDs."""
120
115
  session_ids = list(self._cache.keys())
121
116
  if prefix:
122
117
  session_ids = [sid for sid in session_ids if sid.startswith(prefix)]
123
118
  return session_ids
124
-
119
+
125
120
  def _extract_user_id(self, session: Session) -> Optional[str]:
126
121
  """Extract user ID from AI session metadata."""
127
122
  try:
128
- if hasattr(session.metadata, 'properties'):
129
- return session.metadata.properties.get('user_id')
130
- except:
123
+ if hasattr(session.metadata, "properties"):
124
+ return session.metadata.properties.get("user_id")
125
+ except (AttributeError, TypeError):
131
126
  pass
132
127
  return None
133
-
128
+
134
129
  async def extend_session_ttl(self, session_id: str, additional_hours: int) -> bool:
135
130
  """Extend session TTL."""
136
131
  return await self.chuk.extend_session_ttl(session_id, additional_hours)
137
-
132
+
138
133
  def get_stats(self) -> Dict[str, Any]:
139
134
  """Get storage statistics."""
140
135
  return {
141
- 'backend': 'chuk_sessions',
142
- 'sandbox_id': self.sandbox_id,
143
- 'cached_ai_sessions': len(self._cache),
144
- 'chuk_sessions_stats': self.chuk.get_cache_stats()
136
+ "backend": "chuk_sessions",
137
+ "sandbox_id": self.sandbox_id,
138
+ "cached_ai_sessions": len(self._cache),
139
+ "chuk_sessions_stats": self.chuk.get_cache_stats(),
145
140
  }
146
141
 
147
142
 
@@ -158,32 +153,30 @@ def get_backend() -> SessionStorage:
158
153
 
159
154
 
160
155
  def setup_chuk_sessions_storage(
161
- sandbox_id: str = "ai-session-manager",
162
- default_ttl_hours: int = 24
156
+ sandbox_id: str = "ai-session-manager", default_ttl_hours: int = 24
163
157
  ) -> SessionStorage:
164
158
  """Set up CHUK Sessions as the storage backend."""
165
159
  global _backend
166
160
  _backend = SessionStorage(
167
- sandbox_id=sandbox_id,
168
- default_ttl_hours=default_ttl_hours
161
+ sandbox_id=sandbox_id, default_ttl_hours=default_ttl_hours
169
162
  )
170
163
  return _backend
171
164
 
172
165
 
173
166
  class ChukSessionsStore:
174
167
  """Storage interface adapter for CHUK Sessions."""
175
-
168
+
176
169
  def __init__(self, backend: Optional[SessionStorage] = None):
177
170
  self.backend = backend or get_backend()
178
-
171
+
179
172
  async def get(self, session_id: str) -> Optional[Session]:
180
173
  return await self.backend.get(session_id)
181
-
174
+
182
175
  async def save(self, session: Session) -> None:
183
176
  await self.backend.save(session)
184
-
177
+
185
178
  async def delete(self, session_id: str) -> None:
186
179
  await self.backend.delete(session_id)
187
-
180
+
188
181
  async def list_sessions(self, prefix: str = "") -> List[str]:
189
- return await self.backend.list_sessions(prefix)
182
+ return await self.backend.list_sessions(prefix)
@@ -1,11 +1,11 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: chuk-ai-session-manager
3
- Version: 0.7.1
3
+ Version: 0.8.1
4
4
  Summary: Session manager for AI applications
5
5
  Requires-Python: >=3.11
6
6
  Description-Content-Type: text/markdown
7
- Requires-Dist: chuk-sessions>=0.4.2
8
- Requires-Dist: chuk-tool-processor>=0.4.1
7
+ Requires-Dist: chuk-sessions>=0.4.1
8
+ Requires-Dist: chuk-tool-processor>=0.18
9
9
  Requires-Dist: pydantic>=2.11.3
10
10
  Provides-Extra: redis
11
11
  Requires-Dist: chuk-sessions[redis]>=0.4.1; extra == "redis"
@@ -15,7 +15,7 @@ Requires-Dist: tiktoken>=0.9.0; extra == "tiktoken"
15
15
  Provides-Extra: dev
16
16
  Requires-Dist: pytest>=7.0.0; extra == "dev"
17
17
  Requires-Dist: pytest-cov>=4.0.0; extra == "dev"
18
- Requires-Dist: pytest-asyncio>=0.21.0; extra == "dev"
18
+ Requires-Dist: pytest-asyncio>=1.0.0; extra == "dev"
19
19
  Requires-Dist: black>=23.0.0; extra == "dev"
20
20
  Requires-Dist: isort>=5.12.0; extra == "dev"
21
21
  Requires-Dist: mypy>=1.0.0; extra == "dev"
@@ -74,6 +74,35 @@ That's it! Zero configuration required.
74
74
 
75
75
  ## ⚡ Major Features
76
76
 
77
+ ### 🧠 **AI Virtual Memory**
78
+ OS-style memory management for AI context windows. Pages, working sets, faults, and eviction - giving conversations the illusion of infinite memory.
79
+
80
+ ```python
81
+ from chuk_ai_session_manager.memory import (
82
+ MemoryPage, PageTable, WorkingSetManager,
83
+ ContextPacker, ManifestBuilder, PageType,
84
+ )
85
+
86
+ # Create pages with type classification
87
+ claim = MemoryPage(
88
+ page_id="claim_auth",
89
+ page_type=PageType.CLAIM, # High-value, low eviction priority
90
+ content="Decision: Use JWT for authentication",
91
+ provenance=["msg_042", "msg_043"],
92
+ )
93
+
94
+ # Track in page table and working set
95
+ table = PageTable()
96
+ table.register(claim)
97
+
98
+ # Pack context for model with manifest
99
+ packer = ContextPacker()
100
+ packed = packer.pack([claim])
101
+ # Model sees VM:CONTEXT with page citations
102
+ ```
103
+
104
+ See [AI Virtual Memory docs](docs/memory/README.md) for full documentation.
105
+
77
106
  ### 🎯 **Zero-Configuration Tracking**
78
107
  ```python
79
108
  from chuk_ai_session_manager import SessionManager
@@ -104,6 +133,51 @@ await sm.ai_responds("Computing history begins with...", model="gpt-4")
104
133
  | `pip install chuk-ai-session-manager` | Memory | Development, testing | 1.8M ops/sec |
105
134
  | `pip install chuk-ai-session-manager[redis]` | Redis | Production, persistence | 20K ops/sec |
106
135
 
136
+ ### 🛡️ **Conversation Guards and Tool State**
137
+ Runtime guardrails that prevent runaway tool loops, track value bindings, and enforce grounded tool calls.
138
+
139
+ ```python
140
+ from chuk_ai_session_manager.guards import get_tool_state, ToolStateManager
141
+
142
+ # Get the singleton tool state manager
143
+ tool_state = get_tool_state()
144
+
145
+ # Track tool calls and bind results as $v0, $v1, ...
146
+ binding = tool_state.bind_value("sqrt", {"x": 16}, 4.0)
147
+ # LLM can now reference $v0 in subsequent calls
148
+
149
+ # Check for runaway tool loops
150
+ status = tool_state.check_runaway()
151
+
152
+ # Detect ungrounded calls (missing $vN references)
153
+ check = tool_state.check_ungrounded_call("normal_cdf", {"mean": 0, "std": 1, "x": 1.5})
154
+
155
+ # Reset state for a new prompt
156
+ tool_state.reset_for_new_prompt()
157
+ ```
158
+
159
+ **Guard components:**
160
+ - `ToolStateManager` - Coordinator for all guards, bindings, and cache
161
+ - `BindingManager` - `$vN` reference system for tracking tool results
162
+ - `ResultCache` - Tool result caching for deduplication
163
+ - `UngroundedGuard` - Detects calls with missing computed-value references
164
+ - Runtime guards (budget, runaway, per-tool limits) from `chuk-tool-processor`
165
+
166
+ ### 🧩 **Procedural Memory**
167
+ Learn from tool call history to improve future tool use.
168
+
169
+ ```python
170
+ from chuk_ai_session_manager import ToolMemoryManager, ProceduralContextFormatter
171
+
172
+ # Record tool outcomes
173
+ memory = ToolMemoryManager()
174
+ await memory.record("calculator", {"op": "add", "a": 5, "b": 3}, result=8, success=True)
175
+
176
+ # Format learned patterns for the model's context
177
+ formatter = ProceduralContextFormatter()
178
+ context = formatter.format(memory.get_patterns())
179
+ ```
180
+
107
181
  ### 🛠️ **Tool Integration**
108
182
  ```python
109
183
  # Automatic tool call tracking
@@ -222,6 +296,8 @@ Session Segments: {stats.get('session_segments', 1)}
222
296
  - **Production Ready**: Built-in persistence, monitoring, and error handling
223
297
  - **Token Aware**: Automatic cost tracking across all providers
224
298
  - **Tool Friendly**: Seamless tool call logging and retry mechanisms
299
+ - **Guardrails**: Runtime guards prevent runaway tool loops and ungrounded calls
300
+ - **Procedural Memory**: Learn from tool call history to improve future use
225
301
 
226
302
  ## 🛡️ Error Handling
227
303
 
@@ -0,0 +1,45 @@
1
+ chuk_ai_session_manager/__init__.py,sha256=bOe9gnKjblWKudA6EyUKlPDOypa6D2H8agImFIXxUK4,8794
2
+ chuk_ai_session_manager/exceptions.py,sha256=xkjLB3tc0ObyAAUNIaklN2rY8LD-qTia3BwxdgAaY4k,4412
3
+ chuk_ai_session_manager/infinite_conversation.py,sha256=SSCxCMfvgX30hfoB8IKqAnI_sQfqK7u0juUFyzUxZjk,11792
4
+ chuk_ai_session_manager/sample_tools.py,sha256=1W81aE8qsUde5UZOup_k3r_9BrlVx3J77awj9eLhCgw,8287
5
+ chuk_ai_session_manager/session_aware_tool_processor.py,sha256=vaCcWPh4i77Ur9lrYjUaHI_UucITc2nTaQ8BDlF2alQ,7473
6
+ chuk_ai_session_manager/session_manager.py,sha256=lMaOSLuC48mLPmTFVRr4OGpJiJLUDEJ2UocSVHzhlOg,28032
7
+ chuk_ai_session_manager/session_prompt_builder.py,sha256=T99BPgfoJxujQYM5TlU72IbpoPQ90YLQTvKEa-sQL-o,18097
8
+ chuk_ai_session_manager/session_storage.py,sha256=9kINMmujlqYiTaiTKhnIJO1hfC76LEqrP2zc4wZiLnc,6203
9
+ chuk_ai_session_manager/api/__init__.py,sha256=APDZLJTWC9cZbIuigiIzmI2uN1_CG-5Nk4rmdgMU08Q,42
10
+ chuk_ai_session_manager/api/simple_api.py,sha256=LjkYec8_lqbARszdJHQfqaTYlWJ1xMqslHMxQZf1kiA,10253
11
+ chuk_ai_session_manager/guards/__init__.py,sha256=UVpSqMqbjhMny4JK0D5ZNpzO2YxXq23of0ZkauuXPyQ,2731
12
+ chuk_ai_session_manager/guards/bindings.py,sha256=afyiyP-HBn5dQPPYJOLBUP8bRWFvbH-NAE1t0QGnHXM,6898
13
+ chuk_ai_session_manager/guards/cache.py,sha256=QztAjsFZmh6H_V0GBKUkRwQA_pd1SbdpO_LQruLRfqQ,5254
14
+ chuk_ai_session_manager/guards/manager.py,sha256=OKjqZxl4-DaGfoQfKiMy7z3vS2EauNDDmDJZRpbpU74,30605
15
+ chuk_ai_session_manager/guards/models.py,sha256=TQ6m8b4DURrum7-NNid03tMDOZ6bGjMDpVYxCPNud-o,16425
16
+ chuk_ai_session_manager/guards/ungrounded.py,sha256=c60RfBXXfsWONtHQ7KG69LBxVgl2fHGlD6hMJH0Pzt8,5376
17
+ chuk_ai_session_manager/memory/__init__.py,sha256=UDrugFtN5ury4WcvCwH669qRib_H-VyiULjSaigv8jA,5521
18
+ chuk_ai_session_manager/memory/artifacts_bridge.py,sha256=fCmS1JLzsTmmZkEobKHulPHtcS0hXjmIU2W3x269ZCM,13149
19
+ chuk_ai_session_manager/memory/context_packer.py,sha256=QjOqWLmLe2jfYQ_lncc49pZYwB7J_tPNKXoOYO-rhm8,11784
20
+ chuk_ai_session_manager/memory/fault_handler.py,sha256=cUc5QwrUNl2J7Zd7Nm4kGSCZo35IdjooWcmxNp_yGuM,15798
21
+ chuk_ai_session_manager/memory/manifest.py,sha256=vjCNEHjDrEMvL3OjPFVNul9Q32y4NqmSHL2vaXtZT5k,10125
22
+ chuk_ai_session_manager/memory/models.py,sha256=zm1dtAK6SYtJzOxYyBqOouv9puwR5iHoezPx_ekddEI,33782
23
+ chuk_ai_session_manager/memory/mutation_log.py,sha256=dSGHQnjHIDCMtT9YzuK4PwJXCsDG0yypNgDt2U1n0VM,6138
24
+ chuk_ai_session_manager/memory/pack_cache.py,sha256=7KewvuX0kvbFfgIjPAZVSzt9ICfh1-V75JzIHWmbteg,6088
25
+ chuk_ai_session_manager/memory/page_table.py,sha256=-k-Kd2zLZwK9VNPXZNmH_s22dFxqMmzN9BtL6MJ13hM,8762
26
+ chuk_ai_session_manager/memory/prefetcher.py,sha256=0VX5Uw3NMTV_OpBdYOcAaawp3A7h6wQ-kxcdKwv6uOc,6340
27
+ chuk_ai_session_manager/memory/tlb.py,sha256=iJ1AwCNAhPxR5L3o68idF57W22M5EZNRxusuPBWrUGg,7702
28
+ chuk_ai_session_manager/memory/vm_prompts.py,sha256=xsa__nIV4L2GeiIPmNbJrm5-Jm0CEqmKipOkLExUN6k,8106
29
+ chuk_ai_session_manager/memory/working_set.py,sha256=7P1SazsT15YyLxY5jEgq5EX_nYNFjY6tUnoFUxQXyoI,19441
30
+ chuk_ai_session_manager/models/__init__.py,sha256=Lor8zOLGRjJQzGRM5S5pyOHyhjf-U8nJsvQM6KZDJPw,1345
31
+ chuk_ai_session_manager/models/event_source.py,sha256=xbcGHwCBVWJeIQGDkoecH2iKyt9XoFfnchFS_8bMwRc,199
32
+ chuk_ai_session_manager/models/event_type.py,sha256=OOdLQGBqG1QlBJvvMEVOvyVoX4RrUpyXSltE4SN9GFw,516
33
+ chuk_ai_session_manager/models/session.py,sha256=PErniz2nntzRmlYNTubb1eSKG0LyUTiJ9qRkTUHx320,12114
34
+ chuk_ai_session_manager/models/session_event.py,sha256=Hzx0tUF-v6693lojnw_j2FWTe-LNR5LfqesFMvCbjgY,8657
35
+ chuk_ai_session_manager/models/session_metadata.py,sha256=o3siHorFPOfk16fpoopA8Wg5qxmEJLIl0d3uiJNJeTE,1456
36
+ chuk_ai_session_manager/models/session_run.py,sha256=Q3scCXXsS3ZegN-iIjUzs49wxVR0G7UOgfgYZXpSVFY,4233
37
+ chuk_ai_session_manager/models/token_usage.py,sha256=sMQzCYrPxzC25-0BTeAAQIR0VLDfNqOC9ykeADrNFlA,11004
38
+ chuk_ai_session_manager/procedural_memory/__init__.py,sha256=ZytWkGBMCnZIqYxKXoIpksdi6ERKiqsc6qkPBNRNe3w,2023
39
+ chuk_ai_session_manager/procedural_memory/formatter.py,sha256=Mq1shYs-ToZw6U5OxAX62MscWd8kUVvE48X8k7MT8n8,12891
40
+ chuk_ai_session_manager/procedural_memory/manager.py,sha256=_wgpxD3dChZRT7mveqfxB0aSueu4XZlZxGPZqWjZaTA,16904
41
+ chuk_ai_session_manager/procedural_memory/models.py,sha256=EdDsMeQA5bGiNr6VU9RbzEG5JGODfTmt2IHqneVAGOo,12137
42
+ chuk_ai_session_manager-0.8.1.dist-info/METADATA,sha256=I7OmmmrRP8Jg8HzSVkUDBKU9fJUQIcFA1J2u7-ZwgT0,10542
43
+ chuk_ai_session_manager-0.8.1.dist-info/WHEEL,sha256=wUyA8OaulRlbfwMtmQsvNngGrxQHAvkKcvRmdizlJi0,92
44
+ chuk_ai_session_manager-0.8.1.dist-info/top_level.txt,sha256=5RinqD0v-niHuLYePUREX4gEWTlrpgtUg0RfexVRBMk,24
45
+ chuk_ai_session_manager-0.8.1.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (80.9.0)
2
+ Generator: setuptools (80.10.2)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5
 
@@ -1,22 +0,0 @@
1
- chuk_ai_session_manager/__init__.py,sha256=r24MtKySdzvUgK8psNHYHiTRzOUAEXPOBmaNg2cjyFw,7882
2
- chuk_ai_session_manager/exceptions.py,sha256=WqrrUZuOAiUmz7tKnSnk0y222U_nV9a8LyaXLayn2fg,4420
3
- chuk_ai_session_manager/infinite_conversation.py,sha256=7j3caMnsX27M5rjj4oOkqiy_2AfcupWwsAWRflnKiSo,12092
4
- chuk_ai_session_manager/sample_tools.py,sha256=U-jTGveTJ95uSnA4jB30fJQJG3K-TGxN9jcOY6qVHZQ,8179
5
- chuk_ai_session_manager/session_aware_tool_processor.py,sha256=iVe3d-qfp5QGkdNrgfZeRYoOjd8nLZ0g6K7HW1thFE8,7274
6
- chuk_ai_session_manager/session_manager.py,sha256=AauyE2XTqAM53fGxpJD73nVwxB3cWH0jMlBXakYTAD0,29195
7
- chuk_ai_session_manager/session_prompt_builder.py,sha256=Jeg_MWses_hFtHtDL7ZQl6EdSNVmVIIrLDrWEoPumfM,17613
8
- chuk_ai_session_manager/session_storage.py,sha256=wb6SPwOKVoov2cGmK6DuorpPM7xbjnCRHrA6VTvG7GE,6427
9
- chuk_ai_session_manager/api/__init__.py,sha256=Lo_BoDW2rSn0Zw-CbjahOxc6ykjjTpucxHZo5FA2Gnc,41
10
- chuk_ai_session_manager/api/simple_api.py,sha256=aUDH2KzkI_M2eUiW9DAQo2KmUYaVa5u25-gSIF3PzGM,10504
11
- chuk_ai_session_manager/models/__init__.py,sha256=H1rRuDQDRf821JPUWUn5Zgwvc5BAqcEGekkHEmX-IgE,1167
12
- chuk_ai_session_manager/models/event_source.py,sha256=mn_D16sXMa6nAX-5BzssygJPz6VF24GRe-3IaH7bTnI,196
13
- chuk_ai_session_manager/models/event_type.py,sha256=TPPvAz-PlXVtrwXDNVFVnhdt1yEfgDGmKDGt8ArYcTk,275
14
- chuk_ai_session_manager/models/session.py,sha256=yUPuu6yt8HbBebkIejpgSDGTLhZjtLOxFRkWG2C6XKM,12193
15
- chuk_ai_session_manager/models/session_event.py,sha256=RTghC9_sDHzD8qdgEYCoclJzpVo8cE6B2f7jlsDOVr0,9006
16
- chuk_ai_session_manager/models/session_metadata.py,sha256=KFG7lc_E0BQTP2OD9Y529elVGJXppDUMqz8vVONW0rw,1510
17
- chuk_ai_session_manager/models/session_run.py,sha256=uhMM4-WSrqOUsiWQPnyakInd-foZhxI-YnSHSWiZZwE,4369
18
- chuk_ai_session_manager/models/token_usage.py,sha256=M9Qwmeb2woILaSRwA2SIAiG-sIwC3cL_1H-y3NjW5Ik,11436
19
- chuk_ai_session_manager-0.7.1.dist-info/METADATA,sha256=UFiDpEPfzRXVPX23KPy14pUobcg1Xil-BqKcrEeTNRM,7912
20
- chuk_ai_session_manager-0.7.1.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
21
- chuk_ai_session_manager-0.7.1.dist-info/top_level.txt,sha256=5RinqD0v-niHuLYePUREX4gEWTlrpgtUg0RfexVRBMk,24
22
- chuk_ai_session_manager-0.7.1.dist-info/RECORD,,