chuk-ai-session-manager 0.4.1__py3-none-any.whl → 0.5__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 +114 -238
- chuk_ai_session_manager-0.5.dist-info/METADATA +896 -0
- {chuk_ai_session_manager-0.4.1.dist-info → chuk_ai_session_manager-0.5.dist-info}/RECORD +5 -5
- chuk_ai_session_manager-0.4.1.dist-info/METADATA +0 -355
- {chuk_ai_session_manager-0.4.1.dist-info → chuk_ai_session_manager-0.5.dist-info}/WHEEL +0 -0
- {chuk_ai_session_manager-0.4.1.dist-info → chuk_ai_session_manager-0.5.dist-info}/top_level.txt +0 -0
|
@@ -28,20 +28,9 @@ Infinite Context Example:
|
|
|
28
28
|
await sm.user_says("Tell me about machine learning")
|
|
29
29
|
await sm.ai_responds("Machine learning is...", model="gpt-4")
|
|
30
30
|
# Session will auto-segment when limits are reached
|
|
31
|
-
|
|
32
|
-
Advanced Usage:
|
|
33
|
-
# Access the full Session model for detailed control
|
|
34
|
-
from chuk_ai_session_manager import Session, SessionEvent
|
|
35
|
-
|
|
36
|
-
session = await Session.create()
|
|
37
|
-
event = await SessionEvent.create_with_tokens(
|
|
38
|
-
message="Hello", prompt="Hello", model="gpt-4"
|
|
39
|
-
)
|
|
40
|
-
await session.add_event_and_save(event)
|
|
41
31
|
"""
|
|
42
32
|
|
|
43
33
|
import logging
|
|
44
|
-
from typing import Optional
|
|
45
34
|
|
|
46
35
|
# Package version
|
|
47
36
|
__version__ = "0.4"
|
|
@@ -49,164 +38,64 @@ __version__ = "0.4"
|
|
|
49
38
|
# Set up package-level logger
|
|
50
39
|
logger = logging.getLogger(__name__)
|
|
51
40
|
|
|
52
|
-
# Core enums and constants
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
from chuk_ai_session_manager.models.event_type import EventType
|
|
56
|
-
except ImportError as e:
|
|
57
|
-
logger.warning(f"Could not import core enums: {e}")
|
|
58
|
-
EventSource = None
|
|
59
|
-
EventType = None
|
|
60
|
-
|
|
61
|
-
# Storage setup function (no circular dependencies)
|
|
62
|
-
try:
|
|
63
|
-
from chuk_ai_session_manager.session_storage import setup_chuk_sessions_storage
|
|
64
|
-
except ImportError as e:
|
|
65
|
-
logger.warning(f"Could not import storage setup: {e}")
|
|
66
|
-
setup_chuk_sessions_storage = None
|
|
41
|
+
# Core enums and constants
|
|
42
|
+
from chuk_ai_session_manager.models.event_source import EventSource
|
|
43
|
+
from chuk_ai_session_manager.models.event_type import EventType
|
|
67
44
|
|
|
68
45
|
# Exception classes
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
)
|
|
79
|
-
except ImportError as e:
|
|
80
|
-
logger.warning(f"Could not import exceptions: {e}")
|
|
81
|
-
# Define minimal fallback exceptions
|
|
82
|
-
class SessionManagerError(Exception):
|
|
83
|
-
"""Base exception for session manager errors."""
|
|
84
|
-
pass
|
|
85
|
-
|
|
86
|
-
SessionNotFound = SessionManagerError
|
|
87
|
-
SessionAlreadyExists = SessionManagerError
|
|
88
|
-
InvalidSessionOperation = SessionManagerError
|
|
89
|
-
TokenLimitExceeded = SessionManagerError
|
|
90
|
-
StorageError = SessionManagerError
|
|
91
|
-
ToolProcessingError = SessionManagerError
|
|
92
|
-
|
|
93
|
-
# Core models (may have some dependencies)
|
|
94
|
-
Session = None
|
|
95
|
-
SessionEvent = None
|
|
96
|
-
SessionMetadata = None
|
|
97
|
-
SessionRun = None
|
|
98
|
-
RunStatus = None
|
|
99
|
-
TokenUsage = None
|
|
100
|
-
|
|
101
|
-
try:
|
|
102
|
-
from chuk_ai_session_manager.models.session_metadata import SessionMetadata
|
|
103
|
-
except ImportError as e:
|
|
104
|
-
logger.debug(f"Could not import SessionMetadata: {e}")
|
|
105
|
-
|
|
106
|
-
try:
|
|
107
|
-
from chuk_ai_session_manager.models.session_run import SessionRun, RunStatus
|
|
108
|
-
except ImportError as e:
|
|
109
|
-
logger.debug(f"Could not import SessionRun: {e}")
|
|
110
|
-
|
|
111
|
-
try:
|
|
112
|
-
from chuk_ai_session_manager.models.token_usage import TokenUsage, TokenSummary
|
|
113
|
-
except ImportError as e:
|
|
114
|
-
logger.debug(f"Could not import TokenUsage: {e}")
|
|
115
|
-
TokenSummary = None
|
|
116
|
-
|
|
117
|
-
try:
|
|
118
|
-
from chuk_ai_session_manager.models.session_event import SessionEvent
|
|
119
|
-
except ImportError as e:
|
|
120
|
-
logger.debug(f"Could not import SessionEvent: {e}")
|
|
46
|
+
from chuk_ai_session_manager.exceptions import (
|
|
47
|
+
SessionManagerError,
|
|
48
|
+
SessionNotFound,
|
|
49
|
+
SessionAlreadyExists,
|
|
50
|
+
InvalidSessionOperation,
|
|
51
|
+
TokenLimitExceeded,
|
|
52
|
+
StorageError,
|
|
53
|
+
ToolProcessingError
|
|
54
|
+
)
|
|
121
55
|
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
# Advanced components (optional)
|
|
146
|
-
InfiniteConversationManager = None
|
|
147
|
-
SessionAwareToolProcessor = None
|
|
148
|
-
build_prompt_from_session = None
|
|
149
|
-
PromptStrategy = None
|
|
150
|
-
|
|
151
|
-
try:
|
|
152
|
-
from chuk_ai_session_manager.infinite_conversation import InfiniteConversationManager
|
|
153
|
-
except ImportError as e:
|
|
154
|
-
logger.debug(f"Could not import InfiniteConversationManager: {e}")
|
|
56
|
+
# Core models
|
|
57
|
+
from chuk_ai_session_manager.models.session_metadata import SessionMetadata
|
|
58
|
+
from chuk_ai_session_manager.models.session_run import SessionRun, RunStatus
|
|
59
|
+
from chuk_ai_session_manager.models.token_usage import TokenUsage, TokenSummary
|
|
60
|
+
from chuk_ai_session_manager.models.session_event import SessionEvent
|
|
61
|
+
from chuk_ai_session_manager.models.session import Session
|
|
62
|
+
|
|
63
|
+
# Storage backend
|
|
64
|
+
from chuk_ai_session_manager.session_storage import setup_chuk_sessions_storage
|
|
65
|
+
|
|
66
|
+
# High-level session manager
|
|
67
|
+
from chuk_ai_session_manager.session_manager import SessionManager
|
|
68
|
+
|
|
69
|
+
# Simple API - The main interface most users will use
|
|
70
|
+
from chuk_ai_session_manager.api.simple_api import (
|
|
71
|
+
track_conversation,
|
|
72
|
+
track_llm_call,
|
|
73
|
+
quick_conversation,
|
|
74
|
+
track_infinite_conversation,
|
|
75
|
+
track_tool_use,
|
|
76
|
+
get_session_stats,
|
|
77
|
+
get_conversation_history
|
|
78
|
+
)
|
|
155
79
|
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
80
|
+
# Advanced components
|
|
81
|
+
from chuk_ai_session_manager.infinite_conversation import (
|
|
82
|
+
InfiniteConversationManager,
|
|
83
|
+
SummarizationStrategy
|
|
84
|
+
)
|
|
160
85
|
|
|
161
|
-
|
|
162
|
-
from chuk_ai_session_manager.session_prompt_builder import (
|
|
163
|
-
build_prompt_from_session,
|
|
164
|
-
PromptStrategy
|
|
165
|
-
)
|
|
166
|
-
except ImportError as e:
|
|
167
|
-
logger.debug(f"Could not import prompt builder: {e}")
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
def _auto_setup_storage(sandbox_id: str = "chuk-ai-session-manager",
|
|
171
|
-
default_ttl_hours: int = 24) -> bool:
|
|
172
|
-
"""
|
|
173
|
-
Auto-setup storage with sensible defaults if not already configured.
|
|
174
|
-
|
|
175
|
-
Args:
|
|
176
|
-
sandbox_id: CHUK Sessions sandbox ID to use
|
|
177
|
-
default_ttl_hours: Default TTL for sessions
|
|
178
|
-
|
|
179
|
-
Returns:
|
|
180
|
-
True if setup was successful, False otherwise
|
|
181
|
-
"""
|
|
182
|
-
if setup_chuk_sessions_storage is None:
|
|
183
|
-
logger.warning("Storage setup not available - imports failed")
|
|
184
|
-
return False
|
|
185
|
-
|
|
186
|
-
try:
|
|
187
|
-
# Try to get existing backend first
|
|
188
|
-
from chuk_ai_session_manager.session_storage import get_backend
|
|
189
|
-
get_backend() # This will trigger setup if needed
|
|
190
|
-
logger.debug("Storage backend already configured")
|
|
191
|
-
return True
|
|
192
|
-
except Exception:
|
|
193
|
-
# Setup with defaults if not configured
|
|
194
|
-
try:
|
|
195
|
-
setup_chuk_sessions_storage(
|
|
196
|
-
sandbox_id=sandbox_id,
|
|
197
|
-
default_ttl_hours=default_ttl_hours
|
|
198
|
-
)
|
|
199
|
-
logger.info(f"Auto-configured storage with sandbox_id='{sandbox_id}'")
|
|
200
|
-
return True
|
|
201
|
-
except Exception as e:
|
|
202
|
-
logger.error(f"Failed to auto-setup storage: {e}")
|
|
203
|
-
return False
|
|
86
|
+
from chuk_ai_session_manager.session_aware_tool_processor import SessionAwareToolProcessor
|
|
204
87
|
|
|
88
|
+
from chuk_ai_session_manager.session_prompt_builder import (
|
|
89
|
+
build_prompt_from_session,
|
|
90
|
+
PromptStrategy,
|
|
91
|
+
truncate_prompt_to_token_limit
|
|
92
|
+
)
|
|
205
93
|
|
|
94
|
+
# Configuration functions
|
|
206
95
|
def configure_storage(sandbox_id: str = "chuk-ai-session-manager",
|
|
207
96
|
default_ttl_hours: int = 24) -> bool:
|
|
208
97
|
"""
|
|
209
|
-
|
|
98
|
+
Configure the storage backend.
|
|
210
99
|
|
|
211
100
|
Args:
|
|
212
101
|
sandbox_id: CHUK Sessions sandbox ID to use
|
|
@@ -215,7 +104,16 @@ def configure_storage(sandbox_id: str = "chuk-ai-session-manager",
|
|
|
215
104
|
Returns:
|
|
216
105
|
True if configuration was successful, False otherwise
|
|
217
106
|
"""
|
|
218
|
-
|
|
107
|
+
try:
|
|
108
|
+
setup_chuk_sessions_storage(
|
|
109
|
+
sandbox_id=sandbox_id,
|
|
110
|
+
default_ttl_hours=default_ttl_hours
|
|
111
|
+
)
|
|
112
|
+
logger.info(f"Storage configured with sandbox_id='{sandbox_id}'")
|
|
113
|
+
return True
|
|
114
|
+
except Exception as e:
|
|
115
|
+
logger.error(f"Failed to configure storage: {e}")
|
|
116
|
+
return False
|
|
219
117
|
|
|
220
118
|
|
|
221
119
|
def get_version() -> str:
|
|
@@ -231,31 +129,32 @@ def is_available() -> dict:
|
|
|
231
129
|
Dictionary showing availability of each component
|
|
232
130
|
"""
|
|
233
131
|
return {
|
|
234
|
-
"core_enums":
|
|
235
|
-
"core_models":
|
|
236
|
-
"simple_api":
|
|
237
|
-
"storage":
|
|
238
|
-
"infinite_context":
|
|
239
|
-
"tool_processor":
|
|
240
|
-
"prompt_builder":
|
|
241
|
-
"token_tracking":
|
|
242
|
-
"exceptions": True,
|
|
132
|
+
"core_enums": True,
|
|
133
|
+
"core_models": True,
|
|
134
|
+
"simple_api": True,
|
|
135
|
+
"storage": True,
|
|
136
|
+
"infinite_context": True,
|
|
137
|
+
"tool_processor": True,
|
|
138
|
+
"prompt_builder": True,
|
|
139
|
+
"token_tracking": True,
|
|
140
|
+
"exceptions": True,
|
|
141
|
+
"session_manager": True,
|
|
243
142
|
}
|
|
244
143
|
|
|
245
144
|
|
|
246
|
-
# Main exports -
|
|
247
|
-
__all__ = [
|
|
248
|
-
|
|
249
|
-
# Always available
|
|
250
|
-
__all__.extend([
|
|
145
|
+
# Main exports - everything should be available
|
|
146
|
+
__all__ = [
|
|
147
|
+
# Version and utilities
|
|
251
148
|
"__version__",
|
|
252
149
|
"get_version",
|
|
253
150
|
"is_available",
|
|
254
151
|
"configure_storage",
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
152
|
+
|
|
153
|
+
# Core enums
|
|
154
|
+
"EventSource",
|
|
155
|
+
"EventType",
|
|
156
|
+
|
|
157
|
+
# Exception classes
|
|
259
158
|
"SessionManagerError",
|
|
260
159
|
"SessionNotFound",
|
|
261
160
|
"SessionAlreadyExists",
|
|
@@ -263,67 +162,44 @@ __all__.extend([
|
|
|
263
162
|
"TokenLimitExceeded",
|
|
264
163
|
"StorageError",
|
|
265
164
|
"ToolProcessingError",
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
__all__.append("TokenSummary")
|
|
300
|
-
|
|
301
|
-
# Advanced components
|
|
302
|
-
if InfiniteConversationManager is not None:
|
|
303
|
-
__all__.append("InfiniteConversationManager")
|
|
304
|
-
if SessionAwareToolProcessor is not None:
|
|
305
|
-
__all__.append("SessionAwareToolProcessor")
|
|
306
|
-
if build_prompt_from_session is not None:
|
|
307
|
-
__all__.extend(["build_prompt_from_session", "PromptStrategy"])
|
|
308
|
-
|
|
309
|
-
# Auto-setup on import (with error handling)
|
|
165
|
+
|
|
166
|
+
# Core models
|
|
167
|
+
"Session",
|
|
168
|
+
"SessionEvent",
|
|
169
|
+
"SessionMetadata",
|
|
170
|
+
"SessionRun",
|
|
171
|
+
"RunStatus",
|
|
172
|
+
"TokenUsage",
|
|
173
|
+
"TokenSummary",
|
|
174
|
+
|
|
175
|
+
# Storage
|
|
176
|
+
"setup_chuk_sessions_storage",
|
|
177
|
+
|
|
178
|
+
# Primary interfaces - what most users will use
|
|
179
|
+
"SessionManager",
|
|
180
|
+
"track_conversation",
|
|
181
|
+
"track_llm_call",
|
|
182
|
+
"quick_conversation",
|
|
183
|
+
"track_infinite_conversation",
|
|
184
|
+
"track_tool_use",
|
|
185
|
+
"get_session_stats",
|
|
186
|
+
"get_conversation_history",
|
|
187
|
+
|
|
188
|
+
# Advanced components
|
|
189
|
+
"InfiniteConversationManager",
|
|
190
|
+
"SummarizationStrategy",
|
|
191
|
+
"SessionAwareToolProcessor",
|
|
192
|
+
"build_prompt_from_session",
|
|
193
|
+
"PromptStrategy",
|
|
194
|
+
"truncate_prompt_to_token_limit",
|
|
195
|
+
]
|
|
196
|
+
|
|
197
|
+
# Auto-setup storage on import
|
|
310
198
|
try:
|
|
311
|
-
|
|
199
|
+
configure_storage()
|
|
200
|
+
logger.debug("Auto-configured storage backend")
|
|
312
201
|
except Exception as e:
|
|
313
|
-
logger.debug(f"Auto-setup
|
|
202
|
+
logger.debug(f"Auto-setup skipped: {e}")
|
|
314
203
|
|
|
315
204
|
# Log successful import
|
|
316
|
-
|
|
317
|
-
available_count = sum(available.values())
|
|
318
|
-
total_count = len(available)
|
|
319
|
-
logger.debug(f"CHUK AI Session Manager imported successfully "
|
|
320
|
-
f"({available_count}/{total_count} components available)")
|
|
321
|
-
|
|
322
|
-
# Show warning if core components are missing
|
|
323
|
-
if not available.get("simple_api", False):
|
|
324
|
-
logger.warning(
|
|
325
|
-
"Simple API not available - you may need to install missing dependencies. "
|
|
326
|
-
"Check the logs above for specific import errors."
|
|
327
|
-
)
|
|
328
|
-
elif available_count == total_count:
|
|
329
|
-
logger.debug("All components loaded successfully")
|
|
205
|
+
logger.debug(f"CHUK AI Session Manager v{__version__} imported successfully")
|