chuk-ai-session-manager 0.1.1__tar.gz → 0.2__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.
- {chuk_ai_session_manager-0.1.1 → chuk_ai_session_manager-0.2}/PKG-INFO +9 -8
- {chuk_ai_session_manager-0.1.1 → chuk_ai_session_manager-0.2}/README.md +7 -7
- {chuk_ai_session_manager-0.1.1 → chuk_ai_session_manager-0.2}/pyproject.toml +2 -1
- chuk_ai_session_manager-0.2/src/chuk_ai_session_manager/__init__.py +359 -0
- chuk_ai_session_manager-0.2/src/chuk_ai_session_manager/api/__init__.py +1 -0
- chuk_ai_session_manager-0.2/src/chuk_ai_session_manager/api/simple_api.py +376 -0
- {chuk_ai_session_manager-0.1.1 → chuk_ai_session_manager-0.2}/src/chuk_ai_session_manager/infinite_conversation.py +7 -4
- {chuk_ai_session_manager-0.1.1 → chuk_ai_session_manager-0.2}/src/chuk_ai_session_manager/models/session.py +27 -18
- {chuk_ai_session_manager-0.1.1 → chuk_ai_session_manager-0.2}/src/chuk_ai_session_manager/session_aware_tool_processor.py +6 -4
- {chuk_ai_session_manager-0.1.1 → chuk_ai_session_manager-0.2}/src/chuk_ai_session_manager/session_prompt_builder.py +6 -4
- chuk_ai_session_manager-0.2/src/chuk_ai_session_manager/session_storage.py +176 -0
- chuk_ai_session_manager-0.2/src/chuk_ai_session_manager/utils/status_display_utils.py +474 -0
- {chuk_ai_session_manager-0.1.1 → chuk_ai_session_manager-0.2}/src/chuk_ai_session_manager.egg-info/PKG-INFO +9 -8
- {chuk_ai_session_manager-0.1.1 → chuk_ai_session_manager-0.2}/src/chuk_ai_session_manager.egg-info/SOURCES.txt +8 -6
- {chuk_ai_session_manager-0.1.1 → chuk_ai_session_manager-0.2}/src/chuk_ai_session_manager.egg-info/requires.txt +1 -0
- chuk_ai_session_manager-0.2/tests/test_basic_functionality.py +126 -0
- chuk_ai_session_manager-0.2/tests/test_chuk_session_storage.py +249 -0
- {chuk_ai_session_manager-0.1.1 → chuk_ai_session_manager-0.2}/tests/test_infinite_conversation.py +8 -9
- chuk_ai_session_manager-0.2/tests/test_infinite_conversation_advanced.py +308 -0
- chuk_ai_session_manager-0.2/tests/test_session.py +285 -0
- {chuk_ai_session_manager-0.1.1 → chuk_ai_session_manager-0.2}/tests/test_session_aware_tool_processor.py +14 -8
- {chuk_ai_session_manager-0.1.1 → chuk_ai_session_manager-0.2}/tests/test_session_prompt_builder.py +1 -1
- chuk_ai_session_manager-0.1.1/src/chuk_ai_session_manager/__init__.py +0 -57
- chuk_ai_session_manager-0.1.1/src/chuk_ai_session_manager/storage/__init__.py +0 -44
- chuk_ai_session_manager-0.1.1/src/chuk_ai_session_manager/storage/base.py +0 -50
- chuk_ai_session_manager-0.1.1/src/chuk_ai_session_manager/storage/providers/file.py +0 -348
- chuk_ai_session_manager-0.1.1/src/chuk_ai_session_manager/storage/providers/memory.py +0 -96
- chuk_ai_session_manager-0.1.1/src/chuk_ai_session_manager/storage/providers/redis.py +0 -295
- chuk_ai_session_manager-0.1.1/tests/test_infinite_conversation_advanced.py +0 -170
- {chuk_ai_session_manager-0.1.1 → chuk_ai_session_manager-0.2}/setup.cfg +0 -0
- {chuk_ai_session_manager-0.1.1 → chuk_ai_session_manager-0.2}/src/chuk_ai_session_manager/exceptions.py +0 -0
- {chuk_ai_session_manager-0.1.1 → chuk_ai_session_manager-0.2}/src/chuk_ai_session_manager/models/__init__.py +0 -0
- {chuk_ai_session_manager-0.1.1 → chuk_ai_session_manager-0.2}/src/chuk_ai_session_manager/models/event_source.py +0 -0
- {chuk_ai_session_manager-0.1.1 → chuk_ai_session_manager-0.2}/src/chuk_ai_session_manager/models/event_type.py +0 -0
- {chuk_ai_session_manager-0.1.1 → chuk_ai_session_manager-0.2}/src/chuk_ai_session_manager/models/session_event.py +0 -0
- {chuk_ai_session_manager-0.1.1 → chuk_ai_session_manager-0.2}/src/chuk_ai_session_manager/models/session_metadata.py +0 -0
- {chuk_ai_session_manager-0.1.1 → chuk_ai_session_manager-0.2}/src/chuk_ai_session_manager/models/session_run.py +0 -0
- {chuk_ai_session_manager-0.1.1 → chuk_ai_session_manager-0.2}/src/chuk_ai_session_manager/models/token_usage.py +0 -0
- {chuk_ai_session_manager-0.1.1 → chuk_ai_session_manager-0.2}/src/chuk_ai_session_manager/sample_tools.py +0 -0
- {chuk_ai_session_manager-0.1.1/src/chuk_ai_session_manager/storage/providers → chuk_ai_session_manager-0.2/src/chuk_ai_session_manager/utils}/__init__.py +0 -0
- {chuk_ai_session_manager-0.1.1 → chuk_ai_session_manager-0.2}/src/chuk_ai_session_manager.egg-info/dependency_links.txt +0 -0
- {chuk_ai_session_manager-0.1.1 → chuk_ai_session_manager-0.2}/src/chuk_ai_session_manager.egg-info/top_level.txt +0 -0
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: chuk-ai-session-manager
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.2
|
|
4
4
|
Summary: Session manager for AI applications
|
|
5
5
|
Requires-Python: >=3.11
|
|
6
6
|
Description-Content-Type: text/markdown
|
|
7
7
|
Requires-Dist: aiofiles>=24.1.0
|
|
8
|
+
Requires-Dist: chuk-sessions>=0.3
|
|
8
9
|
Requires-Dist: chuk-tool-processor>=0.4.1
|
|
9
10
|
Requires-Dist: pydantic>=2.11.3
|
|
10
11
|
Provides-Extra: tiktoken
|
|
@@ -70,10 +71,10 @@ This isn't just a demo framework - it's designed for production AI applications
|
|
|
70
71
|
|
|
71
72
|
```python
|
|
72
73
|
import asyncio
|
|
73
|
-
from chuk_ai_session_manager.
|
|
74
|
+
from chuk_ai_session_manager.session import Session
|
|
74
75
|
from chuk_ai_session_manager.models.session_event import SessionEvent
|
|
75
76
|
from chuk_ai_session_manager.models.event_source import EventSource
|
|
76
|
-
from chuk_ai_session_manager.
|
|
77
|
+
from chuk_ai_session_manager.chuk_sessions_storage import get_backend, ChukSessionsStore, InMemorySessionStore
|
|
77
78
|
|
|
78
79
|
async def main():
|
|
79
80
|
# Set up storage
|
|
@@ -116,8 +117,8 @@ import asyncio
|
|
|
116
117
|
import json
|
|
117
118
|
from openai import AsyncOpenAI
|
|
118
119
|
from chuk_tool_processor.registry import initialize
|
|
119
|
-
from chuk_ai_session_manager.
|
|
120
|
-
from chuk_ai_session_manager.
|
|
120
|
+
from chuk_ai_session_manager.session import Session
|
|
121
|
+
from chuk_ai_session_manager.chuk_sessions_storage import get_backend, ChukSessionsStore, InMemorySessionStore
|
|
121
122
|
|
|
122
123
|
# Import tools - auto-registers via decorators
|
|
123
124
|
from your_tools import sample_tools
|
|
@@ -160,7 +161,7 @@ asyncio.run(openai_integration_demo())
|
|
|
160
161
|
|
|
161
162
|
### In-Memory (Default)
|
|
162
163
|
```python
|
|
163
|
-
from chuk_ai_session_manager.
|
|
164
|
+
from chuk_ai_session_manager.chuk_sessions_storage import InMemorySessionStore, SessionStoreProvider
|
|
164
165
|
|
|
165
166
|
# Great for testing or single-process applications
|
|
166
167
|
store = InMemorySessionStore()
|
|
@@ -169,7 +170,7 @@ SessionStoreProvider.set_store(store)
|
|
|
169
170
|
|
|
170
171
|
### File Storage
|
|
171
172
|
```python
|
|
172
|
-
from chuk_ai_session_manager.
|
|
173
|
+
from chuk_ai_session_manager.chuk_sessions_storage.providers.file import create_file_session_store
|
|
173
174
|
|
|
174
175
|
# Persistent JSON file storage with async I/O
|
|
175
176
|
store = await create_file_session_store(directory="./sessions")
|
|
@@ -178,7 +179,7 @@ SessionStoreProvider.set_store(store)
|
|
|
178
179
|
|
|
179
180
|
### Redis Storage
|
|
180
181
|
```python
|
|
181
|
-
from chuk_ai_session_manager.
|
|
182
|
+
from chuk_ai_session_manager.chuk_sessions_storage.providers.redis import create_redis_session_store
|
|
182
183
|
|
|
183
184
|
# Distributed storage for production with TTL
|
|
184
185
|
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.
|
|
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.
|
|
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.
|
|
98
|
-
from chuk_ai_session_manager.
|
|
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.
|
|
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.
|
|
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.
|
|
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,13 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "chuk-ai-session-manager"
|
|
7
|
-
version = "0.
|
|
7
|
+
version = "0.2"
|
|
8
8
|
description = "Session manager for AI applications"
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
requires-python = ">=3.11"
|
|
11
11
|
dependencies = [
|
|
12
12
|
"aiofiles>=24.1.0",
|
|
13
|
+
"chuk-sessions>=0.3",
|
|
13
14
|
"chuk-tool-processor>=0.4.1",
|
|
14
15
|
"pydantic>=2.11.3",
|
|
15
16
|
]
|
|
@@ -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
|