chuk-ai-session-manager 0.1.1__py3-none-any.whl → 0.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.
@@ -1,57 +1,359 @@
1
1
  # chuk_ai_session_manager/__init__.py
2
2
  """
3
- chuk session manager package.
3
+ chuk_ai_session_manager - AI Session Management with CHUK Sessions Backend
4
4
 
5
- This package provides session management capabilities.
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)
6
31
  """
7
- # Import core components for easier access
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)
8
39
  try:
9
40
  from chuk_ai_session_manager.models.event_source import EventSource
10
41
  from chuk_ai_session_manager.models.event_type import EventType
11
- from chuk_ai_session_manager.models.session import Session
12
- from chuk_ai_session_manager.models.session_event import SessionEvent
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:
13
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:
14
67
  from chuk_ai_session_manager.models.session_run import SessionRun, RunStatus
15
- except ImportError:
16
- # During package setup or circular imports, these might not be available
17
- pass
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
18
81
 
19
- # Import storage components
82
+ # Session (depends on most other models)
20
83
  try:
21
- from chuk_ai_session_manager.storage.base import SessionStoreInterface, SessionStoreProvider
22
- except ImportError:
23
- # During package setup or circular imports, these might not be available
24
- pass
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
25
89
 
26
- # Import exceptions
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
27
120
  try:
28
121
  from chuk_ai_session_manager.exceptions import (
29
122
  SessionManagerError,
30
123
  SessionNotFound,
31
124
  SessionAlreadyExists,
32
125
  InvalidSessionOperation,
126
+ TokenLimitExceeded,
127
+ StorageError,
128
+ ToolProcessingError
33
129
  )
34
- except ImportError:
35
- # During package setup or circular imports, these might not be available
36
- pass
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
37
140
 
38
- __version__ = "0.1.0"
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
39
162
 
40
- # Define __all__ only if imports succeeded
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
41
190
  __all__ = []
42
191
 
43
- # Check which imports succeeded and add them to __all__
44
- for name in [
45
- # Models
46
- 'EventSource', 'EventType', 'Session', 'SessionEvent',
47
- 'SessionMetadata', 'SessionRun', 'RunStatus',
48
-
49
- # Storage
50
- 'SessionStoreInterface', 'SessionStoreProvider',
51
-
52
- # Exceptions
53
- 'SessionManagerError', 'SessionNotFound',
54
- 'SessionAlreadyExists', 'InvalidSessionOperation',
55
- ]:
56
- if name in globals():
57
- __all__.append(name)
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