chuk-ai-session-manager 0.1.1__tar.gz → 0.2.1__tar.gz

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 (42) hide show
  1. {chuk_ai_session_manager-0.1.1 → chuk_ai_session_manager-0.2.1}/PKG-INFO +9 -9
  2. {chuk_ai_session_manager-0.1.1 → chuk_ai_session_manager-0.2.1}/README.md +7 -7
  3. {chuk_ai_session_manager-0.1.1 → chuk_ai_session_manager-0.2.1}/pyproject.toml +2 -2
  4. chuk_ai_session_manager-0.2.1/src/chuk_ai_session_manager/__init__.py +359 -0
  5. chuk_ai_session_manager-0.2.1/src/chuk_ai_session_manager/api/__init__.py +1 -0
  6. chuk_ai_session_manager-0.2.1/src/chuk_ai_session_manager/api/simple_api.py +376 -0
  7. {chuk_ai_session_manager-0.1.1 → chuk_ai_session_manager-0.2.1}/src/chuk_ai_session_manager/infinite_conversation.py +7 -4
  8. {chuk_ai_session_manager-0.1.1 → chuk_ai_session_manager-0.2.1}/src/chuk_ai_session_manager/models/session.py +27 -18
  9. {chuk_ai_session_manager-0.1.1 → chuk_ai_session_manager-0.2.1}/src/chuk_ai_session_manager/session_aware_tool_processor.py +6 -4
  10. {chuk_ai_session_manager-0.1.1 → chuk_ai_session_manager-0.2.1}/src/chuk_ai_session_manager/session_prompt_builder.py +6 -4
  11. chuk_ai_session_manager-0.2.1/src/chuk_ai_session_manager/session_storage.py +176 -0
  12. chuk_ai_session_manager-0.2.1/src/chuk_ai_session_manager/utils/status_display_utils.py +474 -0
  13. {chuk_ai_session_manager-0.1.1 → chuk_ai_session_manager-0.2.1}/src/chuk_ai_session_manager.egg-info/PKG-INFO +9 -9
  14. {chuk_ai_session_manager-0.1.1 → chuk_ai_session_manager-0.2.1}/src/chuk_ai_session_manager.egg-info/SOURCES.txt +8 -6
  15. {chuk_ai_session_manager-0.1.1 → chuk_ai_session_manager-0.2.1}/src/chuk_ai_session_manager.egg-info/requires.txt +1 -1
  16. chuk_ai_session_manager-0.2.1/tests/test_basic_functionality.py +126 -0
  17. chuk_ai_session_manager-0.2.1/tests/test_chuk_session_storage.py +249 -0
  18. {chuk_ai_session_manager-0.1.1 → chuk_ai_session_manager-0.2.1}/tests/test_infinite_conversation.py +8 -9
  19. chuk_ai_session_manager-0.2.1/tests/test_infinite_conversation_advanced.py +308 -0
  20. chuk_ai_session_manager-0.2.1/tests/test_session.py +285 -0
  21. {chuk_ai_session_manager-0.1.1 → chuk_ai_session_manager-0.2.1}/tests/test_session_aware_tool_processor.py +14 -8
  22. {chuk_ai_session_manager-0.1.1 → chuk_ai_session_manager-0.2.1}/tests/test_session_prompt_builder.py +1 -1
  23. chuk_ai_session_manager-0.1.1/src/chuk_ai_session_manager/__init__.py +0 -57
  24. chuk_ai_session_manager-0.1.1/src/chuk_ai_session_manager/storage/__init__.py +0 -44
  25. chuk_ai_session_manager-0.1.1/src/chuk_ai_session_manager/storage/base.py +0 -50
  26. chuk_ai_session_manager-0.1.1/src/chuk_ai_session_manager/storage/providers/file.py +0 -348
  27. chuk_ai_session_manager-0.1.1/src/chuk_ai_session_manager/storage/providers/memory.py +0 -96
  28. chuk_ai_session_manager-0.1.1/src/chuk_ai_session_manager/storage/providers/redis.py +0 -295
  29. chuk_ai_session_manager-0.1.1/tests/test_infinite_conversation_advanced.py +0 -170
  30. {chuk_ai_session_manager-0.1.1 → chuk_ai_session_manager-0.2.1}/setup.cfg +0 -0
  31. {chuk_ai_session_manager-0.1.1 → chuk_ai_session_manager-0.2.1}/src/chuk_ai_session_manager/exceptions.py +0 -0
  32. {chuk_ai_session_manager-0.1.1 → chuk_ai_session_manager-0.2.1}/src/chuk_ai_session_manager/models/__init__.py +0 -0
  33. {chuk_ai_session_manager-0.1.1 → chuk_ai_session_manager-0.2.1}/src/chuk_ai_session_manager/models/event_source.py +0 -0
  34. {chuk_ai_session_manager-0.1.1 → chuk_ai_session_manager-0.2.1}/src/chuk_ai_session_manager/models/event_type.py +0 -0
  35. {chuk_ai_session_manager-0.1.1 → chuk_ai_session_manager-0.2.1}/src/chuk_ai_session_manager/models/session_event.py +0 -0
  36. {chuk_ai_session_manager-0.1.1 → chuk_ai_session_manager-0.2.1}/src/chuk_ai_session_manager/models/session_metadata.py +0 -0
  37. {chuk_ai_session_manager-0.1.1 → chuk_ai_session_manager-0.2.1}/src/chuk_ai_session_manager/models/session_run.py +0 -0
  38. {chuk_ai_session_manager-0.1.1 → chuk_ai_session_manager-0.2.1}/src/chuk_ai_session_manager/models/token_usage.py +0 -0
  39. {chuk_ai_session_manager-0.1.1 → chuk_ai_session_manager-0.2.1}/src/chuk_ai_session_manager/sample_tools.py +0 -0
  40. {chuk_ai_session_manager-0.1.1/src/chuk_ai_session_manager/storage/providers → chuk_ai_session_manager-0.2.1/src/chuk_ai_session_manager/utils}/__init__.py +0 -0
  41. {chuk_ai_session_manager-0.1.1 → chuk_ai_session_manager-0.2.1}/src/chuk_ai_session_manager.egg-info/dependency_links.txt +0 -0
  42. {chuk_ai_session_manager-0.1.1 → chuk_ai_session_manager-0.2.1}/src/chuk_ai_session_manager.egg-info/top_level.txt +0 -0
@@ -1,10 +1,10 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: chuk-ai-session-manager
3
- Version: 0.1.1
3
+ Version: 0.2.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: aiofiles>=24.1.0
7
+ Requires-Dist: chuk-sessions>=0.3
8
8
  Requires-Dist: chuk-tool-processor>=0.4.1
9
9
  Requires-Dist: pydantic>=2.11.3
10
10
  Provides-Extra: tiktoken
@@ -70,10 +70,10 @@ This isn't just a demo framework - it's designed for production AI applications
70
70
 
71
71
  ```python
72
72
  import asyncio
73
- from chuk_ai_session_manager.models.session import Session
73
+ from chuk_ai_session_manager.session import Session
74
74
  from chuk_ai_session_manager.models.session_event import SessionEvent
75
75
  from chuk_ai_session_manager.models.event_source import EventSource
76
- from chuk_ai_session_manager.storage import SessionStoreProvider, InMemorySessionStore
76
+ from chuk_ai_session_manager.chuk_sessions_storage import get_backend, ChukSessionsStore, InMemorySessionStore
77
77
 
78
78
  async def main():
79
79
  # Set up storage
@@ -116,8 +116,8 @@ import asyncio
116
116
  import json
117
117
  from openai import AsyncOpenAI
118
118
  from chuk_tool_processor.registry import initialize
119
- from chuk_ai_session_manager.models.session import Session
120
- from chuk_ai_session_manager.storage import SessionStoreProvider, InMemorySessionStore
119
+ from chuk_ai_session_manager.session import Session
120
+ from chuk_ai_session_manager.chuk_sessions_storage import get_backend, ChukSessionsStore, InMemorySessionStore
121
121
 
122
122
  # Import tools - auto-registers via decorators
123
123
  from your_tools import sample_tools
@@ -160,7 +160,7 @@ asyncio.run(openai_integration_demo())
160
160
 
161
161
  ### In-Memory (Default)
162
162
  ```python
163
- from chuk_ai_session_manager.storage import InMemorySessionStore, SessionStoreProvider
163
+ from chuk_ai_session_manager.chuk_sessions_storage import InMemorySessionStore, SessionStoreProvider
164
164
 
165
165
  # Great for testing or single-process applications
166
166
  store = InMemorySessionStore()
@@ -169,7 +169,7 @@ SessionStoreProvider.set_store(store)
169
169
 
170
170
  ### File Storage
171
171
  ```python
172
- from chuk_ai_session_manager.storage.providers.file import create_file_session_store
172
+ from chuk_ai_session_manager.chuk_sessions_storage.providers.file import create_file_session_store
173
173
 
174
174
  # Persistent JSON file storage with async I/O
175
175
  store = await create_file_session_store(directory="./sessions")
@@ -178,7 +178,7 @@ SessionStoreProvider.set_store(store)
178
178
 
179
179
  ### Redis Storage
180
180
  ```python
181
- from chuk_ai_session_manager.storage.providers.redis import create_redis_session_store
181
+ from chuk_ai_session_manager.chuk_sessions_storage.providers.redis import create_redis_session_store
182
182
 
183
183
  # Distributed storage for production with TTL
184
184
  store = await create_redis_session_store(
@@ -48,10 +48,10 @@ This isn't just a demo framework - it's designed for production AI applications
48
48
 
49
49
  ```python
50
50
  import asyncio
51
- from chuk_ai_session_manager.models.session import Session
51
+ from chuk_ai_session_manager.session import Session
52
52
  from chuk_ai_session_manager.models.session_event import SessionEvent
53
53
  from chuk_ai_session_manager.models.event_source import EventSource
54
- from chuk_ai_session_manager.storage import SessionStoreProvider, InMemorySessionStore
54
+ from chuk_ai_session_manager.chuk_sessions_storage import get_backend, ChukSessionsStore, InMemorySessionStore
55
55
 
56
56
  async def main():
57
57
  # Set up storage
@@ -94,8 +94,8 @@ import asyncio
94
94
  import json
95
95
  from openai import AsyncOpenAI
96
96
  from chuk_tool_processor.registry import initialize
97
- from chuk_ai_session_manager.models.session import Session
98
- from chuk_ai_session_manager.storage import SessionStoreProvider, InMemorySessionStore
97
+ from chuk_ai_session_manager.session import Session
98
+ from chuk_ai_session_manager.chuk_sessions_storage import get_backend, ChukSessionsStore, InMemorySessionStore
99
99
 
100
100
  # Import tools - auto-registers via decorators
101
101
  from your_tools import sample_tools
@@ -138,7 +138,7 @@ asyncio.run(openai_integration_demo())
138
138
 
139
139
  ### In-Memory (Default)
140
140
  ```python
141
- from chuk_ai_session_manager.storage import InMemorySessionStore, SessionStoreProvider
141
+ from chuk_ai_session_manager.chuk_sessions_storage import InMemorySessionStore, SessionStoreProvider
142
142
 
143
143
  # Great for testing or single-process applications
144
144
  store = InMemorySessionStore()
@@ -147,7 +147,7 @@ SessionStoreProvider.set_store(store)
147
147
 
148
148
  ### File Storage
149
149
  ```python
150
- from chuk_ai_session_manager.storage.providers.file import create_file_session_store
150
+ from chuk_ai_session_manager.chuk_sessions_storage.providers.file import create_file_session_store
151
151
 
152
152
  # Persistent JSON file storage with async I/O
153
153
  store = await create_file_session_store(directory="./sessions")
@@ -156,7 +156,7 @@ SessionStoreProvider.set_store(store)
156
156
 
157
157
  ### Redis Storage
158
158
  ```python
159
- from chuk_ai_session_manager.storage.providers.redis import create_redis_session_store
159
+ from chuk_ai_session_manager.chuk_sessions_storage.providers.redis import create_redis_session_store
160
160
 
161
161
  # Distributed storage for production with TTL
162
162
  store = await create_redis_session_store(
@@ -4,12 +4,12 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "chuk-ai-session-manager"
7
- version = "0.1.1"
7
+ version = "0.2.1"
8
8
  description = "Session manager for AI applications"
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.11"
11
11
  dependencies = [
12
- "aiofiles>=24.1.0",
12
+ "chuk-sessions>=0.3",
13
13
  "chuk-tool-processor>=0.4.1",
14
14
  "pydantic>=2.11.3",
15
15
  ]
@@ -0,0 +1,359 @@
1
+ # chuk_ai_session_manager/__init__.py
2
+ """
3
+ chuk_ai_session_manager - AI Session Management with CHUK Sessions Backend
4
+
5
+ A comprehensive session management system for AI conversations with support for:
6
+ - Hierarchical session organization with parent-child relationships
7
+ - Token usage tracking and cost estimation
8
+ - Tool execution logging and result caching
9
+ - Async-first design with proper error handling
10
+ - Multiple prompt building strategies for different use cases
11
+ - Infinite conversation support with automatic summarization
12
+ - Simple developer API for easy integration
13
+
14
+ Basic Usage:
15
+ from chuk_ai_session_manager import SessionManager, Session, EventSource
16
+
17
+ # Simple API
18
+ sm = SessionManager()
19
+ await sm.user_says("Hello!")
20
+ await sm.ai_responds("Hi there!", model="gpt-4")
21
+
22
+ # Advanced API
23
+ session = await Session.create()
24
+ event = await SessionEvent.create_with_tokens(
25
+ message="Hello world",
26
+ prompt="Hello world",
27
+ model="gpt-4",
28
+ source=EventSource.USER
29
+ )
30
+ await session.add_event_and_save(event)
31
+ """
32
+
33
+ __version__ = "0.1.0"
34
+
35
+ # Import order is important to avoid circular dependencies
36
+ _imported_modules = {}
37
+
38
+ # Core enums (no dependencies)
39
+ try:
40
+ from chuk_ai_session_manager.models.event_source import EventSource
41
+ from chuk_ai_session_manager.models.event_type import EventType
42
+ _imported_modules['enums'] = True
43
+ except ImportError as e:
44
+ _imported_modules['enums'] = f"Import error: {e}"
45
+ EventSource = None
46
+ EventType = None
47
+
48
+ # Token usage (minimal dependencies)
49
+ try:
50
+ from chuk_ai_session_manager.models.token_usage import TokenUsage, TokenSummary
51
+ _imported_modules['token_usage'] = True
52
+ except ImportError as e:
53
+ _imported_modules['token_usage'] = f"Import error: {e}"
54
+ TokenUsage = None
55
+ TokenSummary = None
56
+
57
+ # Session metadata (depends on nothing)
58
+ try:
59
+ from chuk_ai_session_manager.models.session_metadata import SessionMetadata
60
+ _imported_modules['session_metadata'] = True
61
+ except ImportError as e:
62
+ _imported_modules['session_metadata'] = f"Import error: {e}"
63
+ SessionMetadata = None
64
+
65
+ # Session run (minimal dependencies)
66
+ try:
67
+ from chuk_ai_session_manager.models.session_run import SessionRun, RunStatus
68
+ _imported_modules['session_run'] = True
69
+ except ImportError as e:
70
+ _imported_modules['session_run'] = f"Import error: {e}"
71
+ SessionRun = None
72
+ RunStatus = None
73
+
74
+ # Session event (depends on enums and token usage)
75
+ try:
76
+ from chuk_ai_session_manager.models.session_event import SessionEvent
77
+ _imported_modules['session_event'] = True
78
+ except ImportError as e:
79
+ _imported_modules['session_event'] = f"Import error: {e}"
80
+ SessionEvent = None
81
+
82
+ # Session (depends on most other models)
83
+ try:
84
+ from chuk_ai_session_manager.models.session import Session
85
+ _imported_modules['session'] = True
86
+ except ImportError as e:
87
+ _imported_modules['session'] = f"Import error: {e}"
88
+ Session = None
89
+
90
+ # Storage backend
91
+ try:
92
+ from chuk_ai_session_manager.session_storage import (
93
+ SessionStorage,
94
+ get_backend,
95
+ setup_chuk_sessions_storage,
96
+ ChukSessionsStore
97
+ )
98
+ from chuk_sessions import SessionManager as ChukSessionManager
99
+ _imported_modules['storage'] = True
100
+
101
+ # Create a compatibility alias for tests that expect chuk_sessions_storage
102
+ import types
103
+ chuk_sessions_storage = types.ModuleType('chuk_sessions_storage')
104
+ chuk_sessions_storage.SessionStorage = SessionStorage
105
+ chuk_sessions_storage.get_backend = get_backend
106
+ chuk_sessions_storage.setup_chuk_sessions_storage = setup_chuk_sessions_storage
107
+ chuk_sessions_storage.ChukSessionsStore = ChukSessionsStore
108
+ chuk_sessions_storage.ChukSessionManager = ChukSessionManager
109
+
110
+ except ImportError as e:
111
+ _imported_modules['storage'] = f"Import error: {e}"
112
+ SessionStorage = None
113
+ get_backend = None
114
+ setup_chuk_sessions_storage = None
115
+ ChukSessionsStore = None
116
+ chuk_sessions_storage = None
117
+ ChukSessionManager = None
118
+
119
+ # Exceptions
120
+ try:
121
+ from chuk_ai_session_manager.exceptions import (
122
+ SessionManagerError,
123
+ SessionNotFound,
124
+ SessionAlreadyExists,
125
+ InvalidSessionOperation,
126
+ TokenLimitExceeded,
127
+ StorageError,
128
+ ToolProcessingError
129
+ )
130
+ _imported_modules['exceptions'] = True
131
+ except ImportError as e:
132
+ _imported_modules['exceptions'] = f"Import error: {e}"
133
+ SessionManagerError = None
134
+ SessionNotFound = None
135
+ SessionAlreadyExists = None
136
+ InvalidSessionOperation = None
137
+ TokenLimitExceeded = None
138
+ StorageError = None
139
+ ToolProcessingError = None
140
+
141
+ # Prompt building
142
+ try:
143
+ from chuk_ai_session_manager.session_prompt_builder import (
144
+ PromptStrategy,
145
+ build_prompt_from_session,
146
+ truncate_prompt_to_token_limit
147
+ )
148
+ _imported_modules['prompt_builder'] = True
149
+ except ImportError as e:
150
+ _imported_modules['prompt_builder'] = f"Import error: {e}"
151
+ PromptStrategy = None
152
+ build_prompt_from_session = None
153
+ truncate_prompt_to_token_limit = None
154
+
155
+ # Tool processing
156
+ try:
157
+ from chuk_ai_session_manager.session_aware_tool_processor import SessionAwareToolProcessor
158
+ _imported_modules['tool_processor'] = True
159
+ except ImportError as e:
160
+ _imported_modules['tool_processor'] = f"Import error: {e}"
161
+ SessionAwareToolProcessor = None
162
+
163
+ # Infinite conversation management
164
+ try:
165
+ from chuk_ai_session_manager.infinite_conversation import (
166
+ InfiniteConversationManager,
167
+ SummarizationStrategy
168
+ )
169
+ _imported_modules['infinite_conversation'] = True
170
+ except ImportError as e:
171
+ _imported_modules['infinite_conversation'] = f"Import error: {e}"
172
+ InfiniteConversationManager = None
173
+ SummarizationStrategy = None
174
+
175
+ # Simple API (depends on most other components)
176
+ try:
177
+ from chuk_ai_session_manager.simple_api import (
178
+ SessionManager,
179
+ quick_conversation,
180
+ track_llm_call
181
+ )
182
+ _imported_modules['simple_api'] = True
183
+ except ImportError as e:
184
+ _imported_modules['simple_api'] = f"Import error: {e}"
185
+ SessionManager = None
186
+ quick_conversation = None
187
+ track_llm_call = None
188
+
189
+ # Build __all__ list from successfully imported components
190
+ __all__ = []
191
+
192
+ # Core models
193
+ if EventSource is not None:
194
+ __all__.extend(['EventSource', 'EventType'])
195
+ if TokenUsage is not None:
196
+ __all__.extend(['TokenUsage', 'TokenSummary'])
197
+ if SessionMetadata is not None:
198
+ __all__.append('SessionMetadata')
199
+ if SessionRun is not None:
200
+ __all__.extend(['SessionRun', 'RunStatus'])
201
+ if SessionEvent is not None:
202
+ __all__.append('SessionEvent')
203
+ if Session is not None:
204
+ __all__.append('Session')
205
+
206
+ # Storage
207
+ if SessionStorage is not None:
208
+ __all__.extend([
209
+ 'SessionStorage',
210
+ 'get_backend',
211
+ 'setup_chuk_sessions_storage',
212
+ 'ChukSessionsStore',
213
+ 'ChukSessionManager',
214
+ 'chuk_sessions_storage' # Add the compatibility alias
215
+ ])
216
+
217
+ # Exceptions
218
+ if SessionManagerError is not None:
219
+ __all__.extend([
220
+ 'SessionManagerError',
221
+ 'SessionNotFound',
222
+ 'SessionAlreadyExists',
223
+ 'InvalidSessionOperation',
224
+ 'TokenLimitExceeded',
225
+ 'StorageError',
226
+ 'ToolProcessingError'
227
+ ])
228
+
229
+ # Advanced features
230
+ if PromptStrategy is not None:
231
+ __all__.extend([
232
+ 'PromptStrategy',
233
+ 'build_prompt_from_session',
234
+ 'truncate_prompt_to_token_limit'
235
+ ])
236
+
237
+ if SessionAwareToolProcessor is not None:
238
+ __all__.append('SessionAwareToolProcessor')
239
+
240
+ if InfiniteConversationManager is not None:
241
+ __all__.extend(['InfiniteConversationManager', 'SummarizationStrategy'])
242
+
243
+ # Simple API
244
+ if SessionManager is not None:
245
+ __all__.extend(['SessionManager', 'quick_conversation', 'track_llm_call'])
246
+
247
+ def get_import_status():
248
+ """
249
+ Get the import status of all modules.
250
+
251
+ Returns:
252
+ Dict[str, Union[bool, str]]: Module import status
253
+ """
254
+ return _imported_modules.copy()
255
+
256
+ def check_dependencies():
257
+ """
258
+ Check which optional dependencies are available.
259
+
260
+ Returns:
261
+ Dict[str, bool]: Availability of optional dependencies
262
+ """
263
+ deps = {}
264
+
265
+ # Check tiktoken for accurate token counting
266
+ try:
267
+ import tiktoken
268
+ deps['tiktoken'] = True
269
+ except ImportError:
270
+ deps['tiktoken'] = False
271
+
272
+ # Check chuk_sessions
273
+ try:
274
+ import chuk_sessions
275
+ deps['chuk_sessions'] = True
276
+ except ImportError:
277
+ deps['chuk_sessions'] = False
278
+
279
+ # Check chuk_tool_processor
280
+ try:
281
+ import chuk_tool_processor
282
+ deps['chuk_tool_processor'] = True
283
+ except ImportError:
284
+ deps['chuk_tool_processor'] = False
285
+
286
+ return deps
287
+
288
+ # Convenience function to check if package is properly set up
289
+ def verify_installation():
290
+ """
291
+ Verify that the package is properly installed and configured.
292
+
293
+ Returns:
294
+ Tuple[bool, List[str]]: (is_valid, list_of_issues)
295
+ """
296
+ issues = []
297
+
298
+ # Check core components
299
+ if Session is None:
300
+ issues.append("Core Session model failed to import")
301
+ if SessionEvent is None:
302
+ issues.append("SessionEvent model failed to import")
303
+ if SessionManager is None:
304
+ issues.append("Simple API (SessionManager) failed to import")
305
+
306
+ # Check dependencies
307
+ deps = check_dependencies()
308
+ if not deps.get('chuk_sessions', False):
309
+ issues.append("chuk_sessions dependency not available - storage backend will not work")
310
+
311
+ is_valid = len(issues) == 0
312
+ return is_valid, issues
313
+
314
+ # Initialize storage backend if available
315
+ def setup_storage(sandbox_id: str = "ai-session-manager", default_ttl_hours: int = 24):
316
+ """
317
+ Set up the CHUK Sessions storage backend.
318
+
319
+ Args:
320
+ sandbox_id: Sandbox ID for CHUK Sessions
321
+ default_ttl_hours: Default TTL for sessions in hours
322
+
323
+ Returns:
324
+ SessionStorage instance or None if setup failed
325
+ """
326
+ if setup_chuk_sessions_storage is not None:
327
+ try:
328
+ return setup_chuk_sessions_storage(
329
+ sandbox_id=sandbox_id,
330
+ default_ttl_hours=default_ttl_hours
331
+ )
332
+ except Exception as e:
333
+ import warnings
334
+ warnings.warn(f"Failed to set up CHUK Sessions storage: {e}")
335
+ return None
336
+ else:
337
+ import warnings
338
+ warnings.warn("CHUK Sessions storage not available - imports failed")
339
+ return None
340
+
341
+ # Version info
342
+ __author__ = "CHUK AI Session Manager Team"
343
+ __email__ = "support@chuk.ai"
344
+ __license__ = "MIT"
345
+ __description__ = "AI Session Management with CHUK Sessions Backend"
346
+
347
+ # Package metadata
348
+ __package_info__ = {
349
+ "name": "chuk_ai_session_manager",
350
+ "version": __version__,
351
+ "description": __description__,
352
+ "author": __author__,
353
+ "license": __license__,
354
+ "dependencies": {
355
+ "required": ["pydantic", "uuid", "datetime", "asyncio"],
356
+ "optional": ["tiktoken", "chuk_sessions", "chuk_tool_processor"]
357
+ },
358
+ "import_status": _imported_modules
359
+ }
@@ -0,0 +1 @@
1
+ # chuk_ai_session_manager/api/__init__.py