Stable state
This commit is contained in:
+29
-41
@@ -79,7 +79,7 @@ class ConfirmationApp(App):
|
||||
#modal-actions {
|
||||
height: auto;
|
||||
margin-top: 1;
|
||||
align: right;
|
||||
align: right middle;
|
||||
}
|
||||
|
||||
#edit-input {
|
||||
@@ -108,17 +108,13 @@ class ConfirmationApp(App):
|
||||
def __init__(
|
||||
self,
|
||||
result: Optional[ExtractionResult] = None,
|
||||
proposal_queue: Optional[asyncio.Queue] = None,
|
||||
context_queue: Optional[asyncio.Queue] = None,
|
||||
query_queue: Optional[asyncio.Queue] = None,
|
||||
response_queue: Optional[asyncio.Queue] = None,
|
||||
ui_to_llm_queue: Optional[asyncio.Queue] = None,
|
||||
llm_to_ui_queue: Optional[asyncio.Queue] = None,
|
||||
):
|
||||
super().__init__()
|
||||
self.result = result
|
||||
self.proposal_queue = proposal_queue
|
||||
self.context_queue = context_queue
|
||||
self.query_queue = query_queue
|
||||
self.response_queue = response_queue
|
||||
self.ui_to_llm_queue = ui_to_llm_queue
|
||||
self.llm_to_ui_queue = llm_to_ui_queue
|
||||
self.pending_updates: List[Union[LoreUpdate, CharacterStateUpdate]] = []
|
||||
|
||||
if result:
|
||||
@@ -145,12 +141,11 @@ class ConfirmationApp(App):
|
||||
for i, update in enumerate(self.pending_updates):
|
||||
self.add_update_to_table(update, i)
|
||||
|
||||
if self.proposal_queue:
|
||||
self.run_worker(self.poll_proposal_queue, thread=False)
|
||||
if self.context_queue:
|
||||
self.run_worker(self.poll_context_queue, thread=False)
|
||||
if self.response_queue:
|
||||
self.run_worker(self.poll_response_queue, thread=False)
|
||||
if self.ui_to_llm_queue:
|
||||
# We don't need a poller for this, just the action_send
|
||||
pass
|
||||
if self.llm_to_ui_queue:
|
||||
self.run_worker(self.poll_llm_updates, thread=False)
|
||||
|
||||
self.query_one("#llm-input", Input).focus()
|
||||
|
||||
@@ -170,15 +165,18 @@ class ConfirmationApp(App):
|
||||
change_text += f", Removed: {', '.join(update.status_effects_removed)}"
|
||||
table.add_row("Char", update.character_name, change_text, key=str(index))
|
||||
|
||||
async def poll_proposal_queue(self) -> None:
|
||||
async def poll_llm_updates(self) -> None:
|
||||
while True:
|
||||
try:
|
||||
result = await self.proposal_queue.get()
|
||||
self.handle_proposal_result(result)
|
||||
if hasattr(self.proposal_queue, "task_done"):
|
||||
self.proposal_queue.task_done()
|
||||
update = await self.llm_to_ui_queue.get()
|
||||
display_text = f"Query: {update.query}\nSource: {update.source}\n\n{update.snippet}"
|
||||
context_list = self.query_one("#context-pane", ListView)
|
||||
# Insert at the top to show most recent first
|
||||
context_list.insert(0, ListItem(Static(display_text)))
|
||||
if hasattr(self.llm_to_ui_queue, "task_done"):
|
||||
self.llm_to_ui_queue.task_done()
|
||||
except Exception as e:
|
||||
self.log(f"Error polling proposal queue: {e}")
|
||||
self.log(f"Error polling LLM updates: {e}")
|
||||
|
||||
def handle_proposal_result(self, result: ExtractionResult) -> None:
|
||||
table = self.query_one("#pending-facts-table", DataTable)
|
||||
@@ -188,32 +186,22 @@ class ConfirmationApp(App):
|
||||
self.add_update_to_table(update, index)
|
||||
|
||||
async def poll_context_queue(self) -> None:
|
||||
while True:
|
||||
try:
|
||||
update = await self.context_queue.get()
|
||||
display_text = f"Query: {update.query}\nSource: {update.source}\n\n{update.snippet}"
|
||||
context_list = self.query_one("#context-pane", ListView)
|
||||
context_list.append(ListItem(Static(display_text)))
|
||||
if hasattr(self.context_queue, "task_done"):
|
||||
self.context_queue.task_done()
|
||||
except Exception as e:
|
||||
self.log(f"Error polling context queue: {e}")
|
||||
# Obsolete
|
||||
pass
|
||||
|
||||
async def poll_response_queue(self) -> None:
|
||||
while True:
|
||||
try:
|
||||
answer = await self.response_queue.get()
|
||||
self.notify(answer)
|
||||
if hasattr(self.response_queue, "task_done"):
|
||||
self.response_queue.task_done()
|
||||
except Exception as e:
|
||||
self.log(f"Error polling response queue: {e}")
|
||||
# Obsolete
|
||||
pass
|
||||
|
||||
def on_input_submitted(self, event: Input.Submitted) -> None:
|
||||
if event.input.id == "llm-input":
|
||||
self.action_send()
|
||||
|
||||
def action_send(self) -> None:
|
||||
input_widget = self.query_one("#llm-input", Input)
|
||||
text = input_widget.value
|
||||
if text and self.query_queue:
|
||||
self.query_queue.put_nowait(text)
|
||||
if text and self.ui_to_llm_queue:
|
||||
self.ui_to_llm_queue.put_nowait(text)
|
||||
input_widget.value = ""
|
||||
|
||||
def action_accept(self) -> None:
|
||||
|
||||
Reference in New Issue
Block a user