diff --git a/haiku_rag_slim/haiku/rag/chat/app.py b/haiku_rag_slim/haiku/rag/chat/app.py index a10795bc..1905510a 100644 --- a/haiku_rag_slim/haiku/rag/chat/app.py +++ b/haiku_rag_slim/haiku/rag/chat/app.py @@ -1,4 +1,3 @@ -# pyright: reportPossiblyUnboundVariable=false import asyncio import json import uuid @@ -7,6 +6,28 @@ from datetime import datetime from pathlib import Path from typing import TYPE_CHECKING, Any +import textual_image.widget # noqa: F401 - import early for renderer detection +from ag_ui.core import ( + ActivitySnapshotEvent, + AssistantMessage, + EventType, + RunAgentInput, + StateDeltaEvent, + TextMessageContentEvent, + ToolCallArgsEvent, + ToolCallEndEvent, + ToolCallStartEvent, + UserMessage, +) +from jsonpatch import JsonPatch +from pydantic_ai import Agent +from pydantic_ai.ag_ui import AGUIAdapter +from textual.app import App, SystemCommand +from textual.binding import Binding +from textual.widgets import Footer, Header, Input +from textual.worker import Worker + +from haiku.rag.chat.widgets.chat_history import ChatHistory, CitationWidget from haiku.rag.client import HaikuRAG from haiku.rag.config import get_config from haiku.rag.skills.rag import AGENT_PREAMBLE, RAGState @@ -17,9 +38,6 @@ from haiku.skills.agent import ( from haiku.skills.models import Skill from haiku.skills.prompts import build_system_prompt -if TYPE_CHECKING: - from textual.app import ComposeResult - try: import logfire @@ -28,35 +46,8 @@ try: except ImportError: pass -try: - import textual_image.widget # noqa: F401 - import early for renderer detection - from ag_ui.core import ( - ActivitySnapshotEvent, - AssistantMessage, - EventType, - RunAgentInput, - StateDeltaEvent, - TextMessageContentEvent, - ToolCallArgsEvent, - ToolCallEndEvent, - ToolCallStartEvent, - UserMessage, - ) - from jsonpatch import JsonPatch - from pydantic_ai import Agent - from pydantic_ai.ag_ui import AGUIAdapter - from textual.app import App, SystemCommand - from textual.binding import Binding - from textual.widgets import Footer, Header, Input - from textual.worker import Worker - - from haiku.rag.chat.widgets.chat_history import ChatHistory, CitationWidget - - TEXTUAL_AVAILABLE = True -except ImportError: - TEXTUAL_AVAILABLE = False - App = object # type: ignore - SystemCommand = object # type: ignore +if TYPE_CHECKING: + from textual.app import ComposeResult RAG_STATE_NAMESPACE = "rag" diff --git a/haiku_rag_slim/haiku/rag/inspector/app.py b/haiku_rag_slim/haiku/rag/inspector/app.py index 6a62ed12..b744ffe9 100644 --- a/haiku_rag_slim/haiku/rag/inspector/app.py +++ b/haiku_rag_slim/haiku/rag/inspector/app.py @@ -1,30 +1,22 @@ -# pyright: reportPossiblyUnboundVariable=false from datetime import datetime from pathlib import Path from typing import TYPE_CHECKING +from textual.app import App +from textual.binding import Binding +from textual.screen import Screen +from textual.widgets import Footer, Header + from haiku.rag.client import HaikuRAG from haiku.rag.config import get_config +from haiku.rag.inspector.widgets.chunk_list import ChunkList +from haiku.rag.inspector.widgets.detail_view import DetailView +from haiku.rag.inspector.widgets.document_list import DocumentList +from haiku.rag.inspector.widgets.search_modal import SearchModal if TYPE_CHECKING: from textual.app import ComposeResult -try: - from textual.app import App - from textual.binding import Binding - from textual.screen import Screen - from textual.widgets import Footer, Header - - from haiku.rag.inspector.widgets.chunk_list import ChunkList - from haiku.rag.inspector.widgets.detail_view import DetailView - from haiku.rag.inspector.widgets.document_list import DocumentList - from haiku.rag.inspector.widgets.search_modal import SearchModal - - TEXTUAL_AVAILABLE = True -except ImportError: - TEXTUAL_AVAILABLE = False - App = object # type: ignore - class InspectorApp(App): """Textual TUI for inspecting LanceDB data."""