Spaces:
Building
Building
Update session.py
Browse files- session.py +47 -48
session.py
CHANGED
@@ -1,48 +1,47 @@
|
|
1 |
-
import uuid
|
2 |
-
import threading
|
3 |
-
from
|
4 |
-
|
5 |
-
|
6 |
-
|
7 |
-
|
8 |
-
self.
|
9 |
-
self.
|
10 |
-
self.
|
11 |
-
self.
|
12 |
-
self.
|
13 |
-
self.
|
14 |
-
self.
|
15 |
-
|
16 |
-
|
17 |
-
|
18 |
-
|
19 |
-
|
20 |
-
self.
|
21 |
-
|
22 |
-
|
23 |
-
|
24 |
-
|
25 |
-
session =
|
26 |
-
|
27 |
-
|
28 |
-
|
29 |
-
|
30 |
-
|
31 |
-
|
32 |
-
|
33 |
-
|
34 |
-
|
35 |
-
|
36 |
-
|
37 |
-
|
38 |
-
|
39 |
-
|
40 |
-
|
41 |
-
|
42 |
-
|
43 |
-
|
44 |
-
|
45 |
-
|
46 |
-
|
47 |
-
|
48 |
-
log(f"β Removed session: {session_id}")
|
|
|
1 |
+
import uuid
|
2 |
+
import threading
|
3 |
+
from utils import log
|
4 |
+
|
5 |
+
class Session:
|
6 |
+
def __init__(self, project_name):
|
7 |
+
self.session_id = str(uuid.uuid4())
|
8 |
+
self.project_name = project_name
|
9 |
+
self.last_intent = None
|
10 |
+
self.variables = {} # Extracted parameters
|
11 |
+
self.awaiting_parameters = [] # Still-missing parameters
|
12 |
+
self.state = "intent_detection" # intent_detection, parameter_extraction, api_call, humanization
|
13 |
+
self.chat_history = [] # [{'role': 'user'/'assistant', 'content': text}]
|
14 |
+
self.auth_tokens = {} # Per-API auth tokens
|
15 |
+
|
16 |
+
|
17 |
+
class SessionStore:
|
18 |
+
def __init__(self):
|
19 |
+
self.sessions = {}
|
20 |
+
self.lock = threading.Lock()
|
21 |
+
|
22 |
+
def create_session(self, project_name):
|
23 |
+
with self.lock:
|
24 |
+
session = Session(project_name)
|
25 |
+
self.sessions[session.session_id] = session
|
26 |
+
log(f"π Created session: {session.session_id} for project: {project_name}")
|
27 |
+
return session
|
28 |
+
|
29 |
+
def get_session(self, session_id):
|
30 |
+
with self.lock:
|
31 |
+
return self.sessions.get(session_id)
|
32 |
+
|
33 |
+
def update_session(self, session_id, **kwargs):
|
34 |
+
with self.lock:
|
35 |
+
session = self.sessions.get(session_id)
|
36 |
+
if not session:
|
37 |
+
return None
|
38 |
+
for key, value in kwargs.items():
|
39 |
+
setattr(session, key, value)
|
40 |
+
log(f"π Updated session: {session_id} with {kwargs}")
|
41 |
+
return session
|
42 |
+
|
43 |
+
def remove_session(self, session_id):
|
44 |
+
with self.lock:
|
45 |
+
if session_id in self.sessions:
|
46 |
+
del self.sessions[session_id]
|
47 |
+
log(f"β Removed session: {session_id}")
|
|