df
Some checks failed
smoke-mm / Install & smoke test mm --help (push) Has been cancelled
Some checks failed
smoke-mm / Install & smoke test mm --help (push) Has been cancelled
This commit is contained in:
56
TUI/tui.py
56
TUI/tui.py
@@ -1,4 +1,5 @@
|
||||
"""Modern Textual UI for driving Medeia-Macina pipelines."""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
import json
|
||||
@@ -13,7 +14,18 @@ from textual.binding import Binding
|
||||
from textual.events import Key
|
||||
from textual.containers import Container, Horizontal, Vertical
|
||||
from textual.screen import ModalScreen
|
||||
from textual.widgets import Button, DataTable, Footer, Header, Input, Label, OptionList, Select, Static, TextArea
|
||||
from textual.widgets import (
|
||||
Button,
|
||||
DataTable,
|
||||
Footer,
|
||||
Header,
|
||||
Input,
|
||||
Label,
|
||||
OptionList,
|
||||
Select,
|
||||
Static,
|
||||
TextArea,
|
||||
)
|
||||
from textual.widgets.option_list import Option
|
||||
|
||||
BASE_DIR = Path(__file__).resolve().parent
|
||||
@@ -174,7 +186,9 @@ class TagEditorPopup(ModalScreen[None]):
|
||||
self._save_tags_background(to_add, to_del, desired)
|
||||
|
||||
@work(thread=True)
|
||||
def _save_tags_background(self, to_add: List[str], to_del: List[str], desired: List[str]) -> None:
|
||||
def _save_tags_background(
|
||||
self, to_add: List[str], to_del: List[str], desired: List[str]
|
||||
) -> None:
|
||||
app = self.app # PipelineHubApp
|
||||
try:
|
||||
runner: PipelineRunner = getattr(app, "executor")
|
||||
@@ -188,14 +202,26 @@ class TagEditorPopup(ModalScreen[None]):
|
||||
del_cmd = f"@1 | delete-tag -store {store_tok}{query_chunk} {del_args}"
|
||||
del_res = runner.run_pipeline(del_cmd, seeds=self._seeds, isolate=True)
|
||||
if not getattr(del_res, "success", False):
|
||||
failures.append(str(getattr(del_res, "error", "") or getattr(del_res, "stderr", "") or "delete-tag failed").strip())
|
||||
failures.append(
|
||||
str(
|
||||
getattr(del_res, "error", "")
|
||||
or getattr(del_res, "stderr", "")
|
||||
or "delete-tag failed"
|
||||
).strip()
|
||||
)
|
||||
|
||||
if to_add:
|
||||
add_args = " ".join(json.dumps(t) for t in to_add)
|
||||
add_cmd = f"@1 | add-tag -store {store_tok}{query_chunk} {add_args}"
|
||||
add_res = runner.run_pipeline(add_cmd, seeds=self._seeds, isolate=True)
|
||||
if not getattr(add_res, "success", False):
|
||||
failures.append(str(getattr(add_res, "error", "") or getattr(add_res, "stderr", "") or "add-tag failed").strip())
|
||||
failures.append(
|
||||
str(
|
||||
getattr(add_res, "error", "")
|
||||
or getattr(add_res, "stderr", "")
|
||||
or "add-tag failed"
|
||||
).strip()
|
||||
)
|
||||
|
||||
if failures:
|
||||
msg = failures[0]
|
||||
@@ -401,7 +427,9 @@ class PipelineHubApp(App):
|
||||
if not suggestion:
|
||||
return
|
||||
|
||||
self.command_input.value = self._apply_suggestion_to_text(str(self.command_input.value or ""), suggestion)
|
||||
self.command_input.value = self._apply_suggestion_to_text(
|
||||
str(self.command_input.value or ""), suggestion
|
||||
)
|
||||
if self.suggestion_list:
|
||||
self.suggestion_list.display = False
|
||||
event.prevent_default()
|
||||
@@ -496,7 +524,11 @@ class PipelineHubApp(App):
|
||||
# Identify first stage command name for conservative auto-augmentation.
|
||||
first_stage_cmd = ""
|
||||
try:
|
||||
first_stage_cmd = str(stages[0].split()[0]).replace("_", "-").strip().lower() if stages[0].split() else ""
|
||||
first_stage_cmd = (
|
||||
str(stages[0].split()[0]).replace("_", "-").strip().lower()
|
||||
if stages[0].split()
|
||||
else ""
|
||||
)
|
||||
except Exception:
|
||||
first_stage_cmd = ""
|
||||
|
||||
@@ -720,7 +752,9 @@ class PipelineHubApp(App):
|
||||
item: Any = None
|
||||
|
||||
# Prefer mapping displayed table row -> source item.
|
||||
if self.current_result_table and 0 <= index < len(getattr(self.current_result_table, "rows", []) or []):
|
||||
if self.current_result_table and 0 <= index < len(
|
||||
getattr(self.current_result_table, "rows", []) or []
|
||||
):
|
||||
row = self.current_result_table.rows[index]
|
||||
src_idx = getattr(row, "source_index", None)
|
||||
if isinstance(src_idx, int) and 0 <= src_idx < len(self.result_items):
|
||||
@@ -782,7 +816,9 @@ class PipelineHubApp(App):
|
||||
return
|
||||
text = ""
|
||||
idx = int(getattr(self, "_selected_row_index", 0) or 0)
|
||||
if self.current_result_table and 0 <= idx < len(getattr(self.current_result_table, "rows", []) or []):
|
||||
if self.current_result_table and 0 <= idx < len(
|
||||
getattr(self.current_result_table, "rows", []) or []
|
||||
):
|
||||
row = self.current_result_table.rows[idx]
|
||||
lines = [f"{col.name}: {col.value}" for col in getattr(row, "columns", []) or []]
|
||||
text = "\n".join(lines)
|
||||
@@ -874,7 +910,9 @@ class PipelineHubApp(App):
|
||||
worker_id = str(worker.get("worker_id") or worker.get("id") or "?")[:8]
|
||||
worker_type = str(worker.get("worker_type") or worker.get("type") or "?")
|
||||
status = str(worker.get("status") or worker.get("result") or "running")
|
||||
details = worker.get("current_step") or worker.get("description") or worker.get("pipe") or ""
|
||||
details = (
|
||||
worker.get("current_step") or worker.get("description") or worker.get("pipe") or ""
|
||||
)
|
||||
self.worker_table.add_row(worker_id, worker_type, status, str(details)[:80])
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user