MCPcopy Create free account
hub / github.com/nlweb-ai/NLWeb / NLWebHandlerState

Class NLWebHandlerState

AskAgent/python/core/state.py:5–122  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

3
4
5class NLWebHandlerState:
6
7 INITIAL = 0
8 DONE = 2
9
10 def __init__(self, handler):
11 self.handler = handler
12 self.precheck_step_state = {}
13 self._state_lock = asyncio.Lock()
14 self._decon_event = asyncio.Event()
15 self._tool_router_event = asyncio.Event()
16
17 def start_precheck_step(self, step_name):
18 """Synchronous version for immediate state update"""
19 self.precheck_step_state[step_name] = self.__class__.INITIAL
20
21 async def precheck_step_done(self, step_name):
22 async with self._state_lock:
23 self.precheck_step_state[step_name] = self.__class__.DONE
24 if step_name == "Decon":
25 self._decon_event.set()
26 elif step_name == "ToolSelector":
27 self._tool_router_event.set()
28 # Check if all steps are done
29 if all(state == self.__class__.DONE for state in self.precheck_step_state.values()):
30 self.handler.pre_checks_done_event.set()
31
32 def set_pre_checks_done(self):
33 """Synchronous version for compatibility"""
34 self.handler.pre_checks_done_event.set()
35
36 async def pre_check_approval(self):
37 """Wait for all pre-checks to complete"""
38 await self.handler.pre_checks_done_event.wait()
39 if self.handler.query_done:
40 return False
41 return self.handler.connection_alive_event.is_set()
42
43 async def wait_for_decontextualization(self):
44 """Wait for decontextualization to complete"""
45 await self._decon_event.wait()
46 return self.is_decontextualization_done()
47
48 def is_decontextualization_done(self):
49 if "Decon" in self.precheck_step_state:
50 return self.precheck_step_state["Decon"] == self.__class__.DONE
51 else:
52 return False
53
54 async def wait_for_tool_routing(self):
55 """Wait for tool routing to complete"""
56 await self._tool_router_event.wait()
57 return self.is_tool_routing_done()
58
59 def is_tool_routing_done(self):
60 if "ToolSelector" in self.precheck_step_state:
61 return self.precheck_step_state["ToolSelector"] == self.__class__.DONE
62 else:

Callers 1

__init__Method · 0.90

Calls

no outgoing calls

Tested by

no test coverage detected